Sommario:
- Forniture
- Passaggio 1: Introduzione
- Passaggio 2: materiali e software utilizzati in questo progetto
- Passaggio 3: cosa fare?
- Fase 4: Schemi
- Passaggio 5: come fare?
- Passaggio 6: pseudo-codice
- Passaggio 7: codice
- Passaggio 8: collegamenti esterni
Video: Robot di tracciamento della palla: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Quindi, in questo, dirò come fare in modo che un robot per il tracciamento della palla che sia un robot identificherà una palla e la segua. È fondamentalmente una tecnica di sorveglianza automatizzata che può essere utilizzata nel mondo moderno. Quindi, facciamoci un salto e iniziamo a costruire…
NOTA: questa è la parte assegnata alla Deakin University, School of IT, SIT-210 Embedded Systems Development
Forniture
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Passaggio 1: Introduzione
La sorveglianza odierna presenta un grave inconveniente, ovvero che si basa sul coinvolgimento degli esseri umani che, come tutti sappiamo, possono essere facilmente distratti, quindi era della nostra massima importanza scoprire un sistema in grado di monitorare le regioni in modo autonomo e continuo. Inoltre, vogliamo identificare cose e pericoli odiosi o indesiderati mentre contemporaneamente prendiamo decisioni e rispondiamo di conseguenza. Quindi il tracciamento degli oggetti con l'uso di sistemi e computer intelligenti è essenziale e cruciale per ottenere una sorveglianza automatizzata.
Qualsiasi sistema di sorveglianza esterno deve essere in grado di tracciare oggetti in movimento nel suo campo visivo, classificare questi oggetti e rilevare alcune delle loro attività. Ho sviluppato un metodo per tracciare e classificare questi oggetti in scenari realistici. Il tracciamento dell'oggetto in una singola telecamera viene eseguito utilizzando la sottrazione dello sfondo, seguita dalla corrispondenza della regione. Ciò tiene conto di più segnali, tra cui velocità, dimensioni e distanze dei riquadri di delimitazione.
Passaggio 2: materiali e software utilizzati in questo progetto
Componenti hardware utilizzati:
- Lampone Pi (x1)
- Modulo fotocamera Raspberry Pi (x1)
- Sensore a ultrasuoni (x3)
- Driver motore SparkFun Dual H-Bridge L298 (x1)
- Motore CC (x1)
- Tagliere (x1)
- Cavi di collegamento
Software utilizzato:
OpenCV
Strumenti manuali:
Pitone
Passaggio 3: cosa fare?
Qualsiasi sistema di sorveglianza esterno deve essere in grado di tracciare oggetti in movimento nel suo campo visivo, classificare questi oggetti e rilevare alcune delle loro attività. Ho sviluppato un metodo per tracciare e classificare questi oggetti in scenari realistici. Il tracciamento dell'oggetto in una singola telecamera viene eseguito utilizzando la sottrazione dello sfondo, seguita dalla corrispondenza della regione. Ciò tiene conto di più segnali, tra cui velocità, dimensioni e distanze dei riquadri di delimitazione.
La cosa cruciale durante il rilevamento delle immagini fotogramma per fotogramma era evitare qualsiasi caduta di fotogramma poiché il bot può entrare in uno stato di limbo se il bot non riesce a notare la direzione del movimento della palla a causa delle cadute di fotogramma. Se la palla esce dal raggio della telecamera, entrerà in quello che chiamiamo uno stato di limbo, in tal caso, il bot fa un giro di 360 gradi per visualizzare lo spazio intorno a sé finché la palla non torna nell'inquadratura di la telecamera e poi iniziare a muoversi nella sua direzione.
Per l'analisi dell'immagine, prendo ogni fotogramma e poi lo maschero con il colore necessario. Poi trovo tutti i contorni e trovo il più grande tra loro e lo lego in un rettangolo. E mostra il rettangolo sull'immagine principale e trova le coordinate del centro del rettangolo.
Infine, il bot cerca di portare le coordinate della pallina al centro del suo asse di coordinate. Ecco come funziona il robot. Questo può essere ulteriormente migliorato utilizzando un dispositivo IoT come una particella di fotoni che ti consente di essere informato quando viene rilevata una cosa e che il robot la sta seguendo o quando il robot ne ha perso le tracce e ora sta tornando alla base.
Ai fini dell'elaborazione delle immagini, è necessario installare il software OpenCV sul tuo Raspberry Pi, il che è stato piuttosto complicato per me.
Puoi ottenere tutte le informazioni necessarie per installare OpenCV tramite questo link: clicca qui
Fase 4: Schemi
Sopra ho fornito gli schemi per il mio progetto e insieme ad esso c'è il circuito stampato (PCB).
Ed ecco alcune delle connessioni principali che devi fare:
• Innanzitutto il modulo Raspberry Pi Camera è collegato direttamente al Raspberry Pi.
• I sensori ultrasonici VCC sono collegati al terminale comune lo stesso è con il GND (massa) e le restanti due porte del sensore ultrasonico sono collegate ai pin GPIO sul Raspberry Pi.
• I motori sono collegati tramite l'H-Bridge.
• L'alimentazione viene fornita tramite la batteria.
Ho anche aggiunto il video che potrebbe aiutare con la comprensione del funzionamento del sensore a ultrasuoni e di come funziona.
e inoltre puoi seguire questo link se non riesci a trovare il video qui sopra.
Passaggio 5: come fare?
Ho realizzato questo progetto raffigurante un robot di base che può seguire una palla. Il robot utilizza una fotocamera per elaborare le immagini prendendo fotogrammi e tracciando la palla. Per tracciare la palla vengono utilizzate varie caratteristiche come il colore, le dimensioni e la forma.
Il Robot trova un colore codificato e poi cerca la palla di quel colore e lo segue. Ho scelto Raspberry Pi come microcontrollore in questo progetto perché ci consente di utilizzare il suo modulo fotocamera e offre una grande flessibilità nel codice poiché utilizza il linguaggio Python che è molto intuitivo e ci consente inoltre di utilizzare la libreria OpenCV per analizzare le immagini.
Un H-Bridge è stato utilizzato per invertire il senso di rotazione dei motori o per fermarli.
Per l'analisi dell'immagine, prendo ogni fotogramma e poi lo maschero con il colore necessario. Poi trovo tutti i contorni e trovo il più grande tra loro e lo lego in un rettangolo. E mostra il rettangolo sull'immagine principale e trova le coordinate del centro del rettangolo.
Infine, il bot cerca di portare le coordinate della pallina al centro del suo asse di coordinate. Ecco come funziona il robot. Questo può essere ulteriormente migliorato utilizzando un dispositivo IoT come una particella di fotoni che ti consente di essere informato quando viene rilevata una cosa e che il robot la sta seguendo o quando il robot ne ha perso le tracce e ora sta tornando alla base. E per fare ciò utilizzeremo una piattaforma software online che collega i dispositivi e consente loro di eseguire determinate azioni su trigger specifici, ovvero i trigger IFTTT.
Passaggio 6: pseudo-codice
Ecco lo pseudo-codice per la parte di rilevamento utilizzando OpenCV in cui rileviamo una palla.
Passaggio 7: codice
Sopra ci sono gli snippet del codice e sotto c'è la descrizione dettagliata del codice.
# importa i pacchetti necessari
IMPORTIAMO TUTTI I PACCHETTI NECESSARI
from picamera.array import PiRGBArray #Poiché c'è un problema di risoluzione in raspberry pi, non sarà in grado di acquisire fotogrammi da VideoCapture
da picamera import PiCamera import RPi. GPIO as GPIO import time import numpy as np
ORA IMPOSTIAMO L'HARDWARE E ASSEGNIAMO I PIN COLLEGATI SU RASPBERRY PI
GPIO.setmode(GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Sensore ultrasonico sinistro
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Sensore ultrasonico anteriore
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Sensore ultrasonico destro
GPIO_ECHO3 = 35
MOTOR1B=18 #Motore Sinistro
MOTORE1E=22
MOTORE2B=21 #Motore Destro
MOTORE2E=19
LED_PIN=13 #Se trova la pallina accende il led
# Imposta i pin come output e input
GPIO.setup(GPIO_TRIGGER1, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup(GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO2, GPIO. IN) GPIO.setup(GPIO_TRIGGER3, GPIO. OUT) # Attiva GPIO.setup(GPIO_ECHO3, GPIO. IN) GPIO.setup(LED_PIN, GPIO. OUT)
# Imposta il trigger su False (Basso)
GPIO.output(GPIO_TRIGGER1, False) GPIO.output(GPIO_TRIGGER2, False) GPIO.output(GPIO_TRIGGER3, False)
QUESTA FUNZIONE UTILIZZA TUTTI I SENSORI AD ULTRASUONI RACCOGLIE LA DISTANZA DAGLI OGGETTI INTORNO AL NOSTRO BOT
# Consenti al modulo di assestarsi
def sonar(GPIO_TRIGGER, GPIO_ECHO): start=0 stop=0 # Imposta i pin come output e input GPIO.setup(GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO, GPIO. IN) # Echo # Imposta trigger su False (Basso) GPIO.output(GPIO_TRIGGER, False) # Consenti al modulo di regolare time.sleep(0.01) #while distance > 5: #Invia 10us di impulso per attivare GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO. output(GPIO_TRIGGER, False) begin = time.time() mentre GPIO.input(GPIO_ECHO)==0 e time.time()
FAR FUNZIONARE I MOTORI CC CON IL RASPBERRY PI
GPIO.setup(MOTOR1B, GPIO. OUT)
GPIO.setup(MOTOR1E, GPIO. OUT)
GPIO.setup(MOTOR2B, GPIO. OUT) GPIO.setup(MOTOR2E, GPIO. OUT)
DEFINIRE LE FUNZIONI PER AZIONARE IL ROBOT E FARLO MUOVI IN DIREZIONI DIVERSE
def avanti():
GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def reverse(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH) def rightturn(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def leftturn(): GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH)
def stop():
GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW)
FAR FUNZIONARE IL MODULO FOTOCAMERA E REGOLARE LE IMPOSTAZIONI
#CATTURA FOTOCAMERA
#inizializza la fotocamera e prendi un riferimento alla cattura della fotocamera raw camera = PiCamera() camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray(camera, size=(160, 120)) # consenti la fotocamera al tempo di riscaldamento.sleep(0.001)
ORA IMPLEMENTA LA COSA PRINCIPALE IN CUI IL BOT SEGUA LA PALLA ED EVITA OGNI OSTACOLO IN MODO
while(1<10): { #distanza proveniente dal sensore ultrasonico anteriore distanzaC = sonar(GPIO_TRIGGER2, GPIO_ECHO2) #distanza proveniente dal sensore ultrasonico destro distanzaR = sonar(GPIO_TRIGGER3, GPIO_ECHO3) #distanza proveniente dal sensore ultrasonico sinistro distanzaL = sonar(GPIO_TRIGGER1, GPIO_ECHO1) if(distanceC=8: rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep(0.0125) #while found== 0: leftturn() time.sleep(0.00625) elif distanceL>=8: leftturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep (0.0125) rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) else: stop() time.sleep(0.01) else: #otherwise va avanti() time.sleep(0.00625) if(distanzaC>10): #porta le coordinate della pallina al centro dell'asse immaginario della telecamera if(centre_x=20): if(centre_x0): flag=1 leftturn() time.sleep(0.025) forward() time.sleep(0.00003125) stop() time.sleep(0.00625) else: stop() time.sleep(0.01)
altro:
#se trova la pallina ed è troppo vicina accende il led. GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", frame) rawCapture.truncate(0) # cancella il flusso in preparazione per il fotogramma successivo }
FATE LE PULIZIE NECESSARI
GPIO.cleanup() #libera tutti i pin GPIO
Passaggio 8: collegamenti esterni
Link al video dimostrativo: clicca qui (Youtube)
Link al Codice su Git-hub: clicca qui (Git-Hub)
Consigliato:
Sistema di tracciamento del movimento della testa per VR: 8 passaggi
Sistema di tracciamento del movimento della testa per la realtà virtuale: mi chiamo Sam KODO, in questo tutorial ti insegnerò passo dopo passo come utilizzare i sensori Arduino IMU per costruire un sistema di tracciamento della testa per la realtà virtuale. In questo progetto avrai bisogno di: - Un display LCD HDMI :https://www.amazon.com/Elecrow-Capacitive-interfac…- Un
Tracciamento della linea di rete: 7 passaggi
Tracciamento della linea di rete: beh, ho bisogno di un modo per tracciare alcune linee di rete che sono state installate mentre la mia casa veniva costruita 7 anni fa. Sfortunatamente non erano etichettati in quel momento. Puoi spendere un sacco di soldi in un'unità commerciale, o con un po' di know how e 5 dollari
Tracciamento automatico della sorgente luminosa: 5 passaggi
Tracciamento automatico della sorgente luminosa: in questa lezione utilizzeremo un servomotore, una fotoresistenza e una resistenza di pull-down per assemblare un sistema di rilevamento automatico della sorgente luminosa
Come assemblare un impressionante braccio robotico in legno (Parte 1: Robot per il tracciamento della linea) - Basato sul Micro: Bit: 9 passaggi
Come assemblare un impressionante braccio robotico in legno (Parte 1: Robot per il tracciamento della linea) - Basato sul Micro: Bit: questo ragazzo di legno ha tre forme, è molto diverso e impressionante. Allora entriamoci uno per uno
Telecamera a 180° con rilevamento della palla: 5 passaggi (con immagini)
Ball Tracking 180° Camera: Benvenuti nel mio primo progetto! Sono entusiasta di condividere ciò che ho realizzato e di mostrarti i passaggi per costruire la tua telecamera di localizzazione. Questo progetto è stato reso possibile utilizzando la libreria OpenCV in combinazione con Python