Udhibiti wa PID na TurtleSim

Repo ya Mradi ya GitLab

Muhtasari

Move Turtle ni skiripti rahisi ya Python ya ROS ambayo inasogeza kobe katika TurtleSim ya ROS hadi kuratibu zilizobainishwa (pointi). Mradi huu ulianza kama mradi wa darasa kwa CSCI473 katika Colorado School of Mines (CSOM) na baadaye ukageuka kuwa mradi niliotumia kunisaidia kujifunza jinsi mifumo ya mzunguko uliofungwa inaweza kuundwa, maarifa ambayo yalitumiwa kunisaidia kazi yangu katika Maabara ya Human Centered Robotics (HCR) ya CSOM.

Muktadha

Kwa ufahamu wa nyuma, ROS inasimama kwa Robot Operating Systems. ROS ni middleware ya roboti yenye kanuni za wazi, kwa kawaida inahusishwa na mfumo wa uendeshaji Ubuntu, ambao hutumika kusimamia vizuri vipengele/vikundi vya programu vya mfumo wa roboti. Unaweza kujifunza zaidi kuhusu jinsi ya kutumia ROS kupitia wiki rasmi ya ROS. Msimbo unaouandika katika ROS uko kwa C++ au Python.

TurtleSim ni kigeuzi rahisi cha roboti cha 2D kinachotumika kama utangulizi wa ROS na vifurushi vya ROS kwa watumiaji wapya wa ROS. Yote TurtleSim inafanya ni kufungua maonyesho rahisi ya 2D yenye kobe. Kobe huyo hutenda kama “roboti” na unaweza kutuma ujumbe kwa “roboti” huyo kusonga na/au kugeuka. Kwa kuongezea, TurtleSim huleta makosa ya nasibu ili kuiga fizikia ya dunia halisi kwa njia rahisi.

Ikijulikana kile ROS na TurtleSim ni, kwanini nilikuwa nikivitumia? Vizuri, msimu wa Cheche 2020 nilikuwa nikichukua kozi iitwayo “Human Centered Robotics” katika Colorado School of Mines kama sehemu ya mzigo wangu wa masomo ya shahada ya kwanza ya sayansi ya kompyuta. Kozi ilifundishwa na Dr. Hao Zhang. Kozi ilijumuisha miradi mitatu na mradi wa kwanza ulijumuisha kusanidi ROS, kujifunza jinsi ya kutumia ROS, na kutekeleza ama algoriti ya mzunguko wazi au mzunguko uliofungwa ambao ungefanya kobe katika TurtleSim kuchora M. Maelezo ya mradi wa awali yanaweza kuonekana HAPA.

Nilipokuwa nikichukua kozi, nilikamilisha mradi huu kwa kutekeleza algoriti ya mzunguko wazi. Suluhisho hili lilifanya kazi lakini lilikuwa la kiwango duni na lilichora A ambayo ilikuwa “inakubalika” lakini haiku karibu na “kabisa nzuri”. Baada ya kuwasilisha mradi katikati ya Februari 2020, nililisahau hadi mwaka mmoja baadaye karibu Februari 2021.

Changamoto

Mnamo Februari 2021, nilipata kazi kama Msaidizi wa Utafiti katika Maabara ya Human Centered Robotics (HCR) katika Colorado School of Mines ambapo nilifanya kazi chini ya Dr. Hao Zhang. Lengo la maabara ni kufanya utafiti juu ya “uwezeshaji wa udhibiti wa umoja wa maisha yote, kwa lengo la kuwezesha roboti kufanya kazi na kuendana kwa vipindi virefu vya muda”. Kuanzia 9-1-2022 (1 Septemba, 2022), maabara ilihamia kutoka Colorado School of Mines hadi Chuo Kikuu cha Massachusetts Amherst. Lakini, nilipokuwa nafanya kazi huko bado walikuwa Colorado.

