Satura rādītājs:

AI LEGO EV3 labirinta braukšanas robotā: 13 soļi
AI LEGO EV3 labirinta braukšanas robotā: 13 soļi

Video: AI LEGO EV3 labirinta braukšanas robotā: 13 soļi

Video: AI LEGO EV3 labirinta braukšanas robotā: 13 soļi
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Jūlijs
Anonim
Image
Image
Kā tiek atrisināts labirints
Kā tiek atrisināts labirints

Šis ir vienkāršs, autonoms robots ar zināmu mākslīgo intelektu. Tas ir paredzēts, lai izpētītu labirintu un novietotu atpakaļ pie ieejas, lai izietu līdz izejai un izvairītos no strupceļiem. Tas ir daudz sarežģītāk nekā mans iepriekšējais projekts, kas vienkārši izbrauca cauri labirintam. Šeit robotam jāatceras nobrauktais ceļš, jānoņem strupceļi, jāsaglabā jaunais ceļš un pēc tam jāseko jaunajam ceļam.

Mans iepriekšējais robots ir aprakstīts šeit:

Robots ir būvēts, izmantojot LEGO Mindstorms EV3. Programmatūra EV3 darbojas datorā un ģenerē programmu, kas pēc tam tiek lejupielādēta mikrokontrollerī ar nosaukumu EV3 Brick. Programmēšanas metode ir balstīta uz ikonām un ir augsta līmeņa. Tas ir ļoti viegli un daudzpusīgi.

Piegādes

DAĻAS

  1. LEGO Mindstorms EV3 komplekts
  2. LEGO Mindstorms EV3 ultraskaņas sensors. Tas nav iekļauts EV3 komplektā.
  3. Gofrēts kartons labirintam. Pietiek ar divām kartona kastēm.
  4. Neliels plāna kartona gabals, kas palīdz stabilizēt dažus stūrus un sienas.
  5. Līme un lente kartona gabalu savienošanai.
  6. Sarkana apsveikuma kartītes aploksne, lai identificētu labirinta izeju.

RĪKI

  1. Komunālais nazis kartona griešanai.
  2. Tērauda lineāls, kas palīdz griešanas procesā.

PROGRAMMATŪRA

Programma ir šeit:

1. solis: kā labirints tiek atrisināts

MAZES BRAUKŠANAS METODE

Ir vairākas labirinta navigācijas metodes. Ja jūs interesē to izpēte, tie ir ļoti labi aprakstīti šajā Vikipēdijas rakstā:

Es izvēlējos kreisās sienas sekošanas metodi. Ideja ir tāda, ka robots ieturēs sienu kreisajā pusē, pieņemot šādus lēmumus, ejot cauri labirintam:

  1. Ja ir iespējams pagriezties pa kreisi, dariet to.
  2. Pretējā gadījumā dodieties taisni, ja iespējams.
  3. Ja tas nevar iet pa kreisi vai taisni, ja iespējams, pagriezieties pa labi.
  4. Ja nekas no iepriekš minētā nav iespējams, tam jābūt strupceļam. Pagriezieties.

Viena piesardzība ir tāda, ka metode var neizdoties, ja labirintā ir cilpa. Atkarībā no cilpas izvietojuma robots varētu turpināt ap un ap cilpu. Iespējamais risinājums šai problēmai būtu, ja robots pārietu uz labās puses sienas sekotāja noteikumu, ja tas saprastu, ka tas notiek cilpā. Es neiekļāvu šo precizējumu savā projektā.

MAZES RISINĀŠANA, lai atrastu tiešu ceļu

Braucot pa labirintu, robotam ir jāiegaumē ceļš, pa kuru tas iet, un jānovērš strupceļi. Tas tiek paveikts, katru pagriezienu un krustojumu saglabājot masīvā, pārbaudot, vai nav pagriezienu un krustojumu kombināciju, un aizstājot kombinācijas, kas ietver strupceļu. Pēdējais pagriezienu un krustojumu saraksts ir tiešais ceļš caur labirintu.

Iespējamie pagriezieni ir: pa kreisi, pa labi, atpakaļ (strupceļā) un taisni (tas ir krustojums).

Kombinācijas tiek aizstātas šādi:

  • "Pa kreisi, atpakaļ, pa kreisi" kļūst par "taisni".
  • "Pa kreisi, atpakaļ, pa labi" kļūst par "atpakaļ".
  • "Pa kreisi, atpakaļ, taisni" kļūst par "labo".
  • "Pa labi, atpakaļ, pa kreisi" kļūst par "atpakaļ".
  • "Taisni, aizmugurē, pa kreisi" kļūst par "labo".
  • "Taisni, atpakaļ, taisni" kļūst par "atpakaļ".

