Orodha ya maudhui:

Rpibot - Kuhusu Kujifunza Roboti: Hatua 9
Rpibot - Kuhusu Kujifunza Roboti: Hatua 9

Video: Rpibot - Kuhusu Kujifunza Roboti: Hatua 9

Video: Rpibot - Kuhusu Kujifunza Roboti: Hatua 9
Video: Цигун для начинающих. Для суставов, позвоночника и восстановления энергии. 2024, Julai
Anonim
Rpibot - Kuhusu Kujifunza Roboti
Rpibot - Kuhusu Kujifunza Roboti

Mimi ni mhandisi wa programu iliyoingia katika kampuni ya magari ya Ujerumani. Nilianza mradi huu kama jukwaa la kujifunza kwa mifumo iliyoingia. Mradi huo ulifutwa mapema lakini niliufurahiya sana hivi kwamba niliendelea wakati wangu wa bure. Hii ndio matokeo …

Nilikuwa na mahitaji yafuatayo:

  • Vifaa rahisi (lengo ni programu)
  • Vifaa vya bei rahisi (karibu 100 €)
  • Inapanuka (chaguzi zingine tayari ni sehemu ya maelezo)
  • Ugavi wa voltage kwa vifaa vyote kutoka chanzo kimoja cha 5V (powerbank)

Hakukuwa na lengo mbali na kujifunza. Jukwaa linaweza kutumika kwa ujifunzaji, ufuatiliaji, mashindano ya roboti,…

Sio mafunzo ya Kompyuta. Unahitaji ujuzi wa kimsingi kuhusu:

  • Programu (Python)
  • Elektroniki ya msingi (kuunganisha moduli pamoja na voltage sahihi)
  • Nadharia ya Udhibiti wa Msingi (PID)

Mwishowe labda utakabiliwa na shida kama mimi. Kwa udadisi na uvumilivu, utapitia mradi huo na utatue changamoto. Nambari yangu ni rahisi iwezekanavyo na mistari muhimu ya nambari inasemwa kutoa vidokezo.

Nambari kamili ya chanzo na faili zinapatikana hapa:

Ugavi:

Mitambo

  • Bodi ya Plywood ya 1x (saizi ya A4, unene wa 4 mm)
  • 3x M4 x 80 Parafujo na karanga
  • Magari ya 2x ya gia na shimoni ya pili ya pato kwa encoder. Magurudumu.
  • 1x gurudumu la bure

1x Pan na upandikizaji wa kamera (hiari)

Umeme

  • 1x Raspberry Pi Zero na kichwa na kamera
  • Udhibiti wa servo ya 1x PCA 9685
  • 2x Optical gurudumu encoder na mzunguko
  • Waya za jumper za 1x
  • 1x umeme wa benki
  • Dereva wa gari mbili wa 1x DRV8833
  • 2x servos SG90 kwa sufuria ya kamera na kuhama (hiari)
  • 1x MPU9250 IMU (hiari)
  • 1x HC-SR04 sensor ya umbali wa ultrasonic (hiari)
  • 1x bodi iliyotobolewa na waya ya kutengenezea, vichwa,…

Hatua ya 1: Jenga Chassis

Jenga Chassis
Jenga Chassis
Jenga Chassis
Jenga Chassis
Jenga Chassis
Jenga Chassis

Mimi sio mbuni mzuri wa fundi. Pia lengo la miradi sio kutumia muda mwingi kwenye chasisi. Kwa hivyo nilielezea mahitaji yafuatayo:

  • Vifaa vya bei nafuu
  • Mkutano wa haraka na kutenganisha
  • Inapanuka (k.m nafasi ya sensorer zilizoongezwa)
  • Vifaa vya taa kuokoa nishati kwa umeme

Chasisi rahisi na ya bei rahisi inaweza kufanywa kwa plywood. Ni rahisi kwa mashine na fretsaw na kuchimba mkono. Unaweza gundi sehemu ndogo za mbao kuunda umiliki wa sensorer na motors.

Fikiria juu ya uingizwaji wa vifaa vya kasoro au utatuzi wa umeme. Sehemu kuu zinapaswa kurekebishwa na screws ili kubadilishwa. Bunduki ya gundi moto inaweza kuwa rahisi, lakini labda sio njia bora ya kujenga chasisi … nilihitaji muda mwingi kufikiria juu ya wazo rahisi kutenganisha sehemu hizo kwa urahisi. Uchapishaji wa 3D ni mbadala mzuri, lakini inaweza kuwa ghali kabisa au kutumia muda.

Gurudumu la bure mwishowe ni nyepesi sana na rahisi kupanda. Njia zingine zote zilikuwa nzito au zilizojaa msuguano (nilijaribu michache kabla ya kupata ya mwisho). Ilibidi tu kukata spacer ya mbao ili kusawazisha gurudumu la bure la mkia baada ya kuweka magurudumu kuu.

Mali ya gurudumu (kwa mahesabu ya programu)

Mviringo: 21, 5 cm Miale: kunde 20 / ufufuo Azimio: 1, 075 cm (mwishowe mapigo 1 ni karibu 1cm, ambayo ni rahisi kwa mahesabu ya programu)

Hatua ya 2: Umeme na Wiring

Electoniki na nyaya
Electoniki na nyaya
Electoniki na nyaya
Electoniki na nyaya
Electoniki na nyaya
Electoniki na nyaya

Mradi unatumia moduli tofauti kama inavyoonyeshwa kwenye mchoro.

Raspberry Pi Zero ndiye mdhibiti mkuu. Ni kusoma sensorer na kudhibiti motors kwa ishara ya PWM. Imeunganishwa na PC ya mbali na wifi.

DRV8833 ni gari mbili H-daraja. Inatoa sasa ya kutosha kwa motors (ambayo Raspberry Pi haiwezi kufanya kama matokeo yanaweza tu kutoa mA).

Encoder ya macho hutoa ishara ya umbo la mraba kila wakati taa inapitia magurudumu ya usimbuaji. Tutatumia usumbufu wa HW wa Raspberry Pi kupata habari kila wakati ishara inapogeuza.

Pca9695 ni bodi ya kudhibiti servo. Inawasiliana na basi ya serial ya I2C. Bodi hii inatoa ishara za PWM na voltage ya usambazaji ambayo inadhibiti servos kwa sufuria na kuinama kwa kamera.

MPU9265 ni kasi ya mhimili 3, kasi ya kuzunguka kwa mhimili 3, na sensorer ya fizikia ya axis 3. Tutatumia haswa kupata dira inayoongoza.

Moduli tofauti zote zimeunganishwa pamoja na waya ya kuruka. Bodi ya mkate inafanya kazi kama mtumaji na hutoa voltages za usambazaji (5V na 3.3V) na viwanja. Viunganisho vyote vimeelezewa kwenye jedwali la unganisho (angalia kiambatisho). Kuunganisha 5V kwa pembejeo ya 3.3V labda kutaharibu chip yako. Jihadharini na angalia wiring yako yote mara mbili kabla ya kusambaza (hapa haswa encoder inapaswa kuzingatiwa). Unapaswa kupima voltages kuu za usambazaji kwenye bodi ya kupeleka na multimeter kabla ya kuunganisha bodi zote. Moduli zilirekebishwa na visu za nailoni kwenye chasisi. Pia hapa nilifurahi kuzirekebisha lakini pia zinaweza kutolewa ikiwa kuna utapiamlo.

Uuzaji tu ulikuwa mwishowe magari na ubao wa mkate na vichwa. Kusema kweli, napenda waya za kuruka lakini zinaweza kusababisha unganisho huru. Katika hali zingine, ufuatiliaji wa programu zingine zinaweza kukusaidia katika kuchambua miunganisho.

Hatua ya 3: Miundombinu ya Programu

Miundombinu ya Programu
Miundombinu ya Programu
Miundombinu ya Programu
Miundombinu ya Programu

Baada ya kufanikisha mitambo, tutaweka miundombinu ya programu kuwa na hali nzuri za maendeleo.

Git

Huu ni mfumo wa kudhibiti toleo la chanzo huru na wazi. Inatumika kusimamia miradi mikubwa kama Linux, lakini pia inaweza kutumika kwa urahisi kwa mradi mdogo (tazama Github na Bitbucket).

Mabadiliko ya mradi yanaweza kufuatiliwa ndani na pia kusukuma kwa seva ya mbali kushiriki programu na jamii.

Amri kuu zinazotumiwa ni:

clone ya git https://github.com/makerobotics/RPIbot.git [Pata msimbo wa chanzo na usanidi wa git]

git pull master master [pata habari mpya kutoka kwa hifadhi ya mbali]

hali ya git [pata hadhi ya hazina ya karibu. Kuna faili zozote zimebadilishwa?] Git log [pata orodha ya ahadi] git add. [ongeza faili zote zilizobadilishwa kwa hatua ya kuzingatiwa kwa ahadi inayofuata]

Kukata miti

Chatu hutoa zingine zilizojengwa katika kazi za ukataji miti. Muundo wa programu inapaswa kufafanua tayari mfumo wote wa ukataji miti kabla ya kuanza maendeleo zaidi.

Logger inaweza kusanidiwa kuingia na muundo uliofafanuliwa kwenye terminal au kwenye faili ya logi. Katika mfano wetu, logger imesanidiwa na darasa la webserver lakini tunaweza pia kuifanya peke yetu. Hapa tunaweka tu kiwango cha ukataji miti kuwa DEBUG:

logger = logging. GogLogger (_ jina_)

logger.setLevel (kukata magogo. DEBUG)

Kupima na kupanga njama

Ili kuchambua ishara kwa muda, bora ni kuzipanga kwenye chati. Kwa kuwa Raspberry Pi ina kituo cha dashibodi tu, tutafuatilia data kwenye faili ya csv iliyotengwa semicoloni na kuipanga kutoka kwa PC ya mbali.

Faili iliyofuatana ya semicoloni imetengenezwa na nambari kuu ya chatu na lazima iwe na vichwa kama hivi:

timestamp; yawCorr; encoderR; I_L; odoDistance; ax; encoderL; I_R; yaw; eSpeedR; eSpeedL; pwmL; speedL; MzungukoTimeControl;

1603466959.65;0;0;25;0.0;-0.02685546875;0;25;0;25;25;52;0.0;23;0.221252441406;16;0.0;0;252.069366413;-5.19555664062;-16.0563964844;0;6; 1603466959.71;0;0;50;0.0;0.29150390625;0;50;0;25;25;55;0.0;57;-8.53729248047;53;0.0;0;253.562118111;-5.04602050781;-17.1031494141;0;6; 1603466959.76;0;-1;75;0.0;-0.188232421875;1;75;2;25;25;57;0;52;-24.1851806641;55;0;0;251.433794171;-5.64416503906;-16.8040771484;2;7;

Safu wima ya kwanza ina alama ya muda. Safu wima zifuatazo ni za bure. Hati ya kupanga inaitwa na orodha ya nguzo zinazopangwa:

kijijini @ pc: ~ / python rpibot_plotter -f trace.csv -p speedL, speedR, pwmL, pwmR

Hati ya njama inapatikana kwenye folda ya zana:

Mpangaji anatumia mathplotlib katika Python. Lazima unakili kwenye PC yako.

