Obsah:

Robot pro sledování míčů: 8 kroků
Robot pro sledování míčů: 8 kroků

Video: Robot pro sledování míčů: 8 kroků

Video: Robot pro sledování míčů: 8 kroků
Video: Špioni celý film cz dabing 2024, Červenec
Anonim
Robot pro sledování míčů
Robot pro sledování míčů
Robot pro sledování míčů
Robot pro sledování míčů
Robot pro sledování míčů
Robot pro sledování míčů

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

Úvod
Ú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

Materiály a měkké zboží použité v tomto projektu
Materiály a měkké zboží použité v tomto projektu
Materiály a měkké zboží použité v tomto projektu
Materiály a měkké zboží použité v tomto projektu
Materiály a měkké zboží použité v tomto projektu
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

Image
Image
Schémata
Schémata
Schémata
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

Pseudo kód
Pseudo kód

Zde je pseudokód pro detekční část pomocí OpenCV, kde detekujeme kouli.

Krok 7: Kód

Kód
Kód
Kód
Kód
Kód
Kód
Kód
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: