Taula de continguts:

IA al robot LEGO EV3 Maze-Driving: 13 passos
IA al robot LEGO EV3 Maze-Driving: 13 passos

Vídeo: IA al robot LEGO EV3 Maze-Driving: 13 passos

Vídeo: IA al robot LEGO EV3 Maze-Driving: 13 passos
Vídeo: Make your First Lego Mindstorms EV3 Robot - GenBot 2024, Desembre
Anonim
Image
Image
Com es resol un laberint
Com es resol un laberint

Es tracta d’un robot senzill i autònom amb certa intel·ligència artificial. Està dissenyat per explorar un laberint i, quan es torna a col·locar a l'entrada, per conduir fins a la sortida i evitar els carrerons sense sortida. És molt més complicat que el meu projecte anterior, que simplement va conduir pel laberint. Aquí, el robot ha de recordar el camí que ha recorregut, eliminar els punts morts, emmagatzemar el nou camí i després seguir el nou camí.

El meu robot anterior es descriu aquí:

El robot està construït amb LEGO Mindstorms EV3. El programari EV3 s’executa en un ordinador i genera un programa, que després es descarrega a un microcontrolador anomenat EV3 Brick. El mètode de programació es basa en icones i és d’alt nivell. És molt fàcil i versàtil.

Subministraments

PARTS

  1. Conjunt LEGO Mindstorms EV3
  2. Sensor d'ultrasons LEGO Mindstorms EV3. No està inclòs al conjunt EV3.
  3. Cartró ondulat per al laberint. Dos cartrons haurien de ser suficients.
  4. Un petit tros de cartró prim per ajudar a estabilitzar algunes cantonades i parets.
  5. Cola i cinta adhesiva per connectar peces de cartró.
  6. Un sobre vermell de targeta de felicitació per identificar la sortida del laberint.

EINES

  1. Ganivet utilitari per tallar el cartró.
  2. Regla d’acer per ajudar al procés de tall.

PROGRAMARI

El programa és aquí:

Pas 1: Com es resol un laberint

MÈTODE DE CONDUCCIÓ DE MASOS

Hi ha diversos mètodes per navegar per un laberint. Si esteu interessats en estudiar-los, es descriuen molt bé al següent article de Viquipèdia:

Vaig triar el mètode de seguiment de la paret de l’esquerra. La idea és que el robot mantingui una paret al costat esquerre prenent les decisions següents a mesura que passa pel laberint:

  1. Si és possible girar a l’esquerra, feu-ho.
  2. En cas contrari, aneu recte si és possible.
  3. Si no pot anar cap a l’esquerra o recte, gireu a la dreta, si és possible.
  4. Si cap de les anteriors no és possible, ha de ser un carreró sense sortida. Dóna la volta.

Una precaució és que el mètode podria fallar si el laberint té un bucle. Depenent de la ubicació del bucle, el robot podria continuar donant voltes i voltes al bucle. Una possible solució per a aquest problema seria que el robot canviés a la regla de seguidor de paret de la dreta si s’adonés que anava en bucle. No vaig incloure aquest refinament al meu projecte.

SOLUCIONANT EL LABERAT PER TROBAR UN CAMÍ DIRECTE

Mentre condueix pel laberint, el robot ha de memoritzar el camí que recorre i eliminar els carrerons sense sortida. Per aconseguir-ho, emmagatzema cada volta i intersecció en una matriu, comprova si hi ha combinacions específiques de girs i interseccions a mesura que passa i substitueix les combinacions que inclouen un carreró sense sortida. La llista final de girs i interseccions és el camí directe pel laberint.

Els girs possibles són: esquerra, dreta, esquena (en un carreró sense sortida) i recte (que és una intersecció).

Les combinacions se substitueixen de la següent manera:

  • "Esquerra, Darrere, Esquerra" es converteix en "Recte".
  • "Esquerra, Enrere, Dreta" es converteix en "Enrere".
  • "Esquerra, esquena, recte" es converteix en "dreta".
  • "Right, Back, Left" es converteix en "Enrere".
  • "Recte, darrere, esquerre" es converteix en "Dret".
  • "Recte, enrere, recte" es converteix en "enrere".

COM MANEJA EL ROBOT EL MEU LABERAT

  1. Quan el robot comença a conduir, veu un espai a la dreta i emmagatzema Recta a la llista de la matriu.
  2. Després gira a l'esquerra i afegeix Esquerra a la llista. Ara la llista conté: Recta, Esquerra.
  3. Amb un carreró sense sortida, gira i torna a afegir a la llista. La llista conté ara: Recta, Esquerra, Darrere.
  4. Passant el carril que feia servir des de l'entrada, afegeix Recta a la llista. Ara la llista conté: Recta, Esquerra, Darrere, Recta. Reconeix una combinació i canvia Esquerra, Darrere, Recte a Dret. Ara la llista conté Straight, Right.
  5. Amb un carreró sense sortida, gira i afegeix Tornar a la llista. Ara la llista conté: Recte, Dret, Darrere.
  6. Després del gir a l'esquerra, la llista conté Recta, Dreta, Darrere, Esquerra. Reconeix una combinació i canvia a la dreta, enrere, esquerra a esquena. Ara la llista conté Straight, Back.
  7. Després del següent gir a l'esquerra, la llista conté Straight, Back, Left. Canvia aquesta combinació a Dret. Ara la llista només conté Dret.
  8. Passa un espai i afegeix Directe a la llista. Ara la llista conté Right, Straight.
  9. Després del gir a la dreta, la llista conté Dreta, Recta, Dreta que és el camí directe.

Pas 2: consideracions a l'hora de programar el robot

CONSIDERACIONS PER A QUALSEVOL MICROCONTROLADOR

Quan el robot decideixi girar-lo, hauria de fer un gir ampli o avançar una curta distància abans de girar i, després de girar, tornar a avançar una curta distància sense comprovar el sensor. La raó de la primera distància curta és que el robot no hauria de topar amb la paret després del gir, i la raó de la segona distància curta és que, després que el robot hagi girat, el sensor veuria el llarg espai del qual acabava de venir, i el robot pensaria que hauria de tornar a girar, cosa que no és el correcte.

Quan el robot detecta una intersecció a la dreta, però no és un gir a la dreta, he trobat que és bo que el robot condueixi cap endavant uns 25 centímetres sense comprovar-ne els sensors.

CONSIDERACIONS ESPECÍFIQUES A LEGO MINDSTORMS EV3

Tot i que LEGO Mindstorms EV3 és molt versàtil, no permet més d’un de cada tipus de sensor connectat a un maó. Es podrien encadenar dos o més Bricks, però no volia comprar un altre Brick i, per tant, vaig utilitzar els següents sensors (en lloc de tres sensors d'ultrasons): sensor d'infrarojos, sensor de color i sensor d'ultrasons. Això va funcionar bé.

Però el sensor de color té un abast molt curt, d’aproximadament 5 cm (2 polzades), cosa que comporta algunes consideracions especials, tal com es descriu a continuació:

  1. Quan el sensor de color detecta una paret al davant i el robot decideix girar a la dreta o girar-se, hauria de fer una còpia de seguretat primer, per tal de deixar-se prou espai per girar-se sense xocar contra la paret.
  2. Es produeix un problema complicat amb algunes interseccions "rectes". A causa de l’abast curt del sensor de color, el robot no pot determinar si detecta una intersecció “recta” adequada o el camí previ a un gir a la dreta. He intentat solucionar aquest problema configurant el programa per emmagatzemar un "Recte" a la llista cada vegada que el robot en detecta un i, a continuació, elimino més d'un "Recte" seguit de la llista. Això soluciona la situació en què un gir a la dreta segueix un "recte" al laberint, però no la situació en què hi ha un gir a la dreta sense un "recte" abans. També he intentat configurar el programa per eliminar un "Recte" si és just abans d'un "Dret", però això no funciona si un gir a la dreta segueix un "Recte". No he estat capaç de trobar una solució que s’adapti a tots els casos, tot i que suposo que seria possible que el robot observés la distància recorreguda (llegint els sensors de rotació del motor) i decidís si es tracta d’un “Recte” o bé un dret girar. No crec que valgui la pena fer aquesta complicació per demostrar el concepte d’IA en aquest projecte.
  3. L’avantatge del sensor de color és que distingeix entre el marró d’una paret i el vermell de la barrera que he utilitzat a la sortida i proporciona una manera senzilla de decidir el robot quan ha acabat el laberint.

Pas 3: el programa principal

El programa principal
El programa principal

LEGO Mindstorms EV3 té un mètode de programació basat en icones molt convenient. Els blocs es mostren a la part inferior de la pantalla de l’ordinador i es poden arrossegar i deixar anar a la finestra de programació per crear un programa. El EV3 Brick es pot connectar a l'ordinador mitjançant un cable USB, Wi-Fi o Bluetooth i, a continuació, es pot descarregar el programa des de l'ordinador al Brick.

El programa consta d’un programa principal i de diversos “Els meus blocs” que són subrutines. El fitxer penjat conté tot el programa, que es troba aquí:

Els passos del programa principal són els següents:

  1. Definiu i inicialitzeu la variable de recompte de torns i la matriu.
  2. Espereu 5 segons i digueu "Vés".
  3. Inicieu un bucle.
  4. Condueix pel laberint. Quan s’arriba a la sortida, s’abandona el bucle.
  5. Mostra a la pantalla de Brick les interseccions que hi havia fins ara al laberint.
  6. Comproveu si s’ha d’escurçar el camí.
  7. Mostra les interseccions al camí reduït.
  8. Torneu al bucle 4.
  9. Després del bucle, conduïu el camí directe.

La captura de pantalla mostra aquest programa principal.

Pas 4: Els meus blocs (subrutines)

Els meus blocs (subrutines)
Els meus blocs (subrutines)

Es mostra la icona Navega pel meu bloc, que controla com el robot circula pel laberint. La impressió és molt petita i pot no ser llegible. Però és un bon exemple de com de versàtils i potents són les declaracions if (anomenades Switches del sistema LEGO EV3).

  1. La fletxa núm. 1 apunta a un commutador que comprova si el sensor d'infrarojos veu un objecte a més d'una distància específica. Si és així, s'executa la sèrie superior de blocs. Si no, el control es passa a la gran sèrie inferior de blocs, on es troba la fletxa núm. 2.
  2. La fletxa núm. 2 apunta a un commutador que comprova quin color veu el sensor de color. Hi ha 3 casos: cap color a la part superior, vermell al centre i marró a la part inferior.
  3. Dues fletxes # 3 apunten a commutadors que comproven si el sensor d'ultrasons veu un objecte a més d'una distància específica. Si és així, s'executa la sèrie superior de blocs. Si no, el control es passa a la sèrie inferior de blocs.

Els meus blocs per escurçar el camí i conduir el camí directe són més complicats i serien totalment il·legibles i, per tant, no s’inclouen en aquest document.

Pas 5: Començar a construir el robot: la base

Començant a construir el robot: la base
Començant a construir el robot: la base
Començant a construir el robot: la base
Començant a construir el robot: la base

Com s'ha esmentat anteriorment, LEGO Mindstorms EV3 no permet més d'un de cada tipus de sensor connectat a un maó. He utilitzat els següents sensors (en lloc de tres sensors d'ultrasons): sensor d'infrarojos, sensor de color i sensor d'ultrasons.

Els parells de fotos següents mostren com construir el robot. La primera foto de cada parell mostra les parts necessàries i la segona mostra les mateixes parts connectades entre elles.

El primer pas és construir la base del robot, utilitzant les parts que es mostren. La base del robot es mostra cap per avall. La petita part en forma de L a la part posterior del robot és un suport per a la part posterior. Es llisca a mesura que es mou el robot. Això funciona bé. El kit EV3 no té una peça de tipus bola rodant.

Pas 6: part superior de la base, 1

Part superior de la base, 1
Part superior de la base, 1
Part superior de la base, 1
Part superior de la base, 1

Aquest pas i els següents 2 passos són per a la part superior de la base del robot, el sensor de color i els cables, que són tots cables de 10 polzades (26 cm).

Pas 7: part superior de la base, 2

Part superior de la base, 2
Part superior de la base, 2
Part superior de la base, 2
Part superior de la base, 2

Pas 8: part superior de la base, 3

Part superior de la base, 3
Part superior de la base, 3
Part superior de la base, 3
Part superior de la base, 3

Pas 9: Sensors d'infrarojos i ultrasons

Sensors d'infrarojos i ultrasons
Sensors d'infrarojos i ultrasons
Sensors d'infrarojos i ultrasons
Sensors d'infrarojos i ultrasons

A continuació, es troben el sensor d’infrarojos (a la part esquerra del robot) i el sensor d’ultrasons (a la dreta). A més, els 4 pins per fixar el maó a la part superior.

Els sensors d’infrarojos i ultrasons es situen verticalment en lloc de l’horitzontal normal. Això proporciona una millor identificació de les cantonades o extrems de les parets.

Pas 10: Cables

Cables
Cables

Els cables es connecten al Brick de la següent manera:

  • Port B: motor gran esquerre.
  • Port C: motor gran dret.
  • Port 2: sensor d'ultrasons.
  • Port 3: sensor de color.
  • Port 4: sensor d'infrarojos.

Pas 11: Pas final en la construcció del robot: decoració

Pas final en la construcció del robot: decoració
Pas final en la construcció del robot: decoració
Pas final en la construcció del robot: decoració
Pas final en la construcció del robot: decoració

Les ales i les aletes només serveixen per decorar.

Pas 12: Construeix un laberint

Construeix un laberint
Construeix un laberint
Construeix un laberint
Construeix un laberint

Dos cartrons de cartró ondulat haurien de ser suficients per al laberint. Vaig fer les parets del laberint de 12,5 cm d’alçada, però 10 cm haurien de funcionar igualment si no teniu cartró ondulat.

En primer lloc, vaig tallar les parets dels cartrons, a 25 cm (10 polzades) de la part inferior. Després vaig tallar al voltant de les parets a 5 centímetres del fons. Això proporciona diverses parets de 5 polzades. A més, vaig tallar els fons dels cartrons, deixant aproximadament 1 polzada (2,5 cm) enganxada a les parets per obtenir estabilitat.

Les diverses peces es poden tallar i enganxar o enganxar on sigui necessari per formar el laberint. Hi ha d’haver un espai d’entre 30 o 11 polzades (11 o 12 polzades) entre les parets laterals en qualsevol camí amb un carreró sense sortida. La longitud no ha de ser inferior a 10 cm (25 cm). Aquestes distàncies són necessàries perquè el robot giri.

És possible que calgui reforçar algunes de les cantonades del laberint. També cal evitar que es doblegin algunes parets rectes si inclouen una cantonada de cartró redreçada. Els trossos petits de cartró prim s’han d’enganxar al fons en aquests llocs, tal com es mostra.

La sortida té una barrera vermella que consta de mig sobre de targeta de felicitació vermella i una base feta de 2 peces de cartró prim, tal com es mostra.

Pas 13: El laberint

El laberint
El laberint

Una precaució és que el laberint no ha de ser gran. Si els girs del robot tenen un lleuger angle respecte al correcte, les discrepàncies se sumen després d’alguns girs i el robot podria córrer cap a les parets. Vaig haver de jugar diverses vegades amb la configuració de les rotacions dels girs per tal d’aconseguir una conducció amb èxit fins i tot fins al petit laberint que vaig fer.

Una manera d’eludir aquest problema és incloure una rutina de redreçament de camins que mantingui el robot a una distància específica de la paret esquerra. No he inclòs això. El programa és prou complicat com és i és suficient per demostrar el concepte d’IA en aquest projecte.

Observació final

Va ser un projecte divertit i una gran experiència d’aprenentatge. Espero que també el trobeu interessant.

Recomanat: