Satura rādītājs:

Rpibot - Par robotikas apguvi: 9 soļi
Rpibot - Par robotikas apguvi: 9 soļi

Video: Rpibot - Par robotikas apguvi: 9 soļi

Video: Rpibot - Par robotikas apguvi: 9 soļi
Video: SKOLOTĀJA LOMA PIRMSSKOLĀ. 2024, Jūlijs
Anonim
Rpibot - Par robotikas apguvi
Rpibot - Par robotikas apguvi

Esmu iegultās programmatūras inženieris Vācijas autobūves uzņēmumā. Es sāku šo projektu kā iegultās sistēmas mācību platformu. Projekts tika atcelts agri, bet man tas tik ļoti patika, ka turpināju brīvajā laikā. Šis ir rezultāts…

Man bija šādas prasības:

  • Vienkārša aparatūra (galvenā uzmanība tiek pievērsta programmatūrai)
  • Lēta aparatūra (apmēram 100 €)
  • Paplašināms (dažas opcijas jau ir iekļautas aprakstā)
  • Barošanas spriegums visām sastāvdaļām no viena 5 V avota (powerbank)

Īsti nebija mērķa, izņemot mācīšanos. Platformu var izmantot mācībām, uzraudzībai, robotu konkursiem,…

Tā nav apmācība iesācējiem. Jums ir nepieciešamas pamatzināšanas par:

  • Programmēšana (Python)
  • Pamata elektronika (lai savienotu moduļus kopā ar pareizo spriegumu)
  • Pamata kontroles teorija (PID)

Visbeidzot, jūs, iespējams, saskarsities ar problēmām kā es. Ar nelielu zinātkāri un izturību jūs iesiet projektam un atrisināsit izaicinājumus. Mans kods ir pēc iespējas vienkāršāks, un kritiskās koda rindiņas tiek komentētas, lai sniegtu padomus.

Pilns avota kods un faili ir pieejami šeit:

Piegādes:

Mehānika

  • 1x saplākšņa dēlis (A4 izmērs, 4 mm biezs)
  • 3x M4 x 80 Skrūve un uzgrieznis
  • 2x pārnesumu motori ar sekundāro izejas vārpstu kodētājam. Riteņi.
  • 1x brīvs ritenis

1x panoramēšanas un noliekšanas kameras stiprinājums (pēc izvēles)

Elektronika

  • 1x Raspberry Pi Zero ar galveni un kameru
  • 1x PCA 9685 servo vadība
  • 2x optiskā kodētāja ritenis un ķēde
  • 1x sieviešu vadi
  • 1x USB barošanas bloks
  • 1x DRV8833 divu motoru draiveris
  • 2x Mikroservi SG90 kameras panoramēšanai un noliekšanai (pēc izvēles)
  • 1x MPU9250 IMU (pēc izvēles)
  • 1x HC-SR04 ultraskaņas attāluma sensors (pēc izvēles)
  • 1x perforēta tāfele un lodēšanas stieple, galvenes,…

1. darbība: izveidojiet šasiju

Izveidojiet šasiju
Izveidojiet šasiju
Izveidojiet šasiju
Izveidojiet šasiju
Izveidojiet šasiju
Izveidojiet šasiju

Es neesmu labs mehāniķa dizainers. Arī projekta mērķis nav pavadīt pārāk daudz laika šasijā. Jebkurā gadījumā es definēju šādas prasības:

  • Lēti materiāli
  • Ātra montāža un demontāža
  • Paplašināms (piemēram, vieta papildu sensoriem)
  • Viegli materiāli, lai taupītu enerģiju elektronikai

Vienkāršu un lētu šasiju var izgatavot no saplākšņa. To ir viegli apstrādāt ar frēzi un rokas urbi. Jūs varat pielīmēt mazas koka detaļas, lai izveidotu turētājus sensoriem un motoriem.

Padomājiet par defektu komponentu nomaiņu vai elektrisko atkļūdošanu. Galvenās detaļas jānostiprina ar skrūvēm, lai tās varētu nomainīt. Karstas līmes pistole var būt vienkārša, bet, iespējams, ne labākais veids, kā izveidot šasiju … Man vajadzēja daudz laika, lai pārdomātu vieglu koncepciju, kā viegli izjaukt detaļas. 3D drukāšana ir laba alternatīva, taču tā var būt diezgan dārga vai laikietilpīga.

