Aking Kabanata sa Pananaliksik sa Robotika
Table of Contents
Ang post na ito ay naglalahad ng aking paglalakbay sa robotika, nagsisimula sa pagtuklas ng aking pagkahilig sa robotika sa FRC noong mataas na paaralan noong 2015 hanggang sa aking panahon bilang research assistant sa Colorado School of Mines na Laboratoryo ng Human-Centered Robotics (HCR) mula Pebrero 2021 hanggang Setyembre 2021. Tandaan na simula huling bahagi ng 2022, ang HCR Lab ay lumipat mula sa Colorado School of Mines papuntang University of Massachusetts Amherst, kasama ang site nito mula sa hcr.mines.edu papuntang hcr.cs.umass.edu.
Pinagmulan
Nagsimula ako sa aking undergraduate na pag-aaral sa Colorado School of Mines noong Fall 2018 na semestre. Ang major ko ay Computer Science na may pokus sa Robotics & Intelligent Systems. At nagtapos ako noong Spring 2022.
Mapalad ako na natagpuan ang aking pagkahilig nang maaga sa aking buhay. Noong ako ay nasa mataas na paaralan, ginugol ko ang malaking bahagi ng oras para alamin kung ano ang gusto ko at kung ano ang maaaring maging kalakasan ko. Pagkatapos ng ilang pagsubok at pagkakamali, natukoy ko na ang aking pagkahilig ay ang computer science. Ngunit sa panahong iyon din nadiskubre ko ang malakas kong pag-ibig sa pagbuo gamit ang code.
Sa Mines, nagkaroon ako ng pagkakataon na magtrabaho sa Laboratoryo ng Human-Centered Robotics (HCR) ng Mines sa ilalim ni Dr Hao Zhang. Una kong nakilala si Dr. Zhang noong Spring 2020 sa pamamagitan ng kanyang klase na “Human Centered Robotics” (CSCI473), at pagkatapos ng kaguluhan ng COVID at ng mga gawain sa klase, nakapagsimula akong magtrabaho sa kanyang lab noong maagang Spring 2021.
Klase na Human Centered Robotics (CSCI473)
Ang Human Centered Robotics (CSCI473) ng Mines ay isa sa iilang klase sa aking karanasan sa kolehiyo na nagkaroon ng malalim na epekto sa akin. Ang klase ay itinuro ni Dr. Hao Zhang. Ang buong grado namin para sa klase ay binubuo lamang ng tatlong proyekto, na ang bawat isa ay nagpresenta ng mahirap na problema na nagpakilala ng mga pangunahing konsepto ng robotika. Ang mga proyektong ito ay binubuo ng:
- Pag-aaral ng Robot Operating System (ROS)
- Reinforcement Learning para sa Pagsunod ng Robot sa Pader
- Pag-unawa ng Robot sa mga Pag-uugali ng Tao gamit ang Skeleton-Based Representations
Pag-aaral ng Robot Operating System (ROS)
Ito ang unang proyektong ibinigay sa amin. Ang proyekto ay binubuo ng tatlong gawain:
- I-set up ang Development Environment
- Unawain ang Gazebo Simulator
- Sumulat ng isang ROS “Hello World”
Para sa mga gawain 1 at 2, kailangan lang naming i-set up ang aming development environment at sundan ang isang introduksyon sa Gazebo tutorial. Kasama rito ang:
- Pagse-set up ng ROS Melodic, na ginawa ko sa aking 2011 HP laptop na sapat na
- Pag-install at pag-configure ng ROS at Gazebo
- Pagdaan sa gazebosim’s tutorial at e-manual’s tutorial.
Ang Gawain 3, sa kabilang banda, ay isang tunay na hamon. Ang gawain ay gamitin ang turtlesim at ipapagawa ang pag-drawing ng pagong ng logo na “M” ng Mines:
![]() |
![]() |
Ang gawaing ito, kahit na mukhang simple, ay mas mahirap kaysa sa itsura. Ang proyektong ito ang nagpakilala sa akin sa konsepto ng Open-Loop at Closed-Loop systems. Para sa buong paglalarawan ng proyekto, tingnan ang csci473-p1.pdf o maaari kang matuto nang higit pa tungkol sa proyektong ito at sa aking solusyon sa pahina ng proyekto na ROS Move Turtle.
Reinforcement Learning para sa Pagsunod ng Robot sa Pader
Ito ang pangalawang proyekto na ibinigay sa amin, at ito ay isa sa mga pinakamahirap na proyekto na pinagtulungan ko sa kolehiyo. Ang paglalarawan ng proyekto ay ang sumusunod:
Sa proyektong ito, ididisenyo at ipatutupad ng mga estudyante ang mga reinforcement learning algorithm upang turuan ang isang autonomous mobile robot na sumunod sa isang pader at iwasang tumama sa mga hadlang. Gagamitin ng mga estudyante ang Gazebo simulation sa ROS Melodic upang i-simulate ang isang omni-directional mobile robot na tinatawag na Triton, at gagamit ng isang environment map na ibinigay sa iyo. Gagamitin ng mga estudyante ang isang laser range scanner sa robot para magsagawa ng sensing at pagkatuto, kung saan ang robot ay kontrolado gamit ang steering at velocity commands. Kinakailangan ng mga estudyante na i-programa ang proyektong ito gamit ang C++ o Python sa ROS Melodic na tumatakbo sa Ubuntu 18.04 LTS (ibig sabihin, ang parehong development environment na ginamit sa Project 1). Gayundin, kinakailangan ng mga estudyante na sumulat ng isang ulat na sumusunod sa format ng standard na IEEE robotics conferences gamit ang LATEX.
Para sa reinforcement learning algorithm, inutos sa amin na gamitin ang Q-Learning. Gumamit din kami ng Stingray Gazebo simulation environment na ibinigay ng klase. Ang Stingray ay binubuo ng Triton model at physics logic. Binigyan din kami ng isang maze para sundan ng robot. Sa kabuuan, ganito ang itsura ng environment:
Hindi ko na-publish ang aking solusyon sa GitHub o sa web dahil hindi ito masyadong maganda at maraming kamalian. Gayundin, ang pagpapatakbo ng code sa tamang environment ay medyo mahirap at nakakainis. Gayunpaman, mayroon akong demo video na isumite ko sa klase, na nagpapakita ng aking solusyon. Maaari mo itong panoorin dito:
Para sa buong paglalarawan ng proyekto, tingnan ang csci473-p2.pdf
Pag-unawa ng Robot sa mga Pag-uugali ng Tao gamit ang Skeleton-Based Representations
Para sa ikatlong proyekto, ang paglalarawan ng proyekto ay ang sumusunod:
Sa proyektong ito, ipatutupad ng mga estudyante ang ilang skeleton based representations (Deliverable 1) at gagamit ng Support Vector Machines (SVMs) (Deliverable 2) upang i-klasipika ang mga pag-uugali ng tao gamit ang isang pampublikong activity dataset na nakolekta mula sa isang Kinect V1 sensor. Bilang karagdagan, kinakailangan ng mga estudyante na sumulat ng isang ulat na sumusunod sa format ng standard na IEEE robotics conferences gamit ang LATEX sa Deliverable 3.
Ang proyektong ito ay hamon ngunit hindi kasing hirap ng pangalawang proyekto. Ang pangunahing layunin ay gumamit ng data mula sa Kinect V1 sensor, mula sa MSR Daily Activity 3D Dataset, at Support Vector Machines upang i-klasipika ang ilang kilos/pag-uugali ng tao. Para sa buong paglalarawan ng proyekto, tingnan ang csci473-p3.pdf o maaari mong alamin pa tungkol sa proyektong ito at sa aking solusyon sa blog post na Predict Human Actions Using LIBSVM.
Konklusyon ng CSCI473
Ang CSCI473 ay isa sa, kung hindi man ang pinakamahusay na klase na kinuha ko noong ako ay nasa undergraduate sa Mines. Lahat ng mga proyektong ito ay nagturo sa akin ng marami at nagbigay-daan upang magkaroon ako ng isang kakaibang katalogo ng mga proyekto na maipagmamalaki at magamit sa aking resume. Ito rin ang unang klase kung saan naramdaman kong ako ay nasa aking element, dahil hindi ako mahusay sa pagsusulit ngunit mahusay sa pagkumpleto ng mga proyekto. Dito ko rin nakilala si Dr. Hao Zhang, na kalaunan ay tumulong sa akin na makakuha ng posisyon bilang research assistant sa Human-Centered Robotics (HCR) Lab ng Mines.
CS Field Session (Tag-init 2020)
Noong Tag-init ng 2020, sa pagitan ng pagtapos ng CSCI473 at pagsali sa HCR Lab, kumuha ako ng CSCI370 o “Advanced Software Engineering” bilang bahagi ng aking CS undergraduate program sa Colorado School of Mines. Ang CSCI370 ay isang kurso na pinapagawa ang mga estudyante na magdisenyo, mag-implementa, at magdokumento ng mga solusyon na may kinalaman sa software para sa isang kumpanya. Pinapahintulutan nito ang mga estudyante na i-aplay ang kanilang mga natutunan sa kurso sa mga tunay na problema sa computer science. Maaari kang matuto nang higit pa tungkol sa kurso dito.
Sa kurso, ikaw ang pipili kung anong proyekto/kompanya ang pagtatrabahuhan mo. Nagbigay ang kurso ng mga PDF na naglalarawan ng bawat proyekto at kumpanya. Sa huli, nagpasya akong magtrabaho sa isang proyekto na inilagay ng isang kumpanya na tinatawag na Lunar Outpost na pinamagatang “Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation”. Dahil mahaba ang pangalan, bigyan natin ang proyekto ng alyas na “Wheel Slippage Detection”.
Ang Suliranin
Ang Lunar Outpost ay isang startup na nagtatrabaho upang lumikha ng mga autonomous lunar rover. Sa buwan, maraming lunar dust na kilala sa sanhi ng maraming pagdulas ng gulong. Hindi ito kanais-nais dahil ang pagdulas ng gulong ay maaaring magdulot na mawala sa track ng mga autonomous system ang kanilang tunay na lokasyon. Sa Earth, ito ay nasosolusyunan sa pamamagitan ng paggamit ng GPS data upang iwasto ang anumang offset na sanhi ng pagdulas ng gulong. Ngunit ang isyu sa GPS ay gumagana lamang ito sa pagkakaroon ng 30+ navigation satellites na patuloy na umiikot sa Earth sa orbit at nagpapadala ng natatanging mga signal na nagpapahintulot sa mga computer na kalkulahin ang kanilang posisyon. Ngunit sa buwan, wala pa sa kasalukuyan ang ganoong bagay tulad ng GPS. Dahil dito, kailangang gumamit ng ibang paraan bukod sa GPS upang matukoy ang pagdulas ng gulong. Ang mas detalyadong ulat ng problema ng proyekto ay makikita dito.
Ang Koponan
Ang proyektong ito ay hindi simpleng proyekto, kaya kailangan itong gawin sa isang koponan. Binubuo ang koponan ng limang kapwa estudyante mula sa Colorado School of Mines:
Ang proyektong ito ay hindi simpleng proyekto, kaya kailangan itong gawin sa isang koponan. Ang koponang ito ay binubuo nina Mehmet Yilmaz (ako), Kane Bruce, Braedon O’Callaghan, Liam Williams, at Kevin Grant.
Kinakailangan ng proyekto na may alam kami sa ROS, C++, Python, Linux, Raspberry Pi, at Arduino. Karamihan sa amin ay may karanasan sa isa o higit pa sa mga teknolohiyang ito ngunit ako lamang ang may karanasan sa ROS dahil ginamit ko ang ROS sa aking Human Centered Robotics (CSCI473) na klase noong Spring 2020 na semestre. Dahil dito, maaga akong tumulong upang mapabilis ang pagkatuto ng lahat tungkol sa ROS at kung paano mag-develop para dito.
Mga Hamon
Sa proyektong ito ay maraming mga hamon. Ngunit ang pinakamalaking hamon na hinarap namin ay ang kawalan ng access sa isang totoong robot para sa pagsubok. Ito ay dahil sa COVID na nagpadalang-layo sa lahat at pumipigil sa amin na makapasok sa lab/gusali ng Lunar Outpost. Dahil dito, kinailangan naming gumamit ng mga simulation.
Gayundin, nag-review kami ng ilang akademikong pananaliksik mula sa Laboratoryo ng Nabigasyon ng WVU upang magkaroon ng ideya kung paano masosolusyonan ang Problema ng Pagdulas ng Gulong para sa kaso ng paggamit ng Lunar Outpost, na para sa amin, bilang mga undergraduate na sophomore at junior, ay mas mahirap kaysa sa inaasahan namin.
Isa pang hamon na hinarap namin ay ang dami ng oras na mayroon kami upang magtrabaho sa proyektong ito. Ang CSCI370 ay isang buwang klase. Ngunit ang problema mismo ay isang malawak na suliranin na sinubukan at pinagbubuti ng maraming kumpanya at akademiko nang mga dekada. Kaya ang isang buwan ay napakalayo mula sa sapat na oras upang malutas ang isyung ito. Ngunit, sa kabila ng lahat ng mga hamong ito, nagpatuloy kami at sinigurado naming maihatid ang proyekto.
Konklusyon
Pagkatapos magtrabaho sa lahat ng pananaliksik at pag-unlad, napagpasyahan namin na halos imposibleng i-simulate nang tama ang pisika ng buwan nang digital, kaya ang pagsubok talaga ng algorithm na ito sa isang simulation ay hindi maganda at hindi magbubunga ng anumang makahulugang pananaliksik sa pagtuklas ng pagdulas ng gulong sa kalawakan at sa buwan. Napagpasyahan namin na ang pag-set up ng isang tamang kapaligiran sa pagsubok gamit ang isang bagay tulad ng buhangin at totoong hardware, tulad ng isang Husky robot, ay mas mahalaga para sa ganitong uri ng pananaliksik. In-update namin ang code para sa pagtuklas ng pagdulas ng gulong upang gumana bilang isang ROS node at ito ay gumana nang maayos at madaling mai-import sa totoong hardware para sa pagsubok. Pinahintulutan ako ng proyektong ito na gumanap ng isang papel na pamumuno, turuan ang aking mga kasamahan tungkol sa pag-develop ng ROS, at kumuha ng karanasan sa Python, ROS, at Gazebo habang hinaharap ang isang komplikadong problema na hindi ko pa naranasan dati. Pinakamahalaga, pinalalim pa ng karanasang ito ang aking pagkahilig sa robotics at pinatibay ang aking kagustuhang magpatuloy ng pananaliksik sa larangang ito, na naghanda ng entablado para sa susunod na bahagi ng aking paglalakbay sa robotics.
Pagsisimula sa HCR Lab
Pagkatapos makumpleto ang CSCI473, ang aking CS Field Session noong tag-init ng 2020, at ang aking semestreng Fall 2020, nagpasiya akong magpatuloy sa pananaliksik sa robotics. Nagkaroon ako ng napakagandang karanasan sa parehong CSCI473 at ang CS Field Session kaya nagpasiya akong gusto kong magsagawa ng pananaliksik para sa HCR Lab. Dahil nakilala ko si Dr. Zhang noong nakaraang taon, nag-email ako sa kanya at nagtanong tungkol sa anumang oportunidad na maaari ng lab na mayroon noong Enero 2021. Sa loob ng mga halos 2 linggo, nagpakita ng interes si Dr. Zhang, ipinakita sa akin ang mga opsyon sa pananaliksik, at inalok ako ng isang papel sa lab. Nagsimula ako sa pagtatrabaho para sa lab noong Pebrero 2021.
Video ng Panimula
Narito ang aking video ng panimula na nirekord ko ilang buwan matapos akong magsimula sa HCR Lab. Nai-record ito noong Mayo 2021 at tinatalakay ang pananaliksik na aking tutukan sa HCR Lab noong tag-init ng 2021:
Aking Proyekto
Sa buong panahon ko sa HCR Lab, pangunahing nakatuon ako sa proyekto ng Triton. Ang proyektong Triton ay isang mobile robot na binuo ng Laboratoryo ng Robotics na Nakatuon sa Tao sa Colorado School of Mines. Ito ay isang triangular na omni-wheel ground robot na pinapagana ng NVIDIA’s Jetson Nano.
Sa isang simpleng paglalarawan, ang Triton ay binubuo ng mga sumusunod na bahagi:
- NVIDIA Jetson Nano
- NVIDIA’s Seed Studio A205 Carrier Board
- Arduino Mega
- 64 GB Micro SD Card
- Pasadyang 3D-printed na katawan
- 3 mecanum na gulong
- 1 AR Battery
- Pasadyang mga sirkito para sa na-optimize na pamamahagi ng kuryente at pag-wiring
- Intel’s Realsense D435 Camera
- Ilang LED
Dinisenyo, binuo, at ginawa ito noong mga taong 2018-2020 bilang isang robot para sa mga layuning pang-edukasyon. Nang sumali ako, ang Triton ay medyo naitatag na, at iniisip ng lab ang paggawa ng bagong bersyon nito. Gayunpaman, ang pangunahing isyu sa Triton ay ang software nito. Ang Triton ay maaaring gumalaw, mag-charge, at gumana sa isang pangunahing paraan ngunit hindi talaga gumagawa ng anumang matalinong bagay. Nawawalan pa ito ng kakayahang gumawa ng mas advanced na mga galaw.
![]() |
![]() |
![]() |
![]() |
Upang simulan ang pag-aaddress nito, nag-set up ang lab ng isang lugar kung saan maaari naming subaybayan ang Triton. Para gawin ito, gumawa sila ng 2-metro sa 2-metro na lugar na may 8 Optitrack Flex (Infrared Red) Cameras sa hugis-parihaba na nakapaligid mga 6-7 talampakan mula sa sahig.
![]() |
![]() |
Kasama ng pagkakaroon ng lugar na ito, bawat Triton ay may tatlong gray na sphere balls na nakakabit sa tuktok ng kanilang mga katawan.
Sa setup na ito, epektibo kaming nakapagtayo ng aming sariling maliit na GPS system na nagpapahintulot sa amin na makuha ang eksaktong mga koordinada sa metro ng isang Triton sa aming lugar ng interes. Sa pamamagitan ng paggamit ng mga infrared camera ng Optitrack at ang mga gray spheres ng Optitrack sa isang tatsulok na hugis, maaari naming tukuyin nang eksakto ang mga koordinada ng isang Triton sa aming lugar. Pinahintulutan kami nito na mag-apply ng isang saradong-loop na sistema para sa mas mahusay na kawastuhan sa paggalaw.
Nagbibigay ang sistema ng Optitrack ng posisyon at datos ng oryentasyon sa mga humigit-kumulang 120Hz na may sub-milimetrong katumpakan kapag maayos na na-calibrate. Ang tatlong reflective markers ng bawat Triton ay bumubuo ng isang natatanging tatsulok na pattern na maaaring subaybayan ng sistema bilang isang rigid body. Ang coordinate system ay na-calibrate upang ang (0,0) ay nasa gitna ng tracking area, na may X at Y axes na naka-align sa geometry ng silid. Ngunit sa kabila ng tumpak na datos na ito sa pagposisyon, nahirapan pa rin ang Triton sa paggalaw.
Sa setup na ito, isang pangunahing tampok na nais naming ibigay sa Triton ay ang kakayahang lumipat sa isang partikular na koordinada. Maaaring magbigay ang user, o ang kanilang software, ng isang (x, y) na koordinada sa loob ng kanilang lugar ng interes. Pagkatapos ang robot ay lilipat sa koordinadang iyon nang kasing bilis, tumpak, at tuluy-tuloy hangga’t maaari. Nang ako ay sumali, umiiral ang tampok na ito ngunit hindi ito gumagana nang maayos. Narito ang isang simpleng animasyon na nagpapakita kung paano gumana ang orihinal na lohika ng paggalaw:
Hindi ko narekord ang orihinal na solusyon sa aksyon, kaya gumawa ako ng simpleng animasyon na ito na nagpapakita sa iyo ng lumang lohika ng paggalaw sa aksyon. Alam ito, ano ang mga isyu sa pamamaraang ito?
- Ito ay talagang mabagal
- Ginagawa nitong kumain ng maraming espasyo ang robot para lamang pumunta sa isang partikular na punto. Pinahirapan kami nito na gamitin ang solusyong ito kapag maraming Tritons ang gumagalaw sa paligid.
Bakit nagaganap ang pag-uugaling ito? Ang isyu ay ang Triton ay unang umiikot, binabago ang alpha nito, hanggang sa ito ay nakaturo patungo sa target na punto sa loob ng isang tiyak na margin ng error. Pagkatapos ito ay mag-sprint pasulong, at matapos ang theta nito ay lumihis mula sa target ng isang tiyak na halaga, titigil ito at magsisimulang umikot muli hanggang ang alpha ay nasa loob ng katanggap-tanggap na saklaw para sa target na layunin. Pagkatapos ay mag-sprint muli at patuloy na ginagawa ito hanggang makarating ito sa punto. Gayundin, habang papalapit ito sa goal point, ang bilis ng pag-ikot at pag-sprint ay bumabagal nang malaki upang tiyakin na hindi ito ma-overshoot. Nagresulta ito sa hindi likas na paggalaw ng Triton, tumatagal ng napakatagal upang makarating sa isang target na punto, at nangangailangan ng napakaraming lugar para lamang makarating sa isang partikular na target na punto. Kaya sa lahat ng mga isyung ito, at isinasaalang-alang kung gaano kahalaga ang tampok na ito para sa pag-develop ng proyektong Triton, nang nagsimula akong magtrabaho sa HCR Lab, ang aking unang gawain ay bumuo ng mas epektibong mga solusyon na magpapahintulot sa Triton na mas mahusay na mag-navigate sa isang goal point.
Alam ito, naglaan ako ng maraming oras sa pananaliksik tungkol sa pinakamahusay na posibleng paraan ng pag-aaddress ng problema. Ironically, kumukuha ako ng isang klase na tinatawag na Panimula sa Mga Sistema ng Feedback Control (EENG307) sa Mines. Maaga sa klase na iyon, natutunan namin ang tungkol sa konsepto ng mga kontroler na bukas-loop at mga kontroler na saradong-loop. Alam ito, at pagkatapos ng ilang pag-uusap na nagkaroon ako sa propesor ng klaseng iyon at sa aking matalinong kasama sa apartment, naging malinaw na ang layunin na ito ng pagdadala ng Triton sa isang goal point ay isang problema ng saradong-loop na sistema.
Ngayon, pagkatapos ng malawakang pagsubok at pananaliksik, nakabuo ako ng dalawang magkahiwalay na pamamaraan ng controller para sa mga Triton:
Pamamaraan 1: Kontroler na Distansya-Theta
Gumamit ang pamamaraang ito ng dalawang magkahiwalay na proporsyonal na mga kontroler na tumatakbo nang sabay:
- Kontroler ng Distansya: Kinakalkula ang Euklidyanong distansya papunta sa target at nag-aaplay ng proporsyonal na gain upang matukoy ang pasulong/paurong na bilis
- Kontroler ng Theta: Kinakalkula ang error sa anggulo sa pagitan ng kasalukuyang heading ng robot at ang ninanais na direksyon papunta sa target, na nag-aaplay ng hiwalay na proporsyonal na gain para sa bilis ng pag-ikot
Patuloy na kinakalkula ng algorithm ang Euklidyanong distansya papunta sa target at ang error sa anggulo sa pagitan ng kasalukuyang heading ng robot at ang ninanais na direksyon. Dalawang magkahiwalay na proporsyonal na mga gain ang iniaaplay upang makabuo ng mga linear at angular na bilis, ayon sa pagkakasunud-sunod.
Nagresulta ito sa natural na pag-ikot ng Triton patungo sa layunin habang sabay na gumagalaw pasulong, na lumilikha ng makinis na kurbadang mga landas. Ang pangunahing bentahe ay palaging pinananatili ng robot ang harap nito na naka-orient patungo sa destinasyon, na napakahalaga para sa mga aplikasyon na batay sa camera.
Paraan 2: Kontroler ng X-Y na Koordinado
Itong pamamaraan ay tinuring ang robot na parang 2D plotter, na may independiyenteng kontrol ng paggalaw sa X at Y:
- X Controller: Direktang kinokontrol ang paggalaw silangan-kanluran batay sa error sa X-coordinate
- Y Controller: Direktang kinokontrol ang paggalaw hilaga-timog batay sa error sa Y-coordinate
Ang implementasyon ay nagkalkula ng mga error sa X at Y na coordinate nang hiwalay, nag-apply ng magkakahiwalay na proportional gains, at pagkatapos ay binago ang mga global velocity component na ito sa lokal na coordinate frame ng robot gamit ang mga rotation matrix. Ang transformasyong ito ay kinakailangan dahil ang omni-wheel drivetrain ng robot ay nangangailangan ng mga bilis sa sarili nitong reference frame, hindi sa global na koordinado. Ang pamamaraang ito ay nagbunga ng pinaka-direktang mga landas patungo sa mga target at mas mabilis nang malaki, ngunit ang heading ng robot ay kumakalas dahil walang tahasang kontrol sa orientasyon.
Para sa paraan #1, detalyado kong tinalakay ang pamamaraang ito sa aking Blog ng Move Turtle (TurtleSim). Lubos kong inirerekomenda na basahin mo ang blog na ito upang makuha ang lahat ng detalye kung paano gumagana ang mga PID controller sa pangkalahatan, pati na rin kung paano gumagana ang paraan #1. Binuo ko ang paraan #1 gamit ang ROS’s TurtleSim, pagkatapos ay inilipat ang code na iyon sa Triton at in-update ito upang isaalang-alang ang mas real-world na kapaligiran.
Gumamit ang Paraan #2 ng medyo ibang ngunit pantay na epektibong pamamaraan. Sa halip na isipin ang orientasyon ng robot at distansya papunta sa layunin, itinuturing ng pamamaraang ito ang paggalaw na parang problema sa coordinate plane. Tuloy-tuloy na kinakalkula ng kontroler ang error sa parehong direksyon ng X at Y nang hiwalay. Halimbawa, kung kailangan ng robot na lumipat mula (0,0) papuntang (2,3), tinitingnan nito ito bilang kinakailangang iwasto ang 2-metrong error sa X at 3-metrong error sa Y. Dalawang proportional controller ang sabay-sabay na gumana: isa ang nag-aayos ng bilis ng robot sa direksyon ng X base sa X-error, habang ang isa naman ay humahawak ng paggalaw sa direksyon ng Y base sa Y-error. Nilikha nito ang mas direktang landas patungo sa layunin, katulad ng paggalaw ng ulo ng 3D printer, at nagbigay-daan para sa maayos na diagonal na paggalaw. Hindi na kailangang tahasang iikot ng robot upang harapin ang target, ginagawa ang pamamaraang ito na partikular na epektibo sa masikip na mga lugar o kapag kinakailangan ang tumpak na pagposisyon.
Napatunayan na ang parehong mga pamamaraan ay mas mabilis at mas maaasahan kaysa sa orihinal na pamamaraan. Upang makita ang mga bagong pamamaraang ito sa aksyon, tingnan ang Playlist ng Tritons sa Aksyon, na nagpapakita ng lahat ng mga Triton sa aksyon gamit ang mga bagong pamamaraan.
Ang dati ay tumatagal nang 30-45 segundo para sa isang simpleng paggalaw mula punto-papunta-punto ay ngayo’y tumatagal nang humigit-kumulang 8-12 segundo. Mas mahalaga, ang Triton ay maaari nang mag-navigate nang mas mahusay sa masikip na mga espasyo, na naging kapaki-pakinabang para sa aming mga multi-robot na senaryo.
Mga Hamon sa Pag-develop at Pag-debug
Ang pagpapatupad ng mga kontroler na ito ay hindi naging diretso at nagdulot ng ilang mahahalagang hamon sa pag-debug:
Coordinate System Transformations: Isa sa mga pinakamahirap na aspeto ay ang magawa nang tama ang mga transformasyon ng koordinado. Ang Optitrack system ay nagbibigay ng data sa sarili nitong coordinate frame, ang robot ay may lokal na coordinate frame, at kailangan kong mag-convert nang tama sa pagitan nila. Ang mga maagang implementasyon ay nagkaroon ng mga robot na gumagalaw sa maling direksyon dahil napagulo ko ang mga kalkulasyon ng rotation matrix.
Real-World vs. Ideal Behavior: Ang pinakamalaking hamon ay ang pag-account sa mga real-world na salik na hindi lumilitaw sa textbook control theory. Ang mga gulong ng robot ay may magkakaibang katangian ng pagkikiskisan, hindi pareho ang tugon ng mga motor, at palaging may latency sa communication chain mula Optitrack papunta sa control software papunta sa Arduino ng robot. Gumugol ako ng mga linggo sa pagtunog ng proportional gains at pagdaragdag ng mga deadband filter upang isaalang-alang ang mga pisikal na realidad na ito.
Oscillation and Stability Issues: Ang aking mga unang implementasyon ay nagkaroon ng problema sa oscillation kung saan ang mga robot ay nag-overshoot ng kanilang mga target at kumakalog pabalik-balik. Tinuruan ako nito tungkol sa kahalagahan ng derivative terms sa mga PID controller at ang pangangailangan ng tamang gain tuning. Sa huli pinili ko ang higit na proportional control na may maingat na tinunong gains kaysa sa full PID, dahil ang inherent damping ng sistema ay sapat na para sa karamihan ng mga aplikasyon.
Multi-Robot Interference: Nang sabay-sabay na gumana ang maraming robot, nakatagpo ako ng mga hindi inaasahang pattern ng interference. Minsan nagkakaroon ng “labanan” ang mga robot sa parehong espasyo o lumilikha ng deadlock na sitwasyon kung saan na-block sila ng isa’t isa nang walang katapusan. Ito ang nag-udyok sa akin na magpatupad ng mga mekanismo ng koordinasyon at mga algorithm ng pag-iwas sa banggaan.
Multi-Triton Control System
Nang malutas ko na ang problema ng paggalaw ng isang Triton, ang susunod na hamon ng lab ay ang pagpapagana sa maraming Triton na magtrabaho nang sabay-sabay. Ito ay naging isa sa mga pangunahing pokus ko at naging malaking kontribusyon sa proyekto.
Ang orihinal na sistema ay makakakontrol lang ng isang Triton sa isang pagkakataon, na seryosong naglimit sa mga posibilidad ng pananaliksik. Gusto ng lab na i-simulate ang mga senaryo kung saan ang maraming autonomous na sasakyan ay kailangang mag-coordinate ng kanilang mga paggalaw, tulad ng mga self-driving car na nag-uusap sa isa’t isa upang i-optimize ang daloy ng trapiko at lumikha ng mas magagandang SLAM (Simultaneous Localization and Mapping) na mga mapa.
Upang lutasin ito, nagpatupad ako ng multi-processing na pamamaraan gamit ang Python’s multiprocessing library. Bawat Triton ay nakakuha ng sariling dedikadong proseso na maaaring tumakbo nang independiyente habang naka-coordinate pa rin ng isang sentral na control system. Pinahintulutan nito ang maraming Triton na gumalaw nang sabay-sabay nang hindi nag-iinterfere sa control loops ng isa’t isa.
Disenyo ng Arkitektura para sa Maramihang Robot
Ang arkitektura ng sistema na binuo ko ay binubuo ng ilang pangunahing bahagi:
Main Controller Process: Ito ang nagsilbing sentral na tagakoordina, humahawak sa mga interaksiyon ng user interface, path planning, at mataas-na-lebel na koordinasyon sa pagitan ng mga robot. Pinananatili nito ang global na estado at nagdi-distribute ng mga command sa mga indibidwal na proseso ng robot.
Individual Robot Processes: Bawat Triton ay may sariling dedikadong Python na proseso na humahawak ng:
- Mga kalkulasyon ng real-time na kontrol ng PID sa ~50Hz
- Komunikasyon sa hardware ng robot (Arduino/Jetson)
- Lokal na pag-eexecute ng path at pag-iwas sa hadlang
- Pag-uulat ng status pabalik sa main controller
Shared Memory Communication: Ginamit ko ang multiprocessing.shared_memory at Queue objects ng Python upang payagan ang mahusay na komunikasyon sa pagitan ng mga proseso. Pinahintulutan nito ang real-time na koordinasyon nang walang overhead ng network communication.
Synchronization Mechanisms: Upang maiwasan ang mga conflict kapag kailangang mag-coordinate ang maraming robot (tulad ng pag-iwas sa banggaan), nagpataupad ako ng mga semaporo at mga lock na nagpapahintulot sa mga robot na humiling ng eksklusibong access sa ilang bahagi ng workspace.
Ang hamon ay tiyakin na lahat ng mga robot ay maaaring patakbuhin ang kanilang control loops nang independiyente habang pinapanatili pa rin ang global na koordinasyon. Bawat proseso ng robot ay nagpapatakbo ng sarili nitong mga kalkulasyon ng PID at nagpapadala ng mga motor command nang direkta sa hardware, habang ang main process ang humahawak ng mas mataas-na-lebel na koordinasyon tulad ng pag-iwas sa banggaan at path planning.
![]() |
![]() |
Binalik ng multi-Triton system ang ganap na bagong mga posibilidad sa pananaliksik. Maaari na naming i-simulate ang mga sumusunod:
- Mga senaryo ng komunikasyon sasakyan-sa-sasakyan
- Pinag-ugnay na path planning na may pag-iwas sa hadlang
- Mga pag-uugali ng swarm robotics
- Multi-agent na SLAM mapping
- Kontrol ng pormasyon at mga pag-uugali ng pagsunod
Ganito ang hitsura ng setup ng lab na may maraming Triton na tumatakbo nang sabay-sabay:
![]() |
![]() |
Bumuo rin ako ng user-friendly na interface na nagpapahintulot sa mga mananaliksik na biswal na tukuyin ang mga path para sa bawat Triton. Maaari mo literal na iguhit ang path na gusto mong sundan ng bawat robot, at i-eexecute nila ang mga path na ito nang perpektong naka-coordinate. Napaka-kapaki-pakinabang nito para sa pag-set up ng mga komplikadong eksperimento nang hindi mano-manong kino-code ang bawat galaw.
Kaya ng sistema na maghawak ng hanggang 5 Triton nang sabay-sabay, na bawat isa ay nagpapatakbo ng sarili nitong mga PID controller habang naka-coordinate sa pamamagitan ng sentral na control system. Kahanga-hanga ang performance, na ang lahat ng mga robot ay pinananatili ang kanilang indibidwal na katumpakan habang nagtatrabaho bilang isang koponan.
Narito ang isang playlist na nagpapakita ng mga Triton sa aksyon, mula sa kontrol ng isang robot hanggang sa koordinasyon ng maramihang robot: Playlist ng Tritons sa Aksyon
Integrasyon ng Depth Sensor at Pagwawasto ng Koordinado
Isa pang pangunahing pag-unlad na pinagtrabahuhan ko ay ang paggamit ng mga Intel RealSense D435 depth camera na nakakabit sa bawat Triton. Habang ang Optitrack system ay nagbibigay sa amin ng napakatumpak na positioning data, nais kong siyasatin kung paano magagamit ng mga robot ang kanilang onboard na mga sensor upang mapabuti ang kanilang spatial awareness at iwasto ang mga error sa koordinado.
Ang ideya ay ang mga Triton ay maaaring gumamit ng kanilang mga depth sensor upang matukoy ang iba pang mga Triton sa kanilang paligid at i-cross-reference ang kanilang mga posisyon. Ito ay magsisilbing maraming layunin:
-
Pagwawasto ng Error: Kung ang Optitrack system ay may anumang calibration drift o pansamantalang occlusion, maaaring gumamit ang mga robot ng visual na kumpirmasyon ng posisyon ng isa’t isa upang mapanatili ang tumpak na mga sistema ng koordinado.
-
Pinaigting na SLAM: Sa pagkakaroon ng maraming robot na may depth sensor na nagtatrabaho nang magkakasama, makakagawa kami ng mas masaganang mga mapa ng kapaligiran na may redundant na mga data point.
-
Pag-iwas sa Banggaan: Ang real-time na depth sensing ay magpapahintulot sa mga robot na matukoy at iwasan ang isa’t isa kahit na may pagkaantala sa komunikasyon ang sentral na sistema ng kontrol.
Nagsimula akong mag-eksperimento sa mga algorithm na magpapahintulot sa mga Triton na:
- Matukoy ang ibang mga Triton gamit ang kanilang natatanging tatsulok na hugis at mga replektibong sphere na marker
- Kalkulahin ang mga relatibong posisyon at oryentasyon gamit ang depth data
- Ihambing ang mga sukat na ito sa Optitrack data upang tukuyin ang mga pagkakaiba
- Posibleng i-adjust ang kanilang coordinate system nang real-time upang mapanatili ang katumpakan
Mga Eksperimento sa Computer Vision
Gumugol ako ng makabuluhang oras sa pag-eksperimento ng isang computer vision pipeline na gumagana sa ilang mga yugto:
![]() |
![]() |
![]() |
![]() |
![]() |
Pagproseso ng Depth Data: Nagbigay ang Intel RealSense D435 ng parehong RGB at depth data streams. Pangunahin kong ginamit ang depth data, na dumating bilang isang 640x480 na array ng mga sukat ng distansya sa 30Hz. Ang unang hamon ay i-filter ang maingay na depth data na ito upang makuha ang makahulugang impormasyon na geometrikal.
Mga Pagsubok sa Pag-detect ng Bagay: Nag-eksperimento ako sa multi-stage na mga detection algorithm. Nagkaroon ako ng ilang tagumpay sa pagsesegment ng depth image upang tukuyin ang mga bagay sa antas ng sahig (pagsasala ng mga pader, kisame, atbp.) at paghahanap ng mga bagay na may tamang katangian ng laki, mga humigit-kumulang 0.3x0.3 metro na footprint. Sinubukan kong gumamit ng edge detection at geometric analysis upang tukuyin ang natatanging profile ng Triton, na may halo-halong resulta.
Mga Eksperimento sa Pagkilala ng Marker: Ang tatlong replektibong sphere sa bawat Triton ay tila ang pinaka-promising na detection feature. Nag-eksperimento ako sa mga blob detection algorithm upang tukuyin ang katangian na tatsulok na pattern ng tatlong makinang na tuldok sa depth image. Nagkaroon ako ng ilang promising na resulta sa kontroladong kondisyon ng pag-iilaw, bagaman hindi ito palaging maaasahan.
Pananaliksik sa Coordinate Fusion: Nag-research ako ng mga pamamaraan para sa pag-fuse ng mga vision-based na estima ng posisyon sa Optitrack data, kabilang ang mga basic na implementasyon ng Kalman filter. Ang konsepto ay bigyan ng mas malaking timbang ang Optitrack data kapag magagamit ngunit umasa sa vision kapag kinakailangan, bagaman hindi ko ito ganap na naipatupad bago natapos ang panahon ko sa lab.
Mga Hamon sa Pagganap: Ang pagpapagana sa lahat ng pagproseso na ito na tumakbo nang real-time kasabay ng control loops ng robot ay napatunayang mahirap. Nag-eksperimento ako sa mga paraan ng pag-optimize upang paandarin ang mga algorithm sa humigit-kumulang 10-15Hz nang hindi naba-burden ang kakayahan sa pagpoproseso ng Jetson Nano.
Sa kasamaang palad, kinailangan kong lisanin ang lab bago ko ganap na matapos ang gawaing ito sa computer vision. Bagaman nagkaroon ako ng ilang promising na paunang resulta at maraming natutunan tungkol sa pagproseso ng depth sensor, hindi ko naabot ang isang ganap na maaasahang estado ng sistema. Nanatili itong isang kawili-wiling direksyon ng pananaliksik na maaaring pagbuoang pa ng iba.
Narito ang isang video ng pag-test ko ng mga algorithm sa computer vision:
Ganito ang hitsura ng view ng depth sensor habang nasa mga eksperimento ko:
Bagaman hindi ko natapos ang integrasyon ng depth sensor, ang konsepto ay nagpakita ng potensyal para sa mga aplikasyon tulad ng pagsasagawa ng simulation ng mga senaryo ng self-driving car, kung saan kailangan ng mga sasakyan na maging may kamalayan sa isa’t isa nang hindi umaasa lamang sa panlabas na imprastruktura. Ang direksyon ng pananaliksik na sinimulan ko ay posibleng makatulong sa mga hinaharap na gawain sa lab.
Dokumentasyon at Pagpapanatili ng Kaalaman
Isa sa mga pinaka-mahalagang kontribusyon ko sa HCR Lab, at marahil ang pinakapinagmamalaki ko, ay ang pag-aayos at pagpapanatili ng lahat ng dokumentasyon ng proyekto. Nang sumali ako sa lab, ang kaalaman tungkol sa proyektong Triton ay nagkalat sa iba’t ibang platform at format. Ang mahahalagang impormasyon ay kumalat sa:
- Iba’t ibang Google Drive accounts na pag-aari ng iba’t ibang estudyanteng naka-graduate na
- Mga lumang email na nakalublob sa inbox
- Mga random na Dropbox folder
- Maramihang mga repositoryo sa GitHub
- Mga repositoryo sa GitLab na may hindi magkakatugmang organisasyon
- Mga handwritten na tala na tanging ilang tao lamang ang makakaintindi
Ang pira-pirasong dokumentasyong ito ay malaking problema. Ang mga bagong estudyante ay gumugugol ng mga linggo lamang sa pagsisikap na malaman kung paano magsimula, at ang mahalagang kaalaman ay palaging nawawala kapag ang mga tao ay nagtatapos o umalis sa lab.
Kinuha ko itong responsibilidad na ayusin ang problemang ito nang sistematiko. Gumugol ako ng maraming oras sa paghahanap ng bawat piraso ng dokumentasyon, code, video, at tala na may kinalaman sa proyektong Triton. Pagkatapos ay inayos ko ang lahat sa isang sentralisadong repositoryo sa GitLab na may malinaw at lohikal na istruktura.
![]() |
![]() |
Kasama sa sentralisadong dokumentasyon ang:
- Mga Gabay sa Paggawa: Mga instruksyon ng hakbang-hakbang para sa pag-assemble ng mga Triton mula sa simula
- Pag-setup ng Software: Kumpletong mga gabay para sa pag-set up ng development environment
- Dokumentasyon ng Code: Maayos na naka-komento na code na may malinaw na mga paliwanag
- Espesipikasyon ng Hardware: Detalyadong listahan ng mga bahagi, wiring diagram, at mga disenyo ng PCB
- Mga Gabay sa Pag-troubleshoot: Mga karaniwang problema at ang kanilang mga solusyon
- Mga Tutorial na Video: Gumawa at nag-upload ako ng mga instructional na video sa YouTube, kasama ang detalyadong mga tutorial sa Optitrack calibration:
Nagtatag din ako ng mga pamantayan sa dokumentasyon upang matiyak na ang mga susunod na kontribusyon ay magiging organisado at madaling ma-access. Ang istruktura ng repositoryo na aking ginawa ay naging pundasyon para sa lahat ng kasunod na trabaho sa lab.
Higit pa sa pag-aayos lamang ng umiiral na dokumentasyon, lumikha ako ng ilang orihinal na gabay at tutorial na pumuno sa mga kritikal na puwang sa knowledge base. Kabilang dito ang detalyadong mga instruksyon sa pag-setup para sa mga bagong miyembro ng lab, komprehensibong mga gabay sa pag-troubleshoot, at mga video walkthrough ng mga komplikadong pamamaraan.
Agad at pangmatagalan ang naging epekto. Ang mga bagong estudyante ay makakakuha ng bilis sa loob ng mga araw sa halip na mga linggo. Ang repositoryo ng dokumentasyon na nilikha ko ay ginagamit pa rin ng lab hanggang ngayon, mga taon pagkatapos kong umalis. Naging iisang pinagmumulan ng katotohanan para sa proyektong Triton ito at nakapagtipid ng hindi mabilang na oras/araw para sa mga susunod na mananaliksik.
Pagme-mentor at Paglilipat ng Kaalaman
Isa sa pinaka-kasiya-siyang aspeto ng panahon ko sa HCR Lab ay ang pagkakataon na mag-mentor ng iba at ibahagi ang kaalamang aking natamo. Habang umuusad ang aking trabaho at naging mas marami ang aking karanasan sa mga sistema ng Triton, dumami rin ang aking responsibilidad sa pagsasanay ng mga bagong miyembro ng koponan.
Pagme-mentor sa mga Susunod sa Lab
Habang naghahanda ako na sa kalaunan ay lisanin ang lab upang magtuon sa pagtatapos ng aking degree at ang trabaho ko sa eBay, siniguro kong sanayin nang mabuti ang dalawang tao na magpapatuloy sa proyekto ng Triton pagkatapos ng aking pag-alis. Hindi lang ito tungkol sa pagpapakita kung paano gumagana ang mga bagay, kundi ang matiyak na tunay nilang naiintindihan ang mga ilalim na prinsipyo upang makapagpatuloy sila sa pag-iinnovate.
Gumugol ako ng mga linggo sa malapitang pagtutulungan sa kanila, pinagdaan sila sa:
- Ang mga matematikal na pundasyon ng mga sistemang PID
- Ang arkitekturang multiproseso para sa pag-coordinate ng maramihang mga robot
- Ang integrasyon ng depth sensor at mga algorithm ng computer vision
- Ang sistema ng dokumentasyon at kung paano ito panatilihin
- Mga teknik sa pag-debug at mga karaniwang mode ng pagkabigo
Napaka-komprehensibo ng paglilipat ng kaalaman. Nagdaan kami sa tunay na mga session ng pag-debug nang magkasama, pinabago at pinalawig ko ang umiiral na code kasama nila, at siniguro kong kaya nilang mag-set up nang malaya ng mga bagong Triton mula sa simula.
Programa ng Mentorya para sa High School
Marahil mas nakapagbibigay-kasiyahan pa ang karanasan ko sa pagme-mentor ng isang estudyante sa high school sa pamamagitan ng outreach program ng lab. Ito ay isang mahusay na pagkakataon upang ipakilala ang isang tao sa robotics, agham kompyuter, at pananaliksik sa isang pormasyong yugto ng kanilang edukasyon.
Dinisenyo ko ang isang komprehensibong kurikulum na sumasaklaw sa:
Mga Pangunahing Kaalaman sa Agham Kompyuter:
- Mga konsepto sa programming gamit ang Python bilang pangunahing wika
- Panimula sa object-oriented programming
- Pag-unawa sa mga algorithm at istruktura ng datos
Mga Konsepto sa Robotics:
- Paano gumagana ang mga sensor at paano makipag-interface sa mga ito
- Kontrol ng actuator at mga sistema ng motor
- Mga batayan ng mga autonomous na sistema at feedback control
ROS (Robot Operating System):
- Pag-unawa sa publish/subscribe messaging system
- Paglikha ng mga node at serbisyo
- Pagtatrabaho gamit ang mga launch file at parameter servers
Praktikal na Trabaho sa Proyekto:
- Nag-collaborate kami sa paglikha ng isang ROS service na kumokontrol sa LED system sa ulo ng Triton
- Natutunan niyang magsulat ng malinis, nadokumentong code na nag-integrate sa aming umiiral na mga sistema
- Ang LED control service na kanyang ginawa ay naging permanenteng bahagi ng Triton codebase
Ang naging kakaiba sa mentoryang ito ay ang pagmasdan ang kanyang pag-unlad mula sa halos walang alam tungkol sa programming hanggang makapag-ambag ng makabuluhang code sa isang aktibong proyekto ng pananaliksik. Mula sa pagtatanong ng “Ano ang variable?” ay nakarating siya sa independiyenteng pag-debug ng mga isyu sa komunikasyon ng ROS at pagsusulat ng kanyang sariling mga implementasyon ng serbisyo.
Ang LED control system na kanyang binuo ay nagpayagang madaling baguhin ng mga mananaliksik ang mga kulay at pattern ng mga LED sa ulo ng Triton sa pamamagitan ng simpleng mga utos ng ROS. Maaaring tunog na simple ito, ngunit nangangailangan ito ng pag-unawa sa arkitektura ng ROS, hardware interfacing, at tamang mga pattern ng disenyo ng software. Ginagamit pa rin ang kanyang kontribusyon sa lab hanggang ngayon.
Ang pagme-mentorship ay kasing-edukasyonal para sa akin gaya ng para sa kanya. Pinilit ako nitong hatiin ang mga komplikadong konsepto sa mga madaling maunawaan na bahagi at talagang pag-isipan ang mga pundamental ng aming ginagawa. Ang pagtuturo sa iba ay nagpagaling sa akin bilang isang inhinyero at mananaliksik.
Pakikipagtulungan sa Pananaliksik ng PhD
Isa sa mga pinaka-propesyonal na nagbibigay-kasiyahan sa aking panahon sa lab ay ang malapit na pagtatrabaho kay Peng, isang mag-aaral ng PhD na ang pananaliksik ay nakatuon sa mga algorithm para sa self-driving na sasakyan. Ang mga pagpapahusay sa software na ginawa ko sa sistema ng Triton ay tumulong upang suportahan ang kanyang doctoral na pananaliksik.
Kinakailangan ng pananaliksik ni Peng ang tumpak at maaasahang multi-robot na koordinasyon upang i-simulate ang mga scenario ng self-driving na sasakyan. Bago ang aking mga pagpapabuti sa kontrol ng paggalaw at mga sistema ng multi-robot, mas mahirap isagawa ang mga eksperimento na ito. Mas mabagal ang mga robot, mas hindi tumpak, at hindi nakikipagtulungan nang ganap.
Tinulungan ng aking mga kontribusyon ang pananaliksik ni Peng sa ilang mga larangan:
Pag-aaral ng Pamamahala ng Interseksyon: Sa mga pinahusay na PID controller at koordinasyon ng multi-robot, naipag-simulate ni Peng ang mga senaryo ng interseksyon kung saan ang maraming “sasakyan” (mga Triton) ay kailangang i-coordinate ang kanilang mga galaw. Ang mas mahusay na timing at posisyon ay tumulong na gawing mas posible ang mga pag-aaral na ito.
Komunikasyon mula Sasakyan-sa-Sasakyan: Ang multi-processing na framework na binuo ko ay nagpayagan kay Peng na ipatupad at subukan ang mga protocol ng komunikasyon sa pagitan ng mga simulated na sasakyan. Bawat Triton ay maaaring gumawa ng mga desisyon habang nananatiling naka-coordinate sa iba, katulad ng kung paano kailangang gumana ang mga self-driving na sasakyan.
Pananaliksik sa SLAM at Pagmamapa: Ang integrasyon ng depth sensor ay nagbigay kay Peng ng karagdagang data para sa kanyang pananaliksik sa sabay-sabay na lokalisisyon at pagmamapa. Ang pagkakaroon ng maraming robot na may coordinated sensing capabilities ay nagpayaman ng mga eksperimento sa pagmamapa.
Ang naging partikular na mahalaga sa aming pakikipagtulungan ay hindi lamang ako ang tumutulong sa kanyang pananaliksik, kundi isang tunay na pakikipagsosyo. Ang pag-unawa ni Peng sa mga teoretikal na aspeto ng autonomous na sasakyan ay nagbigay-gabay sa aking mga praktikal na implementasyon. Ang kanyang puna at mga kinakailangan ay nagtulak sa akin na gawing mas matibay at mas mahusay ang mga sistema.
Marami kaming ginugol na oras sa lab nang magkasama, nag-de-debug ng mga senaryo, pinag-uusapan ang iba’t ibang estratehiya sa kontrol, at sinisiyasat kung ano ang maaaring makamit ng plataporma ng Triton. Naging kapwa-kolehiyo at kaibigan si Peng, at maraming natutunan ako sa kanya tungkol sa kung paano talaga gumagana ang akademikong pananaliksik.
Naging kapaki-pakinabang na bahagi ng disertasyon ni Peng ang mga sistemang binuo ko. Ang makita na ang aking praktikal na kontribusyon sa engineering ay sumusuporta sa pananaliksik sa teknolohiya ng autonomous na sasakyan ay labis na nakakataba ng puso. Pinatibay nito ang aking interes sa kung paano maaaring magtulungan ang matibay na engineering at pananaliksik upang lumikha ng kapaki-pakinabang na mga resulta.
Kahit pagkatapos kong umalis sa lab, nanatili akong nakikipag-ugnayan kay Peng. Ang kaalaman na ang aking trabaho ay nagpatuloy na mag-ambag sa mahahalagang pananaliksik kahit pagkatapos ng aking pag-alis ay napaka-rewarding.
Perspektiba: Ang Panahon Bago ang LLM ng Pag-unlad
Karapat-dapat tandaan na ang lahat ng trabahong ito ay naisakatuparan sa panahon bago ang LLM sa pag-unlad ng software. Nangyari ang lahat ng ito mula 2020 hanggang 2021 (pangunahing 2021), bago umiral ang ChatGPT, Claude, Perplexity, o ang mga tool sa pag-unlad na pinapagana ng AI tulad ng Cursor IDE.
Bawat linya ng kodigo ay isinulat mula sa simula, bawat algoritmo ay sinaliksik sa pamamagitan ng mga akademikong papel at mga aklat-aralin, at bawat sesyon ng pag-debug ay kinasasangkutan ng tradisyunal na mga paraan tulad ng mga print statement, mga debugger, at metodikong pagsusuri. Nang ako ay maipit sa isang problema sa coordinate transformation o PID tuning, hindi ko maaaring basta tanungin ang isang AI assistant na ipaliwanag ang konsepto o tumulong mag-debug ng isyu.
Ginawang mas hamon ang proseso ng pag-unlad ngunit naging mas edukasyonal din. Kinailangan kong:
Saliksikin Lahat nang Mano-mano: Ang pag-unawa sa teorya ng PID control ay nangangahulugang pagbabasa ng mga aklat-aralin at akademikong papel. Ang pag-alam sa coordinate transformations ay nag-require ng pagtrabaho sa matematika nang mano-mano. Bawat konsepto ay kailangang ganap na maunawaan bago ang implementasyon.
I-debug Nang Walang Tulong ng AI: Kapag ang mga robot ay gumalaw sa mga hindi inaasahang direksyon o umuugoy sa paligid ng mga target, kinailangan kong sistematikong sundan ang lohika, magdagdag ng mga debug output, at subukan ang mga hypothesis isa-isa. Wala nang AI na magmumungkahi ng mga posibleng problema o tumulong mag-interpret ng mga pattern ng error.
Matuto mula sa Mga Pangunahing Prinsipyo: Nang walang kakayahang mabilis na magtanong ng “paano ko ipapatupad ang multi-processing sa Python para sa robotics?”, kinailangan kong maunawaan nang malalim ang mga nasa ilalim na konsepto. Pinilit ako nitong bumuo ng matibay na pundasyon sa concurrent programming, control systems, at computer vision.
Mahalaga ang Dokumentasyon: Dahil hindi ako maaaring umasa sa AI para ipaliwanag ang kodigo sa hinaharap, kinailangan kong magsulat ng napakalinaw na dokumentasyon at mga komento. Ang disiplina na ito ay napatunayang napakahalaga nang ilipat ang kaalaman sa iba.
Kung babalikan, habang ang mga modernong tool ng AI ay sana nagpalihis ng maraming aspeto ng pag-unlad, ang pagtatrabaho nang walang mga ito ay pinilit akong paunlarin ang mas malalim na kasanayan sa paglutas ng problema at mas masusing pag-unawa sa mga nakapaloob na sistema. Nakakatuwang isipin kung gaano kalaki ang pagkakaiba ng proyekto kung mayroon ang mga tool sa pag-unlad na ginagamit ngayon.
Ang Mahirap na Desisyon na Umalis
Ganoon man kalaki ang pagkagusto ko sa pagtatrabaho sa HCR Lab, bandang huli ng 2021 ay hinarap ko ang isang mahirap na desisyon na kinahaharap ng maraming estudyante: pagbabalanse ng maraming oportunidad at responsibilidad. Sabay akong nagtratrabaho nang full-time bilang isang software engineer sa eBay, tinatapos ang aking degree sa computer science sa Mines, at nag-aambag sa pananaliksik sa HCR Lab.
Malaki ang oportunidad sa eBay; ito ang aking unang malaking papel sa software engineering, nagbigay ng napakahalagang karanasan sa industriya, at nagbigay sa akin ng matibay na kita. Gayunpaman, ang pagtatangkang panatilihin ang full-time na trabaho, tapusin ang aking degree, at mag-ambag nang makahulugan sa pananaliksik ay hindi napapanatili. Kailangan may magsakripisyo.
Nang lapitan ko si Dr. Zhang tungkol sa posibleng pagbabawas ng aking kurso upang mas makapagpokus sa lab work, mariin niyang ipinayo laban dito. Matino ang kanyang rason: ang pagtatapos ng aking degree ang dapat maging prayoridad, at magiging mahalaga ang karanasan sa industriya sa eBay para sa aking pag-unlad sa karera. Naramdaman niyang ang pagbabawas ng mga klase upang magpokus sa pananaliksik, kahit nakakaakit, ay maaaring hindi ang pinakamahusay na pangmatagalang desisyon.
Kaya noong Setyembre 2021, pagkatapos ng humigit-kumulang 8 buwan ng masinsinang trabaho sa lab, ginawa ko ang mahirap na desisyon na umatras sa aking tungkulin bilang research assistant upang magpokus sa pagtatapos ng aking degree at sa aking trabaho sa eBay. Isa ito sa mga mas mahirap na propesyonal na desisyon na kailangang kong gawin noon.
Kahit pagkatapos opisyal na umalis sa lab, nagpatuloy akong magbigay ng suporta kapag may nangangailangan ng tulong sa mga sistemang binuo ko. Ina-update ko ang dokumentasyon kung kinakailangan, sumasagot sa mga tanong tungkol sa pag-debug, at tumutulong mag-troubleshoot ng mga isyu nang malayuan. Ang mga koneksyong nabuo ko at ang aking pamumuhunan sa tagumpay ng proyekto ay hindi basta nawala dahil hindi na ako opisyal na bahagi ng koponan.
Mga Pagninilay at Pagsilip sa Nakaraan
Ngayon, sa 2025, apat na taon na ang lumipas, napapaisip ako sa panahong iyon na may kumplikadong damdamin. Dinala ako ng aking landas sa karera nang malalim sa web development at AI/ML engineering, mga larangang naging napaka-rewarding at nagbigay ng malaking oportunidad para sa paglago at epekto.
Gayunpaman, may bahagi sa akin na nagtataka “paano kaya kung.” Ang robotics ay, at sa totoo lang ay nananatiling, aking totoong hilig. Mayroong isang bagay sa pagtatrabaho sa mga pisikal na sistema, na makita ang iyong kodigo na isinasalin sa totoong paggalaw at pag-uugali, na hindi ganap na mapapantayan ng web development at maging ng trabaho sa AI.
Minsan ay naiisip ko kung ano sana ang nangyari kung ako ay naglakad ng ibang landas. Paano kung nakahanap ako ng paraan upang manatili sa robotics research? Paano kung agad akong nagpatuloy sa graduate school pagkatapos kong tapusin ang aking undergraduate na degree? Paano kung pinili kong unahin ang lab work kaysa sa karanasan sa industriya?
Ngunit kinikilala ko rin na ang bawat landas ay may kapalit. Ang mga kasanayang nakuha ko sa web development at AI ay napakahalaga. Tinuturo ako ng karanasan sa industriya tungkol sa software engineering sa malaking sukat, disenyo ng karanasan ng gumagamit, at ang praktikal na mga hamon ng paggawa ng mga produkto na ginagamit ng milyong-milyong tao. Ginawa ako ng mga karanasang ito na mas mahusay na inhinyero sa kabuuan.
Ang trabahong ginawa ko sa HCR Lab ay patuloy na nakakaimpluwensya sa paraan ng aking paglapit sa mga problema ngayon. Ang sistematikong pag-iisip na kinakailangan para sa mga PID control system ay makikita sa kung paano ko idinisenyo ang mga feedback loop sa mga sistema ng software. Ang mga kasanayan sa dokumentasyon at pagpreserba ng kaalaman na aking nadebelop ay napakahalaga sa bawat tungkulin mula noon. Ang karanasan sa pagme-mentor at pagtuturo ay humubog sa paraan ng aking pakikipagtulungan sa mga junior developer at pag-ambag sa pagbabahagi ng kaalaman ng koponan.
Ang pinakamahalaga, tinuruan ako ng karanasang iyon na umuunlad ako kapag nagtatrabaho sa mga mahihirap na teknikal na problema na may totoong epekto sa mundo. Maging iyon man ay ang pag-optimize ng mga algorithm ng paggalaw ng robot o ang pagbuo ng mga AI system na tumutulong sa mga gumagamit na makamit ang kanilang mga layunin, ang kasiyahan ay nagmumula sa paglutas ng mahihirap na problema na may kabuluhan.
Ang Pangmatagalang Epekto
Sa paglingon sa karanasan sa HCR Lab, namangha ako kung gaano karami ang aking natapos sa medyo maiksing panahon. Ang mga sistemang binuo ko ay pundamental na nagbago sa kung paano gumagana ang plataporma ng Triton, at marami sa mga pagpapabuting iyon ay ginagamit pa rin hanggang ngayon. Ang repositoryo ng dokumentasyon na nilikha ko ay naging knowledge base para sa buong proyekto. Ang mga relasyon sa pagme-mentor na nabuo ko ay nag-iwan ng pangmatagalang epekto sa mga taong aking nakatrabaho.
Ngunit marahil ang pinaka-mahalaga, ipinakita ng karanasan kung ano ang kaya kong gawin kapag nagtatrabaho sa mga problemang tunay kong kinahihiligan. Sa walong buwang iyon, ako:
- Pinahusay ang sistema ng kontrol sa paggalaw ng robot na naglilimita sa plataporma
- Nagtayo ng isang sistema ng koordinasyon para sa maramihang robot mula sa simula
- Pinagsama ang mga kakayahan sa paningin ng kompyuter at pagsasanib ng sensor
- Lumikha ng komprehensibong sistema ng dokumentasyon at pamamahala ng kaalaman
- Nag-mentor ng ilang tao at tumulong sa paglilipat ng kaalaman
- Sinuportahan ang pananaliksik na antas-PhD sa mga awtonomong sasakyan
Hindi lang ito tungkol sa mga teknikal na nagawa, bagaman mahalaga ang mga iyon sa akin. Tungkol ito sa pagkatuto na sa pamamagitan ng pagtitiyaga at sistematikong pag-iisip, makakagawa ka ng kapaki-pakinabang na mga kontribusyon kahit bilang isang estudyanteng undergraduate.
Ang Hinaharap at Robotika
Habang dinala ako ng aking karera sa ibang mga direksyon, hindi humina ang aking pagmamahal sa robotika. Patuloy kong sinusubaybayan ang mga pag-unlad sa larangan, nasasabik ako sa mga pagsulong sa pagkatuto ng robot at mga awtonomong sistema, at paminsan-minsan ay nagtatrabaho ako sa mga personal na proyekto sa robotika sa aking bakanteng oras.
Sino ang nakakaalam kung ano ang dala ng hinaharap? Ang mga kasanayang binubuo ko sa artipisyal na intelihensiya at pagkatuto ng makina ay lalong nagiging may kaugnayan sa robotika. Itinuro sa akin ng karanasan sa industriya na aking nakuha kung paano bumuo ng matatag, nasusukat na mga sistema. Marahil may hinaharap kung saan ang iba’t ibang hibla ng aking karanasan ay magsasama-sama sa hindi inaasahang mga paraan.
Sa ngayon, nagpapasalamat ako sa oras na ginugol ko sa HCR Laboratoryo at sa mga karanasang ibinigay nito. Ito ay isang panahong humubog na nag-anyo sa aking mga teknikal na kasanayan at sa aking pag-unawa kung anong mga uri ng trabaho ang pinakamasaya kong gawin. Kahit na paminsan-minsan nami-miss ko ito, alam ko na ang mga aral na aking natutunan at ang mga pamamaraan na aking binuo ay patuloy na nakaimpluwensya sa lahat ng aking ginagawa.
Ang mga robot na Triton ay naroon pa rin, patuloy na nagsisilbi sa mga mananaliksik, patuloy na nagpapahintulot ng mahalagang gawain. At napakagandang bagay iyon.

















