Tartalomjegyzék:
- Kellékek
- 1. lépés: Bevezetés
- 2. lépés: A projektben használt anyagok és szerszámok
- 3. lépés: Mit kell tennie?
- 4. lépés: Sémák
- 5. lépés: Hogyan kell csinálni?
- 6. lépés: Ál-kód
- 7. lépés: Kód
- 8. lépés: Külső linkek
Videó: Labdakövető robot: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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
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
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
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
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:
Arduino - Labirintus megoldó robot (MicroMouse) Falkövető robot: 6 lépés (képekkel)
Arduino | Maze Solving Robot (MicroMouse) Falkövető robot: Üdvözlöm, Isaac vagyok, és ez az első robotom, a "Striker v1.0". Ezt a robotot egy egyszerű labirintus megoldására tervezték. A versenyen két labirintus és a robot volt képes volt azonosítani őket. A labirintusban bekövetkező egyéb változások miatt szükség lehet a
SMARS robot építése - Arduino Smart Robot Tank Bluetooth: 16 lépés (képekkel)
SMARS Robot építése - Arduino Smart Robot Tank Bluetooth: Ezt a cikket büszkén szponzorálja a PCBWAY. A PCBWAY kiváló minőségű prototípus -készítő PCB -ket készít a világ minden tájáról. Próbálja ki Ön is, és szerezzen 10 PCB -t mindössze 5 dollárért a PCBWAY -n, nagyon jó minőségben, köszönöm PCBWAY. A motorpajzs az Arduino Uno -hoz
PAPER HUNGRY ROBOT - Pringles Recycle Arduino Robot: 19 lépés (képekkel)
PAPER HUNGRY ROBOT - Pringles Recycle Arduino Robot: Ez a Hungry Robot egy másik változata, amelyet 2018 -ban építettem. Ezt a robotot 3D nyomtató nélkül is elkészítheti. Csak annyit kell tennie, hogy megvásárol egy doboz Pringles -t, egy szervo motort, egy közelségérzékelőt, egy arduino -t és néhány eszközt. Letöltheti az összes
Kiegyensúlyozó robot / 3 kerekes robot / STEM robot: 8 lépés
Kiegyensúlyozó robot / 3 kerekes robot / STEM robot: Kombinált kiegyensúlyozó és háromkerekű robotot építettünk az iskolákban és az iskolai oktatási programok oktatási célokra. A robot egy Arduino Uno -n, egyedi pajzson (minden konstrukciós részlet megadva), Li -ion akkumulátoron (minden
Labdakövető 180 ° -os kamera: 5 lépés (képekkel)
Labdakövető 180 ° -os kamera: Üdvözöllek az első projektemben! Örömmel osztom meg, amit készítettem, és megmutatom nektek a követőkamera létrehozásának lépéseit. Ez a projekt az OpenCV könyvtár és a Python együttes használatával valósult meg