Taula de continguts:
- Subministraments
- Pas 1: Introducció
- Pas 2: Materials i productes fets utilitzats en aquest projecte
- Pas 3: què cal fer?
- Pas 4: Esquemes
- Pas 5: Com fer-ho?
- Pas 6: pseudocodi
- Pas 7: Codi
- Pas 8: enllaços externs
Vídeo: Robot de seguiment de boles: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Així doncs, en això, explicaré com fer que un robot de seguiment de boles que sigui un robot identifiqui una bola i la segueixi. Bàsicament és una tècnica de vigilància automatitzada que es pot utilitzar al món modern. Per tant, deixeu-nos entrar i començar a construir …
NOTA: Aquesta és la tasca de la part presentada a la Universitat de Deakin, Facultat de TI, SIT-210 Desenvolupament de sistemes incrustats
Subministraments
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Pas 1: Introducció
La vigilància actual presenta un gran inconvenient: es basa en la implicació dels humans que, com tots sabem, es pot distreure fàcilment, de manera que era de la nostra màxima importància descobrir un sistema que pogués controlar les regions de forma autònoma i contínua. I també volem identificar coses i perills desagradables o no desitjats alhora de prendre decisions i respondre en conseqüència. Per tant, el seguiment d’objectes amb l’ús de sistemes i ordinadors intel·ligents és essencial i crucial per aconseguir una vigilància automatitzada.
Qualsevol sistema de vigilància exterior ha de ser capaç de rastrejar objectes que es mouen en el seu camp de visió, classificar aquests objectes i detectar algunes de les seves activitats. He desenvolupat un mètode per rastrejar i classificar aquests objectes en escenaris realistes. El seguiment d'objectes en una sola càmera es realitza mitjançant la resta de fons, seguit de la correspondència de regió. Això té en compte múltiples senyals, incloses les velocitats, mides i distàncies de les caixes delimitadores.
Pas 2: Materials i productes fets utilitzats en aquest projecte
Components de maquinari utilitzats:
- Raspberry Pi (x1)
- Mòdul de càmera Raspberry Pi (x1)
- Sensor d'ultrasons (x3)
- Controladors de motor SparkFun Dual H-Bridge L298 (x1)
- Motor CC (x1)
- Taula de pa (x1)
- Connexió de cables
Programari utilitzat:
OpenCV
Eines de mà:
Python
Pas 3: què cal fer?
Qualsevol sistema de vigilància exterior ha de ser capaç de rastrejar objectes que es mouen en el seu camp de visió, classificar aquests objectes i detectar algunes de les seves activitats. He desenvolupat un mètode per rastrejar i classificar aquests objectes en escenaris realistes. El seguiment d'objectes en una sola càmera es realitza mitjançant la resta de fons, seguit de la correspondència de regió. Això té en compte múltiples senyals, incloses les velocitats, mides i distàncies de les caixes delimitadores.
El que era crucial en detectar imatges fotograma per fotograma era evitar caigudes de fotogrames, ja que el bot pot entrar en un estat de limbo si el bot no nota la direcció del moviment de la pilota a causa de les caigudes de fotogrames. Si la bola surt del rang de la càmera, passarà al que anomenem un estat de limbo, en aquest cas, el bot fa un gir de 360 graus per veure l’espai que l’envolta fins que la bola torni al marc de la càmera i després començar a moure’s en la seva direcció.
Per a l’anàlisi d’imatges, estic agafant cada fotograma i emmascarant-lo amb el color necessari. Després trobo tots els contorns i en trobo el més gran i el vinculo en un rectangle. I mostreu el rectangle a la imatge principal i trobeu les coordenades del centre del rectangle.
Finalment, el robot intenta portar les coordenades de la pilota al centre del seu eix de coordenades. Així funciona el robot. Això es pot millorar encara més mitjançant l’ús d’un dispositiu IoT com una partícula de fotó que us permetrà informar-vos quan es detecta una cosa i que el robot la segueix o quan el robot ha perdut la pista i ara torna a la base..
A l’efecte del processament d’imatges, heu d’instal·lar el programari OpenCV al vostre raspberry pi, cosa que em va resultar bastant complicat.
Podeu obtenir tota la informació necessària per instal·lar OpenCV a través d’aquest enllaç: feu clic aquí
Pas 4: Esquemes
A la part superior he proporcionat els esquemes del meu projecte i juntament amb ell hi ha la placa de circuit imprès (PCB).
I aquí teniu algunes de les principals connexions que heu de fer:
• En primer lloc, el mòdul Raspberry Pi Camera està connectat directament al Raspberry Pi.
• Els sensors ultrasònics VCC estan connectats al terminal comú amb el GND (terra) i els dos ports restants del sensor ultrasònic es connecten als pins GPIO del Raspberry Pi.
• Els motors es connecten mitjançant el pont H.
• L'alimentació es subministra mitjançant la bateria.
També he afegit el vídeo que us pot ajudar a entendre el funcionament del sensor d'ultrasons i el seu funcionament.
i també podeu seguir aquest enllaç si no trobeu el vídeo anterior.
Pas 5: Com fer-ho?
Vaig fer aquest projecte representant un robot bàsic que pot rastrejar una pilota. El robot utilitza una càmera per processar la imatge agafant fotogrames i rastrejant la pilota. Per fer un seguiment de la pilota s’utilitzen diverses funcions com el seu color, mida, forma.
El robot troba un color codificat i després busca la bola d’aquest color i la segueix. He escollit Raspberry Pi com a microcontrolador en aquest projecte perquè ens permet utilitzar el mòdul de la càmera i proporciona una gran flexibilitat en el codi, ja que utilitza un llenguatge Python molt fàcil d’utilitzar i també ens permet utilitzar la biblioteca OpenCV per analitzar les imatges.
S'ha utilitzat un pont H per canviar el sentit de rotació dels motors o per aturar-los.
Per a l’anàlisi d’imatges, estic agafant cada fotograma i emmascarant-lo amb el color necessari. Després trobo tots els contorns i en trobo el més gran i el vinculo en un rectangle. I mostreu el rectangle a la imatge principal i trobeu les coordenades del centre del rectangle.
Finalment, el robot intenta portar les coordenades de la pilota al centre del seu eix de coordenades. Així funciona el robot. Això es pot millorar encara més mitjançant l’ús d’un dispositiu IoT com una partícula de fotó que us permetrà informar-vos quan es detecta una cosa i que el robot la segueix o quan el robot ha perdut la pista i ara torna a la base.. Per fer-ho, utilitzarem una plataforma de programari en línia que connecta els dispositius i els permet realitzar certes accions en activadors específics que són els activadors IFTTT.
Pas 6: pseudocodi
Aquí teniu el pseudocodi de la part de detecció mitjançant OpenCV, on detectem una bola.
Pas 7: Codi
A la part superior es mostren els fragments del codi i, a continuació, la descripció detallada del codi.
# importeu els paquets necessaris
IMPORTEM TOTS ELS PAQUETS NECESSARIS
des de picamera.array importació PiRGBArray # Com que hi ha un problema de resolució al raspberry pi, VideoCapture no podrà capturar fotogrames.
d'importació de càmeres d'importació PiCamera d'importació RPi. GPIO com a importació de temps d'importació GPIO numpy com np
ARA CONFIGUREM EL HARDWARE I ASSIGNEM ELS PINS CONNECTATS AL RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Sensor d'ultrasons esquerre
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 # Sensor d'ultrasons frontal
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Sensor d'ultrasons dret
GPIO_ECHO3 = 35
MOTOR1B = 18 #Motor esquerre
MOTOR1E = 22
MOTOR2B = 21 # Motor dret
MOTOR2E = 19
LED_PIN = 13 #Si troba la pilota, encendrà el led
# Estableix els pins com a sortida i entrada
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_ECHO2, GPIO. IN) GPIO_TRIGGER3, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Estableix el disparador a Fals (Baix)
GPIO.output (GPIO_TRIGGER1, fals) GPIO.output (GPIO_TRIGGER2, fals) GPIO.output (GPIO_TRIGGER3, fals)
AQUESTA FUNCIÓ EMPLETA TOTS ELS SENSORS ULTRASONICS QUE RECOLLEN LA DISTÀNCIA DELS OBJECTES AL VOLTANT DEL NOSTRE BOT
# Permetre que el mòdul es resolgui
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Estableix els pins com a sortida i entrada GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Estableix el disparador a Fals (Baixa) GPIO.output (GPIO_TRIGGER, fals) # Permetre que el mòdul resolgui time.sleep (0.01) # while distance> 5: #Envia un impuls de 10us per activar GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. sortida (GPIO_TRIGGER, fals) begin = time.time () mentre GPIO.input (GPIO_ECHO) == 0 i time.time ()
COM FER TREBALLAR ELS MOTORS DC AMB LA PI FRASSA
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINICIÓ DE FUNCIONS PER FUNCIONAR EL ROBOT I FER-LO MOURE EN DIFERENTS DIRECCIONS
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)
FENT FUNCIONAR EL MUDUL DE CÀMERA I AJUSTANT LA CONFIGURACIÓ
#CÀMERA CAPTURA
#inicialitzar la càmera i agafar una referència a la càmera de captura de càmera bruta = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # permetre la càmera fins a temps d’escalfament.sleep (0,001)
ARA IMPLANTANT EL PRINCIPAL ON EL BOT SEGUEIX LA PILOTA I EVITI QUALSEVOL OBSTACLE DE LA MANERA
mentre que (1 <10): {#distància del sensor d'ultrasons davanter distància C = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distància del sensor d'ultrasons dret R = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distància del sensor d'ultrasons esquerreL = 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: #en cas contrari avança cap endavant () time.sleep (0,00625) si (distanceC> 10): #it porta les coordenades de la bola al centre de l'eix imaginari de la càmera. 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)
en cas contrari:
#si funda la pilota i està massa a prop il·lumina el led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # neteja el flux en preparació per a la fotograma següent}
FER LES NETEJES NECESSÀRIES
GPIO.cleanup () #free tots els pins GPIO
Pas 8: enllaços externs
Enllaç al vídeo de demostració: feu clic aquí (Youtube)
Enllaç al codi de Git-hub: feu clic aquí (Git-Hub)
Recomanat:
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: 8 passos
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
Seguiment i seguiment de botigues petites: 9 passos (amb imatges)
Track & trace per a botigues petites: es tracta d’un sistema dissenyat per a petites botigues que se suposa que es munta en bicicletes elèctriques o patinets electrònics per a lliuraments a curt abast, per exemple, una fleca que vulgui lliurar pastes. Què significa Track and Trace? Track and trace és un sistema utilitzat per ca
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment fotosensible del cotxe: 7 passos
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment del cotxe fotosensible: dissenyat per SINONING ROBOT Podeu comprar amb el robot de seguiment El xip LM393 compara els dos fotoresistors, quan hi ha un LED de fotoresistència lateral en BLANC, el costat del motor s'aturarà immediatament, l'altre costat del motor girar, de manera que
Boles de boles brillants de bricolatge amb Arduino: 8 passos (amb imatges)
Boles de boles brillants de bricolatge amb Arduino: Hola nois :-) En aquest instructiu vaig a construir un increïble projecte Arduino LED. He utilitzat boles de drac fetes de vidre, enganxo un LED blanc amb cada bola de drac i he programat l'Arduino amb diferents patró com l'efecte respiratori, apilat per c
Seguiment de boles Càmera de 180 °: 5 passos (amb imatges)
Ball Tracking 180 ° Camera: Benvingut al meu primer projecte. Em fa il·lusió compartir el que he fet i mostrar-vos els passos per construir la vostra pròpia càmera de seguiment. Aquest projecte va ser possible mitjançant la biblioteca OpenCV juntament amb Python