Cuprins:
- Provizii
- Pasul 1: Introducere
- Pasul 2: Materiale și articole moi utilizate în acest proiect
- Pasul 3: Ce să faci?
- Pasul 4: Scheme
- Pasul 5: Cum se face?
- Pasul 6: Pseudo-cod
- Pasul 7: Cod
- Pasul 8: Legături externe
Video: Robot de urmărire a mingii: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Deci, în acest sens, voi spune cum să fac un robot de urmărire a mingii care este un robot care să identifice o bilă și să o urmeze. Este practic o tehnică de supraveghere automată care poate fi utilizată în lumea modernă. Deci, lasă-ne să intrăm și să începem să construim …
NOTĂ: Aceasta este atribuirea părții trimisă la Universitatea Deakin, Școala de IT, SIT-210 Dezvoltarea sistemelor încorporate
Provizii
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Pasul 1: Introducere
Supravegherea de astăzi oferă un dezavantaj major, constând în faptul că se bazează pe implicarea oamenilor care, după cum știm cu toții, poate fi distrasă cu ușurință, așa că a fost extrem de important să descoperim un sistem care poate monitoriza regiunile în mod autonom și continuu. Și, de asemenea, dorim să identificăm lucrurile și pericolele obositoare sau nedorite în timp ce luăm simultan decizii și să răspundem în consecință. Așadar, urmărirea obiectelor cu utilizarea sistemelor și computerelor inteligente este esențială și crucială pentru a realiza o supraveghere automată.
Orice sistem de supraveghere în aer liber trebuie să poată urmări obiectele care se mișcă în câmpul său vizual, să clasifice aceste obiecte și să detecteze unele dintre activitățile lor. Am dezvoltat o metodă de urmărire și clasificare a acestor obiecte în scenarii realiste. Urmărirea obiectelor într-o singură cameră se realizează utilizând scăderea fundalului, urmată de corespondența regiunii. Acest lucru ia în considerare mai multe indicii, inclusiv viteze, dimensiuni și distanțe ale casetelor de delimitare.
Pasul 2: Materiale și articole moi utilizate în acest proiect
Componente hardware utilizate:
- Raspberry Pi (x1)
- Modul de cameră Raspberry Pi (x1)
- Senzor cu ultrasunete (x3)
- Drivere de motor SparkFun Dual H-Bridge L298 (x1)
- Motor DC (x1)
- Panou (x1)
- Conectarea firelor
Software folosit:
OpenCV
Unelte de mana:
Piton
Pasul 3: Ce să faci?
Orice sistem de supraveghere în aer liber trebuie să poată urmări obiectele care se mișcă în câmpul său vizual, să clasifice aceste obiecte și să detecteze unele dintre activitățile lor. Am dezvoltat o metodă de urmărire și clasificare a acestor obiecte în scenarii realiste. Urmărirea obiectelor într-o singură cameră se realizează utilizând scăderea fundalului, urmată de corespondența regiunii. Acest lucru ia în considerare mai multe indicii, inclusiv viteze, dimensiuni și distanțe ale casetelor de delimitare.
Un lucru crucial în timpul detectării imaginilor cadru cu cadru a fost de a evita orice cadere a cadrelor, deoarece botul poate intra într-o stare de limb dacă botul nu observă direcția de mișcare a mingii din cauza caderelor cadrului. Dacă mingea iese din raza de acțiune a camerei, va intra în ceea ce numim o stare limbo, în acest caz, robotul face o întoarcere de 360 de grade pentru a vizualiza spațiul din jur până când mingea revine în cadrul camera și apoi începeți să vă mișcați în direcția sa.
Pentru analiza imaginii, iau fiecare cadru și apoi îl maschez cu culoarea necesară. Apoi găsesc toate contururile și le găsesc pe cele mai mari dintre ele și le-am legat într-un dreptunghi. Și arată dreptunghiul de pe imaginea principală și găsește coordonatele centrului dreptunghiului.
În cele din urmă, robotul încearcă să aducă coordonatele mingii în centrul axei sale de coordonate. Așa funcționează robotul. Acest lucru poate fi îmbunătățit în continuare prin utilizarea unui dispozitiv IoT, cum ar fi o particulă de foton, care vă poate permite să fiți informat când este detectat un lucru și că robotul îl urmărește sau când robotul a pierdut urmele acestuia și acum se întoarce la bază.
În scopul procesării imaginilor, trebuie să instalați software OpenCV pe raspberry pi, ceea ce a fost destul de dificil pentru mine.
Puteți obține orice informații necesare pentru a instala OpenCV prin acest link: faceți clic aici
Pasul 4: Scheme
Mai sus am furnizat schemele pentru proiectul meu și împreună cu acesta este placa de circuit imprimat (PCB).
Iată câteva dintre principalele conexiuni pe care trebuie să le faceți:
• În primul rând modulul Raspberry Pi Camera este conectat direct la Raspberry Pi.
• Senzorii cu ultrasunete VCC sunt conectați la terminalul comun la fel cu GND (masă), iar celelalte două porturi ale senzorului cu ultrasunete sunt conectate la pinii GPIO de pe Raspberry Pi.
• Motoarele sunt conectate folosind H-Bridge.
• Alimentarea este furnizată folosind bateria.
Am adăugat, de asemenea, videoclipul care ar putea ajuta la înțelegerea funcționării senzorului cu ultrasunete și a modului în care acesta funcționează.
și, de asemenea, puteți urmări acest link dacă nu găsiți videoclipul de mai sus.
Pasul 5: Cum se face?
Am făcut acest proiect descriind un robot de bază care poate urmări o minge. Robotul folosește o cameră pentru a prelucra imagini luând cadre și urmărind mingea. Pentru a urmări mingea se utilizează diverse caracteristici precum culoarea, dimensiunea, forma.
Robotul găsește o culoare codificată și apoi caută bila de acea culoare și o urmărește. Am ales Raspberry Pi ca microcontroler în acest proiect, deoarece ne permite să folosim modulul său de cameră și oferă o mare flexibilitate în cod, deoarece folosește un limbaj python, care este foarte ușor de utilizat și, de asemenea, ne permite să folosim biblioteca OpenCV pentru analiza imaginilor.
Un H-Bridge a fost folosit pentru a comuta direcția de rotație a motoarelor sau pentru a le opri.
Pentru analiza imaginii, iau fiecare cadru și apoi îl maschez cu culoarea necesară. Apoi găsesc toate contururile și le găsesc pe cele mai mari dintre ele și le-am legat într-un dreptunghi. Și arată dreptunghiul de pe imaginea principală și găsește coordonatele centrului dreptunghiului.
În cele din urmă, robotul încearcă să aducă coordonatele mingii în centrul axei sale de coordonate. Așa funcționează robotul. Acest lucru poate fi îmbunătățit în continuare prin utilizarea unui dispozitiv IoT, cum ar fi o particulă de foton, care vă poate permite să fiți informat când este detectat un lucru și că robotul îl urmărește sau când robotul a pierdut urmele acestuia și acum se întoarce la bază. Și pentru a face acest lucru, vom folosi o platformă software online care conectează dispozitivele și le permite acestora să efectueze anumite acțiuni pe declanșatoare specifice, care sunt declanșatoarele IFTTT.
Pasul 6: Pseudo-cod
Iată pseudo-codul pentru partea de detectare folosind OpenCV unde detectăm o minge.
Pasul 7: Cod
Deasupra sunt fragmentele codului și mai jos este descrierea detaliată a codului.
# importă pachetele necesare
IMPORTAM TOATE PACHETELE NECESARE
din picamera.array import PiRGBArray # Deoarece există o problemă de rezoluție în raspberry pi, nu va fi capabil să captureze cadre prin VideoCapture
din picamera import PiCamera import RPi. GPIO ca GPIO import timp import numpy ca np
ACUM CONFIGURĂM HARDWARE-UL ȘI ALOCĂM PIN-ULLE CONEXE PE RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Sensor cu ultrasunete stânga
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 # Senzor ultrasonic frontal
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 # Senzor ultrasonic drept
GPIO_ECHO3 = 35
MOTOR1B = 18 #Motor stâng
MOTOR1E = 22
MOTOR2B = 21 #Motor drept
MOTOR2E = 19
LED_PIN = 13 # Dacă găsește mingea, atunci va aprinde ledul
# Setați pinii ca ieșire și intrare
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) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Setați declanșatorul la False (Scăzut)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
ACEASTĂ FUNCȚIE UTILIZEAZĂ TOȚI SENZORII ULTRASONICI ADUNĂ DISTANȚA DE LA OBIECTELE DIN jurul BOTULUI NOSTRU
# Permiteți modulului să se stabilească
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Setați pinii ca ieșire și intrare GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Setați declanșatorul la False (Scăzut) GPIO.output (GPIO_TRIGGER, False) # Permite modulului să stabilească time.sleep (0.01) # while distance> 5: #Send 10us pulse to trigger GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. ieșire (GPIO_TRIGGER, False) begin = time.time () în timp ce GPIO.input (GPIO_ECHO) == 0 și time.time ()
COMUNICAREA MOTORILOR DC Pentru a lucra cu RASPBERRY PI
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINIREA FUNCȚIILOR PENTRU FUNCȚIONAREA ROBOTULUI ȘI FACEREA MISCĂRII ÎN DIRECȚII DIFERITE
def forward ():
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)
FUNCȚIONAREA MODULULUI CAMERĂ ȘI REGLAREA SETĂRILOR
#CAPERA CAPTURĂ
# inițializați camera și apucați o referință la camera de captare a camerei brute = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # permite camera până la timpul de încălzire. somn (0,001)
ACUM PUNEREA ÎN APLICARE PRINCIPALUL LUCRU ÎN CARE BOTUL URMĂREȘTE MINGEA ȘI EVITĂ ORICE OBSTACOL ÎN MOD
în timp ce (1 <10): {#distanța care vine de la distanța senzorului ultrasonic frontalC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distanța care vine de la distanța senzorului ultrasonic drept R = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distanța provine de la distanța senzorului ultrasonic stâng L = 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 distance L> = 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: #în caz contrar merge înainte înainte () time.sleep (0,00625) dacă (distanceC> 10): #it aduce coordonatele mingii la centrul axei imaginare a camerei. 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)
altceva:
#dacă întemeiază mingea și este prea aproape, aprinde ledul. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # ștergeți fluxul în pregătirea pentru următorul cadru}
FĂ CURĂȚILE NECESARE
GPIO.cleanup () #free toate pinii GPIO
Pasul 8: Legături externe
Link către videoclipul demonstrativ: faceți clic aici (Youtube)
Link către cod pe Git-hub: faceți clic aici (Git-Hub)
Recomandat:
ATtiny85 Urmărire și programare urmărire activități vibrante purtabile ATtiny85 cu Arduino Uno: 4 pași (cu imagini)
ATtiny85 Ceas și programare de urmărire a activității vibrante purtabile ATtiny85 Cu Arduino Uno: Cum să faci ceasul de urmărire a activității purtabil? Acesta este un gadget portabil conceput pentru a vibra atunci când detectează stagnarea. Îți petreci cea mai mare parte a timpului pe computer ca mine? Stai ore în șir fără să-ți dai seama? Atunci acest dispozitiv este f
Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)
Urmărire și urmărire pentru magazine mici: Acesta este un sistem creat pentru magazinele mici care se presupune că se montează pe biciclete electrice sau scutere electronice pentru livrări la distanță scurtă, de exemplu o brutărie care dorește să livreze produse de patiserie. Ce înseamnă urmărirea și urmărirea? Urmărirea și urmărirea este un sistem utilizat de ca
Detector de viteză a mingii de golf: 5 pași
Detector de viteză a mingii de golf: nu sunt jucător de golf, dar pot să joc din când în când. Am auzit că lovirea mingii mai departe se referă la viteza clubului și a mingii de golf, dar habar nu aveam cât de repede loveam. Am avut un senzor radar OmniPreSense de la Mouser și am descărcat o aplicație pe care au
Repararea mingii elicopterului: 6 pași
Repararea mingii elicopterului: Bună tuturor, aceasta este jucăria elicopterului fiului meu care nu a vrut să înceapă să se încarce. În acest Instructable, vom analiza pașii pe care i-am făcut pentru a investiga defecțiunea și cum am reușit să o remediez
Camera de urmărire a mingii la 180 °: 5 pași (cu imagini)
Camera de urmărire a mingii la 180 °: Bine ați venit la primul meu proiect! Sunt încântat să vă împărtășesc ceea ce am făcut și să vă arăt pașii pentru a vă construi propria cameră de urmărire. Acest proiect a fost posibil folosind biblioteca OpenCV împreună cu Python