Aking Kabanata ng Pananaliksik sa Robotics

Table of Contents

Isinalaysay ng post na ito ang aking paglalakbay sa robotics, simula sa pagtuklas ko ng aking hilig sa robotics sa FRC noong high school noong 2015 hanggang sa aking panahon bilang research assistant sa Colorado School of Mines’s Human Centered Robotics (HCR) Lab mula Pebrero 2021 hanggang Setyembre 2021. Tandaan na mula noong huling bahagi ng 2022, ang HCR Lab ay lumipat mula Colorado School of Mines patungo sa University of Massachusetts Amherst, kasama ang site nito mula hcr.mines.edu patungo sa hcr.cs.umass.edu.

Pinagmulan

Sinimulan ko ang aking undergraduate na pag-aaral sa Colorado School of Mines noong semestre ng Taglagas 2018. Ang aking kurso ay Computer Science na may pokus sa Robotics at Intelligent Systems. At nagtapos ako noong Tagsibol 2022.

Maswerte akong natuklasan ko ang aking hilig nang maaga sa aking buhay. Noong high school, gumugol ako ng sapat na oras upang alamin kung ano ang gusto ko at kung ano ang maaari kong galingan. Matapos ang ilang pagsubok at pagkakamali, nalaman ko na ang aking hilig ay computer science. Pero sa panahong ito rin ay nadiskubre ko na mayroon akong napakalakas na pagmamahal sa pagbuo sa pamamagitan ng code.

Sa Mines, nagkaroon ako ng pagkakataong magtrabaho sa Mines’ Human Centered Robotics (HCR) Lab sa ilalim ni Dr Hao Zhang. Una ko siyang nakilala noong Tagsibol 2020 sa pamamagitan ng kanyang klase na “Human Centered Robotics” (CSCI473), at matapos ang kaguluhan ng COVID at gawaing pangklase, nakapagtrabaho ako sa kanyang lab noong unang bahagi ng Tagsibol 2021.

Klase sa Human Centered Robotics (CSCI473)

Ang Human Centered Robotics (CSCI473) ng Mines ay isa sa iilang klase mula sa aking karanasan sa kolehiyo na nagkaroon ng malalim na epekto sa akin. Itinuro ang klase ni Dr. Hao Zhang. Ang kabuuan ng grado namin sa klase ay binuo lamang ng tatlong proyekto, bawat isa ay nagpakita ng isang hamong problema na nagpakilala ng mga pangunahing konsepto ng robotics. Ang mga proyektong ito ay binubuo ng:

  1. Pag-aaral ng Robot Operating System (ROS)
  2. Reinforcement Learning para sa Pagsunod ng Robot sa Pader
  3. Pag-unawa ng Robot sa mga Gawi ng Tao Gamit ang mga Representasyong Batay sa Skeleton

Pag-aaral ng Robot Operating System (ROS)

Ito ang unang proyektong ibinigay sa amin. Ang proyekto ay binubuo ng tatlong gawain:

  1. I-setup ang Development Environment
  2. Unawain ang Gazebo Simulator
  3. Sumulat ng isang ROS na “Hello World”

Para sa mga gawain 1 at 2, kailangan lang naming i-setup ang aming development environment at sundan ang isang panimulang tutorial sa Gazebo. Kabilang dito ang:

Ang Gawain 3, sa kabilang banda, ay isang tunay na hamon. Ang gawain ay gumamit ng turtlesim at hayaang iguhit ng pagong ang logo na “M” ng Mines:

Ang gawaing ito, bagaman simple ang tunog, ay mas mahirap kaysa sa itsura nito. Ang proyektong ito ay kalaunan nagpakilala sa akin sa konsepto ng Open-Loop at Closed-Loop na mga sistema. Para sa buong paglalarawan ng proyekto, tingnan ang csci473-p1.pdf o maaari kang matuto 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 ikalawang proyektong ibinigay sa amin, at isa ito sa pinakamahirap na proyektong nagawa ko noong kolehiyo. Ang paglalarawan ng proyekto ay ang sumusunod:

Sa proyektong ito, magdidisenyo at mag-iimplementa ang mga estudyante ng mga reinforcement learning algorithm upang turuan ang isang autonomous mobile robot na sumunod sa isang pader at iwasang bumangga sa mga hadlang. Gagamitin ng mga estudyante ang Gazebo simulation sa ROS Melodic upang i-simulate ang isang omni-directional mobile robot na pinangalanang Triton, at gagamit ng environment map na ibinigay sa inyo. Gagamitin ng mga estudyante ang isang laser range scanner sa robot upang magsagawa ng sensing at learning, kung saan ang robot ay kinokontrol gamit ang steering at velocity commands. Ang mga estudyante ay inaatasang i-program ang proyektong ito gamit ang C++ o Python sa ROS Melodic na tumatakbo sa Ubuntu 18.04 LTS (i.e., ang parehong development environment na ginamit sa Project 1). Gayundin, ang mga estudyante ay inaatasang magsulat ng report na sumusunod sa format ng pamantayang IEEE robotics conferences gamit ang LATEX.

Para sa reinforcement learning algorithm, inatasan kaming gumamit ng Q-Learning. Ginamit din namin ang Stingray na Gazebo simulation environment na ibinigay ng klase. Binubuo ang Stingray ng Triton model at physics logic. Binigyan din kami ng isang maze na susundan ng robot. Sa kabuuan, ganito ang hitsura ng environment:

Hindi ko kailanman inilathala ang aking solusyon sa GitHub o sa web dahil hindi ito masyadong maganda at maraming depekto. Gayundin, medyo mahirap at nakakaabala ang pagpapatakbo ng code sa tamang environment. Gayunpaman, mayroon akong demo video na isinumite 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 Gawi ng Tao Gamit ang mga Representasyong Batay sa Skeleton

Para sa ikatlong proyekto, ang paglalarawan ng proyekto ay ang sumusunod:

Sa proyektong ito, mag-iimplementa ang mga estudyante ng ilang representasyong batay sa skeleton (Deliverable 1) at gagamit ng Support Vector Machines (SVMs) (Deliverable 2) upang uriin ang mga gawi ng tao gamit ang isang pampublikong activity dataset na nakolekta mula sa isang Kinect V1 sensor. Dagdag pa rito, inaatasan ang mga estudyante na magsulat ng report na sumusunod sa format ng pamantayang IEEE robotics conferences gamit ang LATEX sa Deliverable 3.

Mapanghamon ang proyektong ito ngunit hindi kasinghirap ng ikalawang proyekto. Ang pangunahing layunin ay gumamit ng datos ng sensor mula sa Kinect V1, mula sa MSR Daily Activity 3D Dataset, at Support Vector Machines upang uriin ang ilang gawi/pagkilos ng tao. Para sa buong paglalarawan ng proyekto, tingnan ang csci473-p3.pdf o maaari kang matuto 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 pinakamahusay, kung hindi man ang pinakamahusay, na klase na kinuha ko noong aking undergraduate na pag-aaral sa Mines. Itinuro sa akin ng lahat ng mga proyektong ito ang marami at nagbigay-daan sa akin na magkaroon ng isang kahanga-hangang katalogo ng mga proyekto na maaari kong balikan at sangguniin sa aking resume. Ito rin ang unang klase kung saan naramdaman kong nasa aking elemento ako, dahil hindi ako kailanman naging magaling sa pagsusulit ngunit mahusay ako sa pagtapos ng mga proyekto. Sa pamamagitan din ng klasing ito nakilala ko 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.

Sesyon sa CS Field (Tag-init 2020)

CG_GUI_19

Noong Tag-init ng 2020, sa pagitan ng pagtapos ng CSCI473 at pagsali sa HCR Lab, kinuha ko ang CSCI370 o “Advanced Software Engineering” bilang bahagi ng aking undergraduate program sa CS sa Colorado School of Mines. Ang CSCI370 ay isang kurso na nagpapagawa sa mga estudyante na magdisenyo, mag-implementa, at magdokumento ng mga solusyong may kaugnayan sa software para sa isang kumpanya. Pinahihintulutan nito ang mga estudyante na ilapat ang kaalaman mula sa kanilang coursework sa mga problemang totoong mundo sa computer science. Maaari kang matuto pa tungkol sa kurso dito.

Sa kurso, ikaw ang pipili kung anong proyekto/kumpanya ang iyong pagtatrabahuhan. Nagbigay ang kurso ng mga PDF na naglalarawan sa bawat proyekto at kumpanya. Sa huli, nagpasya akong magtrabaho sa isang proyektong inilathala ng isang kumpanyang tinatawag na Lunar Outpost na pinamagatang “Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation”. Dahil mahaba ang pangalan, tawagin nating alias ang proyekto na “Wheel Slippage Detection”.

Ang Suliranin

Ang Lunar Outpost ay isang startup na sumusubok lumikha ng mga autonomous lunar rover. Sa buwan, maraming lunar dust na kilalang nagdudulot ng maraming wheel slippage. Hindi ito mainam dahil ang wheel slippage ay maaaring magdulot sa mga autonomous system na mawalan ng bakas sa kanilang lokasyon sa totoong mundo. Sa Earth, nalulutas ito sa pamamagitan ng paggamit ng GPS data upang itama ang anumang offset na dulot ng wheel slippage. Ngunit ang problema sa GPS ay gumagana lamang ito sa pamamagitan ng pagkakaroon ng 30+ na navigation satellites na patuloy na umiikot sa Earth sa orbit at nagpapadala ng natatanging mga signal na nagbibigay-daan sa mga computer na kalkulahin ang kanilang posisyon. Ngunit sa buwan, sa kasalukuyan ay wala pang tulad ng GPS. Dahil dito, kailangang gumamit ng ibang paraan bukod sa GPS upang matukoy ang wheel slippage. Ang mas detalyadong ulat tungkol sa suliranin ng proyekto ay maaaring tingnan dito.

Ang Koponan

Hindi simpleng proyekto ang proyektong ito, kaya kailangan itong gawin bilang isang koponan. Binubuo ang koponan ng limang kapwa estudyante mula sa Colorado School of Mines:

Hindi simpleng proyekto ang proyektong ito, kaya kailangan itong gawin bilang isang koponan. Ang koponang ito ay binubuo nina Mehmet Yilmaz (ako), Kane Bruce, Braedon O’Callaghan, Liam Williams, at Kevin Grant.

Kinakailangan sa proyekto na may kaalaman kami sa ilang 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 klase sa Human Centered Robotics (CSCI473) noong semestre ng Tagsibol 2020. Dahil dito, sa maaga pa lang, tinulungan ko ang lahat na makasabay tungkol sa ROS at kung paano mag-develop para rito.

Mga Hamon

Sa proyektong ito, maraming hamon ang aming hinarap. Ngunit ang pinakamalaking hamon na kinaharap namin ay ang hindi pagkakaroon ng access sa isang tunay na robot sa totoong mundo para sa pagsubok. Ito ay dahil sa COVID na ginawang malayo ang lahat at pumigil sa amin na magtrabaho sa mga laboratoryo/gusali ng Lunar Outpost. Dahil dito, kinailangan naming gumamit ng mga simulasyon.

Gayundin, nagsaliksik kami ng ilang akademikong pag-aaral mula sa WVU Navigation Lab upang magkaroon ng ideya kung paano maaaring malutas ang problema sa Wheel Slippage para sa gamit na kaso 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 para magtrabaho sa proyektong ito. Ang CSCI370 ay isang klase na tumatagal lamang ng isang buwan. Ngunit ang mismong problema ay isang napakalaking problema na sinusubukan nang lutasin/perpektuhin ng maraming kumpanya at akademiko sa loob ng mga dekada. Kaya’t ang isang buwan ay malayong hindi sapat para lutasin ang isyung ito. Ngunit, sa kabila ng lahat ng hamong ito, nagpatuloy kami at tiniyak na makapaghatid.

Konklusyon

Pagkatapos na mapagdaanan ang lahat ng pananaliksik at pag-unlad, natukoy namin na halos imposibleng tumpak na i-simulate ang wastong pisika ng buwan nang digital, kaya talagang ang pagsubok sa algorithm na ito sa isang simulasyon ay hindi maganda at hindi magbubunga ng anumang makabuluhang pananaliksik sa pagtukoy ng wheel slippage sa kalawakan at sa buwan. Nagtapos kami na ang pagse-set up ng tamang kapaligiran sa pagsubok gamit ang tulad ng buhangin at totoong hardware, gaya ng Husky robot, ay mas mahalaga para sa ganitong uri ng pananaliksik. In-update namin ang code para sa pagtukoy ng wheel slippage upang gumana ito bilang isang ROS node at gumana ito nang maayos at madaling maipasok sa totoong hardware para sa pagsubok. Ang proyektong ito ay nagbigay-daan sa akin na gumanap ng papel na pamumuno, turuan ang aking mga kapwa tungkol sa pagde-develop gamit ang ROS, at magkaroon ng karanasan sa Python, ROS, at Gazebo habang hinaharap ang isang komplikadong problemang hindi ko pa naranasan noon. Pinakamahalaga, lalo nitong pinagtibay ang aking hilig sa robotics at pinalakas ang aking hangaring ituloy ang pananaliksik sa larangang ito, na naghanda ng daan para sa susunod na mangyayari sa aking paglalakbay sa robotics.

Pagsisimula Sa HCR Lab

Pagkatapos kong matapos ang CSCI473, ang CS Field Session ko noong tag-init ng 2020, at ang aking semestre ng Taglagas 2020, nagpasya akong ituloy ang pananaliksik sa robotics. Napakaganda ng aking mga karanasan sa parehong CSCI473 at sa CS Field Session kaya nagpasya akong nais kong magsagawa ng pananaliksik para sa HCR Lab. Dahil nakilala ko na si Dr. Zhang noong nakaraang taon, nagpasya akong mag-email sa kanya at magtanong tungkol sa anumang mga pagkakataon na maaaring mayroon ang lab noong Enero 2021. Sa loob ng humigit-kumulang 2 linggo, nagpakita ng interes si Dr. Zhang, nagbigay sa akin ng mga opsyon sa pananaliksik, at nag-alok sa akin ng papel sa lab. Pagkatapos ay nagsimula akong magtrabaho para sa lab noong Pebrero 2021.

Video ng Panimula

Narito ang aking video ng panimula na aking na-record ilang buwan pagkatapos kong magsimula sa HCR Lab. Na-record ito noong Mayo 2021 at sumasaklaw sa pananaliksik na pagtutuunan ko ng pansin sa HCR Lab sa panahon ng tag-init ng 2021:

Aking Proyekto

Sa kabuuan ng aking pananatili sa HCR Lab, pangunahing nakatuon ako sa proyektong Triton. Ang proyekto ng Triton ay isang mobile robot na binuo ng Human Centered Robotics Lab sa Colorado School of Mines. Isa itong triangular na omni-wheel na ground robot na pinapagana ng Jetson Nano ng NVIDIA.

Ang Triton, sa isang simpleng pangkalahatang-ideya, ay binubuo ng mga sumusunod na bahagi:

  • NVIDIA Jetson Nano
  • Seed Studio A205 Carrier Board ng NVIDIA
  • Arduino Mega
  • 64 GB Micro SD Card
  • Pasadyang 3D printed na katawan
  • 3 mecanum wheels
  • 1 AR Battery
  • Pasadyang mga circuit para sa na-optimize na distribusyon ng kuryente at mga kable
  • Realsense D435 Camera ng Intel
  • Ilang LED

Ito ay idinisenyo, itinayo, at ginawa bandang 2018-2020 bilang isang robot para sa mga layuning pang-edukasyon. Pagsapit ng panahon na sumali ako, ang Triton ay medyo matatag na, at pinag-iisipan ng lab na gumawa ng bagong bersyon nito. Gayunpaman, ang pangunahing problema sa Triton ay ang software nito. Nakakagalaw, nakakapag-charge, at gumagana ang Triton sa isang pangunahing antas ngunit hindi talaga ito gumagawa ng anumang matalino. Kulang pa nga ito sa kakayahang gumawa ng mas advanced na mga galaw.