Brīvais ritenis beidzot ir ļoti viegls un viegli uzstādāms. Visas alternatīvas bija smagas vai berzes pilnas (es izmēģināju pāris no tām, pirms atradu galīgo). Pēc galveno riteņu uzstādīšanas man bija jāizgriež tikai koka starplikas, lai izlīdzinātu riteni bez astes.

Riteņa īpašības (programmatūras aprēķiniem)

Apkārtmērs: 21, 5 cm Impulsi: 20 impulsi/apgriezieni. Izšķirtspēja: 1, 075 cm (beidzot 1 impulss ir aptuveni 1 cm, kas ir viegli programmatūras aprēķiniem)

2. darbība: elektronika un elektroinstalācija

Elektronika un elektroinstalācija
Elektronika un elektroinstalācija
Elektronika un elektroinstalācija
Elektronika un elektroinstalācija
Elektronika un elektroinstalācija
Elektronika un elektroinstalācija

Projektā tiek izmantoti dažādi moduļi, kā parādīts diagrammā.

Raspberry Pi Zero ir galvenais kontrolieris. Tā nolasa sensorus un kontrolē motorus ar PWM signālu. Tas ir savienots ar attālo datoru, izmantojot wifi.

DRV8833 ir divu motoru H tilts. Tas nodrošina pietiekamu strāvu motoriem (ko Raspberry Pi nevar darīt, jo izejas var piegādāt tikai dažus mA).

Optiskais kodētājs nodrošina kvadrātveida signālu katru reizi, kad gaisma iet caur kodētāja riteņiem. Mēs izmantosim Raspberry Pi HW pārtraukumus, lai iegūtu informāciju katru reizi, kad signāls tiek pārslēgts.

Pca9695 ir servo vadības panelis. Tas sazinās ar I2C sērijas kopni. Šī plāksne nodrošina PWM signālus un barošanas spriegumu, kas kontrolē servo paneli un izciļņa slīpumu.

MPU9265 ir 3 asu paātrinājums, 3 asu leņķa rotācijas ātrums un 3 asu magnētiskās plūsmas sensors. Mēs to galvenokārt izmantosim, lai iegūtu kompasa virsrakstu.

Visi dažādie moduļi ir savienoti kopā ar džemperi. Maizes dēlis darbojas kā dispečers un nodrošina barošanas spriegumu (5V un 3.3V) un pamatojumu. Visi savienojumi ir aprakstīti savienojumu tabulā (sk. Pielikumu). Savienojot 5V ar 3.3V ieeju, iespējams, tiks iznīcināta jūsu mikroshēma. Esiet piesardzīgs un pirms piegādes divreiz pārbaudiet visu vadu (šeit īpaši jāņem vērā kodētājs). Pirms visu dēļu pievienošanas jums vajadzētu izmērīt galvenos barošanas spriegumus nosūtīšanas panelī ar multimetru. Moduļi tika nostiprināti ar neilona skrūvēm šasijā. Arī šeit es priecājos, ka tie ir laboti, bet arī noņemami darbības traucējumu gadījumā.

Vienīgais lodējums beidzot bija motori un maizes dēlis un galvenes. Godīgi sakot, man patīk džemperu vadi, bet tie var novest pie vaļīga savienojuma. Dažās situācijās daži programmatūras novērojumi var palīdzēt jums analizēt savienojumus.

3. darbība: programmatūras infrastruktūra

Programmatūras infrastruktūra
Programmatūras infrastruktūra
Programmatūras infrastruktūra
Programmatūras infrastruktūra

Pēc mehānikas sasniegšanas mēs izveidosim programmatūras infrastruktūru, lai būtu ērti attīstības apstākļi.

Git

Šī ir bezmaksas un atvērtā pirmkoda versiju kontroles sistēma. To izmanto, lai pārvaldītu lielus projektus kā Linux, bet to var viegli izmantot arī maziem projektiem (sk. Github un Bitbucket).

Projekta izmaiņas var izsekot lokāli, kā arī nosūtīt uz attālo serveri, lai koplietotu programmatūru ar sabiedrību.

Galvenās izmantotās komandas ir:

git klons https://github.com/makerobotics/RPIbot.git [Iegūt avota kodu un git konfigurāciju]

git pull izcelsmes meistars [iegūstiet jaunāko no attālās krātuves]