KĀ ROBOTS RĪKO MANU MAZI

  1. Kad robots sāk braukt, tas redz atstarpi pa labi un masīva sarakstā saglabā Straight.
  2. Tad tas pagriežas pa kreisi un pievieno sarakstam kreiso. Sarakstā tagad ir: Taisni, pa kreisi.
  3. Ar strupceļu tas pagriežas un pievieno sarakstam Atpakaļ. Sarakstā tagad ir: Taisni, pa kreisi, atpakaļ.
  4. Izejot no ieejas izmantotās joslas, tas pievieno sarakstam Straight. Sarakstā tagad ir: taisni, pa kreisi, mugura, taisni. Tas atpazīst kombināciju un maina pa kreisi, muguru, taisni pa labi. Sarakstā tagad ir Straight, Right.
  5. Ar strupceļu tas apgriežas un pievieno sarakstam Atpakaļ. Sarakstā tagad ir: Taisni, Pa labi, Atpakaļ.
  6. Pēc pagrieziena pa kreisi sarakstā ir Taisni, Pa labi, Atpakaļ, Pa kreisi. Tas atpazīst kombināciju un mainās pa labi, atpakaļ, no kreisās puses. Sarakstā tagad ir Straight, Back.
  7. Pēc nākamā pagrieziena pa kreisi sarakstā ir Taisni, Atpakaļ, Pa kreisi. Tas maina šo kombināciju uz labo pusi. Sarakstā tagad ir tikai tiesības.
  8. Tas atstāj atstarpi un pievieno sarakstam Straight. Sarakstā tagad ir tiesības, taisni.
  9. Pēc pagrieziena pa labi sarakstā ir pa labi, taisni, pa labi, kas ir tiešais ceļš.

2. darbība. Apsvērumi, programmējot robotu

APSVĒRUMI JEBKURAM MIKROKONTROLLERAM

Kad robots nolemj pagriezties, tam vai nu jāveic plats pagrieziens, vai arī pirms pagrieziena jāiet uz priekšu un pēc pagrieziena atkal jāiet uz priekšu, nepārbaudot sensoru. Pirmā nelielā attāluma iemesls ir tas, ka robotam pēc pagrieziena nevajadzētu ietriekties sienā, un otrās īsās distances iemesls ir tāds, ka pēc tam, kad robots ir pagriezies, sensors redzēs garo telpu, no kuras tas tikko bija nācis, un robotam šķiet, ka tam vajadzētu pagriezties vēlreiz, kas nav pareizi.

Kad robots uztver krustojumu labajā pusē, bet tas nav pagrieziens pa labi, es atklāju, ka ir labi, ja robots brauc uz priekšu apmēram 10 collas (25 cm), nepārbaudot tā sensorus.

LEGO MINDSTORMS EV3 ĪPAŠI APSVĒRUMI

Lai gan LEGO Mindstorms EV3 ir ļoti universāls, tas pieļauj vienu ķieģeli, kas ir savienots ne ar vienu no katra veida sensoriem. Divi vai vairāki ķieģeļi varētu būt sasaistīti ar ķēdi, bet es negribēju iegādāties citu ķieģeļu, un tāpēc es izmantoju šādus sensorus (trīs ultraskaņas sensoru vietā): infrasarkano sensoru, krāsu sensoru un ultraskaņas sensoru. Tas izdevās labi.

Bet krāsu sensoram ir ļoti īss diapazons - apmēram 2 collas (5 cm), kas noved pie dažiem īpašiem apsvērumiem, kā aprakstīts tālāk:

  1. Kad krāsu sensors nosaka sienu priekšā un robots nolemj pagriezties pa labi vai apgriezties, vispirms jāatkāpjas, lai dotu sev pietiekami daudz vietas, lai pagrieztos, nesasitoties ar sienu.
  2. Sarežģīta problēma rodas ar dažiem “taisniem” krustojumiem. Tā kā krāsu sensors ir nelielā diapazonā, robots nevar noteikt, vai tas uztver pareizu “taisnu” krustojumu vai novirzīšanos uz labo pagriezienu. Esmu mēģinājis novērst šo problēmu, iestatot programmu, lai sarakstā katru reizi, kad robots to uztver, tiktu saglabāta “taisna” un pēc tam sarakstā tiktu noņemta vairāk nekā viena “taisna”. Tas nosaka situāciju, kad labajā pagriezienā labirintā seko “taisns”, bet ne situācijā, kad pagrieziens pa labi notiek bez “taisna”. Es arī mēģināju iestatīt programmu, lai novērstu “taisni”, ja tā ir tieši pirms “labās”, bet tas nedarbojas, ja pagrieziens pa labi seko “taisnei”. Man nav izdevies atrast risinājumu, kas atbilstu visiem gadījumiem, tomēr es domāju, ka robotam būtu iespējams aplūkot nobraukto attālumu (nolasot motora rotācijas sensorus) un izlemt, vai tas ir “taisni” vai pa labi pagriezties. Es nedomāju, ka šo sarežģījumu ir vērts darīt, lai demonstrētu AI koncepciju šajā projektā.
  3. Krāsu sensora priekšrocība ir tā, ka tas nošķir sienas brūno un sarkano barjeru, ko izmantoju pie izejas, un nodrošina vienkāršu veidu, kā robots var izlemt, kad tas ir beidzis labirintu.

3. solis: galvenā programma

Galvenā programma
Galvenā programma

LEGO Mindstorms EV3 ir ļoti ērta programmēšanas metode, kas balstīta uz ikonām. Bloki tiek parādīti datora ekrāna apakšdaļā, un tos var vilkt un nomest programmēšanas logā, lai izveidotu programmu. EV3 Brick var savienot ar datoru, izmantojot USB kabeli, Wi-Fi vai Bluetooth, un pēc tam programmu var lejupielādēt no datora uz Brick.

Programma sastāv no galvenās programmas un vairākiem “Maniem blokiem”, kas ir apakšprogrammas. Augšupielādētajā failā ir visa programma, kas atrodas šeit:

Galvenās programmas darbības ir šādas:

  1. Definējiet un inicializējiet pagriezienu skaitīšanas mainīgo un masīvu.
  2. Pagaidiet 5 sekundes un sakiet “Aiziet”.
  3. Sāciet cilpu.
  4. Brauciet pa labirintu. Kad tiek sasniegta izeja, cilpa tiek izieta.
  5. Parādiet ķieģeļu ekrānā līdz šim labirintā atrastos krustojumus.
  6. Pārbaudiet, vai ceļš nav jāsaīsina.
  7. Parādiet krustojumus saīsinātajā ceļā.
  8. Atgriezieties pie 4. darbības.
  9. Pēc cilpas brauciet pa tiešo ceļu.

Ekrānuzņēmumā ir redzama šī galvenā programma.

4. darbība. Mani bloki (apakšprogrammas)

Mani bloki (apakšprogrammas)
Mani bloki (apakšprogrammas)

Tiek parādīts navigācijas bloks, kas kontrolē, kā robots brauc pa labirintu. Izdruka ir ļoti maza un var nebūt salasāma. Bet tas ir labs piemērs tam, cik daudzpusīgi un spēcīgi ir if-paziņojumi (LEGO EV3 sistēmā tos sauc par slēdžiem).

  1. Bultiņa Nr. 1 norāda uz slēdzi, kas pārbauda, vai infrasarkanais sensors redz objektu tālāk par noteiktu attālumu. Ja tā, tiek izpildīta augšējā bloku sērija. Ja nē, tad vadība tiek nodota lielajai, apakšējai bloku sērijai, kur atrodas bultiņa #2.
  2. 2. bultiņa norāda uz slēdzi, kas pārbauda, kādu krāsu redz krāsu sensors. Ir 3 gadījumi: augšpusē nav krāsas, vidū ir sarkana un apakšā ir brūna.
  3. Divas bultiņas #3 norāda uz slēdžiem, kas pārbauda, vai ultraskaņas sensors redz objektu tālāk par noteiktu attālumu. Ja tā, tiek izpildīta augšējā bloku sērija. Ja nē, tad vadība tiek nodota bloku apakšējai sērijai.

Mani bloki ceļa saīsināšanai un tiešā ceļa vadīšanai ir sarežģītāki un būtu pilnīgi nesalasāmi, tāpēc tie nav iekļauti šajā dokumentā.

5. solis: Sākt veidot robotu: bāzi

Sākot veidot robotu: bāzi
Sākot veidot robotu: bāzi
Sākot veidot robotu: bāzi
Sākot veidot robotu: bāzi

Kā minēts iepriekš, LEGO Mindstorms EV3 pieļauj vienu ķieģeli, kas ir savienots ne ar vienu no katra veida sensoriem. Es izmantoju šādus sensorus (trīs ultraskaņas sensoru vietā): infrasarkano sensoru, krāsu sensoru un ultraskaņas sensoru.

Tālāk esošie fotoattēlu pāri parāda, kā izveidot robotu. Katra pāra pirmajā fotoattēlā ir redzamas nepieciešamās detaļas, bet otrajā - tās pašas detaļas, kas savienotas kopā.

Pirmais solis ir izveidot robota pamatni, izmantojot parādītās daļas. Robota pamatne ir attēlota otrādi. Mazā L formas daļa robota aizmugurē ir atbalsts mugurai. Robotam kustoties, tas slīd. Tas darbojas labi. EV3 komplektā nav rullīšu tipa detaļas.

6. darbība: pamatnes augšdaļa, 1

Pamatnes augšdaļa, 1
Pamatnes augšdaļa, 1
Pamatnes augšdaļa, 1
Pamatnes augšdaļa, 1

Šis solis un nākamās 2 darbības ir paredzētas robota pamatnes augšdaļai, krāsu sensoram un kabeļiem, kas visi ir 10 collu (26 cm) kabeļi.

7. darbība: pamatnes augšdaļa, 2

Pamatnes augšdaļa, 2
Pamatnes augšdaļa, 2
Pamatnes augšdaļa, 2
Pamatnes augšdaļa, 2

8. darbība: pamatnes augšdaļa, 3

Pamatnes augšdaļa, 3
Pamatnes augšdaļa, 3
Pamatnes augšdaļa, 3
Pamatnes augšdaļa, 3

9. solis: infrasarkanie un ultraskaņas sensori

Infrasarkanie un ultraskaņas sensori
Infrasarkanie un ultraskaņas sensori
Infrasarkanie un ultraskaņas sensori
Infrasarkanie un ultraskaņas sensori

Tālāk ir infrasarkanais sensors (robota kreisajā pusē) un ultraskaņas sensors (labajā pusē). Arī 4 tapas ķieģeļu piestiprināšanai virsū.

Infrasarkanie un ultraskaņas sensori atrodas vertikāli, nevis normāli horizontāli. Tas nodrošina labāku sienu stūru vai galu noteikšanu.

10. solis: Kabeļi

Kabeļi
Kabeļi

Kabeļi tiek savienoti ar ķieģeļu šādi:

  • B ports: kreisais lielais motors.
  • C ports: labais lielais motors.
  • 2. ports: ultraskaņas sensors.
  • 3. ports: krāsu sensors.
  • Ports 4: infrasarkanais sensors.

11. solis: pēdējais robota veidošanas posms: dekorēšana

Pēdējais posms robota veidošanā: dekorēšana
Pēdējais posms robota veidošanā: dekorēšana
Pēdējais posms robota veidošanā: dekorēšana
Pēdējais posms robota veidošanā: dekorēšana

Spārni un spuras ir paredzēti tikai dekorēšanai.

12. solis: izveidojiet labirintu

Veidojiet labirintu
Veidojiet labirintu
Veidojiet labirintu
Veidojiet labirintu

Labirintam vajadzētu pietikt ar divām gofrēta kartona kastēm. Es izveidoju labirinta sienas 5 collu (12,5 cm) augstumā, bet 10 cm (4 collas) vajadzētu darboties tikpat labi, ja pietrūkst gofrētā kartona.

Vispirms es sagriezu kastītes sienas, 25 cm (10 collas) no apakšas. Tad es nogriezu ap sienām 5 collas no apakšas. Tas nodrošina vairākas 5 collu sienas. Turklāt es nogriezu kartona kārbu apakšdaļu, atstājot pie sienām apmēram 1 cm (2,5 cm), lai nodrošinātu stabilitāti.

Dažādos gabalus var sagriezt un pielīmēt vai pielīmēt, kur vien nepieciešams, lai veidotos labirints. Jebkurā ceļā ar strupceļu starp sānu sienām jābūt 11 vai 12 collu (30 cm) atstarpei. Garumam jābūt ne mazākam par 10 collām (25 cm). Šie attālumi ir nepieciešami, lai robots varētu apgriezties.

Daži labirinta stūri var būt jāpastiprina, kā arī dažas taisnas sienas ir jāsargā no saliekšanās, ja tajās ir iztaisnots kartona stūris. Šajās vietās apakšā jāpielīmē nelieli plāna kartona gabali, kā parādīts attēlā.

Izejai ir sarkana barjera, kas sastāv no pusi sarkanas apsveikuma kartītes aploksnes un pamatnes, kas izgatavota no 2 plānā kartona gabaliem, kā parādīts attēlā.

13. solis: labirints

Labirints
Labirints

Viena piesardzība ir tāda, ka labirints nedrīkst būt liels. Ja robota pagriezieni atrodas nelielā leņķī no pareizā, pēc dažiem pagriezieniem neatbilstības palielinās un robots var ieskrieties sienās. Man nācās vairākas reizes pīpēt ar pagriezienu rotācijas iestatījumiem, lai panāktu veiksmīgu braucienu pat manā mazajā labirintā.

Šīs problēmas risinājums ir iekļaut ceļu iztaisnošanas rutīnu, kas robotu noturētu noteiktā attālumā no kreisās sienas. Šo es neiekļāvu. Programma ir pietiekami sarežģīta, un tā ir pietiekama, lai demonstrētu AI koncepciju šajā projektā.

Nobeiguma piezīme

Šis bija jautrs projekts un lieliska mācīšanās pieredze. Ceru, ka arī jums tas šķitīs interesanti.

Ieteicams: