Bab Saya Penelitian Robotika Saya
Table of Contents
Tulisan ini menceritakan perjalanan robotika saya, dimulai dengan menemukan minat saya pada robotika di FRC selama sekolah menengah pada 2015 hingga masa saya sebagai asisten peneliti di Colorado School of Mines’s Human Centered Robotics (HCR) Lab dari Februari 2021 hingga September 2021. Perhatikan bahwa sejak akhir 2022, HCR Lab telah pindah dari Colorado School of Mines ke University of Massachusetts Amherst, bersama dengan situsnya dari hcr.mines.edu ke hcr.cs.umass.edu.
Latar Belakang
Saya memulai studi sarjana saya di Colorado School of Mines pada semester Musim Gugur 2018. Jurusan saya adalah Ilmu Komputer dengan fokus pada Robotika & Sistem Cerdas. Dan saya lulus pada Musim Semi 2022.
Saya beruntung menemukan passion saya lebih awal dalam hidup saya. Selama sekolah menengah, saya menghabiskan banyak waktu untuk mencari tahu apa yang saya sukai dan apa yang bisa saya kuasai. Setelah mencoba-coba, saya berhasil mengetahui bahwa passion saya adalah ilmu komputer. Tetapi pada masa inilah saya juga menemukan bahwa saya memiliki kecintaan yang luar biasa pada membangun melalui kode.
Di Mines, saya mendapat kesempatan untuk bekerja di Laboratorium Human Centered Robotics (HCR) milik Mines di bawah Dr Hao Zhang. Saya pertama kali bertemu Dr. Zhang pada Musim Semi 2020 melalui kelasnya “Human Centered Robotics” (CSCI473), dan setelah kekacauan COVID dan pekerjaan kelas, saya mulai bekerja di laboratoriumnya pada awal Musim Semi 2021.
Kelas Human Centered Robotics (CSCI473)
Human Centered Robotics (CSCI473) di Mines adalah salah satu dari sedikit kelas dari pengalaman kuliah saya yang memberikan dampak mendalam pada saya. Kelas ini diajarkan oleh Dr. Hao Zhang. Seluruh nilai kami untuk kelas ini hanya terdiri dari tiga proyek, yang masing-masing menyajikan masalah menantang yang memperkenalkan konsep inti robotika. Proyek-proyek ini terdiri dari:
- Mempelajari Robot Operating System (ROS)
- Reinforcement Learning untuk Robot Wall Following
- Pemahaman Robot terhadap Perilaku Manusia Menggunakan Representasi Berbasis Kerangka
Mempelajari Robot Operating System (ROS)
Ini adalah proyek pertama yang diberikan kepada kami. Proyek ini terdiri dari tiga tugas:
- Menyiapkan Lingkungan Pengembangan
- Memahami Simulator Gazebo
- Menulis “Hello World” ROS
Untuk tugas 1 dan 2, kami hanya perlu menyiapkan lingkungan pengembangan kami dan mengikuti tutorial pengenalan Gazebo. Ini termasuk:
- Menyiapkan ROS Melodic, yang saya lakukan di laptop HP 2011 saya yang cukup memadai
- Memasang dan mengonfigurasi ROS dan Gazebo
- Mengikuti tutorial gazebosim dan tutorial e-manual.
Tugas 3, di sisi lain, adalah tantangan yang nyata. Tugasnya adalah menggunakan turtlesim dan membuat kura-kura menggambar logo “M” Mines:
![]() |
![]() |
Tugas ini, meskipun terdengar sederhana, lebih sulit daripada kelihatannya. Proyek ini akhirnya memperkenalkan saya pada konsep sistem Open-Loop dan Closed-Loop. Untuk deskripsi proyek lengkap, lihat csci473-p1.pdf atau Anda dapat mempelajari lebih lanjut tentang proyek ini dan solusi saya di halaman proyek ROS Move Turtle.
Reinforcement Learning untuk Robot Wall Following
Ini adalah proyek kedua yang diberikan kepada kami, dan ini adalah salah satu proyek tersulit yang pernah saya kerjakan di kuliah. Deskripsi proyeknya adalah sebagai berikut:
Dalam proyek ini, mahasiswa akan merancang dan mengimplementasikan algoritma reinforcement learning untuk mengajarkan robot bergerak otonom agar mengikuti dinding dan menghindari menabrak rintangan. Mahasiswa akan menggunakan simulasi Gazebo di ROS Melodic untuk mensimulasikan robot bergerak omnidireksional bernama Triton, serta menggunakan peta lingkungan yang disediakan kepada Anda. Mahasiswa akan menggunakan pemindai jarak laser pada robot untuk melakukan penginderaan dan pembelajaran, di mana robot dikendalikan menggunakan perintah kemudi dan kecepatan. Mahasiswa diwajibkan memprogram proyek ini menggunakan C++ atau Python di ROS Melodic yang berjalan pada Ubuntu 18.04 LTS (yaitu, lingkungan pengembangan yang sama yang digunakan dalam Proyek 1). Selain itu, mahasiswa diwajibkan menulis laporan mengikuti format konferensi robotika IEEE standar menggunakan LATEX.
Untuk algoritma reinforcement learning, kami diinstruksikan untuk menggunakan Q-Learning. Kami juga menggunakan lingkungan simulasi Gazebo Stingray yang disediakan oleh kelas. Stingray terdiri dari model Triton dan logika fisika. Kami juga disediakan sebuah labirin untuk diikuti oleh robot. Secara keseluruhan, lingkungan tersebut terlihat seperti ini:
Saya tidak pernah memublikasikan solusi saya ke GitHub atau web karena hasilnya tidak terlalu baik dan banyak kekurangannya. Selain itu, menjalankan kode di lingkungan yang tepat cukup sulit dan merepotkan. Namun, saya memiliki video demo yang saya serahkan ke kelas, yang menunjukkan solusi saya. Anda dapat melihatnya di sini:
Untuk deskripsi proyek lengkap, lihat csci473-p2.pdf
Pemahaman Robot terhadap Perilaku Manusia Menggunakan Representasi Berbasis Kerangka
Untuk proyek ketiga, deskripsi proyeknya adalah sebagai berikut:
Dalam proyek ini, mahasiswa akan mengimplementasikan beberapa representasi berbasis kerangka (Deliverable 1) dan menggunakan Support Vector Machines (SVM) (Deliverable 2) untuk mengklasifikasikan perilaku manusia menggunakan dataset aktivitas publik yang dikumpulkan dari sensor Kinect V1. Selain itu, mahasiswa diwajibkan menulis laporan mengikuti format konferensi robotika IEEE standar menggunakan LATEX pada Deliverable 3.
Proyek ini menantang tetapi tidak sesulit proyek kedua. Tujuan utamanya adalah menggunakan data sensor Kinect V1, dari MSR Daily Activity 3D Dataset, dan Support Vector Machines untuk mengklasifikasikan tindakan/perilaku manusia tertentu. Untuk deskripsi proyek lengkap, lihat csci473-p3.pdf atau Anda dapat mempelajari lebih lanjut tentang proyek ini dan solusi saya di posting blog Predict Human Actions Using LIBSVM.
Kesimpulan CSCI473
CSCI473 adalah salah satu, jika bukan kelas terbaik yang saya ambil selama studi sarjana saya di Mines. Semua proyek ini mengajarkan saya banyak hal dan memungkinkan saya memiliki katalog proyek yang keren untuk direnungkan dan dijadikan referensi di resume saya. Ini juga merupakan kelas pertama di mana saya merasa seperti berada di lingkungan saya, karena saya tidak pernah pandai mengerjakan ujian tetapi unggul dalam menyelesaikan proyek. Melalui kelas inilah saya bertemu Dr. Hao Zhang, yang akhirnya membantu saya mendapatkan posisi sebagai asisten peneliti di Laboratorium Human-Centered Robotics (HCR) milik Mines.
Sesi Lapangan CS (Musim Panas 2020)
Selama Musim Panas 2020, di antara menyelesaikan CSCI473 dan bergabung dengan HCR Lab, saya mengambil CSCI370 atau “Rekayasa Perangkat Lunak Lanjutan” sebagai bagian dari program sarjana CS saya di Colorado School of Mines. CSCI370 adalah mata kuliah yang membuat mahasiswa merancang, mengimplementasikan, dan mendokumentasikan solusi terkait perangkat lunak untuk sebuah perusahaan. Mata kuliah ini memungkinkan mahasiswa menerapkan pengetahuan perkuliahan mereka pada masalah ilmu komputer di dunia nyata. Anda dapat mempelajari lebih lanjut tentang mata kuliah ini di sini.
Dalam mata kuliah ini, Anda dapat memutuskan proyek/perusahaan mana yang akan Anda kerjakan. Mata kuliah ini menyediakan PDF yang merinci setiap proyek dan perusahaan. Pada akhirnya saya memutuskan untuk mengerjakan proyek yang diposting oleh perusahaan bernama Lunar Outpost berjudul “Deteksi Selip Roda Real Time dan Koreksi Kesalahan untuk Navigasi Bulan yang Ditingkatkan”. Karena namanya panjang, mari kita beri alias untuk proyek ini sebagai “Deteksi Selip Roda”.
Masalah
Lunar Outpost adalah sebuah perusahaan rintisan yang mencoba menciptakan rover bulan otonom. Di bulan, ada banyak debu bulan yang dikenal menyebabkan banyak selip roda. Ini tidak ideal karena selip roda dapat menyebabkan sistem otonom kehilangan jejak lokasi mereka di dunia nyata. Di Bumi, hal ini diselesaikan dengan menggunakan data GPS untuk mengoreksi setiap offset yang disebabkan oleh selip roda. Namun masalah dengan GPS adalah bahwa ia hanya bekerja dengan adanya 30+ satelit navigasi yang terus-menerus mengorbit Bumi dan mentransmisikan sinyal unik yang memungkinkan komputer menghitung posisinya. Tetapi di bulan, saat ini tidak ada GPS seperti itu. Mengetahui hal ini, metode lain selain GPS harus digunakan untuk mendeteksi selip roda. Laporan yang lebih rinci tentang masalah proyek dapat dilihat di sini.
Tim
Proyek ini bukan proyek yang sederhana, jadi harus dikerjakan dalam tim. Tim ini terdiri dari lima mahasiswa lain dari Colorado School of Mines:
Proyek ini bukan proyek yang sederhana, jadi harus dikerjakan dalam tim. Tim ini terdiri dari Mehmet Yilmaz (saya), Kane Bruce, Braedon O’Callaghan, Liam Williams, dan Kevin Grant.
Proyek ini mengharuskan kami mengetahui beberapa ROS, C++, Python, Linux, Raspberry Pi, dan Arduino. Sebagian besar dari kami memiliki pengalaman dalam satu atau lebih teknologi ini tetapi saya adalah satu-satunya yang memiliki pengalaman dalam ROS karena saya menggunakan ROS di kelas Human Centered Robotics (CSCI473) saya selama semester Musim Semi 2020. Karena itu, sejak awal, saya membantu semua orang agar cepat memahami ROS dan cara mengembangkannya untuk itu.
Tantangan
Dalam proyek ini ada banyak tantangan. Namun tantangan terbesar yang kami hadapi adalah tidak adanya akses ke robot dunia nyata untuk pengujian. Hal ini disebabkan oleh COVID yang membuat segalanya dilakukan secara jarak jauh dan mencegah kami bekerja di laboratorium/bangunan Lunar Outpost. Karena itu, kami harus menggunakan simulasi.
Selain itu, kami menelusuri beberapa penelitian akademik dari WVU Navigation Lab untuk mendapatkan gambaran tentang bagaimana masalah Wheel Slippage dapat diselesaikan untuk kasus penggunaan Lunar Outpost, yang bagi kami, sebagai mahasiswa tingkat dua dan tiga sarjana, jauh lebih sulit daripada yang kami perkirakan.
Tantangan lain yang kami hadapi adalah jumlah waktu yang kami miliki untuk mengerjakan proyek ini. CSCI370 adalah kelas selama satu bulan. Tetapi masalah itu sendiri adalah masalah besar yang telah coba dipecahkan/disempurnakan oleh banyak perusahaan dan akademisi selama beberapa dekade. Jadi satu bulan jelas jauh dari cukup untuk menyelesaikan masalah ini. Namun, terlepas dari semua tantangan ini, kami terus maju dan memastikan untuk menyelesaikannya.
Kesimpulan
Setelah melalui semua penelitian dan pengembangan, kami menyimpulkan bahwa hampir mustahil untuk mensimulasikan fisika bulan yang benar secara digital, jadi benar-benar mencoba algoritme ini dalam simulasi tidaklah baik dan tidak akan menghasilkan penelitian yang berarti apa pun dalam deteksi selip roda di luar angkasa dan di bulan. Kami menyimpulkan bahwa menyiapkan lingkungan pengujian yang tepat menggunakan sesuatu seperti pasir dan perangkat keras nyata, seperti robot Husky, jauh lebih penting untuk jenis penelitian ini. Kami memang memperbarui kode deteksi selip roda agar bekerja sebagai node ROS dan kode itu berfungsi dengan baik serta dapat dengan mudah diimpor ke perangkat keras nyata untuk pengujian. Proyek ini memungkinkan saya mengambil peran kepemimpinan, mendidik rekan-rekan saya tentang pengembangan ROS, dan memperoleh pengalaman dengan Python, ROS, dan Gazebo sambil menangani masalah kompleks yang belum pernah saya temui sebelumnya. Yang paling penting, pengalaman ini semakin memperkuat hasrat saya terhadap robotika dan menegaskan kembali keinginan saya untuk mengejar penelitian di bidang ini, menyiapkan panggung untuk apa yang akan datang berikutnya dalam perjalanan robotika saya.
Memulai di HCR Lab
Setelah menyelesaikan CSCI473, sesi bidang CS saya pada musim panas 2020, dan semester Fall 2020 saya, saya memutuskan untuk mengejar penelitian di bidang robotika. Saya memiliki pengalaman yang sangat baik dengan CSCI473 dan Sesi Bidang CS sehingga saya memutuskan ingin melakukan penelitian untuk HCR Lab. Karena saya telah bertemu Dr. Zhang pada tahun sebelumnya, saya memutuskan untuk mengirim email kepadanya dan menanyakan apakah ada kesempatan yang mungkin dimiliki lab pada Januari 2021. Dalam waktu sekitar 2 minggu, Dr. Zhang menyatakan minat, memberi saya opsi penelitian, dan menawarkan saya peran di lab. Saya kemudian mulai bekerja untuk lab pada Februari 2021.
Video Pengantar
Berikut adalah video pengantar saya yang saya rekam beberapa bulan setelah saya berada di HCR Lab. Video ini direkam pada Mei 2021 dan membahas penelitian yang akan saya fokuskan di HCR Lab selama musim panas 2021:
Proyek Saya
Sepanjang waktu saya di HCR Lab, saya terutama berfokus pada proyek Triton. Proyek Triton adalah robot bergerak yang dikembangkan oleh Human Centered Robotics Lab di Colorado School of Mines. Ini adalah robot tanah omni-wheel berbentuk segitiga yang ditenagai oleh NVIDIA Jetson Nano.
Triton, secara gambaran sederhana, terdiri dari bagian-bagian berikut:
- NVIDIA Jetson Nano
- Seed Studio A205 Carrier Board dari NVIDIA
- Arduino Mega
- Kartu Micro SD 64 GB
- Badan cetak 3D kustom
- 3 roda mecanum
- 1 Baterai AR
- Rangkaian kustom untuk distribusi daya dan pengkabelan yang dioptimalkan
- Kamera Realsense D435 dari Intel
- Beberapa LED
Robot ini dirancang, dibangun, dan diproduksi sekitar tahun 2018-2020 sebagai robot untuk tujuan pendidikan. Saat saya bergabung, Triton sudah cukup mapan, dan lab sedang mempertimbangkan untuk membuat versi baru darinya. Namun, masalah utama dengan Triton adalah perangkat lunaknya. Triton bisa bergerak, mengisi daya, dan berfungsi dalam arti dasar, tetapi sebenarnya tidak melakukan apa pun yang cerdas. Bahkan ia tidak memiliki kemampuan untuk melakukan gerakan yang lebih maju.
![]() |
![]() |
![]() |
![]() |
Untuk mulai mengatasi hal ini, lab menyiapkan area di mana kami dapat melacak Triton. Untuk melakukan ini, mereka membuat area 2 meter kali 2 meter dengan 8 Kamera Optitrack Flex (Infrared Red) dalam bentuk seperti persegi sekitar 6-7 kaki di atas lantai.
![]() |
![]() |
Bersamaan dengan dibangunnya area ini, setiap Triton memiliki tiga bola esfera abu-abu yang dipasang di bagian atas badannya.
Dengan pengaturan ini, kami pada dasarnya telah membangun sistem GPS skala kecil kami sendiri yang memungkinkan kami mendapatkan koordinat tepat dalam meter dari sebuah Triton di area yang menjadi minat kami. Dengan menggunakan kamera inframerah Optitrack dan bola abu-abu Optitrack dalam bentuk segitiga, kami dapat menentukan koordinat tepat dari sebuah Triton di area kami. Ini memungkinkan kami menerapkan sistem loop tertutup untuk akurasi pergerakan yang lebih baik.
Sistem Optitrack menyediakan data posisi dan orientasi pada sekitar 120Hz dengan akurasi sub-milimeter ketika dikalibrasi dengan benar. Tiga penanda reflektif setiap Triton membentuk pola segitiga unik yang dapat dilacak sistem sebagai sebuah rigid body. Sistem koordinat dikalibrasi sehingga (0,0) berada di pusat area pelacakan, dengan sumbu X dan Y sejajar dengan geometri ruangan. Namun meskipun data posisi ini sangat presisi, Triton masih kesulitan dengan pergerakan.
Dengan pengaturan ini, salah satu fitur inti yang ingin kami berikan kepada Triton adalah kemampuan untuk bergerak ke koordinat tertentu. Pengguna, atau perangkat lunak mereka, dapat memberikan koordinat (x, y) dalam area yang menjadi minat mereka. Lalu robot akan bergerak ke koordinat tersebut secepat, seakurat, dan sesmulus mungkin. Saat saya bergabung, fitur ini sudah ada tetapi tidak bekerja dengan sangat baik. Berikut adalah animasi sederhana yang menunjukkan bagaimana logika pergerakan asli bekerja:
Saya tidak merekam solusi asli saat beraksi, jadi saya membuat animasi sederhana ini untuk menunjukkan kepada Anda logika pergerakan lama yang sedang bekerja. Mengetahui hal ini, apa saja masalah dengan metode ini?
- Ini sangat lambat
- Ini membuat robot memakan banyak ruang hanya untuk menuju ke titik tertentu. Hal ini membuat kami sulit menggunakan solusi ini ketika beberapa Triton sedang bergerak secara bersamaan.
Jadi mengapa perilaku ini terjadi? Masalahnya adalah Triton pertama-tama berputar, mengubah alphanya, hingga mengarah ke titik target dalam margin kesalahan tertentu. Kemudian ia akan melaju dengan cepat, dan setelah theta-nya menyimpang dari target dengan sejumlah tertentu, ia akan berhenti dan mulai berputar lagi sampai alpha berada dalam rentang yang dapat diterima untuk tujuan target. Lalu ia berlari lagi dan terus melakukan ini sampai mencapai titik tersebut. Selain itu, saat semakin dekat ke titik tujuan, kecepatan berputar dan berlari akan menjadi jauh lebih lambat untuk memastikan ia tidak melampaui target. Hal ini mengakibatkan Triton bergerak secara tidak alami, membutuhkan waktu sangat lama untuk mencapai titik target, dan memerlukan area yang sangat luas hanya untuk sampai ke titik target tertentu. Jadi dengan semua masalah ini, dan mengingat betapa pentingnya fitur ini untuk pengembangan proyek Triton, ketika saya mulai bekerja di HCR Lab, tugas pertama saya adalah mengembangkan solusi yang lebih efektif yang memungkinkan Triton menavigasi ke titik tujuan dengan lebih baik.
Mengetahui hal ini, saya menghabiskan banyak waktu melakukan penelitian tentang cara terbaik untuk mengatasi masalah ini. Ironisnya, saya sedang mengambil kelas yang disebut Introduction to Feedback Control Systems (EENG307) di Mines. Di awal kelas itu, kami belajar tentang konsep pengendali loop terbuka dan pengendali loop tertutup. Mengetahui hal ini, dan setelah beberapa diskusi yang saya lakukan dengan profesor kelas itu dan teman sekamar saya yang pintar, menjadi jelas bahwa tujuan untuk membawa Triton ke titik tujuan adalah masalah sistem loop tertutup.
Sekarang, setelah pengujian dan penelitian yang ekstensif, saya mengembangkan dua pendekatan pengendali yang berbeda untuk Triton:
Metode 1: Pengendali Jarak-Theta
Pendekatan ini menggunakan dua pengendali proporsional terpisah yang berjalan secara bersamaan:
- Pengendali Jarak: Menghitung jarak Euclidean ke target dan menerapkan penguatan proporsional untuk menentukan kecepatan maju/mundur
- Pengendali Theta: Menghitung galat sudut antara arah hadap robot saat ini dan arah hadap yang diinginkan ke target, dengan menerapkan penguatan proporsional terpisah untuk kecepatan rotasi
Algoritme ini terus-menerus menghitung jarak Euclidean ke target dan galat sudut antara arah hadap robot saat ini dan arah yang diinginkan. Dua penguatan proporsional terpisah diterapkan untuk menghasilkan kecepatan linear dan sudut masing-masing.
Hal ini membuat Triton secara alami berbelok ke arah tujuan sambil bergerak maju secara bersamaan, menciptakan lintasan melengkung yang mulus. Keuntungan utamanya adalah robot selalu menjaga bagian depannya menghadap ke tujuan, yang sangat penting untuk aplikasi berbasis kamera.
Metode 2: Pengendali Koordinat X-Y
Pendekatan ini memperlakukan robot seperti plotter 2D, dengan kontrol independen atas pergerakan X dan Y:
- Pengendali X: Secara langsung mengendalikan pergerakan timur-barat berdasarkan kesalahan koordinat X
- Pengendali Y: Secara langsung mengendalikan pergerakan utara-selatan berdasarkan kesalahan koordinat Y
Implementasinya menghitung kesalahan koordinat X dan Y secara independen, menerapkan penguatan proporsional terpisah, lalu mengubah komponen kecepatan global ini ke kerangka koordinat lokal robot menggunakan matriks rotasi. Transformasi ini diperlukan karena penggerak omni-wheel robot membutuhkan kecepatan dalam kerangka acuannya sendiri, bukan dalam koordinat global. Metode ini menghasilkan jalur paling langsung ke target dan jauh lebih cepat, tetapi arah hadap robot akan melayang karena tidak ada kontrol orientasi eksplisit.
Untuk metode #1, saya menjelaskan metode ini secara lengkap dalam blog Move Turtle (TurtleSim) saya. Saya sangat merekomendasikan Anda membaca blog ini untuk mendapatkan semua detail tentang cara kerja pengendali PID secara umum, serta cara kerja metode #1. Saya mengembangkan metode #1 menggunakan TurtleSim ROS, lalu memindahkan kode itu ke Triton dan memperbaruinya agar sesuai dengan lingkungan yang lebih nyata.
Metode #2 menggunakan pendekatan yang cukup berbeda tetapi sama efektifnya. Alih-alih memikirkan orientasi robot dan jarak ke tujuan, metode ini memperlakukan pergerakan seperti masalah bidang koordinat. Pengendali terus-menerus menghitung kesalahan pada arah X dan Y secara terpisah. Sebagai contoh, jika robot perlu bergerak dari (0,0) ke (2,3), ini dipandang sebagai kebutuhan untuk mengoreksi kesalahan 2 meter pada X dan 3 meter pada Y. Dua pengendali proporsional bekerja secara bersamaan: satu menyesuaikan kecepatan robot pada arah X berdasarkan kesalahan X, sementara yang lain menangani pergerakan arah Y berdasarkan kesalahan Y. Ini menciptakan jalur yang lebih langsung ke tujuan, mirip seperti bagaimana kepala printer 3D bergerak, dan memungkinkan pergerakan diagonal yang halus. Robot tidak perlu secara eksplisit berbelok untuk menghadap targetnya, sehingga metode ini sangat efektif di ruang sempit atau ketika penempatan yang presisi diperlukan.
Kedua metode terbukti jauh lebih cepat dan lebih andal dibandingkan pendekatan awal. Untuk melihat metode-metode baru ini beraksi, lihat Daftar Putar Tritons in Action, yang menampilkan semua Triton beraksi dengan metode-metode baru.
Yang sebelumnya memerlukan 30-45 detik untuk pergerakan sederhana dari satu titik ke titik lain kini hanya memerlukan sekitar 8-12 detik. Yang lebih penting, Triton kini dapat bernavigasi lebih efisien di ruang sempit, yang menjadi berguna untuk skenario multi-robot kami.
Tantangan Pengembangan dan Debugging
Menerapkan pengendali-pengendali ini tidaklah sederhana dan melibatkan beberapa tantangan debugging yang signifikan:
Transformasi Sistem Koordinat: Salah satu aspek yang paling rumit adalah mendapatkan transformasi koordinat yang tepat. Sistem Optitrack menyediakan data dalam kerangka koordinatnya sendiri, robot memiliki kerangka koordinat lokalnya sendiri, dan saya perlu mengonversi di antara keduanya secara akurat. Implementasi awal membuat robot bergerak ke arah yang salah karena saya mencampuradukkan perhitungan matriks rotasi.
Perilaku Dunia Nyata vs. Perilaku Ideal: Tantangan terbesar adalah memperhitungkan faktor-faktor dunia nyata yang tidak muncul dalam teori kontrol buku teks. Roda robot memiliki karakteristik gesekan yang berbeda, motor tidak merespons secara identik, dan selalu ada sedikit latensi dalam rantai komunikasi dari Optitrack ke perangkat lunak kontrol ke Arduino robot. Saya menghabiskan berminggu-minggu untuk menyetel penguatan proporsional dan menambahkan filter deadband untuk memperhitungkan realitas fisik ini.
Masalah Osilasi dan Stabilitas: Implementasi awal saya mengalami masalah osilasi di mana robot akan melewati targetnya dan bergoyang maju-mundur. Ini mengajarkan saya tentang pentingnya suku turunan dalam pengendali PID dan perlunya penyetelan penguatan yang tepat. Pada akhirnya saya memilih kontrol yang didominasi proporsional dengan penguatan yang disetel secara hati-hati daripada PID penuh, karena redaman inheren sistem sudah cukup untuk sebagian besar aplikasi.
Interferensi Multi-Robot: Ketika beberapa robot beroperasi secara bersamaan, saya menemukan pola interferensi yang tidak terduga. Robot kadang-kadang akan “saling berebut” ruang yang sama atau menciptakan situasi kebuntuan di mana mereka saling menghalangi tanpa batas waktu. Hal ini mendorong saya untuk menerapkan mekanisme koordinasi dan algoritma penghindaran tabrakan.
Sistem Kontrol Multi-Triton
Setelah saya memecahkan masalah pergerakan Triton tunggal, tantangan berikutnya di lab adalah membuat beberapa Triton bekerja bersama secara simultan. Ini menjadi salah satu area fokus utama saya dan pada akhirnya menjadi kontribusi yang signifikan bagi proyek.
Sistem awal hanya bisa mengendalikan satu Triton pada satu waktu, yang sangat membatasi kemungkinan penelitian. Lab ingin mensimulasikan skenario di mana beberapa kendaraan otonom perlu mengoordinasikan pergerakan mereka, seperti mobil swakemudi yang saling berkomunikasi untuk mengoptimalkan arus lalu lintas dan membuat peta SLAM (Simultaneous Localization and Mapping) yang lebih baik.
Untuk mengatasinya, saya menerapkan pendekatan multiproses menggunakan pustaka multiprocessing Python. Setiap Triton mendapatkan proses khususnya sendiri yang dapat berjalan secara independen sambil tetap dikoordinasikan oleh sistem kontrol pusat. Ini memungkinkan beberapa Triton bergerak secara simultan tanpa saling mengganggu loop kontrol satu sama lain.
Desain Arsitektur Multi-Robot
Arsitektur sistem yang saya kembangkan terdiri dari beberapa komponen utama:
Proses Pengendali Utama: Ini berfungsi sebagai koordinator pusat, menangani interaksi antarmuka pengguna, perencanaan jalur, dan koordinasi tingkat tinggi antar robot. Ini mempertahankan keadaan global dan mendistribusikan perintah ke proses robot individual.
Proses Robot Individual: Setiap Triton memiliki proses Python khususnya sendiri yang menangani:
- Perhitungan kontrol PID waktu nyata pada ~50Hz
- Komunikasi dengan perangkat keras robot (Arduino/Jetson)
- Eksekusi jalur lokal dan penghindaran rintangan
- Pelaporan status kembali ke pengendali utama
Komunikasi Memori Bersama: Saya menggunakan multiprocessing.shared_memory dan objek Queue Python untuk memungkinkan komunikasi yang efisien antar proses. Ini memungkinkan koordinasi waktu nyata tanpa beban tambahan komunikasi jaringan.
Mekanisme Sinkronisasi: Untuk mencegah konflik ketika beberapa robot perlu berkoordinasi (seperti menghindari tabrakan), saya menerapkan semaphore dan lock yang memungkinkan robot meminta akses eksklusif ke area tertentu di ruang kerja.
Tantangannya adalah memastikan semua robot dapat menjalankan loop kontrol mereka secara independen sambil tetap mempertahankan koordinasi global. Setiap proses robot menjalankan perhitungan PID-nya sendiri dan mengirim perintah motor langsung ke perangkat keras, sementara proses utama menangani koordinasi tingkat lebih tinggi seperti penghindaran tabrakan dan perencanaan jalur.
![]() |
![]() |
Sistem multi-Triton membuka kemungkinan penelitian yang sepenuhnya baru. Kini kami dapat mensimulasikan:
- Skenario komunikasi kendaraan-ke-kendaraan
- Perencanaan jalur terkoordinasi dengan penghindaran rintangan
- Perilaku robotika gerombolan
- Pemetaan SLAM multi-agen
- Kontrol formasi dan perilaku mengikuti
Berikut seperti apa tampilan pengaturan lab dengan beberapa Triton yang berjalan secara simultan:
![]() |
![]() |
Saya juga mengembangkan antarmuka yang ramah pengguna yang memungkinkan peneliti mendefinisikan jalur secara visual untuk setiap Triton. Anda benar-benar bisa menggambar jalur yang Anda inginkan untuk diikuti setiap robot, dan mereka akan mengeksekusi jalur-jalur ini dengan koordinasi sempurna. Ini sangat berguna untuk menyiapkan eksperimen kompleks tanpa harus mengodekan setiap pergerakan secara manual.
Sistem ini dapat menangani hingga 5 Triton secara simultan, masing-masing menjalankan pengendali PID-nya sendiri sambil dikoordinasikan melalui sistem kontrol pusat. Kinerjanya mengesankan, dengan semua robot mempertahankan akurasi individual mereka sambil bekerja bersama sebagai sebuah tim.
Berikut adalah daftar putar yang menampilkan Triton beraksi, dari kontrol satu robot hingga koordinasi multi-robot: Daftar Putar Tritons in Action
Integrasi Sensor Kedalaman dan Koreksi Koordinat
Kemajuan besar lain yang saya kerjakan melibatkan pemanfaatan kamera kedalaman Intel RealSense D435 yang dipasang pada setiap Triton. Meskipun sistem Optitrack memberi kami data penentuan posisi yang sangat presisi, saya ingin mengeksplorasi bagaimana robot dapat menggunakan sensor onboard mereka untuk meningkatkan kesadaran spasial mereka dan mengoreksi kesalahan koordinat.
Gagasannya adalah bahwa Triton dapat menggunakan sensor kedalaman mereka untuk mendeteksi Triton lain di sekitarnya dan saling mencocokkan posisi mereka. Ini akan melayani beberapa tujuan:
-
Koreksi Kesalahan: Jika sistem Optitrack mengalami drift kalibrasi atau oklusi sementara, robot dapat menggunakan konfirmasi visual posisi satu sama lain untuk mempertahankan sistem koordinat yang akurat.
-
SLAM yang Ditingkatkan: Dengan beberapa robot yang memiliki sensor kedalaman bekerja bersama, kami dapat membuat peta lingkungan yang jauh lebih kaya dengan titik data redundan.
-
Pencegahan Tabrakan: Penginderaan kedalaman secara waktu nyata akan memungkinkan robot untuk mendeteksi dan menghindari satu sama lain bahkan jika sistem kontrol pusat mengalami penundaan komunikasi.
Saya mulai bereksperimen dengan algoritma yang akan memungkinkan Triton untuk:
- Mendeteksi Triton lain menggunakan bentuk segitiga khas mereka dan penanda bola reflektif
- Menghitung posisi dan orientasi relatif menggunakan data kedalaman
- Membandingkan pengukuran ini dengan data Optitrack untuk mengidentifikasi perbedaan
- Secara potensial menyesuaikan sistem koordinat mereka secara waktu nyata untuk mempertahankan akurasi
Eksperimen Visi Komputer
Saya menghabiskan banyak waktu bereksperimen dengan pipeline visi komputer yang bekerja dalam beberapa tahap:
![]() |
![]() |
![]() |
![]() |
![]() |
Pemrosesan Data Kedalaman: Intel RealSense D435 menyediakan aliran data RGB dan kedalaman. Saya terutama bekerja dengan data kedalaman, yang datang sebagai larik 640x480 dari pengukuran jarak pada 30Hz. Tantangan pertama adalah menyaring data kedalaman yang berisik ini untuk mengekstrak informasi geometris yang bermakna.
Upaya Deteksi Objek: Saya bereksperimen dengan algoritma deteksi multistage. Saya sempat berhasil memisahkan citra kedalaman untuk mengidentifikasi objek pada tingkat lantai (menyaring dinding, langit-langit, dll.) dan mencari objek dengan karakteristik ukuran yang tepat, kira-kira dengan luas jejak 0,3x0,3 meter. Saya mencoba menggunakan deteksi tepi dan analisis geometris untuk mengidentifikasi profil Triton yang khas, dengan hasil yang beragam.
Eksperimen Pengenalan Penanda: Tiga bola reflektif pada setiap Triton tampaknya menjadi fitur deteksi yang paling menjanjikan. Saya bereksperimen dengan algoritma deteksi blob untuk mengidentifikasi pola segitiga khas dari tiga titik terang dalam citra kedalaman. Saya mendapatkan beberapa hasil yang menjanjikan dalam kondisi pencahayaan terkontrol, meskipun tidak konsisten andal.
Penelitian Fusi Koordinat: Saya meneliti pendekatan untuk menggabungkan estimasi posisi berbasis visi dengan data Optitrack, termasuk implementasi dasar filter Kalman. Konsepnya adalah memberikan bobot lebih besar pada data Optitrack ketika tersedia tetapi beralih ke visi saat dibutuhkan, meskipun saya tidak sempat mewujudkannya sepenuhnya sebelum masa saya di lab berakhir.
Tantangan Kinerja: Menjalankan semua pemrosesan ini secara waktu nyata bersamaan dengan loop kontrol robot terbukti menantang. Saya bereksperimen dengan pendekatan optimisasi untuk menjalankan algoritma pada sekitar 10-15Hz tanpa membebani kemampuan pemrosesan Jetson Nano.
Sayangnya, saya harus meninggalkan lab sebelum dapat sepenuhnya menyelesaikan pekerjaan visi komputer ini. Walaupun saya memiliki beberapa hasil awal yang menjanjikan dan belajar banyak tentang pemrosesan sensor kedalaman, saya tidak berhasil membawa sistem ini ke keadaan yang sepenuhnya andal. Itu tetap menjadi arah penelitian yang menarik yang berpotensi dibangun oleh orang lain.
Berikut video saya saat menguji algoritma visi komputer:
Berikut tampilan sensor kedalaman selama eksperimen saya:
Meskipun saya tidak menyelesaikan pekerjaan integrasi sensor kedalaman, konsep ini menunjukkan potensi untuk aplikasi seperti mensimulasikan skenario mobil otonom, di mana kendaraan perlu menyadari keberadaan satu sama lain tanpa hanya bergantung pada infrastruktur eksternal. Arah penelitian yang mulai saya jelajahi ini berpotensi berkontribusi pada pekerjaan masa depan di lab.
Dokumentasi dan Pelestarian Pengetahuan
Salah satu kontribusi terpenting saya bagi HCR Lab, dan mungkin yang paling saya banggakan, adalah mengorganisasi dan melestarikan seluruh dokumentasi proyek. Ketika saya bergabung dengan lab, pengetahuan tentang proyek Triton tersebar di berbagai platform dan format. Informasi penting tersebar di:
- Berbagai akun Google Drive milik mahasiswa berbeda yang sudah lulus
- Email lama yang terkubur di kotak masuk
- Folder Dropbox acak
- Beberapa repositori GitHub
- Repositori GitLab dengan organisasi yang tidak konsisten
- Catatan tulisan tangan yang hanya bisa ditafsirkan oleh orang tertentu
Dokumentasi yang terfragmentasi ini adalah masalah besar. Mahasiswa baru menghabiskan berminggu-minggu hanya untuk mencoba mencari tahu bagaimana memulai, dan pengetahuan berharga terus hilang ketika orang-orang lulus atau meninggalkan lab.
Saya mengambil inisiatif untuk menyelesaikan masalah ini secara sistematis. Saya menghabiskan waktu tanpa henti melacak setiap potongan dokumentasi, kode, video, dan catatan yang berkaitan dengan proyek Triton. Kemudian saya mengorganisasi semuanya ke dalam sebuah repositori GitLab terpusat dengan struktur yang jelas dan logis.
![]() |
![]() |
Dokumentasi terpusat tersebut mencakup:
- Panduan Pembangunan: Instruksi langkah demi langkah untuk merakit Triton dari awal
- Pengaturan Perangkat Lunak: Panduan lengkap untuk menyiapkan lingkungan pengembangan
- Dokumentasi Kode: Kode dengan komentar yang baik dan penjelasan yang jelas
- Spesifikasi Perangkat Keras: Daftar komponen terperinci, diagram pengkabelan, dan desain PCB
- Panduan Pemecahan Masalah: Masalah umum dan solusinya
- Tutorial Video: Saya membuat dan mengunggah video instruksional ke YouTube, termasuk tutorial kalibrasi Optitrack yang terperinci:
Saya juga menetapkan standar dokumentasi untuk memastikan kontribusi di masa depan akan terorganisasi dan mudah diakses. Struktur repositori yang saya buat menjadi fondasi bagi semua pekerjaan berikutnya di lab.
Selain hanya mengorganisasi dokumentasi yang sudah ada, saya membuat beberapa panduan dan tutorial asli yang mengisi celah penting dalam basis pengetahuan. Ini mencakup instruksi pengaturan terperinci untuk anggota lab baru, panduan pemecahan masalah yang komprehensif, dan penjelasan video tentang prosedur yang kompleks.
Dampaknya langsung dan bertahan lama. Mahasiswa baru bisa memahami sistem dalam hitungan hari, bukan minggu. Repositori dokumentasi yang saya buat masih digunakan oleh lab hingga hari ini, bertahun-tahun setelah saya pergi. Itu menjadi sumber kebenaran tunggal untuk proyek Triton dan menghemat banyak waktu/hari bagi peneliti di masa depan.
Pendampingan dan Transfer Pengetahuan
Salah satu aspek paling memuaskan dari waktu saya di HCR Lab adalah kesempatan untuk membimbing orang lain dan membagikan pengetahuan yang telah saya peroleh. Seiring pekerjaan saya berkembang dan saya menjadi lebih berpengalaman dengan sistem Triton, saya memikul tanggung jawab yang semakin besar untuk melatih anggota tim baru.
Membimbing Penerus Lab
Saat saya bersiap untuk akhirnya meninggalkan lab guna fokus menyelesaikan gelar saya dan pekerjaan saya di eBay, saya memastikan untuk melatih secara menyeluruh dua orang yang akan mengambil alih proyek Triton setelah kepergian saya. Ini bukan sekadar menunjukkan kepada mereka cara kerjanya, tetapi memastikan mereka benar-benar memahami prinsip-prinsip dasarnya sehingga mereka bisa terus berinovasi.
Saya menghabiskan berminggu-minggu bekerja erat dengan mereka, membahas:
- Fondasi matematis dari sistem kontrol PID
- Arsitektur multipemrosesan untuk mengoordinasikan beberapa robot
- Integrasi sensor kedalaman dan algoritma visi komputer
- Sistem dokumentasi dan cara memeliharanya
- Teknik debugging dan mode kegagalan yang umum
Transfer pengetahuan ini sangat menyeluruh. Kami menjalani sesi debugging nyata bersama-sama, saya meminta mereka memodifikasi dan memperluas kode yang ada, dan saya memastikan mereka dapat menyiapkan Triton baru secara mandiri dari awal.
Program Pendampingan Siswa SMA
Mungkin bahkan lebih memuaskan adalah pengalaman saya membimbing seorang siswa SMA melalui program pengabdian lab. Ini adalah kesempatan bagus untuk memperkenalkan seseorang pada robotika, ilmu komputer, dan penelitian pada tahap yang membentuk dalam pendidikan mereka.
Saya merancang kurikulum komprehensif yang mencakup:
Dasar-dasar Ilmu Komputer:
- Konsep pemrograman menggunakan Python sebagai bahasa utama
- Pengenalan pemrograman berorientasi objek
- Pemahaman tentang algoritma dan struktur data
Konsep Robotika:
- Cara kerja sensor dan cara menghubungkannya
- Kontrol aktuator dan sistem motor
- Dasar-dasar sistem otonom dan kontrol umpan balik
ROS (Robot Operating System):
- Memahami sistem pengiriman pesan publish/subscribe
- Membuat node dan layanan
- Bekerja dengan file launch dan parameter server
Pekerjaan Proyek Langsung:
- Kami berkolaborasi membuat layanan ROS yang mengendalikan sistem LED pada kepala Triton
- Dia belajar menulis kode yang bersih dan terdokumentasi yang terintegrasi dengan sistem yang sudah ada
- Layanan kontrol LED yang dia buat menjadi bagian permanen dari basis kode Triton
Yang membuat pendampingan ini sangat istimewa adalah melihat perkembangannya dari hampir tidak tahu apa-apa tentang pemrograman menjadi mampu menyumbang kode yang bermakna pada proyek penelitian aktif. Dia berubah dari bertanya, “Apa itu variabel?” menjadi mampu memecahkan masalah komunikasi ROS secara mandiri dan menulis implementasi layanan miliknya sendiri.
Sistem kontrol LED yang dia kembangkan memungkinkan peneliti dengan mudah mengubah warna dan pola LED kepala Triton melalui perintah ROS sederhana. Ini mungkin terdengar sederhana, tetapi membutuhkan pemahaman tentang arsitektur ROS, antarmuka perangkat keras, dan pola desain perangkat lunak yang tepat. Kontribusinya masih digunakan di lab hingga hari ini.
Mentorship itu sama edukatifnya bagi saya seperti bagi dia. Itu memaksa saya untuk menguraikan konsep-konsep yang kompleks menjadi bagian-bagian yang mudah dicerna dan benar-benar memikirkan dasar-dasar dari apa yang kami lakukan. Mengajar orang lain membuat saya menjadi insinyur dan peneliti yang lebih baik.
Kolaborasi dengan Penelitian PhD
Salah satu aspek yang paling memuaskan secara profesional dari waktu saya di laboratorium adalah bekerja erat dengan Peng, seorang mahasiswa PhD yang penelitiannya berfokus pada algoritma mobil swakemudi. Perbaikan perangkat lunak yang saya buat pada sistem Triton membantu mendukung penelitian doktoralnya.
Penelitian Peng membutuhkan koordinasi multi-robot yang presisi dan andal untuk mensimulasikan skenario mobil swakemudi. Sebelum perbaikan saya pada kontrol gerak dan sistem multi-robot, eksperimen-eksperimen ini jauh lebih sulit untuk dilakukan. Robot-robotnya lebih lambat, kurang akurat, dan tidak bisa bekerja sama seefektif itu.
Kontribusi saya membantu penelitian Peng dalam beberapa area:
Studi Manajemen Persimpangan: Dengan pengendali PID yang ditingkatkan dan koordinasi multi-robot, Peng dapat mensimulasikan skenario persimpangan di mana beberapa “kendaraan” (Triton) perlu mengoordinasikan pergerakan mereka. Waktu dan penempatan yang lebih baik membantu membuat studi-studi ini lebih layak dilakukan.
Komunikasi Kendaraan-ke-Kendaraan: Kerangka kerja multiproses yang saya kembangkan memungkinkan Peng untuk menerapkan dan menguji protokol komunikasi antar kendaraan yang disimulasikan. Setiap Triton dapat mengambil keputusan sambil tetap berkoordinasi dengan yang lain, serupa dengan bagaimana mobil swakemudi mungkin perlu beroperasi.
Penelitian SLAM dan Pemetaan: Pekerjaan integrasi sensor kedalaman memberi Peng data tambahan untuk penelitian lokalisasi dan pemetaan simultannya. Memiliki beberapa robot dengan kemampuan penginderaan terkoordinasi memungkinkan eksperimen pemetaan yang lebih komprehensif.
Yang membuat kolaborasi kami sangat berharga adalah bahwa ini bukan sekadar saya membantu penelitiannya, melainkan sebuah kemitraan yang nyata. Pemahaman Peng tentang aspek teoritis kendaraan otonom membantu membentuk implementasi praktis saya. Umpan balik dan kebutuhannya mendorong saya untuk membuat sistem lebih kuat dan lebih mampu.
Kami menghabiskan banyak jam di laboratorium bersama, men-debug skenario, mendiskusikan strategi kontrol yang berbeda, dan mengeksplorasi apa yang bisa dicapai platform Triton. Peng menjadi sekaligus rekan kerja dan teman, dan bekerja dengannya mengajarkan saya banyak hal tentang bagaimana penelitian akademik sebenarnya bekerja.
Sistem yang saya bangun menjadi bagian yang berguna dari pekerjaan disertasi Peng. Melihat kontribusi rekayasa praktis saya mendukung penelitian dalam teknologi kendaraan otonom benar-benar memuaskan. Itu memperkuat minat saya pada bagaimana rekayasa yang solid dan penelitian dapat bekerja bersama untuk menciptakan hasil yang berguna.
Bahkan setelah saya meninggalkan laboratorium, Peng dan saya tetap berhubungan. Mengetahui bahwa pekerjaan saya terus berkontribusi pada penelitian penting bahkan setelah kepergian saya sangat memuaskan.
Perspektif: Era Pengembangan Pra-LLM
Penting untuk dicatat bahwa semua pekerjaan ini diselesaikan selama era pengembangan perangkat lunak pra-LLM. Semua ini berlangsung antara 2020 hingga 2021 (terutama 2021), sebelum ChatGPT, Claude, Perplexity, atau alat pengembangan berbasis AI seperti Cursor IDE ada.
Setiap baris kode ditulis dari nol, setiap algoritma diteliti melalui makalah akademik dan buku teks, dan setiap sesi debugging melibatkan metode tradisional seperti pernyataan cetak, debugger, dan pengujian yang metodis. Ketika saya terjebak pada masalah transformasi koordinat atau penyetelan PID, saya tidak bisa begitu saja bertanya kepada asisten AI untuk menjelaskan konsepnya atau membantu men-debug masalah tersebut.
Ini membuat proses pengembangan jauh lebih menantang tetapi juga lebih edukatif. Saya harus:
Meneliti Semuanya Secara Manual: Memahami teori kontrol PID berarti membaca buku teks dan makalah akademik. Menentukan transformasi koordinat memerlukan pengerjaan matematikanya secara manual. Setiap konsep harus benar-benar dipahami sebelum implementasi.
Men-debug Tanpa Bantuan AI: Ketika robot bergerak ke arah yang tidak terduga atau berosilasi di sekitar target, saya harus menelusuri logika secara metodis, menambahkan keluaran debug, dan menguji hipotesis satu per satu. Tidak ada AI untuk menyarankan potensi masalah atau membantu menafsirkan pola kesalahan.
Belajar dari Prinsip Pertama: Tanpa kemampuan untuk dengan cepat bertanya “bagaimana cara saya mengimplementasikan multiproses di Python untuk robotika?” saya harus memahami konsep dasarnya secara mendalam. Ini memaksa saya membangun fondasi yang kuat dalam pemrograman konkuren, sistem kontrol, dan visi komputer.
Dokumentasi Sangat Penting: Karena saya tidak bisa mengandalkan AI untuk menjelaskan kode nanti, saya harus menulis dokumentasi dan komentar yang sangat jelas. Disiplin ini terbukti sangat berharga saat mentransfer pengetahuan kepada orang lain.
Melihat ke belakang, meskipun alat AI modern akan mempercepat banyak aspek pengembangan, bekerja tanpa mereka memaksa saya untuk mengembangkan keterampilan pemecahan masalah yang lebih dalam dan pemahaman yang lebih menyeluruh tentang sistem yang mendasarinya. Menarik untuk memikirkan betapa berbedanya proyek ini jika alat pengembangan saat ini tersedia.
Keputusan Sulit untuk Pergi
Meskipun saya sangat senang bekerja di HCR Lab, pada akhir 2021 saya menghadapi keputusan sulit yang dialami banyak mahasiswa: menyeimbangkan berbagai peluang dan tanggung jawab. Saya secara bersamaan bekerja penuh waktu sebagai insinyur perangkat lunak di eBay, menyelesaikan gelar ilmu komputer saya di Mines, dan berkontribusi pada penelitian di HCR Lab.
Peluang di eBay sangat signifikan; itu adalah peran rekayasa perangkat lunak besar pertama saya, memberikan pengalaman industri yang sangat berharga, dan memberi saya pendapatan yang stabil. Namun, mencoba mempertahankan pekerjaan penuh waktu, menyelesaikan gelar, dan berkontribusi secara berarti pada penelitian jelas tidak berkelanjutan. Harus ada sesuatu yang dikorbankan.
Ketika saya mendekati Dr. Zhang tentang kemungkinan mengurangi beban mata kuliah saya untuk lebih fokus pada pekerjaan laboratorium, beliau sangat menyarankan agar saya tidak melakukannya. Alasannya masuk akal: menyelesaikan gelar saya harus menjadi prioritas, dan pengalaman industri di eBay akan berharga untuk pengembangan karier saya. Beliau merasa bahwa meninggalkan kelas untuk fokus pada penelitian, meskipun menggoda, mungkin bukan keputusan jangka panjang terbaik.
Jadi pada September 2021, setelah sekitar 8 bulan bekerja intensif di laboratorium, saya membuat keputusan sulit untuk mundur dari peran asisten peneliti saya agar fokus menyelesaikan gelar dan pekerjaan saya di eBay. Itu adalah salah satu keputusan profesional tersulit yang harus saya ambil saat itu.
Bahkan setelah resmi meninggalkan laboratorium, saya terus memberikan dukungan kapan pun ada yang membutuhkan bantuan dengan sistem yang telah saya bangun. Saya memperbarui dokumentasi seperlunya, menjawab pertanyaan tentang debugging, dan membantu memecahkan masalah dari jarak jauh. Hubungan yang saya bangun dan investasi yang saya miliki dalam keberhasilan proyek itu tidak hilang begitu saja karena saya tidak lagi secara resmi menjadi bagian dari tim.
Refleksi dan Menengok Kembali
Sekarang, pada tahun 2025, empat tahun kemudian, saya mendapati diri saya merenungkan masa itu dengan emosi yang kompleks. Jalur karier saya membawa saya jauh ke dalam pengembangan web dan rekayasa AI/ML, bidang-bidang yang sangat memuaskan dan memberikan peluang luar biasa untuk pertumbuhan dan dampak.
Namun ada bagian dari diri saya yang bertanya-tanya “bagaimana jika.” Robotika adalah, dan sejujurnya masih, passion sejati saya. Ada sesuatu tentang bekerja dengan sistem fisik, melihat kode Anda diterjemahkan menjadi gerakan dan perilaku dunia nyata, yang tidak sepenuhnya bisa direplikasi oleh pengembangan web dan bahkan pekerjaan AI.
Kadang-kadang saya bertanya-tanya apa yang mungkin terjadi jika saya mengambil jalan yang berbeda. Bagaimana jika saya menemukan cara untuk tetap berada dalam penelitian robotika? Bagaimana jika saya langsung melanjutkan sekolah pascasarjana setelah menyelesaikan gelar sarjana saya? Bagaimana jika saya memilih untuk memprioritaskan pekerjaan laboratorium daripada pengalaman industri?
Tetapi saya juga menyadari bahwa setiap jalan memiliki komprominya. Keterampilan yang saya kembangkan dalam pengembangan web dan AI sangat berharga. Pengalaman industri mengajarkan saya tentang rekayasa perangkat lunak dalam skala besar, desain pengalaman pengguna, dan tantangan praktis dalam membangun produk yang digunakan jutaan orang. Pengalaman-pengalaman ini telah menjadikan saya insinyur yang lebih baik secara keseluruhan.
Pekerjaan yang saya lakukan di HCR Lab terus memengaruhi cara saya mendekati masalah hari ini. Pemikiran sistematis yang diperlukan untuk sistem kontrol PID muncul dalam cara saya merancang loop umpan balik dalam sistem perangkat lunak. Keterampilan dokumentasi dan pelestarian pengetahuan yang saya kembangkan sangat berharga di setiap peran sejak saat itu. Pengalaman membimbing dan mengajar telah membentuk cara saya bekerja dengan pengembang junior dan berkontribusi pada berbagi pengetahuan tim.
Yang paling penting, pengalaman itu mengajarkan saya bahwa saya berkembang ketika bekerja pada masalah teknis yang menantang dan memiliki dampak dunia nyata. Entah itu mengoptimalkan algoritma pergerakan robot atau membangun sistem AI yang membantu pengguna mencapai tujuan mereka, kepuasan datang dari memecahkan masalah sulit yang penting.
Dampak yang Bertahan Lama
Melihat kembali pengalaman HCR Lab, saya terkesan oleh seberapa banyak yang saya capai dalam waktu yang relatif singkat. Sistem yang saya bangun secara fundamental mengubah cara platform Triton beroperasi, dan banyak dari peningkatan itu masih digunakan hingga hari ini. Repositori dokumentasi yang saya buat menjadi basis pengetahuan untuk seluruh proyek. Hubungan mentoring yang saya bangun memiliki dampak jangka panjang pada orang-orang yang saya ajak bekerja sama.
Namun mungkin yang paling signifikan, pengalaman itu menunjukkan kepada saya apa yang mampu saya lakukan ketika mengerjakan masalah yang benar-benar saya minati. Dalam delapan bulan itu, saya:
- Meningkatkan sistem kendali pergerakan robot yang sebelumnya membatasi platform
- Membangun sistem koordinasi multi-robot dari awal
- Mengintegrasikan kemampuan visi komputer dan fusi sensor
- Membuat sistem dokumentasi dan manajemen pengetahuan yang komprehensif
- Membimbing beberapa orang dan membantu dengan transfer pengetahuan
- Mendukung penelitian tingkat PhD dalam kendaraan otonom
Namun, ini bukan hanya tentang pencapaian teknis, meskipun hal-hal itu bermakna bagi saya. Ini tentang belajar bahwa dengan ketekunan dan pemikiran sistematis, Anda dapat memberikan kontribusi yang berguna bahkan sebagai mahasiswa sarjana.
Masa Depan dan Robotika
Meskipun karier saya telah membawa saya ke arah lain, kecintaan saya pada robotika tidak berkurang. Saya masih mengikuti perkembangan di bidang ini, saya antusias terhadap kemajuan dalam pembelajaran robot dan sistem otonom, dan saya sesekali mengerjakan proyek robotika pribadi di waktu luang saya.
Siapa yang tahu apa yang akan dibawa masa depan? Keterampilan yang saya kembangkan dalam AI dan pembelajaran mesin semakin relevan untuk robotika. Pengalaman industri yang saya peroleh telah mengajarkan saya cara membangun sistem yang tangguh dan skalabel. Mungkin ada masa depan di mana berbagai benang pengalaman saya ini bersatu dengan cara-cara yang tak terduga.
Untuk saat ini, saya bersyukur atas waktu yang saya habiskan di HCR Lab dan pengalaman yang diberikannya. Itu adalah periode pembentukan yang membentuk baik keterampilan teknis saya maupun pemahaman saya tentang jenis pekerjaan yang paling memuaskan bagi saya. Meskipun saya terkadang merindukannya, saya tahu bahwa pelajaran yang saya pelajari dan pendekatan yang saya kembangkan terus memengaruhi segala sesuatu yang saya lakukan.
Robot Triton masih ada, masih melayani para peneliti, masih memungkinkan pekerjaan penting. Dan itu sungguh luar biasa.

