git status [iegūt vietējās repozitorijas statusu. Vai ir mainīti kādi faili?] Git log [iegūt saistību sarakstu] git add. [pievienojiet visus mainītos failus stadijai, kas jāņem vērā nākamajai apņemšanās reizei] git įsipareigot -m "komentārs par izpildi" [veikt izmaiņas vietējā repozitorijā] git push izcelsmes meistars [visas saistības pārvietot uz attālo repozitoriju]

Mežizstrāde

Python nodrošina dažas iebūvētas reģistrēšanas funkcijas. Pirms tālākas izstrādes uzsākšanas programmatūras struktūrai ir jānosaka visa reģistrēšanas sistēma.

Reģistrētāju var konfigurēt, lai terminālī vai žurnāla failā reģistrētos ar noteiktu formātu. Mūsu piemērā reģistrētāju ir konfigurējusi tīmekļa serveru klase, bet mēs to varētu izdarīt arī paši. Šeit mēs reģistrēšanas līmeni iestatījām tikai uz DEBUG:

logger = logging.getLogger (_ vārds_)

logger.setLevel (logging. DEBUG)

Mērīšana un zīmēšana

Lai analizētu signālus laika gaitā, vislabāk ir tos attēlot diagrammā. Tā kā Raspberry Pi ir tikai konsoles terminālis, mēs izsekosim datus semikolu atdalītā csv failā un uzzīmēsim tos no attālā datora.

Ar semikolu atdalīto izsekošanas failu ģenerē mūsu galvenais python kods, un tam jābūt ar šādām galvenēm:

timestamp; yawCorr; encoderR; I_L; odoDistance; ax; encoderL; I_R; yaw; eSpeedR; eSpeedL; pwmL; speedL; CycleTimeControl; wz; pwmR; speedR; Iyaw; hdg; m_y; m_x; eYaw; cycleT

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;

Pirmajā slejā ir laika zīmogs. Šīs kolonnas ir bezmaksas. Zīmēšanas skripts tiek izsaukts ar grafikā redzamo kolonnu sarakstu:

attālais@dators: ~/python rpibot_plotter -f trace.csv -p speedL, speedR, pwmL, pwmR

Sižeta skripts ir pieejams rīku mapē:

Ploteris Python izmanto mathplotlib. Jums tas jākopē datorā.

Lai iegūtu lielāku komfortu, python skriptu izsauc bash skripts (plot.sh), kas tiek izmantots, lai kopētu Raspberry Pi izsekošanas failu uz attālo datoru un izsauktu ploteri ar signāla izvēli. Jautā bash skripts "plot.sh" ja fails ir jākopē. Tas man bija ērtāk, nevis manuāli kopēt katru reizi. "sshpass" tiek izmantots, lai kopētu failu no Raspberry Pi uz attālo datoru, izmantojot scp. Tas spēj kopēt failu, neprasot paroli (tas tiek nodots kā parametrs).

Visbeidzot tiek atvērts logs ar grafiku, kā parādīts attēlā.

Attālā komunikācija

Raspberry Pi izstrādes saskarne ir SSH. Failus var rediģēt tieši mērķī vai kopēt ar scp.

Lai kontrolētu robotu, Pi darbojas tīmekļa serveris, kas nodrošina kontroli, izmantojot Websockets. Šī saskarne ir aprakstīta nākamajā darbībā.

Iestatiet Raspberry Pi

Avota koda mapē (setup_rpi.txt) ir fails, kas apraksta Raspberry Pi iestatīšanu. Nav daudz skaidrojumu, bet daudz noderīgu komandu un saišu.

4. darbība: lietotāja interfeiss

Lietotāja saskarne
Lietotāja saskarne

Lietotāja interfeisa mitināšanai mēs izmantojam vieglo Tornado tīmekļa serveri. Tas ir Python modulis, kuru mēs saucam, kad sākam robota vadības programmatūru.

Programmatūras arhitektūra

Lietotāja saskarne ir veidota, izmantojot šādus failus: gui.html [Tīmekļa lapas vadīklu un izkārtojuma apraksts] gui.js [Satur JavaScript kodu, lai apstrādātu vadīklas un atvērtu tīmekļa ligzdas savienojumu ar mūsu robotu] gui.css [Satur html vadīklas. Vadības ierīču pozīcijas ir definētas šeit]

Tīmekļa ligzdas komunikācija

