INHOUDSOPGAWE:

Balopsporingsrobot: 8 stappe
Balopsporingsrobot: 8 stappe

Video: Balopsporingsrobot: 8 stappe

Video: Balopsporingsrobot: 8 stappe
Video: Самый экономичный электродвигатель T-motor U8 Pro - под спец проект 2024, Julie
Anonim
Balopsporingsrobot
Balopsporingsrobot
Balopsporingsrobot
Balopsporingsrobot
Balopsporingsrobot
Balopsporingsrobot

So hierin sal ek vertel hoe om 'n balopsporingsrobot te maak, wat 'n robot is, 'n bal sal identifiseer en dit kan volg. Dit is basies 'n outomatiese toesigstegniek wat in die moderne wêreld gebruik kan word. Dus, laat ons net spring en begin bou …

LET WEL: Dit is die deelopdrag wat by die Deakin-universiteit, IT-skool, SIT-210 Embedded Systems Development ingedien is

Voorrade

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

Stap 1: Inleiding

Inleiding
Inleiding

Die toesig van vandag bied 'n groot nadeel: dit berus op die betrokkenheid van mense wat, soos ons almal weet, maklik afgelei kan word. En ons wil ook onaangename of ongewenste dinge en gevare identifiseer, terwyl ons terselfdertyd besluite neem en daarvolgens reageer. Objekopsporing met die gebruik van intelligente stelsels en rekenaars is dus noodsaaklik en noodsaaklik om outomatiese toesig te bereik.

Elke buite -toesigstelsel moet voorwerpe wat in sy gesigsveld beweeg, kan opspoor, hierdie voorwerpe kan klassifiseer en sommige van hul aktiwiteite kan opspoor. Ek het 'n metode ontwikkel om hierdie voorwerpe in realistiese scenario's op te spoor en te klassifiseer. Voorwerpopsporing in 'n enkele kamera word uitgevoer met behulp van agtergrondaftrekking, gevolg deur streekkorrespondensie. Dit neem verskeie leidrade in ag, insluitend snelhede, groottes en afstande van afgrendingsbokse.

Stap 2: Materiaal en sagteware wat in hierdie projek gebruik word

Materiaal en sagteware wat in hierdie projek gebruik word
Materiaal en sagteware wat in hierdie projek gebruik word
Materiaal en sagteware wat in hierdie projek gebruik word
Materiaal en sagteware wat in hierdie projek gebruik word
Materiaal en sagteware wat in hierdie projek gebruik word
Materiaal en sagteware wat in hierdie projek gebruik word

Hardeware -komponente wat gebruik word:

  • Framboos Pi (x1)
  • Raspberry Pi -kameramodule (x1)
  • Ultrasoniese sensor (x3)
  • SparkFun Dual H-Bridge motorbestuurders L298 (x1)
  • GS -motor (x1)
  • Broodbord (x1)
  • Verbindingsdrade

Sagteware wat gebruik word:

OpenCV

Hand gereedskap:

Python

Stap 3: Wat om te doen?

Elke buite -toesigstelsel moet voorwerpe wat in sy gesigsveld beweeg, kan opspoor, hierdie voorwerpe kan klassifiseer en sommige van hul aktiwiteite kan opspoor. Ek het 'n metode ontwikkel om hierdie voorwerpe in realistiese scenario's op te spoor en te klassifiseer. Voorwerpopsporing in 'n enkele kamera word uitgevoer met behulp van agtergrondaftrekking, gevolg deur streekkorrespondensie. Dit neem verskeie leidrade in ag, insluitend snelhede, groottes en afstande van afgrendingsbokse.

Die belangrikste ding tydens die opsporing van beelde, raam vir raam, was om raamdruppels te vermy, aangesien die bot in 'n limbo -toestand kan gaan as die bot nie die bewegingsrigting van die bal agterkom as gevolg van raamvalle nie. As die bal buite die reikwydte van die kamera gaan, gaan dit in wat ons 'n limbo-toestand noem, in daardie geval maak die bot 'n draai van 360 grade om die ruimte rondom dit te sien totdat die bal terugkom in die raam van die kamera en begin dan in sy rigting beweeg.

Vir die beeldontleding neem ek elke raam en maskeer dit dan met die benodigde kleur. Dan vind ek al die kontoere en vind die grootste onder hulle en bind dit in 'n reghoek. Toon die reghoek op die hoofbeeld en vind die koördinate van die middel van die reghoek.

Laastens probeer die bot om die koördinate van die bal na die middel van sy koördinaatas te bring. Dit is hoe die robot werk. Dit kan verder verbeter word deur 'n IoT -toestel soos 'n fotondeeltjie te gebruik, waarmee u ingelig kan word wanneer iets opgespoor word en dat die robot dit volg of as die robot die spoor daarvan verloor het en nou terugkeer na die basis.

Met die oog op beeldverwerking moet u OpenCV -sagteware op u framboospi installeer, wat vir my nogal moeilik was.

U kan die nodige inligting kry om OpenCV te installeer via hierdie skakel: klik hier

Stap 4: Skema's

Image
Image
Skemas
Skemas
Skemas
Skemas

Hierbo het ek die skemas vir my projek verskaf, en saam met dit is die Printed Circuit Board (PCB).

En hier is 'n paar van die belangrikste verbindings wat u moet doen:

• Eerstens is die Raspberry Pi -kamera -module direk gekoppel aan die Raspberry Pi.

• Die ultrasoniese sensors VCC is gekoppel aan die gewone terminaal, dieselfde is met die GND (grond) en die oorblywende twee poorte van die ultrasoniese sensor is gekoppel aan die GPIO -penne op die Raspberry Pi.

• Die motors word met die H-brug verbind.

• Die krag word verskaf met behulp van die battery.

Ek het ook die video bygevoeg wat kan help met die verstaan van die werking van die ultrasoniese sensor en hoe dit werk.

en u kan ook hierdie skakel volg as u nie die video hierbo kan vind nie.

Stap 5: Hoe om te doen?

Ek het hierdie projek gemaak met 'n basiese robot wat 'n bal kan opspoor. Die robot gebruik 'n kamera om beeldverwerking te doen deur rame te neem en die bal op te spoor. Om die bal op te spoor, word verskillende funksies gebruik, soos sy kleur, grootte, vorm.

Die robot vind 'n hardcoded kleur en soek dan na die bal van die kleur en volg dit. Ek het Raspberry Pi gekies as mikrobeheerder in hierdie projek, want dit stel ons in staat om die kameramodule te gebruik en bied baie buigsaamheid in die kode, aangesien dit python-taal gebruik wat baie gebruikersvriendelik is, en dit laat ons ook die OpenCV-biblioteek gebruik om die beelde te ontleed.

'N H-brug is gebruik om die draairigting van motors te skakel of om dit te stop.

Vir die beeldontleding neem ek elke raam en maskeer dit dan met die benodigde kleur. Dan vind ek al die kontoere en vind die grootste onder hulle en bind dit in 'n reghoek. Toon die reghoek op die hoofbeeld en vind die koördinate van die middel van die reghoek.

Laastens probeer die bot om die koördinate van die bal na die middel van sy koördinaatas te bring. Dit is hoe die robot werk. Dit kan verder verbeter word deur 'n IoT -toestel soos 'n fotondeeltjie te gebruik, waarmee u ingelig kan word wanneer iets opgespoor word en dat die robot dit volg of as die robot die spoor daarvan verloor het en nou terugkeer na die basis. En om dit te doen, gebruik ons 'n aanlyn sagtewareplatform wat die toestelle verbind en hulle toelaat om sekere aksies uit te voer op spesifieke snellers wat IFTTT -snellers is.

Stap 6: Pseudo-kode

Pseudo-kode
Pseudo-kode

Hier is die pseudokode vir die opsporingsgedeelte met behulp van OpenCV waar ons 'n bal opspoor.

Stap 7: Kode

Kode
Kode
Kode
Kode
Kode
Kode
Kode
Kode

Hierbo is die brokkies van die kode en hieronder is die gedetailleerde beskrywing van die kode.

# voer die nodige pakkette in

Ons voer al die nodige pakkette in

vanaf picamera.array invoer PiRGBArray #Omdat daar 'n resolusieprobleem in framboospi is, kan dit nie rame deur VideoCapture opneem nie

vanaf picamera invoer PiCamera invoer RPi. GPIO as GPIO invoer tyd invoer numpy as np

NOU rig ons die toerusting op en ken die spelde toe wat op Raspberry PI gekoppel is

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Links ultrasoniese sensor

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Ultrasoniese sensor voor

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Regte ultrasoniese sensor

GPIO_ECHO3 = 35

MOTOR1B = 18 #Links motor

MOTOR1E = 22

MOTOR2B = 21 #Regte motor

MOTOR2E = 19

LED_PIN = 13 #As dit die bal vind, sal dit die led verlig

# Stel penne as uitvoer en invoer in

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)

# Stel sneller op Onwaar (laag)

GPIO.output (GPIO_TRIGGER1, Onwaar) GPIO.output (GPIO_TRIGGER2, Onwaar) GPIO.output (GPIO_TRIGGER3, Onwaar)

HIERDIE FUNKSIE GEBRUIK AL DIE ULTRASONIESE SENSORS VERSAMEL DIE AFSTAND VAN DIE VOORWERPE OM ONS BOT

# Laat die module toe om op te los

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Stel penne as uitvoer en voer GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Stel sneller in op Onwaar (Laag) GPIO.output (GPIO_TRIGGER, Onwaar) #Laat die module toe om tyd te bepaal.slaap (0.01) #terwyl afstand> 5: #Stuur 10us pols om GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO te aktiveer. uitvoer (GPIO_TRIGGER, Onwaar) begin = time.time () terwyl GPIO.input (GPIO_ECHO) == 0 en time.time ()

LAAT DIE DC -MOTORS MET DIE Raspberry PI WERK

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

BESKRYWING VAN FUNKSIES OM DIE ROBOT TE BEDIEN EN DIT IN VERSKILLENDE RIGTINGS TE BEWEG

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)

DIE KAMERA -MODULE WERK EN DIE INSTELLINGS AANPAS

#KAMERA -VANGST

#inisialiseer die kamera en verwys na die rou kamera -opnamekamera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, grootte = (160, 120)) # laat die kamera toe tot opwarmingstyd. slaap (0,001)

Implementeer nou die belangrikste ding waar die bottel die bal volg en enige hindernis op die pad vermy

terwyl (1 <10): { #afstand vanaf voorste ultrasoniese sensorafstand C = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #afstand vanaf regter ultrasone sensor afstandR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #afstand vanaf linker ultrasone sensor afstand L = sonar (GPIO_TRIGGER1, GPIO_ECHO1) as (afstandC = 8: regs draai () time.sleep (0.00625) stop () time.sleep (0.0125) vorentoe () time.sleep (0.00625) stop () time.sleep (0.0125) #wyl gevind == 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) regs draai () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) anders: #anders beweeg dit vorentoe () time.sleep (0.00625) as (afstandC> 10): #dit bring die koördinate van die bal na die middel van die denkbeeldige as van die kamera. as (sentrum_x = 20): as (sentrum_x0): vlag = 1 linksom () tyd. slaap (0,025) vorentoe () tyd. slaap (0,00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

anders:

#as dit die bal vind en dit is te naby, dan brand die led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("teken", raam) rawCapture.truncate (0) # maak die stroom skoon as voorbereiding vir die volgende raam}

DOEN DIE NODIGE REINIGINGS

GPIO.cleanup () #free al die GPIO penne

Stap 8: Eksterne skakels

Skakel na die demonstrasievideo: klik hier (Youtube)

Skakel na die kode op Git-hub: klik hier (Git-Hub)

Aanbeveel: