HCR Laboratuvarı Robotik Araştırması
Table of Contents
Bu blog gönderisi, Colorado School of Mines’teki lisans eğitimim sırasında robotik yolculuğumu, CSCI473’te tutkumun keşfinden, 2020 Yazıdaki CS Field Session projeme, Şubat 2021’den Eylül 2021’e kadar Human Centered Robotics (HCR) Laboratuvarı’ndaki araştırma çalışmalarıma kadar kronolojik olarak anlatıyor.
Arka Plan
Colorado School of Mines’te 2018 Güz döneminde lisans eğitimime başladım. Bölümüm Robotik ve Akıllı Sistemler odaklı Bilgisayar Bilimi idi. Ve 2022 Baharında mezun oldum.
Hayatımın erken döneminde tutkumuzu bulma şansına sahip oldum. Lise yıllarında neyi sevdiğimi ve neye iyi olabileceğimi belirlemek için çok zaman harcadım. Birkaç deneme ve yanılma sonrası tutkumun bilgisayar bilimi olduğunu fark ettim. Ancak aynı zamanda kodla bir şeyler inşa etme konusundaki büyük sevgimi de bu dönemde keşfettim.
Mines’te, Dr Hao Zhang altında Mines’ın Human Centered Robotics (HCR) Laboratuvarı’nda çalışma fırsatı buldum. Dr. Zhang ile ilk kez 2020 Baharında “Human Centered Robotics” (CSCI473) dersinde tanıştım ve COVID ve ders işleri kaosunun ardından 2021 Baharının başında laboratuvarında çalışmaya başladım.
Human Centered Robotics (CSCI473) Dersi
Mines’ın Human Centered Robotics (CSCI473) sınıfı, üniversite deneyimimden sadece birkaç sınıftan biriydi ve benim üzerimde derin bir etki bıraktı. Ders Dr. Hao Zhang tarafından öğretildi. Sınıfın tüm notu sadece üç projeden oluşuyordu; her biri robotik temel kavramları tanıtan zorlu bir problem sunuyordu. Bu projeler şunlardı:
- Robot Operating System (ROS) Öğrenme
- Robot Duvar Takibi için Pekiştirmeli Öğrenme
- İskelet Tabanlı Temsiller Kullanarak İnsan Davranışlarını Anlama
🧩 Robot Operating System (ROS) Öğrenme
Bu, bize verilen ilk projeydi. Proje üç görevden oluşuyordu:
- Geliştirme Ortamını Kurma
- Gazebo Simülatörünü Anlama
- Bir ROS “Hello World” Yazma
Görev 1 ve 2 için sadece geliştirme ortamımızı kurup Gazebo’ya giriş tutorialını takip etmemiz gerekiyordu. Bu şunları içeriyordu:
- 2011 HP laptopumda yeterli olan ROS Melodic’i kurmak
- ROS ve Gazebo’yu kurmak ve yapılandırmak
- gazebosim’in tutorial’ı ve e-manual’ın tutorial’ı üzerinden geçmek.
Görev 3 ise gerçek bir zorluktu. Görev, turtlesim kullanarak Mines’ın “M” logosunu çizmeyi içeriyordu:
![]() |
![]() |
Bu görev, basit gibi görünse de göründüğünden daha zordu. Bu proje sonunda Açık Döngü ve Kapalı Döngü sistemleri kavramıyla tanıştım. Bu proje ve çözümüm hakkında daha fazla bilgiye ROS Move Turtle proje sayfasından ulaşabilirsiniz.
🧩 Robot Duvar Takibi için Pekiştirmeli Öğrenme
Bu, bize verilen ikinci projeydi ve üniversitede çalıştığım en zor projelerden biriydi. Proje açıklaması şu şekildedir:
Bu projede, öğrenciler bir otonom mobil robotun duvarı takip etmesi ve engellere çarpmasını önlemek için pekiştirmeli öğrenme algoritmaları tasarlayıp uygulayacaklar. Öğrenciler, ROS Melodic’te Gazebo simülasyonunu kullanarak omni-yönlü mobil robot Triton’u simüle edecek ve size sağlanan bir ortam haritası kullanacaklar. Öğrenciler, robot üzerindeki lazer mesafe tarayıcısını kullanarak algılayıp öğrenme yapacaklar; robot, yönlendirme ve hız komutlarıyla kontrol edilecek. Öğrenciler bu projeyi ROS Melodic üzerinde Ubuntu 18.04 LTS (yani Proje 1’de kullanılan aynı geliştirme ortamı) üzerinde C++ veya Python ile programlamalı ve standart IEEE robotik konferans formatına uygun LATEX raporu yazmalıdır.
Pekiştirmeli öğrenme algoritması için Q-Learning kullanmamız istendi. Ayrıca sınıf tarafından sağlanan Stingray Gazebo simülasyon ortamını kullandık. Stingray, Triton modelini ve fizik mantığını içeriyordu. Ayrıca robotun takip etmesi için bir labirent sağlandı. Ortam şu şekilde görünüyordu:
Tam proje açıklaması için csci473-p2.pdf sayfasına bakın. Çözümümü GitHub’a ya da web’e yayınlamadım çünkü çok iyi değildi ve ciddi hatalar içeriyordu. Ayrıca kodu doğru ortamda çalıştırmak oldukça zor ve sinir bozucu. Ancak sınıfa gönderdiğim bir demo video var, çözümümü gösteriyor. Buradan izleyebilirsiniz:
🧩 İskelet Tabanlı Temsiller Kullanarak İnsan Davranışlarını Anlama
Üçüncü proje için açıklama şu şekildedir:
Bu projede, öğrenciler birkaç iskelet tabanlı temsil (Teslimat 1) uygulayacak ve bir Kinect V1 sensöründen toplanan bir kamu etkinlik veri seti kullanarak insan davranışlarını sınıflandırmak için Destek Vektör Makineleri (SVM) (Teslimat 2) kullanacaklar. Ayrıca, standart IEEE robotik konferans formatına uygun LATEX raporu (Teslimat 3) yazmaları gerekmektedir.
Bu proje zorluydu ama ikinci proje kadar zor değildi. Ana hedef, Kinect V1 sensör verilerini, MSR Daily Activity 3D Dataset ve Destek Vektör Makineleri kullanarak belirli insan eylemlerini/ davranışlarını sınıflandırmaktı. Bu proje ve çözümüm hakkında daha fazla bilgiye Predict Human Actions Using LIBSVM proje sayfasından ulaşabilirsiniz.
CSCI473 Sonuç
CSCI473, Mines üzerindeki lisans eğitimim sırasında aldığım en iyi sınıflardan biri (belki de en iyisi) olarak kabul ediyorum. Tüm bu projeler bana çok şey öğretti ve özgeçmişimde referans alabileceğim bir proje kataloğu oluşturdu. Aynı zamanda testlerde iyi olmadığım bir sınıftı; projeleri tamamlamada başarılıydım. Bu sınıf sayesinde Dr. Hao Zhang ile tanıştım ve sonunda Mines’ın Human-Centered Robotics (HCR) Laboratuvarı’nda araştırma asistanı pozisyonu elde ettim.
CS Field Session (2020 Yazı)
2020 Yazı boyunca, CSCI473’ü tamamlayıp HCR Laboratuvarı’na katılmadan önce CSCI370 veya “İleri Yazılım Mühendisliği” dersini Colorado School of Mines’teki CS lisans programımın bir parçası olarak aldım. CSCI370, öğrencilerin bir şirket için yazılım çözümleri tasarlamasını, uygulamasını ve belgelemesini sağlayan bir derstir. Öğrenciler, dersin bilgisini gerçek dünya bilgisayar bilimi problemlerine uygulama fırsatı bulur. Ders hakkında daha fazla bilgiye buradan ulaşabilirsiniz.
Ders içinde hangi proje/şirket üzerinde çalışacağınızı seçersiniz. Ders, her proje ve şirketi detaylandıran PDF’ler sağladı. Sonunda Lunar Outpost adlı bir şirketin “Gerçek Zamanlı Tekerlek Kayma Algılaması ve Hata Düzeltmeleri ile Gelişmiş Ay Navigasyonu” adlı projesini seçtim. İsim uzun olduğu için projeye “Tekerlek Kayma Algılaması” adını verdik.
Sorun
Lunar Outpost, otonom ay roverları yaratmaya çalışan bir startup. Ayda, tekerlek kaymasına neden olan çok fazla ay tozu var. Bu, otonom sistemlerin gerçek dünya konumlarını kaybetmesine neden olur. Dünya’da bu, GPS verileriyle kayma düzeltmesi yaparak çözülür. Ancak ayda GPS yok. Bu yüzden GPS dışı bir yöntemle tekerlek kayması tespit edilmelidir. Projenin sorunu hakkında daha detaylı rapor burada bulunabilir.
Takım
Bu proje basit bir proje değildi, bu yüzden bir ekip içinde yapılması gerekiyordu. Takım beş Colorado School of Mines öğrencisinden oluşuyordu:
Bu proje basit bir proje değildi, bu yüzden bir ekip içinde yapılması gerekiyordu. Takım Mehmet Yilmaz (ben), Kane Bruce, Braedon O’Callaghan, Liam Williams ve Kevin Grant’dan oluşuyordu.
Proje ROS, C++, Python, Linux, Raspberry Pi ve Arduino bilgisi gerektiriyordu. Çoğumuz bu teknolojilerden bir veya birkaçına deneyim sahibiydik ama ROS deneyimim tek başıma vardı çünkü Spring 2020 döneminde Human Centered Robotics (CSCI473) sınıfında ROS kullandım. Bu yüzden erken aşamada herkesin ROS hakkında bilgi sahibi olmasını sağladım.
Zorluklar
Bu projede birçok zorluk vardı. En büyük zorluk gerçek bir robotun test için erişilememesiydi. Bu, COVID nedeniyle her şey uzaktan yapıldı ve Lunar Outpost’un laboratuvarına/ binalarına erişim engellendi. Bu yüzden simülasyonlar kullanmak zorunda kaldık.
Also, we went through some academic research from the WVU Navigation Lab to get an idea of how the Wheel Slippage problem could get solved for Lunar Outpost’s use case. Which, for us, as undergraduate sophomores and juniors, was more difficult than we expected.
Another challenge we faced was the amount of time we had to work on this project. CSCI370 is a one month class. But the problem itself is a massive problem that many companies and academics have been trying to solve/perfect for decades. So one month is far from enough time to solve this issue. But, despite all these challenges we pushed through and made sure to deliver.
Sonuç
After working through all the research and development, we determined that it is almost impossible to simulate proper moon physics digitally, so really trying this algorithm in a simulation is no good and not going to yield any meaningful research in wheel slippage detection in space and on the moon. We concluded that setting up a proper test environment using something like sand and real hardware, like a Husky robot, is far more important for this type of research. We did update the wheel slippage detection code to work as a ROS node and it functioned properly and could easily be imported into real hardware for testing. This project allowed me to take a leadership role, educate my peers on ROS development, and gain experience with Python, ROS, and Gazebo while tackling a complex problem I had never encountered before. Most importantly, this experience further solidified my passion for robotics and reinforced my desire to pursue research in the field, setting the stage for what would come next in my robotics journey.
HCR Laboratuvarında Başlangıç
After completing CSCI473, my CS Field Session in the summer of 2020, and my Fall 2020 semester, I decided to pursue research in robotics. I had such great experiences with both CSCI473 and the CS Field Session that I decided I wanted to do research for the HCR Lab. Since I had met Dr. Zhang the year prior, I decided to email him and ask about any opportunities the lab might have in January 2021. Within about 2 weeks, Dr. Zhang expressed interest, presented me with research options, and offered me a role in the lab. I then started working for the lab in February 2021.
Tanıtım Videosu
Here’s my introduction video that I recorded a few months into my time in the HCR Lab. It was recorded in May 2021 and covers the research I would focus on in the HCR Lab during the summer of 2021:
Projem
Throughout my time in the HCR Lab, I mainly focused on the Triton project. The Triton project is a mobile robot developed by the Human Centered Robotics Lab at the Colorado School of Mines. It’s a triangular omni-wheel ground robot powered by NVIDIA’s Jetson Nano.
The Triton, in a simple overview, consisted of the following parts:
- NVIDIA Jetson Nano
- NVIDIA’s Seed Studio A205 Carrier Board
- Arduino Mega
- 64 GB Micro SD Card
- Custom 3D printed body
- 3 mecanum wheels
- 1 AR Battery
- Custom circuits for optimized power distribution and wiring
- Intel’s Realsense D435 Camera
- Some LEDs
It was designed, built, and manufactured around 2018-2020 as a robot for educational purposes. By the time I joined, the Triton was pretty established, and the lab was considering making a new version of it. However, the main issue with the Triton was its software. The Triton could move, charge, and function in a basic sense but did not really do anything intelligent. It even lacked the ability to make more advanced movements.
![]() |
![]() |
![]() |
![]() |
To start addressing this, the lab set up an area where we could keep track of the Triton. To do this, they created a 2-meter by 2-meter area with 8 Optitrack Flex (Infrared Red) Cameras in a square-like shape about 6-7 feet above the floor.
![]() |
![]() |
Along with having this area built, each Triton had three gray sphere balls attached at the top of their bodies.
With this setup, we had effectively built our own small-scale GPS system that allowed us to get the exact coordinates in meters of a Triton in our area of interest. By using the Optitrack infrared cameras and the Optitrack gray spheres in a triangular shape, we could pinpoint the exact coordinates of a Triton in our area. This allowed us to apply a closed-loop system for better accuracy in movement.
The Optitrack system provided position and orientation data at about 120Hz with sub-millimeter accuracy when properly calibrated. Each Triton’s three reflective markers formed a unique triangular pattern that the system could track as a rigid body. The coordinate system was calibrated so that (0,0) was at the center of the tracking area, with X and Y axes aligned to the room’s geometry. But despite this precise positioning data, the Triton still struggled with movement.
With this setup, one core feature we wanted to provide the Triton was the ability to move to a specific coordinate. The user, or their software, could provide a (x, y) coordinate within their area of interest. Then the robot would move to that coordinate as fast, accurately, and seamlessly as possible. When I joined, this feature existed but it wasn’t working very well. Here is a simple animation showing how the original moving logic worked:
I did not record the original solution in action, so I created this simple animation showing you the old moving logic in action. Knowing this, what are the issues with this method?
- It’s really slow
- It makes the robot take up a lot of space just to go to a specific point. This made it difficult for us to use this solution when multiple Tritons were moving around.
So why was this behavior happening? The issue was that the Triton first turned, changing its alpha, until it pointed toward the target point within a specific margin of error. Then it would sprint forward, and after its theta was off from the target by a specific amount, it would stop and start turning again until the alpha was
Uygulama, X ve Y koordinat hatalarını bağımsız olarak hesapladı, ayrı ayrı orantısal kazançlar uyguladı ve ardından bu küresel hız bileşenlerini dönüşüm matrisleri kullanarak robotun yerel koordinat çerçevesine dönüştürdü. Bu dönüşüm, robotun omni‑tekerlekli sürücü sisteminin hızları kendi referans çerçevesinde, küresel koordinatlarda değil, gerektirdiği için gerekliydi. Bu yöntem hedeflere en doğrudan yolları üretti ve önemli ölçüde daha hızlıydı, ancak robotun yönü, açık bir yön kontrolü olmadığı için kayma eğilimindeydi.
Yöntem #1 için, bu yöntemi Move Turtle (TurtleSim) blog içinde ayrıntılı olarak açıkladım. PID kontrolörlerinin genel olarak nasıl çalıştığı ve yöntem #1’in nasıl çalıştığı hakkında tüm detayları öğrenmeniz için bu blogu okumanızı şiddetle tavsiye ederim. Yöntem #1’i ROS’s TurtleSim kullanarak geliştirdim, ardından bu kodu Triton’a taşıdım ve daha gerçek dünya ortamını dikkate alacak şekilde güncelledim.
Yöntem #2 oldukça farklı ancak aynı derecede etkili bir yaklaşım kullandı. Robotun yönü ve hedefe olan mesafe üzerine düşünmek yerine, bu hareketi bir koordinat düzlemi problemi gibi ele alır. Kontrolör, X ve Y yönlerindeki hatayı ayrı ayrı sürekli olarak hesaplar. Örneğin, robotun (0,0) konumundan (2,3) konumuna hareket etmesi gerekiyorsa, bu X’te 2 metre ve Y’de 3 metre hatayı düzeltmesi gerektiği anlamına gelir. İki orantısal kontrolör aynı anda çalıştı: biri X‑hatasına göre robotun X yönündeki hızını ayarlarken, diğeri Y‑hatasına göre Y yönündeki hareketi yönetti. Bu, hedefe daha doğrudan bir yol oluşturdu, bir 3D yazıcı kafasının hareketine benzer ve düzgün diyagonal hareketler sağladı. Robotun hedefe dönmek için açıkça dönmesine gerek kalmadı, bu da yöntemi dar alanlarda veya hassas konumlandırma gerektiğinde özellikle etkili kıldı.
Her iki yöntem de orijinal yaklaşıma göre çok daha hızlı ve daha güvenilir olduğunu kanıtladı. Bu yeni yöntemlerin aksiyon içinde nasıl çalıştığını görmek için Tritonlar Aksiyon İçinde Oynatma Listesi bağlantısına göz atın; bu, tüm Tritonların yeni yöntemlerle aksiyon içinde gösterildiği bir oynatma listesidir.
Bir zamanlar basit bir nokta‑nokta hareketi için 30‑45 saniye süren şey, şimdi yaklaşık 8‑12 saniye sürüyordu. Daha da önemlisi, Triton artık dar alanlarda daha verimli bir şekilde hareket edebildi, bu da çoklu robot senaryolarımız için faydalı oldu.
Geliştirme Zorlukları ve Hata Ayıklama
Koordinat Sistemi Dönüşümleri: En zorlayıcı yönlerden biri koordinat dönüşümlerini doğru yapmaktı. Optitrack sistemi verileri kendi koordinat çerçevesinde sağlarken, robotun kendi yerel koordinat çerçevesi vardı ve bunlar arasında doğru bir şekilde dönüştürmem gerekiyordu. İlk uygulamalarda robotlar yanlış yönlerde hareket ediyordu çünkü dönüşüm matris hesaplamalarını karıştırmıştım.
Gerçek Dünya vs. Ideal Davranış: En büyük zorluk, ders kitabı kontrol teorisinde görünmeyen gerçek dünya faktörlerini hesaba katmaktı. Robotun tekerlekleri farklı sürtünme özelliklerine sahipti, motorlar aynı şekilde yanıt vermiyordu ve Optitrack’ten kontrol yazılımına ve robotun Arduino’suna kadar iletişim zincirinde her zaman bir gecikme vardı. Bu fiziksel gerçekleri hesaba katmak için haftalarca orantısal kazançları ayarladım ve ölü bölge filtreleri ekledim.
Osilasyon ve Stabilite Sorunları: İlk uygulamalarım, robotların hedeflerini aşırı geçip ileri geri sallandığı osilasyon sorunları yaşadı. Bu, PID kontrolörlerinde türev terimlerinin önemini ve doğru kazanç ayarlamanın gerekliliğini öğretti. Sonunda, sistemin doğal sönümlemesi çoğu uygulama için yeterli olduğundan, tam PID yerine dikkatle ayarlanmış kazançlarla ağırlıklı olarak orantısal kontrol kullanmaya karar verdim.
Çoklu Robot Müdahalesi: Birden fazla robot aynı anda çalıştığında, beklenmedik müdahale desenleri keşfettim. Robotlar bazen aynı alan için “savaş” yapıyor ya da birbirlerini sonsuza kadar engelleyen kilitlenme durumları yaratıyordu. Bu, koordinasyon mekanizmaları ve çarpışma önleme algoritmaları uygulamama yol açtı.
Multi-Triton Kontrol Sistemi
Tek bir Triton hareket sorununu çözdükten sonra, laboratuvarın bir sonraki zorluğu birden fazla Tritonun aynı anda birlikte çalışmasını sağlamaktı. Bu, ana odak alanlarımdan biri haline geldi ve projenin önemli bir katkısı oldu.
Orijinal sistem aynı anda sadece bir Triton kontrol edebiliyordu, bu da araştırma olanaklarını ciddi şekilde sınırlıyordu. Laboratuvar, birden fazla otonom aracın hareketlerini koordine etmesi gereken senaryoları simüle etmek istedi; örneğin, trafik akışını optimize etmek ve daha iyi SLAM (Eşzamanlı Konumlandırma ve Haritalama) haritaları oluşturmak için birbirleriyle iletişim kuran sürücüsüz arabalar gibi.
Bunu çözmek için Python’un multiprocessing kütüphanesini kullanarak çoklu işlem yaklaşımı uyguladım. Her Triton, bağımsız bir süreç alarak merkezi kontrol sistemi tarafından koordine edilse de bağımsız çalışabiliyordu. Bu, birden fazla Tritonun birbirlerinin kontrol döngülerine müdahale etmeden aynı anda hareket etmesini sağladı.
Çoklu Robot Mimari Tasarımı
Ana Kontrolör Süreci: Bu, merkezi koordinatör olarak hizmet verdi, kullanıcı arayüzü etkileşimlerini, yol planlamasını ve robotlar arasındaki yüksek seviyeli koordinasyonu yönetti. Küresel durumu korudu ve bireysel robot süreçlerine komutlar dağıttı.
Bireysel Robot Süreçleri: Her Triton, aşağıdaki görevleri yerine getiren kendi özel Python sürecine sahipti:
- Gerçek zamanlı PID kontrol hesaplamaları ~50Hz
- Robotun donanımıyla (Arduino/Jetson) iletişim
- Yerel yol yürütme ve engel kaçınma
- Ana kontrolöre durum raporlaması
Paylaşımlı Bellek İletişimi: Python’un multiprocessing.shared_memory ve Queue nesnelerini kullanarak süreçler arasında verimli iletişim sağladım. Bu, ağ iletişimi yükü olmadan gerçek zamanlı koordinasyon sağladı.
Eşzamanlama Mekanizmaları: Birden fazla robotun koordinasyon gerektiğinde (örneğin çarpışmalardan kaçınmak) çakışmaları önlemek için robotların çalışma alanının belirli bölümlerine özel erişim talep edebileceği semaforlar ve kilitler uyguladım.
Zorluk, tüm robotların kontrol döngülerini bağımsız olarak çalıştırırken aynı zamanda küresel koordinasyonu sürdürmekti. Her robot süreci kendi PID hesaplamalarını yapıp motor komutlarını doğrudan donanıma gönderirken, ana süreç çarpışma önleme ve yol planlama gibi yüksek seviyeli koordinasyonu yönetti.
![]() |
![]() |
Multi-Triton sistemi tamamen yeni araştırma olanakları açtı. Artık şunları simüle edebiliyorduk:
- Araç‑araç iletişim senaryoları
- Engel kaçınmalı koordineli yol planlaması
- Sürü robotik davranışları
- Çoklu ajan SLAM haritalaması
- Formasyon kontrolü ve takip davranışları
İşte laboratuvar kurulumunun birden fazla Tritonun aynı anda çalıştığı hali:
Bilgisayar Görüşü DeneyleriBilgisayar görüşü pipeline’ı üzerinde birkaç aşamada çalışan bir deney yapmaya çok zaman harcadım:
Derin Veri İşleme: Intel RealSense D435 hem RGB hem de derin veri akışları sağladı. Ben özellikle derin veriyle çalıştım, bu 30Hz’de 640x480 ölçüm dizisi olarak geldi. İlk zorluk, bu gürültülü derin veriyi anlamlı geometrik bilgi çıkarmak için filtrelemekti. Nesne Tespit Denemeleri: Çok aşamalı tespit algoritmalarıyla deneyler yaptım. Zemin seviyesindeki nesneleri (duvarları, tavanı vb. filtreleyerek) derin görüntüyü segmentleyerek bir miktar başarı elde ettim ve yaklaşık 0.3x0.3 metre ayak izi olan doğru boyut özelliklerine sahip nesneleri aradım. Kenar tespiti ve geometrik analiz kullanarak ayırt edici Triton profilini tanımlamaya çalıştım, sonuçlar karışıktı. İşaretçi Tanıma Deneyleri: Her Triton üzerindeki üç yansıtıcı küre, en umut verici tespit özelliği gibi görünüyordu. Derin görüntüde üç parlak noktanın üçgen desenini tanımlamak için blob tespit algoritmalarıyla deneyler yaptım. Kontrollü ışık koşullarında bazı umut verici sonuçlar elde ettim, ancak tutarlı değildi. Koordinat Füzyon Araştırması: Görüntü tabanlı konum tahminlerini Optitrack verileriyle birleştirme yaklaşımları araştırdım, temel Kalman filtresi uygulamaları dahil. Konsept, Optitrack verileri mevcut olduğunda daha fazla ağırlık vermek, ancak gerektiğinde görüntüye geri dönmekti, ancak laboratuvardaki sürem bitmeden bunu tamamen çalıştıramadım. Performans Zorlukları: Tüm bu işlemleri robotun kontrol döngüleriyle birlikte gerçek zamanlı çalıştırmak zor oldu. Jetson Nano’nun işlem kapasitesini aşmadan algoritmaları yaklaşık 10-15Hz’de çalıştırmak için optimizasyon yaklaşımları denedim. Ne yazık ki, bu bilgisayar görüşü çalışmasını tamamen tamamlamadan laboratuvardan ayrılmak zorunda kaldım. Erken aşamalarda bazı umut verici sonuçlar elde ettim ve derin sensör işleme hakkında çok şey öğrendim, ancak sistemi tamamen güvenilir bir duruma getiremedim. Başkalarının üzerine inşa edebileceği ilginç bir araştırma yönü olarak kaldı. Bilgisayar görüşü algoritmalarını test ettiğim bir video: Deneylerim sırasında derin sensör görünümü şöyleydi: Derin sensör entegrasyonunu tamamlamamış olsam da, kavram kendi kendine sürüş senaryolarını simüle etme gibi uygulamalarda, araçların dış altyapıya yalnızca güvenmeden birbirlerini fark etmeleri gerektiği durumlarda umut vericiydi. Başladığım araştırma yönü laboratuvarda gelecekteki çalışmalara katkı sağlayabilir. Dokümantasyon ve Bilgi KorumaHCR Laboratuvarı’na yaptığım en önemli katkılardan biri, belki de en gurur duyduğum, tüm proje dokümantasyonunu düzenlemek ve korumaktı. Laboratuvara katıldığımda, Triton projesinin bilgisi birden fazla platform ve formatta dağınıktı. Kritik bilgiler şunlardı:
Bu parçalanmış dokümantasyon büyük bir sorundu. Yeni öğrenciler haftalarca sadece nasıl başlayacaklarını anlamaya çalışıyordu ve değerli bilgiler, insanlar mezun olduğunda veya laboratuvardan ayrıldığında sürekli kayboluyordu. Bu sorunu sistematik olarak çözmeye karar verdim. Triton projesiyle ilgili her belge, kod, video ve notu bulmak için sayısız saat harcadım. Sonra her şeyi merkezileştirilmiş GitLab deposu içinde açık, mantıklı bir yapıya organize ettim.
Merkezileştirilmiş dokümantasyon şunları içeriyordu:
Ayrıca gelecekteki katkıların düzenli ve erişilebilir olmasını sağlamak için dokümantasyon standartları belirledim. Oluşturduğum depo yapısı laboratuvarda sonraki tüm çalışmaların temelini oluşturdu. Mevcut dokümantasyonu düzenlemenin ötesinde, bilgi tabanındaki kritik boşlukları dolduran birkaç özgün kılavuz ve eğitim oluşturdum. Bunlar yeni laboratuvar üyeleri için detaylı kurulum talimatları, kapsamlı sorun giderme kılavuzları ve karmaşık prosedürlerin video yürütmelerini içeriyordu. Etki hemen ve kalıcıydı. Yeni öğrenciler haftalar yerine günler içinde hızla ilerleyebildi. Oluşturduğum dokümantasyon deposu laboratuvar tarafından hâlâ kullanılmakta, yıllar sonra bile. Triton projesi için tek gerçek kaynak haline geldi ve gelecekteki araştırmacılar için sayısız saat/gün tasarrufu sağladı. Mentorluk ve Bilgi TransferiHCR Laboratuvarı’ndaki zamanımın en ödüllendirici yönlerinden biri, başkalarına mentorluk yapma ve edindiğim bilgiyi paylaşma fırsatıydı. Çalışmalarım ilerledikçe ve Triton sistemlerinde daha deneyimli hale geldikçe, yeni ekip üyelerini eğitme sorumluluğu arttı. Laboratuvar Başarılarını MentorlukLaboratuvardan ayrılıp derecemi ve eBay’deki işimi tamamlamaya odaklanmak için hazırlanırken, Triton projesini devralacak iki kişiyi kapsamlı bir şekilde eğittim. Bu sadece nasıl çalıştığını göstermek değil, temel prensipleri gerçekten anlamalarını sağlamak ve yenilik yapabilmelerini sağlamak içindi. Haftalarca onlarla yakın çalıştım, şunları gözden geçirdik:
Bilgi transferi son derece kapsamlıydı. Gerçek hata ayıklama oturumları yaptık, mevcut kodu değiştirmelerini ve genişletmelerini sağladım, ve yeni Tritonları sıfırdan bağımsız olarak kurabilmelerini sağladım. Lise Mentorluk ProgramıBelki de daha ödüllendirici olanı, laboratuvarın outreach programı aracılığıyla bir lise öğrencisini mentorluk yapma deneyimim oldu. Bu, birini robotik, bilgisayar bilimi ve araştırmaya tanıtmak için harika bir fırsattı. Kapsamlı bir müfredat tasarladım: Bilgisayar Bilimi Temelleri:
Robotik Kavramları:
ROS (Robot İşletim Sistemi):
Uygulamalı Proje Çalışması:
Bu mentorluk özellikle özel bir şeydi çünkü onun programlama hakkında neredeyse hiçbir şey bilmeyen bir öğrenciden aktif bir araştırma projesine anlamlı kod katkısı yapmasına kadar ilerlemesini izlemekti. “Değişken nedir?” sorusundan ROS iletişim sorunlarını bağımsız olarak hata ayıklamaya ve kendi hizmet uygulamalarını yazmaya kadar ilerledi. Geliştirdiği LED kontrol sistemi, araştırmacıların Triton’un baş LED’lerini basit ROS komutlarıyla renk ve desenleri kolayca değiştirmesini sağladı. Basit gibi görünebilir ama ROS mimarisi, donanım arayüzü ve uygun yazılım tasarım kalıplarını anlamayı gerektirir. Katkısı hâlâ laboratuvarda kullanılmaktadır. Mentorluk benim için de öğreticiydi. Karmaşık kavramları sindirilebilir parçalara bölmek ve temel konuları düşünmek zorunda kaldım. Başkasına öğretmek beni daha iyi bir mühendis ve araştırmacı yaptı. Doktora Araştırmasıyla İşbirliğiLaboratuvardaki zamanımın en profesyonel açıdan ödüllendirici yönlerinden biri, otonom araç algoritmalarına odaklanan bir doktora öğrencisi olan Peng ile yakın çalışmaktı. Triton sistemine yaptığım yazılım iyileştirmeleri, onun doktora araştırmasını desteklemeye yardımcı oldu.
Peng’in araştırması, otonom araç senaryolarını simüle etmek için hassas, güvenilir çok-robot koordinasyonu gerektiriyordu. Hareket kontrolü ve çok-robot sistemlerine yaptığım iyileştirmelerden önce, bu deneyler çok daha zor yürütülüyordu. Robotlar daha yavaştı, daha az doğruydular ve etkili bir şekilde birlikte çalışamıyorlardı. Katkılarım, Peng’in araştırmasına birkaç alanda yardımcı oldu: Kesişme Yönetimi Çalışmaları: Geliştirilmiş PID kontrolörleri ve çok-robot koordinasyonu sayesinde, Peng birden fazla “araç” (Triton) hareketlerini koordine etmesi gereken kesişme senaryolarını simüle edebildi. Daha iyi zamanlama ve konumlandırma, bu çalışmaların daha uygulanabilir olmasını sağladı. Araç-araç İletişimi: Geliştirdiğim çoklu işlem çerçevesi, Peng’in simüle edilmiş araçlar arasında iletişim protokollerini uygulamasına ve test etmesine olanak sağladı. Her bir Triton, diğerleriyle koordine olurken kararlar alabiliyordu, bu da otonom araçların nasıl çalışması gerektiğine benzer bir şekilde. SLAM ve Haritalama Araştırması: Derinlik sensörü entegrasyonu çalışması, Peng’e aynı anda konumlandırma ve haritalama araştırması için ek veri sağladı. Koordineli algılama yeteneklerine sahip birden fazla robotun bulunması, daha kapsamlı haritalama deneylerine olanak tanıdı. İşbirliğimizi özellikle değerli kılan şey, sadece onun araştırmasına yardımcı olmam değil, aynı zamanda gerçek bir ortaklık olmasıydı. Peng’in otonom araçların teorik yönlerini anlaması, benim pratik uygulamalarımı bilgilendirmeye yardımcı oldu. Onun geri bildirimi ve gereksinimleri, sistemleri daha sağlam ve yetenekli hale getirmemi sağladı. Laboratuvarda birlikte birçok saat geçirdik, senaryoları hata ayıkladık, farklı kontrol stratejilerini tartıştık ve Triton platformunun neler başarabileceğini keşfettik. Peng hem bir meslektaş hem de bir arkadaş oldu ve onunla çalışmak akademik araştırmanın nasıl işlediği hakkında bana çok şey öğretti. Oluşturduğum sistemler, Peng’in tez çalışmasının faydalı bir parçası haline geldi. Pratik mühendislik katkılarımın otonom araç teknolojisindeki araştırmayı desteklediğini görmek gerçekten tatmin ediciydi. Bu, sağlam mühendislik ve araştırmanın birlikte nasıl faydalı sonuçlar yaratabileceği konusundaki ilgimi pekiştirdi. Laboratuvardan ayrıldıktan sonra bile Peng ve ben iletişimde kaldık. Çalışmalarımın ayrıldıktan sonra da önemli araştırmalara katkı sağlamaya devam ettiğini bilmek son derece ödüllendiriciydi. Perspektif: LLM Öncesi Geliştirme DönemiBu çalışmanın tümünün LLM öncesi yazılım geliştirme döneminde gerçekleştirildiğini belirtmek gerekir. Tüm bunlar 2020-2021 (çoğunlukla 2021) arasında gerçekleşti, ChatGPT, Claude, Perplexity veya Cursor IDE gibi AI destekli geliştirme araçları mevcut olmadan. Her satır kod sıfırdan yazıldı, her algoritma akademik makaleler ve ders kitaplarıyla araştırıldı ve her hata ayıklama oturumu, yazdırma ifadeleri, hata ayıklayıcılar ve metodik testler gibi geleneksel yöntemleri içeriyordu. Bir koordinat dönüşümü veya PID ayarlama problemiyle takıldığımda, bir AI asistanına konsepti açıklamasını ya da sorunu çözmesine yardım etmesini soramazdım. Bu, geliştirme sürecini önemli ölçüde daha zor ama aynı zamanda daha öğretici yaptı. Şunları yapmalıydım: Her Şeyi Manuel Olarak Araştır: PID kontrol teorisini anlamak, ders kitapları ve akademik makaleler okumak anlamına geliyordu. Koordinat dönüşümlerini çözmek, matematiği elle çözmeyi gerektiriyordu. Her kavram, uygulanmadan önce tamamen anlaşılmalıydı. AI Yardımı Olmadan Hata Ayıklama: Robotlar beklenmedik yönlerde hareket ettiğinde veya hedefler etrafında osilasyon yaptığında, mantığı adım adım izlemeli, hata çıktıları eklemeli ve hipotezleri birer birer test etmeliydim. Potansiyel sorunları öneren ya da hata desenlerini yorumlayan bir AI yoktu. İlk Prensiplerden Öğren: Python’da robotik için çoklu işlemeyi nasıl uygulayacağımı hızlıca sorabilme yeteneği olmadan, temel kavramları derinlemesine anlamam gerekiyordu. Bu, eşzamanlı programlama, kontrol sistemleri ve bilgisayarlı görme konularında sağlam bir temel oluşturmamı zorladı. Dokümantasyon Kritik Öneme Sahipti: AI’ye daha sonra kodu açıklamasına güvenemediğim için, çok açık dokümantasyon ve yorumlar yazmak zorundaydım. Bu disiplin, bilgiyi başkalarına aktarırken paha biçilmez oldu. Geriye baktığımda, modern AI araçları geliştirme sürecinin birçok yönünü hızlandırmış olsaydı da, onlarsız çalışmak daha derin problem çözme becerileri ve temel sistemlerin daha kapsamlı bir anlayışını geliştirmemi zorladı. Bugün mevcut geliştirme araçlarıyla bu projenin ne kadar farklı olabileceğini düşünmek büyüleyici. Ayrılma Kararı ZorHCR Laboratuvarında çalışmayı ne kadar sevsem de, 2021’in sonlarına doğru birçok öğrencinin karşılaştığı zor bir kararla karşılaştım: birden fazla fırsat ve sorumluluğu dengelemek. Aynı anda eBay’de tam zamanlı bir yazılım mühendisi olarak çalışıyor, Mines’de bilgisayar bilimleri derecemi tamamlıyor ve HCR Laboratuvarı’nda araştırmaya katkıda bulunuyordum. eBay fırsatı önemliydi; ilk büyük yazılım mühendisliği rolüm, paha biçilmez bir endüstri deneyimi sağladı ve bana sağlam bir gelir sağladı. Ancak tam zamanlı çalışmayı sürdürmek, derecemi tamamlamak ve araştırmaya anlamlı bir şekilde katkıda bulunmak sürdürülemezdi. Bir şeyin fedakarlık yapması gerekiyordu. Dr. Zhang’a laboratuvar çalışmasına daha fazla odaklanmak için ders yükümü azaltma konusunda yaklaştığımda, bunu kesinlikle önermezdi. Gerekçesi mantıklıydı: derecemi tamamlamak öncelik olmalı ve eBay’deki endüstri deneyimi kariyer gelişimim için değerli olacaktı. Dersleri bırakıp araştırmaya odaklanmanın cazip olmasına rağmen, uzun vadeli en iyi karar olmayabileceğini düşündü. Bu yüzden Eylül 2021’de, laboratuvarda yaklaşık 8 ay yoğun çalıştıktan sonra, araştırma asistanı rolümden geri çekilerek derecemi tamamlamaya ve eBay’deki işime odaklanma kararını aldım. O zamanlar vermem gereken en zor profesyonel kararlardan biriydi. Laboratuvardan resmi olarak ayrıldıktan sonra bile, oluşturduğum sistemlerle ilgili yardıma ihtiyaç duyan herkesin sorularına destek vermeye devam ettim. Gerektiğinde dokümantasyonu güncelledim, hata ayıklama hakkında soruları yanıtladım ve uzaktan sorunları çözmeye yardımcı oldum. Projenin başarısına yaptığım bağlar ve yatırımım, resmi olarak ekibin bir parçası olmadığım için kaybolmadı. Yansımalar ve Geri BakışŞimdi, 2025’te, dört yıl sonra, o zamanları karmaşık duygularla hatırlıyorum. Kariyer yolum beni web geliştirme ve AI/ML mühendisliğine derinleştirdi, bu alanlar inanılmaz ödüllendirici ve büyüme ve etki için büyük fırsatlar sağladı.
Yine de içinde “ya eğer” diye bir kısmım var. Robotik, ve dürüstçe hala, gerçek tutkum. Fiziksel sistemlerle çalışmak, kodunuzun gerçek dünyadaki hareket ve davranışa dönüşmesini görmek, web geliştirme ve hatta AI çalışması tam olarak kopyalayamıyor.
Farklı bir yol seçseydim ne olabilirdi diye bazen düşünüyorum. Robotik araştırmasında kalmanın bir yolunu bulmuş olsaydım? Lisans derecemi tamamladıktan hemen sonra yüksek lisans yapmış olsaydım? Endüstri deneyimi yerine laboratuvar çalışmasını önceliklendirmiş olsaydım? Ancak her yolun kendi ödülleri olduğunu da kabul ediyorum. Web geliştirme ve AI’da geliştirdiğim beceriler inanılmaz değerli oldu. Endüstri deneyimi, ölçekli yazılım mühendisliği, kullanıcı deneyimi tasarımı ve milyonlarca insanın kullandığı ürünleri oluşturmanın pratik zorlukları hakkında bana bir şeyler öğretti. Bu deneyimler beni genel olarak daha iyi bir mühendis yaptı. HCR Laboratuvarı’nda yaptığım iş, bugün sorunları nasıl ele aldığımı etkiliyor. PID kontrol sistemleri için gereken sistematik düşünme, yazılım sistemlerinde geri bildirim döngüleri tasarlarken ortaya çıkıyor. Geliştirdiğim dokümantasyon ve bilgi koruma becerileri, o zamandan beri her rolde paha biçilmez oldu. Mentorluk ve öğretim deneyimi, genç Bu sadece teknik başarılarla ilgili değildi, ancak bunlar benim için anlamlıydı. Süreklilik ve sistematik düşünme ile bir lisans öğrencisi olarak bile faydalı katkılar yapabileceğinizi öğrenmekle ilgiliydi. Gelecek ve RobotikKariyerim beni başka yönlere götürmüş olsa da, robotik tutkum azalmadı. Alanın gelişmelerini hâlâ takip ediyorum, robot öğrenimi ve otonom sistemlerdeki ilerlemeler beni heyecanlandırıyor ve zaman zaman boş zamanlarımda kişisel robotik projeleri üzerinde çalışıyorum. Gelecekte neler olacağını kim bilir? AI ve makine öğreniminde geliştirdiğim beceriler robotik için giderek daha ilgili hale geliyor. Kazandığım endüstri deneyimi, sağlam ve ölçeklenebilir sistemler nasıl inşa edileceğini öğretti. Belki de bu farklı deneyim ipliklerinin beklenmedik bir şekilde bir araya geldiği bir gelecek vardır. Şu anda, HCR Laboratuvarı’nda geçirdiğim zaman ve sağladığı deneyimler için minnettarım. Bu, hem teknik becerilerimi hem de en çok tatmin edici bulduğum iş türlerini anlamamı şekillendiren bir dönüm noktasıydı. Bazen özlesem de, öğrendiğim derslerin ve geliştirdiğim yaklaşımların yaptığım her şeyi etkilemeye devam ettiğini biliyorum. Robotlar hâlâ orada, hâlâ araştırmacılara hizmet ediyor, hâlâ önemli işleri mümkün kılıyor. Ve bu oldukça harika. |