Lietotāja saskarne nav pati stilīgākā, taču tā dara savu darbu. Šeit es koncentrējos uz tehnoloģijām, kas man bija jaunas, piemēram, Websockets.

Tīmekļa vietne sazinās ar robota tīmekļa serveri, izmantojot Websockets. Šis ir divvirzienu saziņas kanāls, kas paliks atvērts, tiklīdz tika izveidots savienojums. Mēs nosūtām robota komandas, izmantojot Websocket, uz Raspberry Pi un iegūstam informāciju (ātrumu, atrašanās vietu, kameras straumi), lai to atkal parādītu.

Interfeisa izkārtojums

Lietotāja saskarnē ir manuāla komandu ievade. Tas tika izmantots sākumā, lai nosūtītu komandas robotam. Kastīte ieslēdz un izslēdz kameras straumi. Abi slīdņi kontrolē kameras panorāmu un slīpumu. Lietotāja saskarnes augšējā labajā daļā tiek kontrolēta robotu kustība. Jūs varat kontrolēt ātrumu un mērķa attālumu. Telemetrijas pamatinformācija tiek parādīta robota zīmējumā.

5. darbība: robota platformas programmēšana

Robota platformas programmēšana
Robota platformas programmēšana
Robota platformas programmēšana
Robota platformas programmēšana
Robota platformas programmēšana
Robota platformas programmēšana

Šī daļa bija projekta galvenais mērķis. Es pārveidoju daudz programmatūras, iepazīstinot ar jauno šasiju ar līdzstrāvas motoriem. Es izmantoju Python kā programmēšanas valodu dažādu iemeslu dēļ:

  • Tā ir Raspberry Pi galvenā valoda
  • Tā ir augsta līmeņa valoda ar daudzām iebūvētām funkcijām un paplašinājumiem
  • Tas ir orientēts uz objektu, bet to var izmantot arī secīgai programmēšanai
  • Nav nepieciešama kompilācija vai rīku ķēde. Rediģējiet kodu un palaidiet to.

Galvenā programmatūras arhitektūra

Programmatūra ir orientēta uz objektiem, sadalīta dažos objektos. Mana ideja bija sadalīt kodu 3 funkcionālos blokos:

Sense Think Actuate

Sense.py

Galvenā sensora iegūšana un apstrāde. Dati tiek glabāti vārdnīcā, lai tos izmantotu nākamajā posmā.

Control.py

Darbības apakšklase kontrolē motorus un servos pēc zināmas abstrakcijas. Galvenais vadības objekts apstrādā augsta līmeņa komandas un arī motora vadības algoritmus (PID).

rpibot.py

Šis galvenais objekts ir Tornado tīmekļa servera pārvaldība un sajūtu un kontroles klašu izveidošana atsevišķos pavedienos.

Katru moduli var darbināt atsevišķi vai kā daļu no visa projekta. Jūs varat tikai uztvert un izdrukāt sensora informāciju, lai pārbaudītu, vai sensori ir pareizi pievienoti un sniedz pareizo informāciju.

PID kontrole

Pirmais uzdevums ir noskaidrot, ko mēs vēlamies kontrolēt. Sākumā mēģināju kontrolēt pozīciju, kas bija ļoti sarežģīta un neko daudz nepalīdzēja.

Visbeidzot, mēs vēlamies kontrolēt katru riteņa ātrumu un arī robota virzienu. Lai to izdarītu, mums ir jāsaskaņo divas vadības loģikas.

Lai pakāpeniski palielinātu sarežģītību, robots jākontrolē:

atvērta cilpa (ar pastāvīgu jaudu)

pwm = K.

pēc tam pievienojiet slēgtās cilpas algoritmu

pwm = Kp.speedError+Ki. Integrācija (speedError)

un visbeidzot kā pēdējo soli pievienojiet virziena vadību.

Ātruma kontrolei es izmantoju "PI" vadību un "P" tikai griešanai. Es manuāli iestatīju parametrus, eksperimentējot. Šeit, iespējams, varētu izmantot daudz labākus parametrus. Mans mērķis bija tikai taisna līnija, un es to gandrīz saņēmu. Es programmatūrā izveidoju saskarni, lai pēc lietotāja interfeisa ierakstītu dažus mainīgos. Lai iestatītu parametru Kp uz 1.0, lietotāja saskarnē ir nepieciešama šāda komanda:

SET; Kp; 1.0

Es varētu iestatīt P parametru pietiekami zemu, lai izvairītos no pārsniegšanas. Atlikušo kļūdu labo ar parametru I (integrēta kļūda)

Man bija grūti uzzināt, kā kaskādēt abas vadības ierīces. Risinājums ir vienkāršs, bet es izmēģināju daudzus citus veidus … Tātad, visbeidzot, es mainīju riteņu ātruma mērķi, lai pagrieztos vienā vai otrā virzienā. Tieša ātruma kontroles izejas maiņa bija kļūda, jo ātruma kontrole mēģināja novērst šo traucējumu.

Izmantotā kontroles shēma ir pievienota. Tas parāda tikai robota vadības kreiso pusi.

6. darbība: sensora kalibrēšana

Sensora kalibrēšana
Sensora kalibrēšana
Sensora kalibrēšana
Sensora kalibrēšana
Sensora kalibrēšana
Sensora kalibrēšana

Pirmā lieta, kas jāņem vērā, ir tā, ka visai IMU ir jādarbojas pareizi. Es pasūtīju 3 daļas un nosūtīju tās atpakaļ, līdz man bija pilns darba sensors. Katram iepriekšējam sensoram dažas sensora daļas nedarbojās pareizi vai nedarbojās vispār. Es izmantoju dažus skriptu paraugus, lai pārbaudītu pamatus, pirms to uzstādīju robotā.

Pirms lietošanas IMU sensora signāli ir jākalibrē. Daži sensoru signāli ir atkarīgi no montāžas leņķa un stāvokļa.

Paātrinājuma un rotācijas ātruma kalibrēšana

Vienkāršākais kalibrēšana ir gareniskais paātrinājums (A_x). Stāvvietā jābūt aptuveni 0 m/s². Pareizi pagriežot sensoru, varat izmērīt gravitāciju (aptuveni 9,8 m/s²). Lai kalibrētu a_x, jums tas vienkārši ir pareizi jāuzstāda un pēc tam jādefinē nobīde, lai apstāšanās laikā iegūtu 0 m/s². Tagad A_x ir kalibrēts. Jūs varat iegūt rotācijas ātruma nobīdes līdzīgā veidā apstājoties.

Magnetometra kalibrēšana kompasam

Magnētiskā lauka sensoriem ir nepieciešama sarežģītāka kalibrēšana. Mēs izmantosim m_x un m_y, lai iegūtu magnētisko lauku horizontālā līmenī. Ja m_x un m_y būs, mēs varēsim aprēķināt kompasa virzienu.

Vienkāršā nolūkā mēs kalibrēsim tikai cietā dzelzs novirzi. Tas jādara, jo sensors atrodas galīgajā stāvoklī, jo tas ir atkarīgs no magnētiskā lauka traucējumiem.

Mēs ierakstām m_x un m_y, kamēr pagriežam robotu ap z asi. Mēs attēlojam m_x vs m_y XY diagrammā. Rezultāts elipsē, kā parādīts attēlā. Elipsei jābūt centrētai uz izcelsmi. Šeit mēs apsveram m_x un m_y maksimālās un minimālās vērtības, lai iegūtu nobīdes abos virzienos. Visbeidzot, mēs pārbaudām kalibrēšanu un redzam, ka elipse tagad ir centrēta.

Mīkstā dzelzs kalibrēšana nozīmētu, ka mēs mainām attēlu no elipses uz apli. To var izdarīt, katrai sensora vērtībai pievienojot koeficientu.

Pārbaudes rutīnu tagad var kodēt, lai atkārtoti kalibrētu vai vismaz pārbaudītu, vai sensori joprojām ir kalibrēti.

Kompasa virsraksts

Magnetometra dati tagad tiks izmantoti, lai aprēķinātu kompasa virzienu. Šim nolūkam m_x un m_y signāli ir jāpārvērš leņķī. Python tieši nodrošina math.atan2 funkciju, kurai ir šis mērķis. Pilns aprēķins ir definēts failā mpu9250_i2c.py ("calcHeading (mx, my, mz)").

7. solis: alternatīvi modeļi

Alternatīvi modeļi
Alternatīvi modeļi
Alternatīvi modeļi
Alternatīvi modeļi
Alternatīvi modeļi
Alternatīvi modeļi

Projekts aizņēma daudz laika, jo dizains bija pilnīgi atvērts. Katram komponentam es izveidoju prototipu un izjutu sistēmas robežas.

Sarežģītākā tēma bija riteņu kodētājs. Pirms pašlaik izmantotā optiskā kodētāja atrašanas es pārbaudīju 3 dažādas iespējas. Es domāju, ka arī pārtrauktie risinājumi šādā projektā ir ļoti interesanti. Tas attiecas uz daļām, kurās es visvairāk uzzināju.

Nepārtrauktas rotācijas servo savienots ar pca 9695

Lai izvairītos no papildu H tilta līdzstrāvas motoram, vispirms sāku ar nepārtrauktas rotācijas servos. Tos vadīja jau esošais pca 9695 servo vadītājs. Visa vilces mehānika un atbilstošā elektronika bija daudz vienkāršāka. Šim dizainam bija divi trūkumi:

  • Sliktais servo vadības diapazons.
  • Trūkst kodētāja turēšanas vietas

Servos sāk kustēties ar 50% pwm, un to pilnais ātrums ir aptuveni 55%. Tas ir ļoti slikts vadības diapazons.

Bez kodētāja turēšanas bija ļoti grūti atrast gatavu kodētāju. Es pārbaudīju 3 dažādus atstarošanas kodētājus, kas tika uzstādīti uz šasijas. Riteņa ārpusei ar melnbaltām sekcijām uzlīmēju pašgatavotu kodētāja riteni. Es izmantoju QTR-1RC sensorus, kuriem nepieciešama liela signāla apstrāde, lai iegūtu pareizo signālu. Raspberry Pi nespēja veikt šāda veida reālā laika apstrādi. Tāpēc es nolēmu robotam pievienot reāllaika kontrolieri NodeMCU D1 mini. Sērijas UART to savienoja ar aveņu Pi, lai piegādātu apstrādātos sensora datus. NodeMCU pārvaldīja arī sensoru HC-SR04. Mehānika bija sarežģīta un nebija ļoti stabila, sērijveida līnija sāka trokšņot no I2C līnijas un motoriem, tāpēc beidzot es izveidoju otro šasijas versiju ar vienkāršiem pārnesumu līdzstrāvas motoriem, ko darbināja H tilts. Šiem motoriem ir sekundārā izejas vārpsta optiskā kodētāja ievietošanai.

8. darbība: attēlu apstrāde

Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde
Attēlu apstrāde

Lai uzlabotu autonomo braukšanu, mēs varam veikt attēlu apstrādi.

Opencv bibliotēka tam ir atsauce. Python to var izmantot, lai ātri ieviestu šķēršļu noteikšanu.

Mēs uzņemam attēlu un piemērojam dažus attēlu apstrādes uzdevumus:

Pirmie testi tika veikti ar Canny un Sobel transformācijām. Kanijs var būt labs kandidāts, bet nav pietiekami saprātīgs. Sobels ir pārāk saprātīgs (atklāts pārāk daudz objektu).

Visbeidzot es izveidoju savu filtru, lai sajauktu visus horizontālos un vertikālos gradientus (noteiktu mēbeles):

  • Pārveidojiet krāsaino attēlu uz pelēka līmeņa attēlu
  • Izplūdiniet attēlu, lai novērstu nelielu troksni
  • Novērsiet attēla slieksni līdz melnbaltam attēlam
  • Tagad mēs atklājam horizontālos un vertikālos slīpumus, lai noteiktu objektus kā sienas un mēbeles
  • Mēs filtrējam tikai lielās atlikušās kontūras (skatiet krāsainās kontūras attēlā)

Tagad mēs varam izmantot šo jauno informāciju, lai atklātu šķēršļus …

9. darbība. Nākamās darbības…

Nākamie soļi…
Nākamie soļi…
Nākamie soļi…
Nākamie soļi…

Tagad mums ir vienkārša robotu platforma ar sensoriem, izpildmehānismiem un kameru. Mans mērķis ir pārvietoties autonomi un atgriezties stacijā, nepievienojot papildu sensorus. Šim nolūkam man būs jāveic šādas darbības:

  • Pagrieziena un magnētiskā virziena signālu saplūšana ar sensoru
  • Kameras attēlu apstrāde (šim nolūkam pieejams tikai zems CPU)
  • Sadursmes noteikšana (ultraskaņas attālums un kamera)
  • Kartes veidošana vai orientācija

Tagad ejiet un izveidojiet savus izaicinājumus vai mērķus …

Ieteicams: