Tartalomjegyzék:

Labdakövető robot: 8 lépés
Labdakövető robot: 8 lépés

Videó: Labdakövető robot: 8 lépés

Videó: Labdakövető robot: 8 lépés
Videó: Praktiker-Vác – DVSC SCHAEFFLER | női Magyar Kupa | 4. forduló 2024, Július
Anonim
Labdakövető robot
Labdakövető robot
Labdakövető robot
Labdakövető robot
Labdakövető robot
Labdakövető robot

Tehát ebben azt fogom elmondani, hogyan lehet egy golyókövető robotot létrehozni, amely egy robot, amely azonosítja a labdát, és követi azt. Ez alapvetően egy automatizált megfigyelési technika, amely a modern világban is használható. Szóval csak ugorjunk be és kezdjük el építeni…

MEGJEGYZÉS: Ez a részfeladat a Deakin Egyetemen, a SIT-210 Embedded Systems Development SIT-210 informatikai iskolájában került benyújtásra

Kellékek

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

1. lépés: Bevezetés

Bevezetés
Bevezetés

A mai felügyelet jelentős hátrányt jelent, amely az emberek bevonásán nyugszik, amelyekről mindannyian tudjuk, hogy könnyen elterelik a figyelmüket, ezért rendkívül fontos volt olyan rendszer felfedezése, amely képes önállóan és folyamatosan figyelni a régiókat. Emellett szeretnénk azonosítani a kellemetlen vagy nemkívánatos dolgokat és veszélyeket, miközben egyidejűleg döntéseket hozunk, és ennek megfelelően reagálunk. Tehát az objektumkövetés intelligens rendszerek és számítógépek használatával alapvető és alapvető fontosságú az automatizált felügyelet eléréséhez.

Bármely kültéri megfigyelőrendszernek képesnek kell lennie a látómezőjében mozgó tárgyak nyomon követésére, ezek osztályozására és egyes tevékenységeik észlelésére. Kidolgoztam egy módszert ezeknek az objektumoknak a reális forgatókönyvekben történő követésére és osztályozására. Az objektumkövetés egyetlen kamerában a háttér kivonásával történik, majd a régió megfelelés következik. Ez több jelzést is figyelembe vesz, beleértve a határoló dobozok sebességét, méretét és távolságát.

2. lépés: A projektben használt anyagok és szerszámok

A projektben felhasznált anyagok és szerszámok
A projektben felhasznált anyagok és szerszámok
A projektben felhasznált anyagok és szerszámok
A projektben felhasznált anyagok és szerszámok
A projektben felhasznált anyagok és szerszámok
A projektben felhasznált anyagok és szerszámok

Használt hardverkomponensek:

  • Raspberry Pi (x1)
  • Raspberry Pi kamera modul (x1)
  • Ultrahangos érzékelő (x3)
  • SparkFun Dual H-Bridge motorvezérlők L298 (x1)
  • DC motor (x1)
  • Breadboard (x1)
  • Vezetékek csatlakoztatása

Felhasznált szoftver:

OpenCV

Kézi szerszámok:

Piton

3. lépés: Mit kell tennie?

Bármely kültéri megfigyelőrendszernek képesnek kell lennie a látómezőjében mozgó tárgyak nyomon követésére, ezek osztályozására és egyes tevékenységeik észlelésére. Kidolgoztam egy módszert ezeknek az objektumoknak a reális forgatókönyvekben történő követésére és osztályozására. Az objektumkövetés egyetlen kamerában a háttér kivonásával történik, majd a régió megfelelés következik. Ez több jelzést is figyelembe vesz, beleértve a határoló dobozok sebességét, méretét és távolságát.

A képkockánként történő észlelés során kulcsfontosságú volt, hogy elkerüljük a képkocka -leeséseket, mivel akkor a bot limbó állapotba kerülhet, ha a bot nem veszi észre a labda mozgási irányát a keretesések miatt. Ha a labda kimegy a kamera hatótávolságából, akkor úgynevezett limbo állapotba kerül, ebben az esetben a bot 360 fokos fordulatot tesz, hogy megnézze a körülötte lévő teret, amíg a labda vissza nem kerül a keretbe. a fényképezőgépet, majd induljon el az irányába.

A képelemzéshez minden keretet veszek, majd a szükséges színnel maszkolom. Aztán megtalálom az összes kontúrt, és megtalálom közülük a legnagyobbat, és téglalapba kötöm. És mutasd meg a téglalapot a fő képen, és keresd meg a téglalap középpontjának koordinátáit.

Végül a bot megpróbálja a labda koordinátáit a koordináta tengelye középpontjába hozni. A robot így működik. Ezt tovább lehet javítani olyan IoT -eszköz használatával, mint egy fotonrészecske, amely tájékoztatást adhat arról, ha valamit észlelnek, és hogy a robot követi, vagy amikor a robot elvesztette nyomát, és most visszatér a bázisra.

A képfeldolgozás érdekében telepítenie kell az OpenCV szoftvert a málna pi -jére, ami számomra meglehetősen trükkös volt.

Az OpenCV telepítéséhez szükséges információkat ezen a linken keresztül kaphatja meg: kattintson ide

4. lépés: Sémák

Image
Image
Vázlatok
Vázlatok
Vázlatok
Vázlatok

Fentebb megadtam a projektem vázlatait, és ezzel együtt a nyomtatott áramköri lapot (PCB).

És itt van néhány fő kapcsolat, amelyet meg kell tennie:

• Először is, a Raspberry Pi Camera modul közvetlenül csatlakozik a Raspberry Pi -hez.

• A VCC ultrahangos érzékelők a GND -vel (földelés) közös terminálhoz vannak csatlakoztatva, és az ultrahangos érzékelő fennmaradó két portja a Raspberry Pi GPIO -csapjaihoz van csatlakoztatva.

• A motorok csatlakoztatása a H-híddal történik.

• Az áramellátást az akkumulátor biztosítja.

Hozzáadtam azt a videót is, amely segíthet az ultrahangos érzékelő működésének és működésének megértésében.

és ezt a linket is követheti, ha nem találja a fenti videót.

5. lépés: Hogyan kell csinálni?

Ezt a projektet egy alaprobotot ábrázoltam, amely képes követni a labdát. A robot kamerát használ a képfeldolgozáshoz, kereteket vesz és követi a labdát. A labda nyomon követésére különféle jellemzőket használnak, mint a színe, mérete, alakja.

A Robot talál egy kódolt színt, majd megkeresi az ilyen színű labdát, és követi azt. A Raspberry Pi-t választottam mikrovezérlőnek ebben a projektben, mert lehetővé teszi a kamera modul használatát, és nagy rugalmasságot biztosít a kódolásban, mivel nagyon felhasználóbarát python nyelvet használ, és lehetővé teszi az OpenCV könyvtár használatát is a képek elemzéséhez.

H-hidat használtak a motorok forgásirányának megváltoztatására vagy leállítására.

A képelemzéshez minden keretet veszek, majd a szükséges színnel maszkolom. Aztán megtalálom az összes kontúrt, és megtalálom közülük a legnagyobbat, és téglalapba kötöm. És mutasd meg a téglalapot a fő képen, és keresd meg a téglalap középpontjának koordinátáit.

Végül a bot megpróbálja a labda koordinátáit a koordináta tengelye középpontjába hozni. A robot így működik. Ez tovább fokozható olyan IoT -eszköz használatával, mint egy fotonrészecske, amely tájékoztatást adhat arról, ha valamit észlelnek, és hogy a robot követi, vagy amikor a robot elvesztette nyomát, és most visszatér a bázisra. Ehhez egy online szoftverplatformot fogunk használni, amely összeköti az eszközöket, és lehetővé teszi számukra, hogy bizonyos műveleteket hajtsanak végre bizonyos triggereken, azaz IFTTT -triggereken.

6. lépés: Ál-kód

Ál-kód
Ál-kód

Itt található az OpenCV-t használó észlelési rész pszeudokódja, ahol golyót észlelünk.

7. lépés: Kód

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

Fent a kódrészletek, alul pedig a kód részletes leírása.

# importálja a szükséges csomagokat

MINDEN SZÜKSÉGES CSOMAGOT IMPORTÁLUNK

a picamera.array -ből

a Picamera importálásból PiCamera import RPi. GPIO mint GPIO import idő importálás numpy np -ként

MOST HASZNÁLJUK fel a hardvert, és rendeljük hozzá a RASPBERRY PI -hez csatlakoztatott PIN -kódokat

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Bal oldali ultrahangos érzékelő

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Elülső ultrahangos érzékelő

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Jobb ultrahangos érzékelő

GPIO_ECHO3 = 35

MOTOR1B = 18 #Bal motor

MOTOR1E = 22

MOTOR2B = 21 #Jobb motor

MOTOR2E = 19

LED_PIN = 13 #Ha megtalálja a labdát, akkor világít a led

# Állítsa be a csapokat kimenetként és bemenetként

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Aktiválja a GPIO.setup -ot (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Aktiválja a GPIO.setup -ot (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Aktiválja a GPIO.setup -ot (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Állítsa a triggert hamisra (alacsony)

GPIO. kimenet (GPIO_TRIGGER1, hamis) GPIO. kimenet (GPIO_TRIGGER2, hamis) GPIO. kimenet (GPIO_TRIGGER3, hamis)

EZ A FUNKCIÓ AZ ÖSSZES ULTRAZONIKUS ÉRZÉKELŐT HASZNÁLJA, HOGY BETARTJA A TÁVOLSÁGOT A BOTUNK KÖZÖTT

# Hagyja, hogy a modul leülepedjen

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # A csapok beállítása kimenetként és bemenetként GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # A trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Az trigger beállítása hamis (Alacsony) GPIO.output (GPIO_TRIGGER, False) #Hagyja, hogy a modul leállítsa az időt. Elalvás (0.01) #közben távolság> 5: #10us impulzus küldése a GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO aktiválásához. output (GPIO_TRIGGER, False) begin = time.time () míg GPIO.input (GPIO_ECHO) == 0 és time.time ()

A DC MOTOROK MŰKÖDTETÉSE A MÁRKA PI -vel

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

FUNKCIÓK MEGHATÁROZÁSA A ROBOT MŰKÖDTETÉSÉHEZ ÉS MÓDOSÍTÁSÁRA KÜLÖNBÖZŐ IRÁNYOKBAN

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.kimenet (MOTOR2B, GPIO. LOW) GPIO.kimenet (MOTOR2E, GPIO. HIGH)

def stop ():

GPIO.kimenet (MOTOR1E, GPIO. LOW) GPIO.kimenet (MOTOR1B, GPIO. LOW) GPIO.kimenet (MOTOR2E, GPIO. LOW) GPIO.kimenet (MOTOR2B, GPIO. LOW)

A KAMERA MODUL MŰKÖDÉSE ÉS A BEÁLLÍTÁSOK BEÁLLÍTÁSA

#KAMERA FELVÉTEL

# inicializálja a kamerát, és vigyen egy hivatkozást a nyers kamera rögzítő kamerára = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, méret = (160, 120)) # engedélyezze a kamerát bemelegedési időig. alvás (0.001)

MOST VÉGREHAJTÁSA A FŐ DOLGOT, AHOL A BOT KÖVETI A BALLOT, ÉS ELKERÜL MINDEN GYAKORLATOT

míg (1 <10): {#távolság az ultrahangos szenzor elől, GPIO_ECHO1) ha (távolság C = 8: jobbra fordulás () time.sleep (0.00625) stop () time.sleep (0.0125) előre () 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: #különben előre halad () time.sleep (0.00625), ha (távolságC> 10): #a labda koordinátáit a kamera képzeletbeli tengelyének középpontjába hozza. 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)

más:

#Ha megtalálja a labdát, és túl közel van, akkor világít a led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # törölje az adatfolyamot a következő kép}

Végezze el a szükséges tisztításokat

GPIO.cleanup () #mentes az összes GPIO csap

8. lépés: Külső linkek

Link a bemutató videóhoz: kattintson ide (Youtube)

Link a Git-hub kódjához: kattintson ide (Git-Hub)

Ajánlott: