Obsah:
- Zásoby
- Krok 1: Úvod
- Krok 2: Materiály a mäkký tovar použité v tomto projekte
- Krok 3: Čo robiť?
- Krok 4: Schémy
- Krok 5: Ako postupovať?
- Krok 6: Pseudokód
- Krok 7: Kód
- Krok 8: Externé odkazy
Video: Robot na sledovanie loptičiek: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
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
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
Tu je pseudokód pre detekčnú časť pomocou OpenCV, kde detegujeme guľu.
Krok 7: 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:
FLEXBALL - sto pixelových flexibilných PCB loptičiek s WiFi: 6 krokov (s obrázkami)
FLEXBALL - sto pixelových flexibilných PCB loptičiek s WiFi: Dobrý deň, tvorcovia, je to výrobca moekoe! Flexball je založený na flexibilnom PCB, ktorý je vybavený 100 adresovateľnými LED diódami WS2812 2020. Ovláda ho ESP8285-01f - najmenší modul na báze ESP od spoločnosti Espressif. Navyše má akcelerometr ADXL345
Pingo: Spúšťač loptičiek Ping Pong s detekciou pohybu a vysokou presnosťou: 8 krokov
Pingo: Spúšťač loptičiek Ping Pong s detekciou pohybu a vysokou presnosťou: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
ATtiny85 Nositeľné zariadenie na sledovanie vibrácií, sledovanie a programovanie ATtiny85 s Arduino Uno: 4 kroky (s obrázkami)
ATtiny85 Nositeľné hodinky na sledovanie vibrácií a programovanie ATtiny85 s Arduino Uno: Ako vyrobiť hodinky na sledovanie nositeľnej aktivity? Toto je nositeľný gadget navrhnutý tak, aby vibroval, keď zistí stagnáciu. Trávite väčšinu času pri počítači ako ja? Sedíte hodiny bez toho, aby ste si to uvedomovali? Potom je toto zariadenie
Sledovanie a sledovanie malých obchodov: 9 krokov (s obrázkami)
Track & trace pre malé obchody: Jedná sa o systém, ktorý je vytvorený pre malé obchody a ktorý sa má montovať na e-bicykle alebo e-skútre pri dodávkach na krátku vzdialenosť, napríklad v pekárni, ktorá chce dodávať pečivo. Čo znamená Track and Trace? Track and Trace je systém, ktorý používa približne
Inatel - SmartHome - SH2Y - Sledovanie systému a sledovanie okolitého prostredia: 6 krokov
Inatel - SmartHome - SH2Y - Sledovanie systému a okolité prostredie: Zobrazenie monitora a systém monitora a systému Ambiente " para Smart Homes, intuitívne monitorujúce aktuálny stav a teplotu "Temperatura", "Luminosidade" e " Senzor