Kwa faraja zaidi, hati ya chatu inaitwa na bash script (plot.sh) ambayo hutumiwa kunakili faili ya Raspberry Pi trace kwa PC ya mbali na kumwita mpangaji na uteuzi wa ishara. ikiwa faili inapaswa kunakiliwa. Hii ilikuwa rahisi zaidi kwangu badala ya kunakili kwa mikono kila wakati. "sshpass" hutumiwa kunakili faili kutoka Raspberry Pi hadi PC ya mbali kupitia scp. Inaweza kunakili faili bila kuuliza nywila (imepitishwa kama kigezo).

Mwishowe dirisha linafunguliwa na kiwanja kama inavyoonyeshwa kwenye picha.

Mawasiliano ya mbali

Muunganisho wa maendeleo kwa Raspberry Pi ni SSH. Faili zinaweza kuhaririwa moja kwa moja kwenye lengo, au kunakiliwa na scp.

Ili kudhibiti robot, seva ya wavuti inaendesha kwenye Pi, ikitoa udhibiti kupitia Wavuti za wavuti. Muunganisho huu umeelezewa katika hatua inayofuata.

Sanidi Raspberry Pi

Kuna faili inayoelezea usanidi wa Raspberry Pi kwenye folda ya "doc" ya nambari ya chanzo (setup_rpi.txt). Hakuna maelezo mengi lakini amri na viungo vingi muhimu.

Hatua ya 4: Kiolesura cha Mtumiaji

Kiolesura cha Mtumiaji
Kiolesura cha Mtumiaji

Tunatumia seva ya Wavuti ya Tornado nyepesi kuwa mwenyeji wa kiolesura cha mtumiaji. Ni moduli ya chatu ambayo tunaiita tunapoanza programu ya kudhibiti roboti.

Usanifu wa programu

Kiolesura cha mtumiaji kimejengwa kwa kufuata faili: udhibiti wa html. Nafasi za vidhibiti zimefafanuliwa hapa]

Mawasiliano ya wavuti

Kiolesura cha mtumiaji sio cha baridi zaidi, lakini inafanya kazi hiyo. Nilizingatia hapa teknolojia ambazo zilikuwa mpya kwangu kama Websockets.

Wavuti inawasiliana na seva ya wavuti ya roboti na Wavuti za wavuti. Hiki ni kituo cha mawasiliano cha pande zote mbili ambacho kitakaa wazi wakati unganisho lilianzishwa. Tunatuma maagizo ya roboti kupitia Websocket kwa Raspberry Pi na kupata habari (kasi, msimamo, mkondo wa kamera) kurudi kwa onyesho.

Mpangilio wa kiolesura

Kiolesura cha mtumiaji kina pembejeo ya mwongozo kwa amri. Hii ilitumika mwanzoni kutuma amri kwa roboti. Sanduku la kuangalia linawasha na kuzima mkondo wa kamera. Slider mbili zinadhibiti sufuria ya kamera na kuegemea. Sehemu ya juu ya kulia ya kiolesura cha mtumiaji inadhibiti mwendo wa roboti. Unaweza kudhibiti kasi na lengo la umbali. Maelezo ya msingi ya telemetry yanaonyeshwa kwenye kuchora roboti.

Hatua ya 5: Kupanga Programu ya Jukwaa la Robot

Kupanga Programu ya Jukwaa la Robot
Kupanga Programu ya Jukwaa la Robot
Kupanga Programu ya Jukwaa la Robot
Kupanga Programu ya Jukwaa la Robot
Kupanga Programu ya Jukwaa la Robot
Kupanga Programu ya Jukwaa la Robot

Sehemu hii ilikuwa lengo kuu la mradi huo. Nilirudisha programu nyingi wakati nilianzisha chasisi mpya na motors za DC. Nilitumia Python kama lugha ya programu kwa sababu tofauti:

  • Ni lugha kuu ya Raspberry Pi
  • Ni lugha ya kiwango cha juu na nyingi zimejengwa katika huduma na viendelezi
  • Imeelekezwa kwa kitu lakini inaweza pia kutumika kwa programu inayofuatana
  • Hakuna mkusanyiko au mlolongo wa zana muhimu. Hariri nambari na uitumie.

Usanifu kuu wa programu

Programu imeelekezwa kwa kitu, imegawanywa katika vitu vichache. Wazo langu lilikuwa kugawanya nambari katika vitalu vitatu vya kazi:

Sense Fikiria Actuate

Sense.py

Upataji kuu wa sensorer na usindikaji. Takwimu zimehifadhiwa katika kamusi ili kutumiwa na hatua ifuatayo.

Udhibiti.py

Kitengo cha utaftaji ni kudhibiti motors na servos baada ya kutolewa. Kitu kuu cha Udhibiti ni kushughulikia maagizo ya kiwango cha juu na pia algorithms ya kudhibiti (PID) kwa motor.

rpibot.py

Jambo hili kuu ni kusimamia seva ya wavuti ya Tornado na kuimarisha madarasa ya akili na udhibiti katika nyuzi tofauti.

Kila moduli inaweza kuendeshwa peke yake au kama sehemu ya mradi wote. Unaweza kuhisi tu na uchapishe habari ya sensorer ili kuangalia kuwa sensorer zimeunganishwa kwa usahihi na kutoa habari sahihi.

Udhibiti wa PID

Kazi ya kwanza ni kujua nini tunataka kudhibiti. Nilianza kwa kujaribu kudhibiti msimamo, ambao ulikuwa mgumu sana na haukusaidia sana.

Mwishowe, tunataka kudhibiti kila kasi ya gurudumu na pia mwelekeo wa roboti. Ili kufanya hivyo lazima tuangalie mantiki mbili za kudhibiti.

Ili kuongeza ugumu hatua kwa hatua, roboti inapaswa kudhibitiwa:

kitanzi wazi (na nguvu ya kila wakati)

pwm = K

kisha ongeza algorithm ya kitanzi cha karibu

pwm = Kp.speedError + Ki. Ujumuishaji (kasi ya makosa)

na mwishowe ongeza udhibiti wa mwelekeo kama hatua ya mwisho.

Kwa udhibiti wa kasi nilitumia udhibiti wa "PI" na "P" tu kwa yaw. Niliweka vigezo kwa kujaribu. Labda vigezo bora zaidi vinaweza kutumika hapa. Lengo langu lilikuwa laini moja kwa moja na karibu nilipata. Niliunda kiolesura katika programu kuandika vigeuzi kadhaa na kiolesura cha mtumiaji. Kuweka parameter Kp hadi 1.0 inahitaji kufuata amri katika kiolesura cha mtumiaji:

SET; Kp; 1.0

Ningeweza kuweka kigezo cha P chini tu vya kutosha ili kuzuia kupita kiasi. Hitilafu iliyobaki inarekebishwa na kigezo cha I (kosa lililounganishwa)

Ilikuwa ngumu kwangu kujua jinsi ya kuteleza vidhibiti vyote. Suluhisho ni rahisi, lakini nilijaribu njia zingine nyingi kabla… Kwa hivyo mwishowe, nilibadilisha lengo la kasi ya magurudumu kugeuza upande mmoja au mwingine. Kubadilisha pato la kudhibiti kasi moja kwa moja ilikuwa kosa kwani udhibiti wa kasi ulikuwa ukijaribu kuondoa uharibifu huu.

Mchoro wa kudhibiti uliotumiwa umeambatanishwa. Inaonyesha tu upande wa kushoto wa udhibiti wa roboti.

Hatua ya 6: Upimaji wa Sensorer

Upimaji wa Sensor
Upimaji wa Sensor
Upimaji wa Sensor
Upimaji wa Sensor
Upimaji wa Sensor
Upimaji wa Sensor

Jambo la kwanza kuzingatia ni kwamba IMU nzima inapaswa kufanya kazi vizuri. Niliamuru sehemu 3 na kuzirudisha hadi nilipokuwa na sensa kamili ya kazi. Kila sensorer iliyopita ilikuwa na sehemu za sensorer ambazo hazifanyi kazi vizuri au hazifanyi kazi kabisa. Nilitumia maandishi ya mfano kujaribu misingi kabla ya kuiweka kwenye roboti.

Ishara za sensorer ya IMU zinahitaji kusawazishwa kabla ya kuitumia. Ishara zingine za sensorer zinategemea pembe na msimamo.

Ulinganishaji wa kasi na kasi

Ulinganishaji rahisi ni kwa kuongeza kasi kwa urefu (A_x). Kwa kusimama lazima kuwe na karibu 0 m / s². Ikiwa unazunguka sensor vizuri, unaweza kupima mvuto (karibu 9, 8 m / s²). Ili kupima a_x, inabidi uiweke vizuri na kisha ufafanue kipengee ili upate 0 m / s² kwa kusimama. Sasa A_x imewekwa sawa. Unaweza kupata malipo kwa kasi ya kuzunguka kwa njia ile ile ukisimama.

Ulinganishaji wa sumaku kwa dira

Uwekaji ngumu zaidi ni muhimu kwa sensorer za uwanja wa sumaku. Tutatumia m_x na m_y kupata uwanja wa sumaku katika kiwango cha usawa. Kuwa na m_x na m_y itatupa fursa ya kuhesabu kichwa cha dira.

Kwa kusudi letu rahisi tutalinganisha tu kupotoka kwa chuma ngumu. Hii lazima ifanywe kwani sensor iko katika nafasi ya mwisho kwani inategemea misukosuko ya uwanja wa sumaku.

Tunarekodi m_x na m_y wakati tunageuza roboti kuzunguka mhimili wa z. Tunapanga m_x vs m_y kwenye chati ya XY. Matokeo katika ellipsis kama inavyoonekana kwenye picha. Ellipsis lazima iwe katikati ya asili. Hapa tunazingatia viwango vya juu na vya chini vya m_x na m_y kupata njia zote mbili. Mwishowe tunaangalia upimaji na kuona kwamba ellipsis sasa imejikita.

Ulinganishaji laini wa chuma unamaanisha kwamba tunabadilisha picha kutoka kwa duara hadi duara. Hii inaweza kufanywa kwa kuongeza sababu kwenye kila thamani ya senor.

Utaratibu wa majaribio sasa unaweza kusajiliwa ili kurekebisha au angalau kuangalia kuwa sensorer bado zimesanibishwa.

Dira inayoelekea

Takwimu za sumaku sasa zitatumika kuhesabu kichwa cha dira. Kwa hili, lazima tugeuze m_x na m_y ishara kuwa pembe. Python inatoa moja kwa moja kazi ya math.atan2 ambayo ina lengo hili. Hesabu kamili imeelezwa katika faili ya mpu9250_i2c.py ("calcHeading (mx, my, mz)").

Hatua ya 7: Miundo Mbadala

Miundo Mbadala
Miundo Mbadala
Miundo Mbadala
Miundo Mbadala
Miundo Mbadala
Miundo Mbadala

Mradi huo ulichukua muda mwingi kwani muundo ulikuwa wazi kabisa. Kwa kila sehemu nilifanya utekelezaji wa mfano na nilipata mipaka ya mfumo.

Mada ngumu zaidi ilikuwa encoder ya gurudumu. Nilijaribu chaguzi 3 tofauti kabla ya kupata kiambatisho cha macho kinachotumika sasa. Nadhani suluhisho zilizotolewa ni za kupendeza pia katika mradi kama huo. Inahusu sehemu ambazo nilijifunza zaidi.

Mzunguko unaoendelea wa servo iliyounganishwa na pca 9695

Ili kuepuka daraja la ziada la H kwa gari la DC, kwanza nilianza na servos zinazoendelea za kuzunguka. Hizi ziliendeshwa na dereva wa sasa wa pca 9695 wa servo tayari. Mitambo yote ya kusukuma na elektroniki wa mwandishi walikuwa rahisi sana. Ubunifu huu ulikuwa na shida mbili:

  • Aina duni ya udhibiti wa servos.
  • Sehemu ya usimbuaji iliyokosekana

Servos kuanza kusonga na 50% pwm na kuwa na kasi kamili kwa karibu 55%. Hii ni anuwai mbaya sana ya kudhibiti.

Bila kificho cha usimbuaji, ilikuwa ngumu sana kupata tayari kwenda kusimba. Nilijaribu encoder 3 tofauti ya tafakari ambayo ilikuwa imewekwa kwenye chasisi. Niligonga gurudumu la encoder la kujitengeneza nje ya gurudumu na sehemu nyeusi na nyeupe. Nilitumia sensorer za QTR-1RC ambazo zinahitaji usindikaji mwingi wa ishara kupata ishara sahihi. Pi ya Raspberry haikuweza kufanya usindikaji wa wakati kama huo. Kwa hivyo niliamua kuongeza mini NodeMCU D1 kama mtawala wa wakati halisi kwenye roboti. Iliunganishwa na Risiberi Pi na UART mfululizo kutoa data ya sensorer iliyosindika. NodeMCU pia ilikuwa ikisimamia sensa ya HC-SR04. Mitambo ilikuwa ngumu na sio imara sana, laini ya serial ilikuwa ikipata kelele kutoka kwa laini ya I2C na motors, kwa hivyo mwishowe niliunda toleo la pili la chasisi na gari rahisi za DC zinazoendeshwa na daraja la H. Motors hizi zina shimoni la pili la kuweka ili kuweka kiambatisho cha macho.

Hatua ya 8: Usindikaji wa Picha

Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha
Usindikaji wa Picha

Ili kuboresha kuendesha kwa uhuru, tunaweza kutengeneza usindikaji wa picha.

Maktaba ya opencv ni kumbukumbu ya hiyo. Inaweza kutumiwa na Python kutekeleza haraka kugundua kikwazo.

Tunachukua picha na kutumia kazi kadhaa za usindikaji wa picha:

Vipimo vya kwanza vilifanywa na mabadiliko ya Canny na Sobel. Canny anaweza kuwa mgombea mzuri lakini hana busara ya kutosha. Sobel ni busara sana (vitu vingi vimegunduliwa).

Mwishowe nilitengeneza kichujio changu ili kuchanganya gradients zote zenye usawa na wima (gundua fanicha):

  • Badilisha picha ya rangi kuwa picha ya kiwango cha kijivu
  • Futa picha ili kuondoa kelele ndogo
  • Kinga picha kwa picha nyeusi na nyeupe
  • Sasa tunagundua gradients zenye usawa na wima ili kugundua vitu kama kuta na fanicha
  • Tunachuja tu mikondo mikubwa iliyobaki (angalia mtaro wa rangi kwenye picha)

Sasa tunaweza kutumia habari hii mpya kugundua vizuizi…

Hatua ya 9: Hatua Zifuatazo…

Hatua Zifuatazo…
Hatua Zifuatazo…
Hatua Zifuatazo…
Hatua Zifuatazo…

Sasa, tuna jukwaa rahisi la roboti na sensorer, watendaji na kamera. Lengo langu ni kusonga kwa uhuru na kurudi kituo bila kuongeza sensorer zaidi. Kwa hili nitahitaji hatua zifuatazo:

  • Mchanganyiko wa sensa ya miayo na ishara za kichwa cha sumaku
  • Usindikaji wa picha ya kamera (CPU ndogo tu inapatikana kwa hiyo)
  • Kugundua mgongano (umbali wa ultrasonic na kamera)
  • Ujenzi wa ramani au mwelekeo

Sasa nenda ukatengeneze changamoto au malengo yako mwenyewe…

Ilipendekeza: