Obsah:

Robot na sledovanie loptičiek: 8 krokov
Robot na sledovanie loptičiek: 8 krokov

Video: Robot na sledovanie loptičiek: 8 krokov

Video: Robot na sledovanie loptičiek: 8 krokov
Video: Камера-ЛАМПА со слежением и определением человека. 2024, November
Anonim
Robot na sledovanie loptičiek
Robot na sledovanie loptičiek
Robot na sledovanie loptičiek
Robot na sledovanie loptičiek
Robot na sledovanie loptičiek
Robot na sledovanie loptičiek

V tomto vám teda poviem, ako vyrobiť robota na sledovanie loptičiek, ktorý je robotom, ktorý identifikuje loptu a nasleduje ju. V zásade ide o automatizovanú techniku sledovania, ktorú je možné použiť v modernom svete. Vložme sa teda do toho a začnime stavať …

POZNÁMKA: Toto je zadanie časti predložené Deakin University, School of IT, SIT-210 Embedded Systems Development

Zásoby

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Krok 1: Úvod

Úvod
Úvod

Dnešné sledovanie predstavuje zásadnú nevýhodu, ktorou je, že spočíva v zapojení ľudí, ktoré, ako všetci vieme, je možné ľahko rozptýliť, a preto bolo nanajvýš dôležité objaviť systém, ktorý dokáže autonómne a nepretržite monitorovať regióny. A tiež chceme identifikovať nepríjemné alebo nechcené veci a nebezpečenstvá a súčasne prijímať rozhodnutia a podľa toho reagovať. Sledovanie objektov s využitím inteligentných systémov a počítačov je teda nevyhnutné a nevyhnutné na dosiahnutie automatizovaného sledovania.

Každý vonkajší monitorovací systém musí byť schopný sledovať objekty pohybujúce sa v jeho zornom poli, klasifikovať tieto objekty a detegovať niektoré z ich činností. Vyvinul som metódu na sledovanie a klasifikáciu týchto objektov v realistických scenároch. Sledovanie objektu v jednej kamere sa vykonáva pomocou odčítania pozadia, po ktorom nasleduje korešpondencia regiónu. Toto berie do úvahy viacero narážok vrátane rýchlostí, veľkostí a vzdialeností ohraničujúcich políčok.

Krok 2: Materiály a mäkký tovar použité v tomto projekte

Materiály a mäkký tovar použité v tomto projekte
Materiály a mäkký tovar použité v tomto projekte
Materiály a mäkký tovar použité v tomto projekte
Materiály a mäkký tovar použité v tomto projekte
Materiály a mäkký tovar použité v tomto projekte
Materiály a mäkký tovar použité v tomto projekte

Použité hardvérové komponenty:

  • Raspberry Pi (x1)
  • Modul kamery Raspberry Pi (x1)
  • Ultrazvukový senzor (x3)
  • Ovládače motora SparkFun Dual H-Bridge L298 (x1)
  • DC motor (x1)
  • Breadboard (x1)
  • Pripojovacie vodiče

Použitý softvér:

OpenCV

Ručné nástroje:

Python

Krok 3: Čo robiť?

Každý vonkajší monitorovací systém musí byť schopný sledovať objekty pohybujúce sa v jeho zornom poli, klasifikovať tieto objekty a detegovať niektoré z ich činností. Vyvinul som metódu na sledovanie a klasifikáciu týchto objektov v realistických scenároch. Sledovanie objektu v jednej kamere sa vykonáva pomocou odčítania pozadia, po ktorom nasleduje korešpondencia regiónu. Toto berie do úvahy viacero narážok vrátane rýchlostí, veľkostí a vzdialeností ohraničujúcich políčok.

Pri detekcii snímok po snímke bolo dôležité zabrániť akýmkoľvek pádom snímok, pretože potom sa robot môže dostať do limbu, ak si robot nevšimne smer pohybu lopty kvôli pádom rámca. Ak sa loptička dostane mimo dosah kamery, prejde do stavu, ktorému hovoríme limbo. V takom prípade sa robot otočí o 360 stupňov, aby zobrazil priestor okolo seba, kým sa lopta nevráti do rámca fotoaparát a potom sa začnite pohybovať jeho smerom.

Na analýzu obrazu vezmem každý rám a potom ho zamaskujem potrebnou farbou. Potom nájdem všetky obrysy a nájdem medzi nimi najväčšie a zviazam ho do obdĺžnika. Ukážte obdĺžnik na hlavnom obrázku a nájdite súradnice stredu obdĺžnika.

Nakoniec sa robot pokúša preniesť súradnice lopty do stredu svojej súradnicovej osi. Takto funguje robot. Toto je možné ešte vylepšiť použitím zariadenia IoT, ako je fotónová častica, ktoré vám umožní byť informovaný, keď je nejaká vec detekovaná a že ju robot nasleduje alebo keď robot stratil prehľad a teraz sa vracia na základňu.

Na účely spracovania obrazu musíte do svojho malinového pi nainštalovať softvér OpenCV, čo bolo pre mňa dosť náročné.

Prostredníctvom tohto odkazu môžete získať všetky požadované informácie na inštaláciu OpenCV: kliknite sem

Krok 4: Schémy

Image
Image
Schémy
Schémy
Schémy
Schémy

Vyššie som poskytol schémy pre svoj projekt a spolu s nimi je doska plošných spojov (PCB).

A tu sú niektoré z hlavných spojení, ktoré musíte urobiť:

• V prvom rade je modul Raspberry Pi Camera priamo pripojený k Raspberry Pi.

• Ultrazvukové snímače VCC sú pripojené k spoločnému terminálu rovnako ako GND (uzemnenie) a zvyšné dva porty ultrazvukového senzora sú pripojené k pinom GPIO na Raspberry Pi.

• Motory sú spojené pomocou mostíka H.

• Napájanie sa dodáva z batérie.

Tiež som pridal video, ktoré by mohlo pomôcť porozumieť fungovaniu ultrazvukového senzora a jeho fungovaniu.

a tiež môžete sledovať tento odkaz, ak nemôžete nájsť vyššie uvedené video.

Krok 5: Ako postupovať?

Tento projekt som urobil zobrazením základného robota, ktorý dokáže sledovať loptu. Robot používa kameru na spracovanie obrazu tým, že sníma snímky a sleduje loptu. Na sledovanie lopty sa používajú rôzne funkcie, ako je farba, veľkosť, tvar.

Robot nájde naprogramovanú farbu a potom vyhľadá guľu tejto farby a nasleduje ju. V tomto projekte som si vybral Raspberry Pi ako mikro-ovládač, pretože nám umožňuje používať jeho kamerový modul a poskytuje veľkú flexibilitu v kóde, pretože používa jazyk python, ktorý je veľmi užívateľsky prívetivý a taktiež nám umožňuje používať knižnicu OpenCV na analýzu obrázkov.

Na prepínanie smeru otáčania motorov alebo ich zastavenie bol použitý mostík H.

Na analýzu obrazu vezmem každý rám a potom ho zamaskujem potrebnou farbou. Potom nájdem všetky obrysy a nájdem medzi nimi najväčšie a zviazam ho do obdĺžnika. Ukážte obdĺžnik na hlavnom obrázku a nájdite súradnice stredu obdĺžnika.

Nakoniec sa robot pokúša preniesť súradnice lopty do stredu svojej súradnicovej osi. Takto funguje robot. Toto je možné ešte vylepšiť použitím zariadenia IoT, ako je fotónová častica, ktoré vám umožní byť informovaný, keď je nejaká vec detekovaná a že ju robot nasleduje alebo keď robot stratil prehľad a teraz sa vracia na základňu. Na to použijeme online softvérovú platformu, ktorá prepojí zariadenia a umožní im vykonávať určité akcie s konkrétnymi spúšťačmi, ktoré sú spúšťačmi IFTTT.

Krok 6: Pseudokód

Pseudokód
Pseudokód

Tu je pseudokód pre detekčnú časť pomocou OpenCV, kde detegujeme guľu.

Krok 7: Kód

Kód
Kód
Kód
Kód
Kód
Kód
Kód
Kód

Hore sú útržky kódu a nižšie je podrobný popis kódu.

# importujte potrebné balíky

DOVOZUJEME VŠETKY POTREBNÉ BALÍČKY

z picamera.array import PiRGBArray #Pretože v malinovom pi existuje problém s rozlíšením, nebude schopný zachytávať snímky pomocou VideoCapture

z picamery import PiCamera import RPi. GPIO ako GPIO čas importu import numpy as np

Teraz nastavujeme hardvér a prideľujeme PINY PRIPOJENÉ NA RASPBERRY PI

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Ľavý ultrazvukový senzor

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Predný ultrazvukový senzor

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Správny ultrazvukový senzor

GPIO_ECHO3 = 35

MOTOR1B = 18 #Ľavý motor

MOTOR1E = 22

MOTOR2B = 21 #Pravý motor

MOTOR2E = 19

LED_PIN = 13 #Ak nájde loptičku, rozsvieti LEDku

# Nastavte kolíky ako výstup a vstup

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) # Spúšťač GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Nastavte spúšťač na hodnotu False (Nízka)

GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)

TÁTO FUNKCIA POUŽÍVA VŠETKY ULTRAZVUKOVÉ SNÍMAČE ZBERA VZDIALENOSŤ OD OBJEKTOV OKOLO NÁŠHO BOTU

# Nechajte modul usadiť sa

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Nastaviť piny ako výstup a vstup GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Nastaviť spúšť na False (Nízka) GPIO.output (GPIO_TRIGGER, False) #Povoliť modulu vyrovnať time.sleep (0,01) #zatiaľ vzdialenosť> 5: #Odoslať 10us impulz na spustenie GPIO.output (GPIO_TRIGGER, True) time.sleep (0,00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time () while GPIO.input (GPIO_ECHO) == 0 and time.time ()

ZÍSKANIE MOTOROV DC NA PRÁCU S RASPBERRY PI

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)

DEFINÍCIE FUNKCIÍ NA PREVÁDZKU ROBOTA A PREVÁDZANIE ROBOTU V INÝCH SMERÁCH

def dopredu ():

Výstup GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW), 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)

ZOSTAVENIE FUNKCIE KAMEROVÉHO MODULU A ÚPRAVA NASTAVENÍ

#CAMERA CAPTURE

#inicializujte fotoaparát a získajte odkaz na surovú kameru na zachytávanie kamery = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, veľkosť = (160, 120)) # povoľte kameru na zahriatie. spánok (0,001)

TERAZ IMPLEMENTÁCIA HLAVNEJ VECI, KDE BOT PO PLATBE PLÁVA A VYHNUTÍM SA V PRÍPADE AKÉKOLI PREKÁŽKY

while (1 <10): {#distance coming from front ultrasonic sensor distanceC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distance coming from right ultrasonic sensor distanceR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distance coming from left ultrasonic sensor distanceL = 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) doprava (). Time.sleep (0,00625) stop () time.sleep (0,0125) else: stop () time.sleep (0,01) else: #inak sa to posunie dopredu () time.sleep (0,00625) ak (vzdialenosťC> 10): #prináša súradnice lopty do stredu imaginárnej osi kamery. if (center_x = 20): if (center_x0): flag = 1 leftturn () time.sleep (0,025) forward () time.sleep (0.00003125) stop () time.sleep (0,00625) else: stop () time.sleep (0,01)

inak:

#Ak nájde loptu a je príliš blízko, rozsvieti LEDku. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0,1) stop () time.sleep (0,1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # clear the stream in preparation for the nasledujúci rámec}

VYKONAJTE POTREBNÉ ČISTENIE

GPIO.cleanup () #uvoľnite všetky piny GPIO

Krok 8: Externé odkazy

Odkaz na ukážkové video: kliknite sem (Youtube)

Odkaz na kód v Git-hub: kliknite sem (Git-Hub)

Odporúča: