- Maquinari necessari:
- Requisit de programació:
- Configuració del processament a Raspberry Pi:
- Esquema de connexions:
- Programa de seguiment de la pilota Raspberry Pi:
- Funcionament del robot de seguiment de boles Raspberry Pi:
El camp de la robòtica, la intel·ligència artificial i l’aprenentatge automàtic evoluciona ràpidament, de manera que segur que canviarà l’estil de vida de la humanitat en un futur proper. Es creu que els robots comprenen i interactuen amb el món real mitjançant sensors i processament d'aprenentatge automàtic. El reconeixement d’imatges és una de les formes més populars en què es creu que els robots entenen els objectes mirant el món real a través d’una càmera com nosaltres. En aquest projecte, utilitzeu la força de Raspberry Pi per construir un robot que pugui rastrejar la pilota i seguir-la igual que els robots que juguen a futbol.
OpenCV és una eina de codi obert molt famosa que s’utilitza per al processament d’imatges, però en aquest tutorial per simplificar les coses estem utilitzant l’IDE de processament. Com que el processament per a ARM també ha llançat la biblioteca GPIO per al processament, no haurem de canviar entre el python i el processament per treballar amb Raspberry Pi. Sona genial no? Comencem, doncs,.
Maquinari necessari:
- Raspberry Pi
- Mòdul de càmera amb cable de cinta
- Xassís de robots
- Motors d'engranatges amb roda
- Controlador de motor L293D
- Banc d'alimentació o qualsevol altra font d'alimentació portàtil
Requisit de programació:
- Monitor o una altra pantalla per a Raspberry pi
- Teclat o ratolí per a Pi
- Processament de programari ARM
Nota: És obligatori tenir una pantalla connectada a Pi mitjançant cables durant la programació perquè només es pot veure el vídeo de la càmera
Configuració del processament a Raspberry Pi:
Com es va dir anteriorment, utilitzarem l’entorn de processament per programar el nostre Raspberry Pi i no la forma per defecte d’utilitzar python. Per tant, seguiu els passos següents:
Pas 1: - Connecteu el vostre Raspberry Pi al monitor, al teclat i al ratolí i engegueu-lo.
Pas 2: - Assegureu-vos que Pi està connectat a una connexió a Internet activa perquè estem a punt de descarregar poques coses.
Pas 3: - Feu clic a Processament ARM per descarregar l'IDE de processament de Raspberry Pi. La descàrrega es realitzarà en forma de fitxer ZIP.
Pas 4: - Un cop descarregats, extreu els fitxers de la carpeta ZIP del directori que preferiu. L’acabo d’extreure al meu escriptori.
Pas 5: - Ara, obriu la carpeta extreta i feu clic al fitxer anomenat processament. Hauria d'obrir una finestra com es mostra a continuació.
![]()
Pas 6: - Aquest és l’entorn on escrivirem els nostres codis. Per a les persones que estiguin familiaritzades amb Arduino, no us sorprengueu SÍ, l'IDE és similar a Arduino i el programa també.
Pas 7: - Necessitem dues biblioteques perquè funcioni el nostre programa següent de boles, per instal·lar-les, només cal que feu clic a Sketch -> Import Library -> Add Library . S'obrirà el quadre de diàleg següent.
![]()
Pas 8: - Utilitzeu el quadre de text superior esquerre per cercar Raspberry Pi i premeu Retorn; el resultat de la cerca hauria de ser semblant a això.
![]()
Pas 9: - Cerqueu les biblioteques anomenades "GL Video" i "E / S de maquinari" i feu clic a Instal·la per instal·lar-les. Assegureu-vos d’instal·lar les dues biblioteques.
Pas 10: - Basat en la vostra Internet, la instal·lació trigarà uns minuts. Un cop fet estem preparats per al processament de programari.
Esquema de connexions:
A continuació es mostra el diagrama del circuit d’aquest projecte de seguiment de boles de Raspberry Pi.
![]()
Com podeu veure, el circuit inclou una càmera PI, un mòdul Motor Driver i un parell de motors connectats al Raspberry pi. El circuit complet està alimentat per un banc de potència mòbil (representat per una bateria AAA al circuit anterior).
Com que els detalls dels pins no s’esmenten al Raspberry Pi, hem de verificar els pins mitjançant la imatge següent
Per conduir els motors, necessitem quatre pins (A, B, A, B). Aquests quatre pins estan connectats des de GPIO14,4,17 i 18 respectivament. El cable taronja i el blanc formen la connexió d’un motor. Per tant, tenim dos parells d’aquest tipus per a dos motors.
Els motors estan connectats al mòdul de controlador de motor L293D tal com es mostra a la imatge i el mòdul de controlador està alimentat per un banc de potència. Assegureu-vos que la terra del banc d’alimentació estigui connectada a la terra del Raspberry Pi, només així la vostra connexió funcionarà.
Això és el que hem acabat amb la nostra connexió de maquinari, tornem al nostre entorn de processament i comencem a programar per ensenyar al nostre robot com rastrejar una pilota.
![]()
Programa de seguiment de la pilota Raspberry Pi:
El programa de processament complet d’aquest projecte apareix al final d’aquesta pàgina, que utilitzeu directament. Més endavant, a continuació, he explicat el funcionament del codi perquè el pugueu utilitzar per a altres projectes similars.
El concepte del programa és molt senzill. Tot i que la intenció del projecte és fer un seguiment d’una pilota, en realitat no ho farem. Simplement anem a identificar la pilota amb el seu color. Com tots sabem, els vídeos no són res més que fotogrames continus. Així doncs, fem cada foto i la dividim en píxels. A continuació, comparem cada color de píxel amb el color de la pilota; si es troba un partit, podem dir que hem trobat la pilota. Amb aquesta informació també podem identificar la posició de la pilota (color píxel) a la pantalla. Si la posició és a l’esquerra, movem el robot cap a la dreta, si la posició és a la dreta, movem el robot cap a l’esquerra perquè la posició dels píxels quedi sempre al centre de la pantalla. Podeu veure el vídeo de Computer Shiffman de Daniel Shiffman per obtenir una imatge clara.
Com sempre, comencem per la importació de les dues biblioteques que baixem. Això es pot fer mitjançant les dues línies següents. La biblioteca d'E / S de maquinari s'utilitza per accedir als pins GPIO del PI directament des de l'entorn de processament, la biblioteca glvideo s'utilitza per accedir al mòdul de càmera Raspberry Pi.
importació processing.io. *; importa gohai.glvideo. *;
Dins de la funció de configuració inicialitzem els pins de sortida per controlar el motor i també obtenim el vídeo de la càmera pi i el dimensionem en una finestra de mida 320 * 240.
void setup () {mida (320, 240, P2D); vídeo = nova GLCapture (això); video.start (); trackColor = color (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
El dibuix buit és com el bucle infinit que s'executarà el codi dins d'aquest bucle sempre que es finalitzi el programa. Si hi ha disponible una font de càmera, llegim el vídeo que en surt
void draw () {background (0); if (video.available ()) {video.read (); }}
A continuació, comencem a dividir el marc de vídeo en píxels. Cada píxel té un valor de vermell, verd i blau. Aquests valors s’emmagatzemen a la variable r1, g1 i b1
for (int x = 0; x <video.width; x ++) {for (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // Què és el color actual del color currentColor = video.pixels; flotador r1 = vermell (colorCurrent); flotador g1 = verd (colorCurrent); flotador b1 = blau (colorCurrent);
Per detectar el color de la pilota inicialment, hem de fer clic sobre el color. Una vegada que feu clic, el color de la pilota s'emmagatzemarà en la variable anomenada trackColour .
void mousePressed () {// Desa el color on es fa clic al ratolí a la variable trackColor int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
Un cop tinguem el color de la pista i el color actual, hem de comparar-los. Aquesta comparació utilitza la funció dist. Comprova la proximitat del color actual amb el color de la pista.
flotador d = dist (r1, g1, b1, r2, g2, b2);
El valor de dist serà zero per a una coincidència exacta. Per tant, si el valor de dist és inferior a un valor especificat (rècord mundial), suposem que hem trobat el color de la pista. Després obtenim la ubicació d’aquest píxel i l’emmagatzemem a la variable més propera a X i a la més propera a Y per trobar la ubicació de la pilota
if (d <worldRecord) {worldRecord = d; més properX = x; més properY = y; }
També dibuixem una el·lipse al voltant del color trobat per indicar que s’ha trobat el color. El valor de la posició també s’imprimeix a la consola, cosa que ajudarà molt durant la depuració.
if (worldRecord <10) {// Dibuixeu un cercle al farciment de píxels seguit (trackColor); strokeWeight (4.0); traç (0); el·lipse (més properX, més properY, 16, 16); println (X més proper, Y més proper);
Finalment, podem comparar la posició de la X més propera i la més propera i ajustar els motors de manera que el color arribi al centre de la pantalla. El codi següent s'utilitza per girar el robot cap a la dreta, ja que es va trobar que la posició X del color es trobava a la part esquerra de la pantalla (<140)
if (properX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); retard (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Gireu a la dreta"); }
De la mateixa manera, podem comprovar la posició de X i Y per controlar els motors en la direcció requerida. Com sempre, podeu consultar el programa complet a la part inferior de la pàgina.
Funcionament del robot de seguiment de boles Raspberry Pi:
Un cop estigueu preparats amb el maquinari i el programa, és hora de divertir-vos. Abans de provar el bot a terra, hauríem d’assegurar-nos que tot funcioni bé. Connecteu el vostre Pi per supervisar i iniciar el codi de processament. Hauríeu de veure el canal de vídeo en una finestra petita. Ara, introduïu la bola dins del marc i feu clic a la bola per ensenyar al robot que hauria de rastrejar aquest color en particular. Ara moveu la pilota per la pantalla i heu de notar que les rodes giren.
![]()
![]()
Si tot funciona com s’esperava, deixeu anar el bot a terra i comenceu a jugar amb ell. Assegureu-vos que la sala estigui il·luminada de manera uniforme per obtenir els millors resultats. El funcionament complet del projecte es mostra al vídeo següent. Espero que hagueu entès el projecte i us hagi agradat construir alguna cosa similar. Si teniu algun problema, no dubteu a publicar-los a la secció de comentaris a continuació o ajudeu-los.
