- Hardware richiesto:
- Requisiti di programmazione:
- Configurazione dell'elaborazione su Raspberry Pi:
- Schema elettrico:
- Programma di monitoraggio della palla Raspberry Pi:
- Funzionamento del robot di tracciamento della palla Raspberry Pi:
Il campo della robotica, dell'intelligenza artificiale e dell'apprendimento automatico si sta evolvendo rapidamente e sicuramente cambierà lo stile di vita dell'umanità nel prossimo futuro. Si pensa che i robot capiscano e interagiscano con il mondo reale attraverso sensori e processi di apprendimento automatico. Il riconoscimento delle immagini è uno dei modi popolari in cui si pensa che i robot capiscano gli oggetti guardando il mondo reale attraverso una telecamera, proprio come facciamo noi. In questo progetto, usiamo la potenza di Raspberry Pi per costruire un robot in grado di seguire la palla e seguirlo proprio come i robot che giocano a calcio.
OpenCV è uno strumento open source molto famoso che viene utilizzato per l'elaborazione delle immagini, ma in questo tutorial per mantenere le cose semplici utilizziamo l'IDE di elaborazione. Poiché l'elaborazione per ARM ha rilasciato anche la libreria GPIO per l'elaborazione, non dovremo più passare da Python a elaborazione per lavorare con Raspberry Pi. Suona bene, vero? Quindi cominciamo.
Hardware richiesto:
- Raspberry Pi
- Modulo telecamera con cavo a nastro
- Robot Chassis
- Motoriduttori con ruota
- Driver del motore L293D
- Power bank o qualsiasi altra fonte di alimentazione portatile
Requisiti di programmazione:
- Monitor o altro display per Raspberry pi
- Tastiera o mouse per Pi
- Elaborazione del software ARM
Nota: è obbligatorio avere un display collegato a Pi tramite fili durante la programmazione perché solo allora è possibile visualizzare il video della telecamera
Configurazione dell'elaborazione su Raspberry Pi:
Come detto in precedenza, utilizzeremo l'ambiente di elaborazione per programmare il nostro Raspberry Pi e non il modo predefinito di utilizzare Python. Quindi, segui i passaggi seguenti:
Passaggio 1: - Collega il tuo Raspberry Pi al monitor, alla tastiera e al mouse e accendilo.
Passaggio 2: - Assicurati che Pi sia connesso a una connessione Internet attiva perché stiamo per scaricare alcune cose.
Passaggio 3: - Fare clic su Processing ARM, per scaricare l'IDE di elaborazione per Raspberry Pi. Il download avverrà sotto forma di un file ZIP.
Passaggio 4: - Una volta scaricato, estrai i file nella cartella ZIP nella directory preferita. L'ho appena estratto sul desktop.
Passaggio 5: - Ora, apri la cartella estratta e fai clic sul file denominato elaborazione. Dovrebbe aprire una finestra come mostrato di seguito.
Passaggio 6: - Questo è l'ambiente in cui digiteremo i nostri codici. Per le persone che hanno familiarità con Arduino, non essere scioccato SÌ, l'IDE è simile ad Arduino e così anche il programma.
Passaggio 7: - Abbiamo bisogno di due librerie affinché il nostro programma ball following funzioni, per installarlo, quindi fai clic su Sketch -> Importa libreria -> Aggiungi libreria . Si aprirà la seguente finestra di dialogo.
Passaggio 8: utilizzare la casella di testo in alto a sinistra per cercare Raspberry Pi e premere invio, il risultato della ricerca dovrebbe essere simile a questo.
Passaggio 9: - Cerca le librerie denominate "GL Video" e "Hardware I / O" e fai clic su installa per installarle. Assicurati di installare entrambe le librerie.
Passaggio 10: - In base a Internet, l'installazione richiederà alcuni minuti. Una volta fatto, siamo pronti con il software di elaborazione.
Schema elettrico:
Di seguito è mostrato lo schema del circuito di questo progetto di monitoraggio della palla Raspberry Pi.
Come puoi vedere il circuito coinvolge una telecamera PI, un modulo Motor Driver e una coppia di motori collegati al Raspberry pi. Il circuito completo è alimentato da un Mobile Power bank (rappresentato da una batteria AAA nel circuito sopra).
Poiché i dettagli dei pin non sono menzionati sul Raspberry Pi, è necessario verificare i pin utilizzando l'immagine sottostante
Per guidare i motori, abbiamo bisogno di quattro pin (A, B, A, B). Questi quattro pin sono collegati rispettivamente da GPIO14,4,17 e 18. Il filo arancione e bianco insieme formano la connessione per un motore. Quindi abbiamo due coppie di questo tipo per due motori.
I motori sono collegati al modulo L293D Motor Driver come mostrato in figura e il modulo driver è alimentato da un power bank. Assicurati che la massa del power bank sia collegata alla massa del Raspberry Pi, solo allora la tua connessione funzionerà.
Questo è tutto con la nostra connessione Hardware, torniamo al nostro ambiente di elaborazione e iniziamo a programmare per insegnare al nostro robot come seguire una palla.
Programma di monitoraggio della palla Raspberry Pi:
Il programma completo di elaborazione di questo progetto è fornito alla fine di questa pagina, che utilizzi direttamente. Più avanti appena sotto, ho spiegato il funzionamento del codice in modo da poterlo utilizzare per altri progetti simili.
Il concetto del programma è molto semplice. Sebbene l'intenzione del progetto sia quella di seguire una palla, in realtà non lo faremo. Identificheremo la palla solo usando il suo colore. Come tutti sappiamo i video non sono altro che fotogrammi continui di immagini. Quindi prendiamo ogni immagine e la dividiamo in pixel. Quindi confrontiamo ogni colore di pixel con il colore della palla; se viene trovata una corrispondenza allora possiamo dire che abbiamo trovato la palla. Con queste informazioni possiamo anche identificare la posizione della pallina (colore del pixel) sullo schermo. Se la posizione è all'estrema sinistra spostiamo il robot a destra, se la posizione è all'estrema destra spostiamo il robot a sinistra in modo che la posizione dei pixel rimanga sempre al centro dello schermo. Puoi guardare il video di Computer Vision di Daniel shiffman per avere un'immagine chiara.
Come sempre iniziamo importando le due librerie che scarichiamo. Questo può essere fatto con le seguenti due righe. La libreria Hardware I / O viene utilizzata per accedere ai pin GPIO del PI direttamente dall'ambiente di elaborazione, la libreria glvideo viene utilizzata per accedere al modulo fotocamera Raspberry Pi.
import processing.io. *; import gohai.glvideo. *;
All'interno della funzione di configurazione inizializziamo i pin di uscita per controllare il motore e anche ottenere il video dalla telecamera pi e ridimensionarlo in una finestra di dimensioni 320 * 240.
void setup () {size (320, 240, P2D); video = nuovo GLCapture (questo); 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); }
Il void draw è come il ciclo infinito, il codice all'interno di questo ciclo verrà eseguito fintanto che il programma è terminato. Se è disponibile una sorgente telecamera, leggiamo il video che ne esce
void draw () {background (0); if (video.available ()) {video.read (); }}
Quindi iniziamo a dividere il fotogramma del video in pixel. Ogni pixel ha un valore di rosso, verde e blu. Questi valori sono memorizzati nelle variabili r1, g1 e b1
for (int x = 0; x <video.width; x ++) {for (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // Qual è il colore del colore corrente currentColor = video.pixels; float r1 = rosso (currentColor); float g1 = verde (currentColor); float b1 = blue (currentColor);
Per rilevare inizialmente il colore della palla, dobbiamo fare clic sul colore. Una volta cliccato il colore della pallina verrà memorizzato nella variabile chiamata trackColour .
void mousePressed () {// Salva il colore nel punto in cui si fa clic con il mouse nella variabile trackColor int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
Una volta che abbiamo il colore della traccia e il colore corrente, dobbiamo confrontarli. Questo confronto utilizza la funzione dist. Controlla quanto il colore corrente è vicino al colore della traccia.
float d = dist (r1, g1, b1, r2, g2, b2);
Il valore di dist sarà zero per una corrispondenza esatta. Quindi, se il valore di dist è inferiore a un valore specificato (record mondiale), presumiamo di aver trovato il colore della traccia. Quindi otteniamo la posizione di quel pixel e la memorizziamo nella variabile X più vicina e Y più vicina per trovare la posizione della palla
if (d <worldRecord) {worldRecord = d; più vicinoX = x; più vicinoY = y; }
Disegniamo anche un'ellisse attorno al colore trovato per indicare che il colore è stato trovato. Il valore della posizione è stampato anche sulla console, questo aiuterà molto durante il debug.
if (worldRecord <10) {// Disegna un cerchio in corrispondenza del riempimento pixel tracciato (trackColor); strokeWeight (4.0); corsa (0); ellisse (più vicinoX, più vicinoY, 16, 16); println (più vicinoX, più vicinoY);
Infine possiamo confrontare la posizione della X più vicina e della Y più vicina e regolare i motori in modo tale che il colore arrivi al centro dello schermo. Il codice seguente viene utilizzato per ruotare il robot a destra poiché la posizione X del colore è stata trovata nella parte sinistra dello schermo (<140)
if (più vicinoX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); ritardo (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Gira a destra"); }
Allo stesso modo possiamo controllare la posizione di X e Y per controllare i motori nella direzione richiesta. Come sempre puoi fare riferimento in fondo alla pagina per il programma completo.
Funzionamento del robot di tracciamento della palla Raspberry Pi:
Una volta che sei pronto con l'hardware e il programma, è tempo di divertirti. Prima di testare il nostro bot a terra, dovremmo assicurarci che tutto funzioni correttamente. Collega il tuo Pi per monitorare e avviare il codice di elaborazione. Dovresti vedere il feed video su una piccola finestra. Ora, porta la palla all'interno della cornice e fai clic sulla palla per insegnare al robot che dovrebbe tracciare questo particolare colore. Ora sposta la pallina sullo schermo e dovresti notare le ruote che ruotano.
Se tutto funziona come previsto, rilascia il bot a terra e inizia a giocarci. Assicurati che la stanza sia illuminata in modo uniforme per ottenere i migliori risultati. Il funzionamento completo del progetto è mostrato nel video sottostante. Spero che tu abbia capito il progetto e ti sia piaciuto costruire qualcosa di simile. Se hai problemi, sentiti libero di pubblicarli nella sezione commenti qui sotto o di aiutare.