Obsah:
- Zásoby
- Krok 1: Úvod
- Krok 2: Materiály a měkké zboží použité v tomto projektu
- Krok 3: Co dělat?
- Krok 4: Schémata
- Krok 5: Jak postupovat?
- Krok 6: Pseudokód
- Krok 7: Kód
- Krok 8: Externí odkazy
Video: Robot pro sledování míčů: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
V tomto tedy řeknu, jak vyrobit robota pro sledování míčků, který je robotem, který identifikuje míč a následuje ho. Je to v podstatě automatická sledovací technika, kterou lze použít v moderním světě. Pojďme tedy jen naskočit a začít stavět…
POZNÁMKA: Toto zadání části bylo odesláno na 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í sledování přináší velkou nevýhodu, kterou je skutečnost, že spočívá na zapojení lidí, které, jak všichni víme, lze snadno rozptýlit, a proto bylo nanejvýš důležité objevit systém, který dokáže regiony monitorovat autonomně a nepřetržitě. A také chceme identifikovat nepříjemné nebo nechtěné věci a nebezpečí a současně se rozhodovat a podle toho reagovat. Sledování objektů pomocí inteligentních systémů a počítačů je tedy zásadní a zásadní pro dosažení automatizovaného sledování.
Každý venkovní monitorovací systém musí být schopen sledovat objekty pohybující se v jeho zorném poli, klasifikovat tyto objekty a detekovat některé z jejich činností. Vyvinul jsem metodu pro sledování a klasifikaci těchto objektů v realistických scénářích. Sledování objektu v jedné kameře se provádí pomocí odčítání na pozadí, po němž následuje korespondence s regiony. To bere v úvahu více podnětů včetně rychlostí, velikostí a vzdáleností ohraničujících rámečků.
Krok 2: Materiály a měkké zboží použité v tomto projektu
Použité hardwarové komponenty:
- Raspberry Pi (x1)
- Modul kamery Raspberry Pi (x1)
- Ultrazvukový senzor (x3)
- Ovladače motoru SparkFun Dual H-Bridge L298 (x1)
- DC motor (x1)
- Breadboard (x1)
- Propojovací dráty
Použitý software:
OpenCV
Ruční nářadí:
Krajta
Krok 3: Co dělat?
Každý venkovní monitorovací systém musí být schopen sledovat objekty pohybující se v jeho zorném poli, klasifikovat tyto objekty a detekovat některé z jejich činností. Vyvinul jsem metodu pro sledování a klasifikaci těchto objektů v realistických scénářích. Sledování objektu v jedné kameře se provádí pomocí odčítání na pozadí, po němž následuje korespondence s regiony. To bere v úvahu více podnětů včetně rychlostí, velikostí a vzdáleností ohraničujících rámečků.
Zásadní věcí při detekci obrázků snímek po snímku bylo vyhnout se jakýmkoli pádům snímků, protože pak se robot může dostat do limbu, pokud si robot nevšimne směru pohybu míče kvůli pádům snímků. Pokud se míček dostane mimo dosah kamery, přejde do stavu, kterému říkáme limbo, v takovém případě se robot otočí o 360 stupňů, aby prohlédl prostor kolem sebe, dokud se míč nevrátí zpět do rámečku kameru a poté se začněte pohybovat jejím směrem.
Pro analýzu obrazu beru každý snímek a poté jej maskuji potřebnou barvou. Poté najdu všechny obrysy a najdu mezi nimi největší a svázané do obdélníku. A ukažte obdélník na hlavním obrázku a najděte souřadnice středu obdélníku.
Nakonec se robot pokusí přenést souřadnice míče do středu osy souřadnic. Tak funguje robot. To lze dále zlepšit použitím zařízení IoT, jako je fotonová částice, které vám umožní být informováni, když je nějaká věc detekována a že ji robot sleduje, nebo když robot ztratil přehled a nyní se vrací na základnu.
Pro účely zpracování obrazu musíte na svůj malinový pi nainstalovat software OpenCV, což pro mě bylo docela složité.
Veškeré požadované informace k instalaci OpenCV můžete získat prostřednictvím tohoto odkazu: klikněte zde
Krok 4: Schémata
Výše jsem poskytl schémata pro svůj projekt a spolu s ním je deska s plošnými spoji (PCB).
A zde jsou některá z hlavních připojení, která musíte udělat:
• Nejprve je modul Raspberry Pi Camera přímo připojen k Raspberry Pi.
• Ultrazvukové snímače VCC jsou připojeny ke společnému terminálu stejně jako GND (uzemnění) a zbývající dva porty ultrazvukového senzoru jsou připojeny k pinům GPIO na Raspberry Pi.
• Motory jsou připojeny pomocí H-můstku.
• Napájení je dodáváno z baterie.
Také jsem přidal video, které by mohlo pomoci s porozuměním fungování ultrazvukového senzoru a jeho fungování.
a také můžete sledovat tento odkaz, pokud nemůžete najít výše uvedené video.
Krok 5: Jak postupovat?
Tento projekt jsem vytvořil se základním robotem, který dokáže sledovat míč. Robot používá kameru k zpracování obrazu tím, že snímá snímky a sleduje míč. Ke sledování míče se používají různé funkce, jako je jeho barva, velikost, tvar.
Robot najde pevně zakódovanou barvu a poté vyhledá kouli této barvy a následuje ji. V tomto projektu jsem zvolil Raspberry Pi jako mikrořadič, protože nám umožňuje používat jeho kamerový modul a poskytuje velkou flexibilitu v kódu, protože používá jazyk python, který je velmi uživatelsky přívětivý a také nám umožňuje používat knihovnu OpenCV pro analýzu obrázků.
K přepnutí směru otáčení motorů nebo k jejich zastavení byl použit H-můstek.
Pro analýzu obrazu beru každý snímek a poté jej maskuji potřebnou barvou. Poté najdu všechny obrysy a najdu mezi nimi největší a svázané do obdélníku. A ukažte obdélník na hlavním obrázku a najděte souřadnice středu obdélníku.
Nakonec se robot pokusí přenést souřadnice míče do středu osy souřadnic. Tak funguje robot. To lze dále zlepšit použitím zařízení IoT, jako je fotonová částice, které vám umožní být informováni, když je nějaká věc detekována a že ji robot sleduje, nebo když robot ztratil přehled a nyní se vrací na základnu. A k tomu použijeme online softwarovou platformu, která zařízení propojí a umožní jim provádět určité akce na konkrétních spouštěčích, což jsou spouště IFTTT.
Krok 6: Pseudokód
Zde je pseudokód pro detekční část pomocí OpenCV, kde detekujeme kouli.
Krok 7: Kód
Nahoře jsou úryvky kódu a níže je podrobný popis kódu.
# importujte potřebné balíčky
DOVOZUJEME VŠECHNY POTŘEBNÉ BALÍČKY
z picamera.array import PiRGBArray #Protože v malinovém pi existuje problém s rozlišením, nebude schopen zachytit snímky pomocí VideoCapture
z picamery import PiCamera import RPi. GPIO jako GPIO import čas importu numpy jako np
NYNÍ NASTAVÍME HARDWARE A PŘIŘÍZÍME PINY PŘIPOJENÉ NA RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Levý ultrazvukový senzor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Přední ultrazvukový senzor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Pravý ultrazvukový senzor
GPIO_ECHO3 = 35
MOTOR1B = 18 #Levý motor
MOTOR1E = 22
MOTOR2B = 21 #Pravý motor
MOTOR2E = 19
LED_PIN = 13 #Pokud najde kouli, rozsvítí se LED
# Nastavte piny jako 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) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Nastavit spoušť na hodnotu False (Nízká)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
TATO FUNKCE POUŽÍVÁ VŠECHNY ULTRAZVUKOVÉ SNÍMAČE ODBÍRÁ VZDÁLENOST OD OBJEKTŮ OKOLO NAŠEHO BOTA
# Nechte modul usadit se
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Nastavit piny jako výstup a vstup GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Nastavit spoušť na False (Nízká) GPIO.output (GPIO_TRIGGER, False) #Povolit modulu vyrovnat time.sleep (0,01) #while distance> 5: #Send 10us pulse to trigger 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ÍSKÁNÍ MOTORŮ DC K PRÁCI S RASPBERRY PI
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINUJÍCÍ FUNKCE PRO PROVOZ ROBOTU A PŘESUNUTÍ V RŮZNÝCH SMĚRECH
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)
ZPRACOVÁNÍ MODULU KAMERY A ÚPRAVA NASTAVENÍ
#CAMERA CAPTURE
#inicializujte kameru a získejte odkaz na nezpracovanou kameru pro zachycení kamery = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, velikost = (160, 120)) # povolte kameru na zahřátí. spánek (0,001)
NYNÍ PROVÁDĚJÍCÍ HLAVNÍ VĚC, KDE BOT ŘÍDÍ MÍČ A VYHNUTE SE JAKÉKOLI PŘEKÁŽCE
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 doprava () time.sleep (0,00625) stop () time.sleep (0,0125) else: stop () time.sleep (0,01) else: #jinak se pohybuje vpřed () time.sleep (0,00625) pokud (vzdálenostC> 10): #přináší souřadnice míče do středu imaginární osy 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)
jiný:
#pokud najde míč a je příliš blízko, rozsvítí 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 další snímek}
UDĚLEJTE POTŘEBNÉ ČIŠTĚNÍ
GPIO.cleanup () #uvolněte všechny piny GPIO
Krok 8: Externí odkazy
Odkaz na ukázkové video: klikněte zde (Youtube)
Odkaz na kód na Git-hub: klikněte sem (Git-Hub)
Doporučuje:
Jak postavit PHIL - robot pro sledování světla: 6 kroků (s obrázky)
Jak postavit PHIL - robot pro sledování světla: V tomto Instructable vám ukážu, jak jsem vyrobil tento dvouosý robot pro sledování světla pomocí Arduino Uno. Součástí bude veškerý CAD a kód, takže si jej můžete vytvořit sami, aniž byste museli programovat nebo navrhovat. Vše, co budete potřebovat
ATtiny85 Nositelné vibrační sledování aktivity Sledování a programování ATtiny85 s Arduino Uno: 4 kroky (s obrázky)
ATtiny85 Wearable Vibration Activity Tracking Watch & Programming ATtiny85 With Arduino Uno: How to make the wearable activity tracking watch? Toto je nositelný gadget navržený tak, aby vibroval, když detekuje stagnaci. Trávíte většinu času na počítači jako já? Sedíte hodiny, aniž byste si to uvědomovali? Pak je toto zařízení f
Sady inteligentních robotů pro sledování robotů Sledování automobilů Fotosenzitivní: 7 kroků
Sady inteligentních robotů pro sledování robotů Sledovací auto Fotosenzitivní: Design od SINONING ROBOT Můžete si koupit od sledovacího robota carTheoryLM393 čip porovnat dva fotorezistory, když je na jedné straně LED dioda fotorezistoru na BÍLÉ, strana motoru se okamžitě zastaví, druhá strana motoru roztočit, aby
Xpedit - zařízení pro sledování atmosféry pro pěší turistiku a trekking: 12 kroků (s obrázky)
Xpedit - zařízení pro sledování atmosféry pro pěší turistiku a trekking: Když plánujete dobrodružnou cestu nebo trekking do divočiny, je důležité mít v batohu zařízení, které vám pomůže porozumět prostředí. Pro svůj nadcházející dobrodružný výlet jsem plánoval postavit kapesní zařízení, které pomáhá
Inatel - SmartHome - SH2Y - Sledování systému a sledování prostředí: 6 kroků
Inatel - SmartHome - SH2Y - Sledování systému a prostředí Ambiente: Foen desenvolvido um & Sistema de Monitoramento e Seguran ç a F í sica de Ambiente " para Smart Homes, což je intuitivní monitorování stavu vari á veis como "Temperatura", "Luminosidade" e " Senzor