Pag-setup ng charger ng baterya Ayos ng lugar ng pagsubok
Mga Triton sa maagang yugto ng pagsubok Mga Triton sa mga estante

Upang simulan ang pagtugon dito, nag-set up ang lab ng isang lugar kung saan maaari naming masubaybayan ang Triton. Para magawa ito, lumikha sila ng isang 2-metrong by 2-metrong lugar na may 8 Optitrack Flex (Infrared Red) Cameras na nakaayos na parang parisukat mga 6-7 talampakan sa itaas ng sahig.

Lugar I1 Lugar I2

Kasabay ng pagtatayo ng lugar na ito, bawat Triton ay may tatlong kulay-abong bolang sphere na nakakabit sa tuktok ng kanilang katawan.

Sa setup na ito, epektibo naming nabuo ang sarili naming maliitang GPS system na nagbigay-daan sa amin na makuha ang eksaktong mga koordinado sa metro ng isang Triton sa aming lugar ng interes. Sa pamamagitan ng paggamit ng mga Optitrack infrared camera at ng mga kulay-abong sphere ng Optitrack na nakaayos sa anyong tatsulok, natutukoy namin ang eksaktong mga koordinado ng isang Triton sa aming lugar. Nagbigay-daan ito sa amin na maglapat ng closed-loop system para sa mas mahusay na katumpakan sa paggalaw.

Ang Optitrack system ay nagbigay ng datos ng posisyon at oryentasyon nang humigit-kumulang 120Hz na may katumpakang sub-millimeter kapag maayos na na-calibrate. Ang tatlong reflective marker ng bawat Triton ay bumubuo ng natatanging triangular 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 ang mga axis na X at Y ay nakaayon sa geometry ng silid. Ngunit sa kabila ng napakatumpak na datos ng pagposisyon na ito, nahirapan pa rin ang Triton sa paggalaw.

Sa setup na ito, isang pangunahing tampok na nais naming ibigay sa Triton ay ang kakayahang pumunta sa isang tiyak na koordinado. Maaaring magbigay ang user, o ang kanilang software, ng isang (x, y) coordinate sa loob ng kanilang lugar ng interes. Pagkatapos ay gagalaw ang robot patungo sa koordinadong iyon nang kasing bilis, kasing tumpak, at kasing tuloy-tuloy hangga’t maaari. Noong sumali ako, umiiral ang tampok na ito ngunit hindi ito masyadong gumagana nang maayos. Narito ang isang simpleng animasyon na nagpapakita kung paano gumana ang orihinal na lohika ng paggalaw:

Hindi ko nairekord ang orihinal na solusyon habang gumagana ito, kaya gumawa ako ng simpleng animasyon na ito upang ipakita sa inyo ang lumang lohika ng paggalaw habang gumagana ito. Sa pag-alam nito, ano ang mga isyu sa pamamaraang ito?

  1. Napakabagal nito
  2. Pinapagamit nito ang robot ng napakalaking espasyo para lamang makapunta sa isang tiyak na punto. Dahil dito, naging mahirap para sa amin na gamitin ang solusyong ito kapag maraming Triton ang gumagalaw.

Kaya bakit nangyayari ang pag-uugaling ito? Ang problema ay unang umiikot ang Triton, binabago ang alpha nito, hanggang sa tumuturo ito patungo sa target na punto sa loob ng isang tiyak na margin ng error. Pagkatapos ay bigla itong tatakbo pasulong, at kapag ang theta nito ay lumihis na mula sa target nang isang tiyak na halaga, hihinto ito at magsisimulang umikot muli hanggang sa ang alpha ay nasa loob ng katanggap-tanggap na saklaw para sa target na layunin. Pagkatapos ay tatakbo itong muli at ipagpapatuloy ang paggawa nito hanggang makarating ito sa punto. Gayundin, habang lalo itong papalapit sa goal point, mas babagal nang mas babagal ang bilis ng pag-ikot at pagtakbo upang matiyak na hindi ito lalampas. Nagresulta ito sa hindi likas na paggalaw ng Triton, matagal na pag-abot sa target na punto, at pangangailangan ng napakalaking espasyo para lamang marating ang isang tiyak na target na punto. Kaya sa lahat ng mga isyung ito, at dahil sa kung gaano kahalaga ang tampok na ito para sa pagbuo ng proyektong Triton, noong nagsimula akong magtrabaho sa HCR Lab, ang una kong gawain ay bumuo ng mas epektibong mga solusyon na magbibigay-daan sa Triton na mas mahusay na makapag-navigate patungo sa isang goal point.

Alam ito, gumugol ako ng maraming oras sa pagsasaliksik sa pinakamainam na paraan upang tugunan ang problemang ito. Nakakatawa, kumukuha ako ng klase na tinatawag na Introduction to Feedback Control Systems (EENG307) sa Mines. Maaga sa klaseng iyon, natutunan namin ang konsepto ng Open-loop controllers at Closed-loop controllers. Alam ito, at matapos ang ilang talakayan ko sa propesor ng klaseng iyon at sa aking matalinong kasama sa kwarto, naging malinaw na ang layunin na mapapunta ang Triton sa isang goal point ay isang problema ng closed-loop system.

Diagram ng control system sa whiteboard

Ngayon, matapos ang masusing pagsubok at pananaliksik, nakabuo ako ng dalawang magkahiwalay na pamamaraan ng controller para sa mga Triton:

Paraan 1: Distance-Theta Controller

Gumamit ang pamamaraang ito ng dalawang magkahiwalay na proportional controller na sabay na tumatakbo:

  • Distance Controller: Kinuwenta ang Euclidean distance patungo sa target at naglapat ng proportional gain upang matukoy ang pasulong/paatras na bilis
  • Theta Controller: Kinuwenta ang angular error sa pagitan ng kasalukuyang heading ng robot at ng nais na heading patungo sa target, na naglapat ng hiwalay na proportional gain para sa rotational velocity

Patuloy na kinukuwenta ng algorithm ang Euclidean distance patungo sa target at ang angular error sa pagitan ng kasalukuyang heading ng robot at ng nais na direksyon. Dalawang magkahiwalay na proportional gain ang inilapat upang makalikha ng linear at angular na mga bilis ayon sa pagkakabanggit.

Nagresulta ito sa natural na pagliko ng Triton patungo sa goal habang sabay na sumusulong, na lumilikha ng makinis na mga kurbang landas. Ang pangunahing bentahe ay palaging nakaharap ang harapang bahagi ng robot sa destinasyon, na napakahalaga para sa mga aplikasyong nakabatay sa kamera.

Paraan 2: Kontroler ng Koordinatong X-Y

Itinuring ng pamamaraang ito ang robot na parang isang 2D plotter, na may magkakahiwalay na kontrol sa galaw ng X at Y:

  • Kontroler ng X: Direktang kumokontrol sa galaw silangan-kanluran batay sa error ng X-coordinate
  • Kontroler ng Y: Direktang kumokontrol sa galaw hilaga-timog batay sa error ng Y-coordinate

Kinuwenta ng implementasyon ang mga error ng koordinatong X at Y nang hiwalay, naglapat ng magkakahiwalay na proportional gain, at pagkatapos ay inilipat ang mga global na komponent ng bilis na ito sa lokal na coordinate frame ng robot gamit ang mga rotation matrix. Kinakailangan ang pagbabagong ito dahil ang omni-wheel drivetrain ng robot ay nangangailangan ng mga bilis sa sarili nitong reference frame, hindi sa global na mga coordinate. Ang pamamaraang ito ang nagbunga ng pinakadirektang mga landas patungo sa mga target at mas mabilis nang malaki, ngunit ang heading ng robot ay magdi-drift dahil walang tahasang kontrol sa oryentasyon.

Para sa paraan #1, inilatag ko nang detalyado ang metodong ito sa aking blog na Move Turtle (TurtleSim). Lubos kong inirerekomenda na basahin mo ang blog na ito para makuha ang lahat ng detalye kung paano gumagana ang mga PID controller sa pangkalahatan, gayundin kung paano gumagana ang paraan #1. Binuo ko ang paraan #1 gamit ang TurtleSim ng ROS, saka inilipat ang code na iyon sa Triton at in-update ito upang umangkop sa mas makatotohanang kapaligiran.

Gumamit ang paraan #2 ng isang medyo naiibang ngunit kaparehong epektibong lapit. Sa halip na isipin ang oryentasyon ng robot at ang distansya nito sa layunin, itinuturing ng paraang ito ang paggalaw na parang problema sa coordinate plane. Patuloy na kinakalkula ng controller ang error sa parehong direksyong X at Y nang hiwalay. Halimbawa, kung ang robot ay kailangang lumipat mula (0,0) patungong (2,3), nakikita nito ito bilang kailangang itama ang 2 metrong error sa X at 3 metrong error sa Y. Dalawang proportional controller ang sabay na gumana: isa ang nag-aayos ng bilis ng robot sa direksyong X batay sa X-error, habang ang isa naman ang humahawak sa galaw sa direksyong Y batay sa Y-error. Nilikha nito ang mas direktang landas patungo sa layunin, katulad ng paggalaw ng ulo ng isang 3D printer, at pinahintulutan ang maayos na mga diagonal na galaw. Hindi na kailangang tahasang umikot ang robot upang humarap sa target nito, kaya naging partikular na epektibo ang paraang ito sa masisikip na espasyo o kapag kinakailangan ang tumpak na pagpoposisyon.

Napatunayang mas mabilis at mas maaasahan ang parehong mga pamamaraan kaysa sa orihinal na lapit. Upang makita ang mga bagong pamamaraang ito sa aktwal na paggamit, tingnan ang Playlist na Tritons in Action, na nagpapakita ng lahat ng Triton sa aksyon gamit ang mga bagong pamamaraan.

Ang dating tumatagal ng 30-45 segundo para sa simpleng paggalaw mula punto hanggang punto ay naging humigit-kumulang 8-12 segundo na lamang. Mas mahalaga, nakapag-navigate na ngayon ang Triton nang mas mahusay sa masisikip na espasyo, na naging kapaki-pakinabang para sa aming mga senaryong may maraming robot.

Mga Hamon sa Pag-unlad at Pag-debug

Hindi naging tuwiran ang pagpapatupad ng mga controller na ito at kinailangan ng ilang mahahalagang hamon sa pag-debug:

Mga Pagbabagong Coordinate System: Isa sa pinakamahirap na aspeto ay ang pagkuha nang tama sa mga pagbabagong coordinate. Ang sistemang Optitrack ay nagbigay ng datos sa sarili nitong coordinate frame, ang robot ay may sarili nitong lokal na coordinate frame, at kailangan kong tumpak na mag-convert sa pagitan ng mga ito. Ang mga maagang implementasyon ay nagpagalaw sa mga robot sa maling mga direksyon dahil napaghalo ko ang mga kalkulasyon ng rotation matrix.

Pag-uugaling Totoong Buhay vs. Ideal: Ang pinakamalaking hamon ay ang pagsasaalang-alang sa mga salik sa totoong mundo na hindi lumilitaw sa teoryang kontrol sa aklat. Magkakaiba ang katangian ng alitan ng mga gulong ng robot, hindi magkakatulad ang pagtugon ng mga motor, at laging may kaunting latency sa chain ng komunikasyon mula Optitrack patungo sa control software at sa Arduino ng robot. Nagpalipas ako ng mga linggo sa pag-tune ng proportional gains at pagdaragdag ng deadband filters upang isaalang-alang ang mga pisikal na realidad na ito.

Mga Isyu sa Pag-ugoy at Katatagan: Ang una kong mga implementasyon ay nagdusa sa mga problema sa pag-ugoy kung saan lumalagpas ang mga robot sa kanilang mga target at nanginginig pabalik-balik. Itinuro nito sa akin ang kahalagahan ng mga derivative term sa PID controllers at ang pangangailangan ng wastong pag-tune ng gain. Sa huli, pumili ako ng higit na proportional control na may maingat na tinuning gains kaysa sa buong PID, dahil sapat na ang likas na damping ng sistema para sa karamihan ng mga aplikasyon.

Panghihimasok ng Maraming Robot: Kapag maraming robot ang sabay-sabay na gumagana, natuklasan ko ang mga hindi inaasahang pattern ng panghihimasok. Minsan ay parang “naglalaban” ang mga robot para sa iisang espasyo o lumilikha ng mga sitwasyong deadlock kung saan haharangin nila ang isa’t isa nang walang hanggan. Dahil dito, nagpatupad ako ng mga mekanismo ng koordinasyon at mga algorithm ng pag-iwas sa banggaan.

Sistema ng Kontrol para sa Maramihang Triton

Nang malutas ko na ang problema sa paggalaw ng iisang Triton, ang susunod na hamon ng lab ay ang pagpapagana ng maraming Triton na sabay-sabay na gumana nang magkakasama. Naging isa ito sa mga pangunahing pokus ko at sa huli ay naging isang mahalagang ambag sa proyekto.

Ang orihinal na sistema ay maaari lamang kumontrol ng isang Triton sa isang pagkakataon, na lubhang naglimita sa mga posibilidad ng pananaliksik. Nais ng lab na gayahin ang mga senaryo kung saan kailangang magkoordinahan ang maraming autonomous na sasakyan sa kanilang mga galaw, tulad ng mga self-driving car na nakikipag-usap sa isa’t isa upang i-optimize ang daloy ng trapiko at lumikha ng mas mahuhusay na SLAM (Simultaneous Localization and Mapping) na mga mapa.

Upang malutas ito, nagpatupad ako ng multi-processing na lapit gamit ang library ng multiprocessing ng Python. Bawat Triton ay binigyan ng sariling nakalaang proseso na maaaring tumakbo nang hiwalay habang kinokordinahan pa rin ng isang sentral na sistema ng kontrol. Pinahintulutan nito ang maraming Triton na gumalaw nang sabay-sabay nang hindi naaabala ang control loops ng isa’t isa.

Disenyo ng Arkitektura para sa Maramihang Robot

Ang arkitekturang pangsistema na binuo ko ay binubuo ng ilang pangunahing bahagi:

Pangunahing Proseso ng Controller: Ito ang nagsilbing sentral na tagapag-ugnay, na humahawak sa mga interaksiyon ng user interface, path planning, at mataas na antas ng koordinasyon sa pagitan ng mga robot. Pinananatili nito ang global na estado at namamahagi ng mga utos sa mga indibidwal na proseso ng robot.

Indibidwal na Mga Proseso ng Robot: Bawat Triton ay may sariling nakalaang proseso ng Python na humahawak sa:

  • Mga real-time na kalkulasyon ng PID control sa ~50Hz
  • Komunikasyon sa hardware ng robot (Arduino/Jetson)
  • Lokal na pagpapatupad ng landas at pag-iwas sa mga hadlang
  • Pag-uulat ng estado pabalik sa pangunahing controller

Komunikasyon sa Shared Memory: Ginamit ko ang multiprocessing.shared_memory at Queue na mga object ng Python upang mapagana ang episyenteng komunikasyon sa pagitan ng mga proseso. Pinahintulutan nito ang real-time na koordinasyon nang walang dagdag na bigat ng komunikasyon sa network.

Mga Mekanismong Pang-sinchronize: Upang maiwasan ang mga banggaan kapag kailangang magkoordina ng maraming robot (tulad ng pag-iwas sa banggaan), nagpatupad ako ng mga semaphore at lock na nagpapahintulot sa mga robot na humiling ng eksklusibong akses sa ilang bahagi ng workspace.

Ang hamon ay tiyaking lahat ng robot ay makapapatakbo ng kanilang mga control loop nang hiwa-hiwalay habang pinananatili pa rin ang global na koordinasyon. Bawat proseso ng robot ay nagpapatakbo ng sarili nitong mga PID calculation at direktang nagpapadala ng mga motor command sa hardware, habang ang pangunahing proseso ang humahawak sa mas mataas na antas ng koordinasyon tulad ng pag-iwas sa banggaan at path planning.

Pagsusuri sa interseksiyon ng Maramihang Triton Maagang setup ng maramihang Triton

Triton na may mga drone para sa hinaharap na gawain na maraming ahente

Ang sistemang may maraming Triton ay nagbukas ng ganap na bagong mga posibilidad sa pananaliksik. Maaari na naming gayahin ang:

  • Mga senaryo ng komunikasyon sa pagitan ng sasakyan at sasakyan
  • Koordinadong path planning na may pag-iwas sa hadlang
  • Mga pag-uugali ng swarm robotics
  • Multi-agent na pagmamapa gamit ang SLAM
  • Kontrol sa pormasyon at mga pag-uugaling pagsunod

Narito kung ano ang hitsura ng setup ng lab na may maraming Triton na sabay-sabay na tumatakbo:

Mga robot sa berdeng grid Setup ng grid ng robot

Bumuo rin ako ng isang user-friendly na interface na nagpahintulot sa mga mananaliksik na biswal na tukuyin ang mga landas para sa bawat Triton. Maaari mong literal na iguhit ang landas na gusto mong sundan ng bawat robot, at isasagawa nila ang mga landas na ito nang may perpektong koordinasyon. Napakagamit nito para sa pag-set up ng mga komplikadong eksperimento nang hindi kinakailangang mano-manong i-code ang bawat galaw.

Kayang hawakan ng sistema ang hanggang 5 Triton nang sabay-sabay, bawat isa ay nagpapatakbo ng sarili nitong mga PID controller habang kinokordinahan sa pamamagitan ng sentral na sistema ng kontrol. Kahanga-hanga ang performance, kung saan pinananatili ng lahat ng robot ang kani-kanilang katumpakan habang nagtutulungan bilang isang koponan.

Narito ang isang playlist na nagpapakita ng mga Triton sa aksyon, mula sa kontrol ng iisang robot hanggang sa koordinasyon ng maraming robot: Playlist na Tritons in Action

Integrasyon ng Sensor ng Lalim at Pagwawasto ng Koordinado

Isa pang malaking pag-unlad na ginawa ko ay ang paggamit ng mga Intel RealSense D435 depth camera na nakakabit sa bawat Triton. Bagama’t ang sistemang Optitrack ay nagbigay sa amin ng napakatumpak na datos sa pagpoposisyon, nais kong tuklasin kung paano magagamit ng mga robot ang kanilang mga onboard sensor upang mapabuti ang kanilang kamalayan sa espasyo at maitama ang mga error sa koordinado.

Ang ideya ay maaaring gamitin ng mga Triton ang kanilang mga depth sensor upang makita ang ibang mga Triton sa kanilang paligid at i-cross-reference ang kanilang mga posisyon. Maglilingkod ito sa maraming layunin:

  1. Pagwawasto ng Error: Kung ang sistemang Optitrack ay may anumang pag-drift ng kalibrasyon o pansamantalang occlusion, maaaring gamitin ng mga robot ang biswal na kumpirmasyon sa posisyon ng isa’t isa upang mapanatili ang tumpak na mga coordinate system.

  2. Pinahusay na SLAM: Sa pamamagitan ng pagkakaroon ng maraming robot na may mga depth sensor na sabay-sabay na gumagana, maaari tayong lumikha ng mas mayamang mga mapa ng kapaligiran na may mga redundant na punto ng datos.

  3. Pag-iwas sa Banggaan: Ang pag-sense ng lalim sa real-time ay magbibigay-daan sa mga robot na matukoy at maiwasan ang isa’t isa kahit na may mga pagkaantala sa komunikasyon ang central control system.

Nagsimula akong mag-eksperimento sa mga algorithm na magpapahintulot sa mga Triton na:

  • Matukoy ang iba pang Triton gamit ang kanilang natatanging hugis-triyanggulo at mga reflective sphere marker
  • Kalkulahin ang mga relatibong posisyon at oryentasyon gamit ang depth data
  • Ihambing ang mga sukat na ito sa Optitrack data upang matukoy ang mga pagkakaiba
  • Posibleng isaayos ang kanilang coordinate system sa real-time upang mapanatili ang katumpakan

Mga Eksperimento sa Computer Vision

Naglaan ako ng malaking oras sa pag-eksperimento sa isang computer vision pipeline na gumana sa ilang yugto:

Dalawang Triton na magkaharap para sa mga pagsusuri sa computer vision Malapitan ng kamera ng Triton
Dalawang Triton na magkaharap para sa pagsusuri
Dalawang robot na magkaharap Dalawang Triton na handang magkarera

Pagpoproseso ng Datos ng Lalim: Ang Intel RealSense D435 ay nagbigay ng parehong RGB at depth data streams. Pangunahing nagtrabaho ako sa depth data, na dumating bilang 640x480 na array ng mga sukat ng distansya sa 30Hz. Ang unang hamon ay ang pagsala sa maingay na depth data na ito upang makuha ang makabuluhang heometrikong impormasyon.

Mga Pagsubok sa Pagtukoy ng Bagay: Nag-eksperimento ako sa mga multi-stage detection algorithm. Nagkaroon ako ng ilang tagumpay sa pagse-segment ng depth image upang matukoy ang mga bagay sa antas ng sahig (inaalis ang mga pader, kisame, atbp.) at paghanap ng mga bagay na may tamang katangiang sukat, humigit-kumulang 0.3x0.3 metrong footprint. Sinubukan kong gumamit ng edge detection at heometrikong pagsusuri upang matukoy ang natatanging profile ng Triton, na may halo-halong resulta.

Mga Eksperimento sa Pagkilala sa Marker: Ang tatlong reflective sphere sa bawat Triton ay tila ang pinakamainam na tampok para sa pagtukoy. Nag-eksperimento ako sa mga blob detection algorithm upang matukoy ang natatanging tatsulok na pattern ng tatlong maliwanag na tuldok sa depth image. Nagkaroon ako ng ilang nakaaasang resulta sa kontroladong kondisyon ng ilaw, bagaman hindi ito palaging maaasahan.

Pananaliksik sa Pagsasanib ng Koordinado: Nagsaliksik ako ng mga pamamaraan para sa pagsasanib ng mga pagtataya ng posisyon na batay sa vision at ng Optitrack data, kabilang ang mga pangunahing implementasyon ng Kalman filter. Ang konsepto ay bigyan ng mas malaking bigat ang Optitrack data kapag available ngunit bumalik sa vision kapag kinakailangan, bagaman hindi ko ito lubusang napaandar bago matapos ang oras ko sa lab.

Mga Hamon sa Pagganap: Naging hamon ang pagpapagana ng lahat ng processing na ito nang real-time kasabay ng control loops ng robot. Nag-eksperimento ako sa mga paraan ng optimization upang mapatakbo ang mga algorithm sa humigit-kumulang 10-15Hz nang hindi binabagsak ang processing capabilities ng Jetson Nano.

Sa kasamaang-palad, kinailangan kong lisanin ang lab bago ko ganap na matapos ang gawaing ito sa computer vision. Bagaman may ilang nakaaasang paunang resulta ako at marami akong natutunan tungkol sa pagpoproseso ng depth sensor, hindi ko naabot ang isang ganap na maaasahang estado ang sistema. Nanatili itong isang kawili-wiling direksiyon ng pananaliksik na maaaring pagbatayan ng iba.

Narito ang isang video ko habang sinusubok ang mga algorithm sa computer vision:

Narito ang hitsura ng view ng depth sensor noong aking mga eksperimento:

Bagaman hindi ko natapos ang gawain sa integrasyon ng depth sensor, nagpakita ng potensyal ang konsepto para sa mga aplikasyon tulad ng pagsasagawa ng mga senaryo ng self-driving na sasakyan, kung saan kailangang magkaroon ng kamalayan ang mga sasakyan sa isa’t isa nang hindi umaasa lamang sa panlabas na imprastruktura. Ang direksiyon ng pananaliksik na sinimulan kong tuklasin ay maaaring makatulong sa mga susunod na gawain sa lab.

Dokumentasyon at Pagpapanatili ng Kaalaman

Isa sa pinakamahalagang ambag ko sa HCR Lab, at marahil ang pinagmamalaki ko nang husto, ay ang pag-oorganisa at pagpapanatili ng lahat ng dokumentasyon ng proyekto. Noong sumali ako sa lab, ang kaalaman tungkol sa Triton project ay kalat-kalat sa maraming platform at format. Ang mahahalagang impormasyon ay nakakalat sa:

  • Iba’t ibang Google Drive account na pag-aari ng iba’t ibang estudyanteng nagtapos na
  • Mga lumang email na nakabaon sa mga inbox
  • Mga random na Dropbox folder
  • Maraming GitHub repository
  • Mga GitLab repository na hindi pare-pareho ang organisasyon
  • Mga sulat-kamay na nota na tanging ilang partikular na tao lamang ang makapagbibigay-kahulugan

Ang pira-pirasong dokumentasyong ito ay malaking problema. Ang mga bagong estudyante ay gumugugol ng mga linggo para lamang malaman kung paano magsimula, at ang mahalagang kaalaman ay patuloy na nawawala kapag ang mga tao ay nagtapos o umalis sa lab.

Ako na ang nagpasiyang lutasin ang problemang ito nang sistematiko. Gumugol ako ng hindi mabilang na oras sa paghahanap sa bawat piraso ng dokumentasyon, code, video, at nota na may kaugnayan sa Triton project. Pagkatapos ay inayos ko ang lahat sa isang sentralisadong GitLab repository na may malinaw at lohikal na istruktura.

Triton sa mesa Maraming Triton sa mesa (8 kabuuan, 5 ay ginagawa pa)

Mga Triton sa estante sa magandang anggulo

Kasama sa sentralisadong dokumentasyon ang:

  • Mga Gabay sa Pagbuo: Hakbang-hakbang na mga tagubilin para sa pagbuo ng mga Triton mula sa simula
  • Pag-setup ng Software: Kumpletong mga gabay para sa pagse-set up ng development environment
  • Dokumentasyon ng Code: Maayos na naka-komentong code na may malinaw na mga paliwanag
  • Mga Espesipikasyon ng Hardware: Detalyadong listahan ng mga piyesa, wiring diagram, at mga disenyo ng PCB
  • Mga Gabay sa Paglutas ng Problema: Mga karaniwang problema at ang mga solusyon sa mga ito
  • Mga Tutorial na Bidyo: Gumawa at nag-upload ako ng mga instructional video sa YouTube, kabilang ang mga detalyadong tutorial sa pag-calibrate ng Optitrack:

Nagtatag din ako ng mga pamantayan sa dokumentasyon upang matiyak na ang mga susunod na ambag ay magiging maayos at madaling ma-access. Ang istruktura ng repository na nilikha ko ang naging pundasyon ng lahat ng kasunod na gawain sa lab.

Bukod sa pag-aayos ng umiiral na dokumentasyon, gumawa ako ng ilang orihinal na gabay at tutorial na pumuno sa mahahalagang puwang sa knowledge base. Kabilang dito ang mga detalyadong tagubilin sa pag-setup para sa mga bagong miyembro ng lab, komprehensibong mga gabay sa paglutas ng problema, at mga video walkthrough ng mga masalimuot na proseso.

Agad at pangmatagalan ang naging epekto. Ang mga bagong estudyante ay nakasabay sa loob ng mga araw sa halip na mga linggo. Ang repository ng dokumentasyon na ginawa ko ay ginagamit pa rin ng lab hanggang ngayon, ilang taon matapos akong umalis. Ito ang naging iisang pinagmumulan ng katotohanan para sa Triton project at nakapagtipid ng hindi mabilang na oras/araw para sa mga susunod na mananaliksik.

Pagtuturo at Paglilipat ng Kaalaman

Isa sa mga pinakamakabuluhang bahagi ng panahon ko sa HCR Lab ay ang pagkakataong magturo sa iba at ibahagi ang kaalaman na aking natamo. Habang umuunlad ang aking trabaho at mas naging bihasa ako sa mga Triton system, mas dumami rin ang responsibilidad ko sa pagsasanay ng mga bagong miyembro ng team.

Pagtuturo sa mga Susunod na Katuwang sa Lab

Habang naghahanda akong sa kalaunan ay umalis sa lab upang magpokus sa pagtatapos ng aking degree at sa aking trabaho sa eBay, tiniyak kong masusing nasanay ko ang dalawang taong siyang papalit sa Triton project matapos ang aking pag-alis. Hindi lang ito basta pagpapakita kung paano gumagana ang mga bagay, ito ay tungkol sa pagtiyak na tunay nilang nauunawaan ang mga pinagbabatayang prinsipyo upang makapagpatuloy silang mag-innovate.

Naglaan ako ng mga linggo sa malapitang pagtatrabaho kasama nila, dumaan sa:

  • Ang mga matematikal na pundasyon ng mga PID control system
  • Ang multi-processing architecture para sa pag-uugnay ng maraming robot
  • Ang integrasyon ng depth sensor at mga algorithm ng computer vision
  • Ang sistema ng dokumentasyon at kung paano ito panatilihin
  • Ang mga teknik sa pagde-debug at mga karaniwang failure mode

Ang paglilipat ng kaalaman ay lubhang masinsinan. Magkakasama naming pinagdaanan ang mga tunay na debugging session, pinagawa ko sa kanila ang pag-amyenda at pagpapalawak ng umiiral na code, at tiniyak kong kaya nilang mag-setup nang mag-isa ng mga bagong Triton mula sa simula.

Programa ng Pagtuturo sa Mag-aaral sa High School

Marahil mas nakapagbigay pa ng kasiyahan ang karanasan kong magturo sa isang mag-aaral sa high school sa pamamagitan ng outreach program ng lab. Isa itong magandang pagkakataon upang ipakilala ang isang tao sa robotics, computer science, at pananaliksik sa isang mahalagang yugto ng kanyang edukasyon.

Bumuo ako ng komprehensibong kurikulum na sumaklaw sa:

Mga Batayan ng Computer Science:

  • Mga konsepto sa programming gamit ang Python bilang pangunahing wika
  • Panimulang pag-unawa sa object-oriented programming
  • Pag-unawa sa mga algorithm at data structure

Mga Konsepto sa Robotics:

  • Paano gumagana ang mga sensor at kung paano i-interface ang mga ito
  • Kontrol ng actuator at mga motor system
  • Ang mga batayan ng autonomous system at feedback control

ROS (Robot Operating System):

  • Pag-unawa sa publish/subscribe messaging system
  • Paggawa ng nodes at services
  • Paggamit ng launch files at parameter servers

Hands-on na Gawain sa Proyekto:

  • Nakipagtulungan kami sa paglikha ng isang ROS service na kumokontrol sa LED system sa ulo ng Triton
  • Natutuhan niyang magsulat ng malinis at dokumentadong code na naka-integrate sa aming umiiral na mga sistema
  • Ang LED control service na nilikha niya ay naging permanenteng bahagi ng Triton codebase

Ang naging espesyal sa mentorship na ito ay ang masaksihan ang pag-unlad niya mula sa halos walang alam tungkol sa programming hanggang sa makapag-ambag ng makabuluhang code sa isang aktibong research project. Mula sa pagtatanong ng “Ano ang variable?” ay umabot siya sa tahasang pagde-debug ng mga isyu sa komunikasyon ng ROS at pagsusulat ng sarili niyang mga implementasyon ng service.

Ang LED control system na binuo niya ay nagbigay-daan sa mga mananaliksik na madaling baguhin ang mga kulay at pattern ng mga LED sa ulo ng Triton sa pamamagitan ng simpleng ROS commands. Maaaring mukhang simple ito, ngunit nangangailangan ito ng pag-unawa sa ROS architecture, hardware interfacing, at tamang software design patterns. Ang kanyang ambag ay ginagamit pa rin sa lab hanggang ngayon.

Ang mentorship ay naging kasing-edukasyonal para sa akin gaya ng para sa kanya. Pinilit niya akong hatiin ang mga kumplikadong konsepto sa mga bahaging madaling unawain at talagang pag-isipan ang mga batayan ng ginagawa namin. Ang pagtuturo sa ibang tao ay gumawa sa akin na mas mahusay na inhinyero at mananaliksik.

Pakikipagtulungan sa Pananaliksik ng PhD

Isa sa mga pinaka-kapaki-pakinabang sa propesyon na aspeto ng aking panahon sa laboratoryo ay ang malapit na pakikipagtulungan kay Peng, isang estudyanteng PhD na ang pananaliksik ay nakatuon sa mga algorithm para sa mga kotse na walang drayber. Ang mga pagpapahusay sa software na ginawa ko sa Triton system ay nakatulong sa pagsuporta sa kanyang pananaliksik na doktoral.

Ang pananaliksik ni Peng ay nangangailangan ng tumpak at maaasahang koordinasyon ng maraming robot upang gayahin ang mga senaryo ng mga kotse na walang drayber. Bago ang mga pagpapahusay ko sa kontrol ng paggalaw at sa mga sistemang multi-robot, ang mga eksperimentong ito ay mas mahirap isagawa. Ang mga robot ay mas mabagal, mas hindi tumpak, at hindi nakakapagtrabaho nang magkakasama nang kasing-epektibo.

Ang aking mga ambag ay nakatulong sa pananaliksik ni Peng sa ilang mga bahagi:

Pag-aaral sa Pamamahala ng Interseksyon: Sa pinahusay na mga PID controller at koordinasyon ng maraming robot, nakapag-simulate si Peng ng mga senaryo sa interseksyon kung saan ang maraming “sasakyan” (mga Triton) ay kailangang i-coordinate ang kanilang mga galaw. Ang mas mahusay na timing at pagpoposisyon ay nakatulong upang gawing mas posible ang mga pag-aaral na ito.

Komunikasyon sa Sasakyan-sa-Sasakyan: Ang balangkas na multi-processing na binuo ko ay nagbigay-daan kay Peng na magpatupad at magsubok ng mga protocol ng komunikasyon sa pagitan ng mga simulated na sasakyan. Ang bawat Triton ay maaaring gumawa ng mga desisyon habang nakikipag-ugnayan pa rin sa iba, katulad ng kung paano maaaring kailangang gumana ang mga kotse na walang drayber.

Pananaliksik sa SLAM at Pagmamapa: Ang gawain sa integrasyon ng depth sensor ay nagbigay kay Peng ng karagdagang datos para sa kanyang pananaliksik sa simultaneous localization and mapping. Ang pagkakaroon ng maraming robot na may magkakaugnay na kakayahan sa pag-sensing ay nagbigay-daan sa mas komprehensibong mga eksperimento sa pagmamapa.

Ang naging lalo pang mahalaga sa ating pakikipagtulungan ay na hindi lang ito basta pagtulong ko sa kanyang pananaliksik; ito ay isang tunay na pakikipagsosyo. Ang pag-unawa ni Peng sa mga teoretikal na aspeto ng mga autonomous na sasakyan ay nakatulong sa paghubog ng aking mga praktikal na implementasyon. Ang kanyang feedback at mga kinakailangan ay nagtulak sa akin na gawing mas matatag at mas may kakayahan ang mga sistema.

Nagpalipas kami ng maraming oras sa laboratoryo nang magkasama, nagde-debug ng mga senaryo, nagdadalawang-isip tungkol sa iba’t ibang estratehiya sa kontrol, at sinusuri kung ano ang maaaring magawa ng Triton platform. Si Peng ay naging parehong kasamahan at kaibigan, at ang pakikipagtulungan sa kanya ay nagturo sa akin ng marami tungkol sa kung paano talaga gumagana ang akademikong pananaliksik.

Ang mga sistemang binuo ko ay naging kapaki-pakinabang na bahagi ng gawaing disertasyon ni Peng. Ang makita ang aking mga praktikal na ambag sa inhinyeriya na sumusuporta sa pananaliksik sa teknolohiya ng autonomous na sasakyan ay talagang nakapagbibigay-kasiyahan. Pinatibay nito ang aking interes sa kung paano maaaring magtulungan ang matibay na inhinyeriya at pananaliksik upang lumikha ng mga kapaki-pakinabang na resulta.

Kahit pagkatapos kong umalis sa laboratoryo, nanatili kaming nakikipag-ugnayan ni Peng. Ang pag-alam na ang aking gawain ay patuloy na nakapag-aambag sa mahalagang pananaliksik kahit matapos ang aking pag-alis ay lubhang nakapagpapalugod.

Perspektiba: Ang Panahon ng Pag-unlad Bago ang LLM

Mahalagang banggitin na ang lahat ng gawaing ito ay naisakatuparan noong panahon bago ang LLM sa pagbuo ng software. Lahat ng ito ay naganap sa pagitan ng 2020 at 2021 (pangunahing 2021), bago umiral ang ChatGPT, Claude, Perplexity, o mga kasangkapan sa pag-develop na pinapagana ng AI tulad ng Cursor IDE.

Ang bawat linya ng code ay isinulat mula sa simula, ang bawat algorithm ay sinaliksik sa pamamagitan ng mga akademikong papel at mga aklat-aralin, at ang bawat sesyon ng pag-debug ay gumamit ng tradisyonal na mga paraan tulad ng mga print statement, debugger, at masusing pagsubok. Kapag ako ay na-stuck sa isang problema sa coordinate transformation o PID tuning, hindi ko basta-basta maaring tanungin ang isang AI assistant na ipaliwanag ang konsepto o tumulong mag-debug ng isyu.

Ginawa nitong mas mahirap nang malaki ang proseso ng pag-develop ngunit mas nakapagtuturo rin. Kailangan kong:

Manu-manong Magsaliksik ng Lahat: Ang pag-unawa sa teorya ng PID control ay nangangahulugang pagbabasa ng mga aklat-aralin at mga akademikong papel. Ang pag-uunawa sa mga coordinate transformation ay nangangailangan ng pagsasagawa ng matematika nang mano-mano. Kailangang lubos na maunawaan ang bawat konsepto bago ito ipatupad.

Mag-debug Nang Walang Tulong ng AI: Kapag ang mga robot ay gumagalaw sa hindi inaasahang direksyon o umiindayog sa paligid ng mga target, kailangan kong sistematikong sundan ang lohika, magdagdag ng mga debug output, at subukan ang mga hypothesis isa-isa. Walang AI na magmumungkahi ng mga posibleng isyu o tutulong magpaliwanag ng mga pattern ng error.

Matuto mula sa Mga Unang Prinsipyo: Nang walang kakayahang mabilis na magtanong ng “paano ko ipapatupad ang multi-processing sa Python para sa robotics?” kailangan kong malalim na maunawaan ang pinagbabatayang mga konsepto. Pinilit akong bumuo ng matibay na pundasyon sa concurrent programming, mga control system, at computer vision.

Napakahalaga ng Dokumentasyon: Dahil hindi ako makakaasa sa AI upang ipaliwanag ang code sa kalaunan, kailangan kong magsulat ng napakalinaw na dokumentasyon at mga komento. Ang disiplinang ito ay napatunayang napakahalaga kapag ipinapasa ang kaalaman sa iba.

Sa pagbabalik-tanaw, bagaman ang mga modernong kasangkapan ng AI ay makakapagpabilis sa maraming aspeto ng pag-develop, ang pagtatrabaho nang wala ang mga ito ay nagpilit sa akin na bumuo ng mas malalim na kakayahan sa paglutas ng problema at mas masusing pag-unawa sa pinagbabatayang mga sistema. Nakapupukaw ng interes na isipin kung gaano kaya kaiba ang proyektong ito kung available ang mga kasangkapan sa pag-develop ngayon.

Ang Mahirap na Desisyong Umalis

Gaano ko man kamahal ang pagtatrabaho sa HCR Lab, pagsapit ng huling bahagi ng 2021 ay hinarap ko ang isang mahirap na desisyong kinakaharap ng maraming estudyante: ang pagbalanse ng maraming oportunidad at responsibilidad. Sabay-sabay akong nagtatrabaho nang full-time bilang software engineer sa eBay, tinatapos ang aking degree sa computer science sa Mines, at nag-aambag sa pananaliksik sa HCR Lab.

Mahalaga ang oportunidad sa eBay; ito ang aking unang malaking papel sa software engineering, nagbigay ng napakahalagang karanasan sa industriya, at binigyan ako ng matatag na kita. Gayunpaman, ang pagsisikap na panatilihin ang full-time na trabaho, tapusin ang aking degree, at makapag-ambag nang makabuluhan sa pananaliksik ay hindi na talaga napapanatili. May isang bagay na kailangang isakripisyo.

Noong lumapit ako kay Dr. Zhang tungkol sa posibleng pagbabawas ng aking load sa klase upang mas makapagpokus sa gawain sa laboratoryo, mariin niya akong pinayuhan na huwag ito gawin. Makatuwiran ang kanyang paliwanag: ang pagtatapos ng aking degree ang dapat maging prayoridad, at ang karanasan sa industriya sa eBay ay magiging mahalaga para sa pag-unlad ng aking karera. Pakiramdam niya na ang pag-drop ng mga klase upang magpokus sa pananaliksik, bagaman nakakaakit, ay maaaring hindi ang pinakamahusay na pangmatagalang desisyon.

Kaya noong Setyembre 2021, matapos ang humigit-kumulang 8 buwang masinsinang trabaho sa laboratoryo, ginawa ko ang mahirap na desisyong umatras mula 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 desisyong propesyonal na kinailangan kong gawin noon.

Kahit matapos kong pormal na lisanin ang laboratoryo, nagpatuloy akong magbigay ng suporta tuwing may nangangailangan ng tulong sa mga sistemang binuo ko. Ina-update ko ang dokumentasyon kapag kinakailangan, sinasagot ang mga tanong tungkol sa pag-debug, at tumutulong sa pag-troubleshoot ng mga isyu nang malayuan. Ang mga koneksyong nabuo ko at ang pamumuhunan ko sa tagumpay ng proyekto ay hindi basta nawala dahil lamang hindi na ako pormal na bahagi ng koponan.

Mga Pagmumuni-muni at Pagbabalik-tanaw

Ngayon, noong 2025, makalipas ang apat na taon, natutuklasan kong nagmumuni-muni ako sa panahong iyon nang may magkakahalong damdamin. Ang landas ng aking karera ay humantong sa akin nang malalim sa web development at AI/ML engineering, mga larangang naging lubhang kapaki-pakinabang at nagbigay ng napakaraming oportunidad para sa pag-unlad at epekto.

Top-down view of Tritons on table

Gayunman, may bahagi sa akin na nagtatanong ng “paano kaya kung.” Ang robotics noon, at sa totoo lang hanggang ngayon, ang tunay kong hilig. May isang bagay sa pagtatrabaho sa mga pisikal na sistema, sa nakikitang ang iyong code ay nagiging totoong galaw at pag-uugali sa mundo, na hindi lubusang kayang tumbasan ng web development at kahit ng gawain sa AI.

Minsan ay nagtataka ako kung ano kaya ang nangyari kung iba ang pinili kong landas. Paano kung nakahanap ako ng paraan upang manatili sa pananaliksik sa robotics? Paano kung nag-aral ako ng graduate school kaagad pagkatapos kong matapos ang aking undergraduate degree? Paano kung pinili kong unahin ang gawain sa laboratoryo kaysa sa karanasan sa industriya?

Ngunit kinikilala ko rin na ang bawat landas ay may mga kapalit. Ang mga kasanayang nadevelop ko sa web development at AI ay naging napakahalaga. Itinuro sa akin ng karanasan sa industriya ang software engineering sa malakihang antas, disenyo ng user experience, at ang mga praktikal na hamon ng pagbuo ng mga produktong ginagamit ng milyun-milyong tao. Ang mga karanasang ito ay gumawa sa akin na mas mahusay na inhinyero sa kabuuan.

Ang gawaing ginawa ko sa HCR Lab ay patuloy na nakaaapekto sa paraan ng paglapit ko sa mga problema ngayon. Ang sistematikong pag-iisip na kinakailangan para sa mga PID control system ay lumilitaw sa paraan ng pagdisenyo ko ng mga feedback loop sa mga software system. Ang mga kasanayan sa dokumentasyon at pangangalaga ng kaalaman na nadevelop ko ay naging napakahalaga sa bawat tungkulin mula noon. Ang karanasan ng pagmo-mentor at pagtuturo ay humubog sa paraan ng aking pakikipagtulungan sa mga junior developer at sa aking ambag sa pagbabahaginan ng kaalaman sa koponan.

Pinakaimportante, itinuro sa akin ng karanasan na ako ay umuunlad kapag nagtatrabaho sa mga mahihirap na problemang teknikal na may tunay na epekto sa mundo. Maging ito man ay pag-optimize ng mga algorithm sa galaw ng robot o 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 problemang mahalaga.

Ang Pangmatagalang Epekto

Sa pagbabalik-tanaw sa karanasan sa HCR Lab, ako ay humahanga kung gaano karami ang aking natupad sa loob ng isang relatibong maikling panahon. Ang mga sistemang binuo ko ay lubos na nagbago sa paraan ng pag-andar ng Triton platform, at marami sa mga pagpapahusay na iyon ay ginagamit pa rin hanggang ngayon. Ang repositoryo ng dokumentasyon na nilikha ko ay naging knowledge base para sa buong proyekto. Ang mga ugnayang mentorship na nabuo ko ay nagkaroon ng pangmatagalang epekto sa mga taong nakatrabaho ko.

Ngunit marahil ang pinaka-mahalaga, ipinakita sa akin ng karanasang ito kung ano ang aking kaya kapag nagtatrabaho ako sa mga problemang tunay kong pinapahalagahan. Sa loob ng walong buwang iyon, ako ay:

  • Pinahusay ang sistema ng kontrol sa paggalaw ng robot na noon ay naglilimita sa plataporma
  • Bumuo ng isang sistema ng koordinasyon ng maraming robot mula sa simula
  • Isinama ang mga kakayahan ng computer vision at sensor fusion
  • Lumikha ng isang komprehensibong sistema ng dokumentasyon at pamamahala ng kaalaman
  • Nag-mentor sa ilang tao at tumulong sa paglilipat ng kaalaman
  • Sumuporta sa pananaliksik sa antas ng PhD sa mga autonomous na sasakyan

Hindi lang ito tungkol sa mga teknikal na tagumpay, bagaman mahalaga sa akin ang mga iyon. Tungkol ito sa pagkatuto na sa pamamagitan ng pagpupunyagi at sistematikong pag-iisip, maaari kang magbigay ng kapaki-pakinabang na ambag kahit bilang isang undergraduate na estudyante.

Ang Hinaharap at Robotika

Bagama’t ang aking karera ay dinala ako sa iba pang mga direksyon, hindi nabawasan ang aking hilig sa robotika. Sinusubaybayan ko pa rin ang mga pag-unlad sa larangang ito, nasasabik ako sa mga pagsulong sa pagkatuto ng robot at mga autonomous na sistema, at paminsan-minsan ay gumagawa ako ng mga personal na proyekto sa robotika sa aking bakanteng oras.

Sino ang nakakaalam kung ano ang inihahanda ng hinaharap? Ang mga kasanayang aking hinuhubog sa AI at machine learning ay lalong nagiging mahalaga sa robotika. Itinuro sa akin ng karanasang pang-industriya na aking nakuha kung paano bumuo ng matitibay, nasusukat na mga sistema. Marahil ay may hinaharap kung saan ang magkakaibang hibla ng aking karanasan ay nagsasama-sama sa mga di-inaasahang paraan.

Sa ngayon, nagpapasalamat ako sa panahong ginugol ko sa HCR Lab at sa mga karanasang naibigay nito. Isa itong mahalagang yugto na humubog sa aking mga teknikal na kasanayan at sa aking pag-unawa kung anong mga uri ng trabaho ang pinakanaaaliw at pinakanaaangkop sa akin. Kahit minsan ay namimiss ko ito, alam ko na ang mga aral na natutunan ko at ang mga pamamaraang binuo ko ay patuloy na nakaaapekto sa lahat ng aking ginagawa.

Nandiyan pa rin ang mga Triton robot, patuloy na nagsisilbi sa mga mananaliksik, patuloy na nagbibigay-daan sa mahalagang gawain. At napakaganda niyan.