Katika Maabara ya HCR, nilipewa kazi ya kufanya kazi kwenye mradi wa Triton. Mradi wa Triton ulijumuisha roboti nyingi, za miongo kadhaa, zinazojulikana kama Tritons. Tritons zilikuwa roboti za ardhini zenye magurudumu omni wheel za umbo la pembetatu zilizoonekana hivi:

Pamoja na Tritons, kamera nane za IR kutoka OptiTrack zilipangwa kwa “mpangilio wa oktagon” mita chache juu ya ardhi. Kutumia hizo kamera, programu ya Optitrack Motive, PC inayokimbia Windows 10, na ROS; eneo la mita 2 kwa 2 kwa 2 (x, y, z) liliundwa ambapo nafasi halisi ya vitu vilivyo na alama za uchukuzi wa mwendo inaweza kubainishwa kwa usahihi.

Kazi yangu ya kwanza kwenye mradi wa Triton ilikuwa kuunda skiripti ambazo zingeifanya roboti Triton kusonga hadi nafasi maalum ya dunia halisi. Wakati huo, sikuwa na uhakika jinsi ya kufikia hili lakini nilikumbuka mradi wa kwanza kutoka CSCI473 ambapo wazo la mfumo wa mzunguko uliofungwa lilitambulishwa kwangu, hivyo nianzia kufanya utafiti wa kina juu ya mifumo ya mzunguko uliofungwa na kwa upande mwingine, mifumo ya mrejesho.

Utafiti

Wakati wa utafiti wangu, niligundua video nzuri hii ya AerospaceControlsLab:

Katika video hii, wazo la mfumo wa PID lilionyeshwa na kufafanuliwa kwangu. Mfumo wa PID ni mfumo wa mzunguko uliofungwa, mfumo wa mzunguko wa udhibiti, ambao hutengeneza pato maalum kulingana na data kutoka dunia halisi. Kwa maneno ya msingi, ni mfumo wa mrejesho unaobadilisha pato lake kulingana na tofauti kati ya thamani inayotakiwa na thamani iliyopimwa. Hii ni fomula ya kidhibiti ya PID:

$$ u(t) = K_p e(t) + K_i \int e(t) dt + K_d \frac{de(t)}{dt} $$

  • $u(t)$ ni ishara ya udhibiti.
  • $K_p$, $K_i$, $K_d$ ni faida za uwiano, zidisha, na leoshida mtawalia.
  • $e(t)$ ni ishara ya hitilafu (tofauti kati ya pato linalotakiwa na pato halisi).
  • $\int e(t) dt$ ni jumuisho la hitilafu kwa muda.
  • $\frac{de(t)}{dt}$ ni utofauti wa hitilafu.

Ili kujifunza zaidi kuhusu hilo, angalia video ya AerospaceControlsLab au makala hii ya ajabu ya wikipedia ambayo fomula yake imechukuliwa.

Baada ya kufanya utafiti wangu pamoja na kupata msaada kutoka kwa marafiki zangu werevu na maprofesa, nilibaini kwamba kutumia Kontrol ya Uwiano, Kontrol P, ingekuwa bora kumsaidia Triton kufikia kuratibu maalum.

Kwa kuwa Triton ni roboti wa ardhini, nilihitaji tu kuzingatia kuratibu za X na Y. Nijulikanapo hili, nilipaswa kubainisha ni thamani zipi zinazotakiwa na thamani zilizopimwa kupimwa na kushughulikiwa ndani ya Kontrol P(s). Katika utafiti wangu nilipata chapisho hiki nzuri kwenye wiki ya ROS iitwayo Go to Goal ambapo walizingatia makosa yafuatayo:

  • Hitilafu ya Umbali: Tofauti katika umbali kati ya eneo linalotakiwa (X, Y) na eneo la sasa (X, Y).
  • Hitilafu ya Theta: Tofauti kati ya mwelekeo unaotakiwa na mwelekeo wa sasa.

Suluhisho Lililopendekezwa

Nikijua haya yote, suluhisho la kumfanya Triton asoge hadi kuratibu maalum ya dunia halisi ni kutumia Kontrol ya Uwiano kwa hitilafu ya umbali ya Triton na hitilafu ya theta ikilinganishwa na kuratibu ya lengo na kuratibu ya sasa ya Triton. Lakini kabla ya kutekeleza hili kwenye mfumo wa kimwili, nilitaka kujaribu wazo hilo katika uigaji na, wakati huo, nilidhani kutumia TurtleSim kama uigaji ilikuwa chaguo bora.

Kupima Katika Uigaji

Kwa suluhisho la kinadharia lililofafanuliwa, niliamua kwanza kuuthibitisha kupitia uigaji, badala ya hali ya dunia halisi. Dunia halisi mara nyingi imechafuwa na kelele ambayo inaweza kuchanganya ufanisi wa suluhisho na kusababisha kushughulikia masuala yasiyohusiana. Nikitambua hili, nilirudi kwenye mradi wangu wa CSCI473 na kuubadilisha kama uwanja wa majaribio kwa suluhisho hili la kinadharia.

Baada ya kusasisha msimbo wa zamani kutoka kutumia ROS Melodic hadi kutumia ROS Noetic na kwa uboreshaji wa mfululizo wa marekebisho, nilifanikiwa kupata suluhisho lililopendekezwa likifanya kazi katika TurtleSim. Matangazo ya utendaji wake, pamoja na baadhi ya njia za kuratibu za lengo nzuri, yanaweza kupatikana mwishoni mwa chapisho hili la blogu. Msimbo mzima wa hili unaweza kuonekana HAPA.

Hitimisho

Kwa muhtasari, kupitia mradi huu, kobe wa TurtleSim unaelekeza kwa ufanisi hadi kuratibu zilizowekwa kwa kutumia mfumo wa mzunguko uliofungwa, ukifanya vizuri zaidi sana kuliko mfumo wangu wa mzunguko wazi wa awali wa mwaka 2020. Baada ya majaribio ya mafanikio, nilitekeleza suluhisho hili kwa roboti za Triton. Lakini kelele za dunia halisi zilisababisha matatizo yasiyotarajiwa yaliyohitaji wiki za utatuzi hitilafu na majaribio ya ulimwengu halisi. Baada ya wiki hizo, hatimaye nilifaulu kumfanya Triton kufikia kuratibu maalum za dunia halisi kwa kutumia suluhisho nlioulifanya majaribio katika TurtleSim. Hiki ni demo ya Triton inayoenda kwenye kuratibu maalum za dunia halisi kwa kutumia mbinu iliyojaribiwa katika TurtleSim:

Baada ya kutafakari, ningetaka kutumia uigaji uliouiga vizuri zaidi fizikia ya dunia halisi. TurtleSim ni nzuri kwa kujifunza lakini sio nzuri kwa kujaribu mawazo ya uhandisi wa roboti ya dunia halisi. Wakati huo, nilidhani itatosha kwa matumizi yangu rahisi lakini baadaye ilithibitishwa kuwa sivyo.

Madhumuni makuu ya chapisho hili la blogu ilikuwa kuelezea uundaji wa mfumo wa mzunguko uliofungwa unaowezesha kobe katika TurtleSim, na baadaye roboti za Triton, kuvinjari kwa usahihi hadi nafasi za lengo zilizobainishwa (X, Y). Naamini lengo hili limefikiwa, na huenda limevutia baadhi ya watu katika kazi yangu katika Maabara ya HCR. Nikijua hili, nina mipango ya kuandika machapisho mengine kuhusu uzoefu wangu wa kazi katika Maabara ya HCR…

Onyesho za Move Turtle (TurtleSim)

Video hii ina onyesho zifuatazo:

  • Cayley Nodal: Muundo rahisi wa Cayley Nodal
  • Circles: Muundo wa aina ya wavuti ya buibui
  • Inner Circles: Muundo wa “mizunguko ndani ya mizunguko”
  • M: Muundo rahisi sana wa M