Satura rādītājs:

Lodes izsekošanas robots: 8 soļi
Lodes izsekošanas robots: 8 soļi

Video: Lodes izsekošanas robots: 8 soļi

Video: Lodes izsekošanas robots: 8 soļi
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Novembris
Anonim
Lodes izsekošanas robots
Lodes izsekošanas robots
Lodes izsekošanas robots
Lodes izsekošanas robots
Lodes izsekošanas robots
Lodes izsekošanas robots

Tāpēc es pastāstīšu, kā izveidot bumbas izsekošanas robotu, kas ir robots, identificēs bumbu un sekos tai. Būtībā tā ir automatizēta novērošanas tehnika, ko var izmantot mūsdienu pasaulē. Tātad, ļaujiet mums vienkārši iekāpt un sākt būvēt…

PIEZĪME: Šis daļas uzdevums tika iesniegts Deakin universitātē, IT skolā, SIT-210 iegulto sistēmu izstrāde

Piegādes

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

1. darbība. Ievads

Ievads
Ievads

Mūsdienu uzraudzība rada būtisku trūkumu, proti, tā balstās uz tādu cilvēku iesaistīšanos, kurus, kā mēs visi zinām, var viegli novērst, tāpēc mums bija ārkārtīgi svarīgi atklāt sistēmu, kas var autonomi un nepārtraukti uzraudzīt reģionus. Mēs arī vēlamies identificēt nepatīkamas vai nevēlamas lietas un briesmas, vienlaikus pieņemot lēmumus un attiecīgi reaģēt. Tātad objektu izsekošana, izmantojot inteliģentas sistēmas un datorus, ir būtiska un izšķiroša, lai panāktu automatizētu uzraudzību.

Jebkurai āra novērošanas sistēmai jāspēj izsekot objektiem, kas pārvietojas tās redzes laukā, klasificēt šos objektus un atklāt dažas to darbības. Esmu izstrādājis metodi šo objektu izsekošanai un klasificēšanai reālos scenārijos. Objektu izsekošana vienā kamerā tiek veikta, izmantojot fona atņemšanu, kam seko reģiona atbilstība. Tas ņem vērā vairākas norādes, tostarp ierobežojošo kārbu ātrumu, izmēru un attālumu.

2. darbība. Šajā projektā izmantotie materiāli un izstrādājumi

Šajā projektā izmantotie materiāli un izstrādājumi
Šajā projektā izmantotie materiāli un izstrādājumi
Šajā projektā izmantotie materiāli un izstrādājumi
Šajā projektā izmantotie materiāli un izstrādājumi
Šajā projektā izmantotie materiāli un izstrādājumi
Šajā projektā izmantotie materiāli un izstrādājumi

Izmantotie aparatūras komponenti:

  • Raspberry Pi (x1)
  • Raspberry Pi kameras modulis (x1)
  • Ultraskaņas sensors (x3)
  • SparkFun Dual H-Bridge motoru draiveri L298 (x1)
  • Līdzstrāvas motors (x1)
  • Maizes dēlis (x1)
  • Savienojumu vadi

Izmantotā programmatūra:

OpenCV

Darbarīki:

Python

3. darbība. Ko darīt?

Jebkurai āra novērošanas sistēmai jāspēj izsekot objektiem, kas pārvietojas tās redzes laukā, klasificēt šos objektus un atklāt dažas to darbības. Esmu izstrādājis metodi šo objektu izsekošanai un klasificēšanai reālos scenārijos. Objektu izsekošana vienā kamerā tiek veikta, izmantojot fona atņemšanu, kam seko reģiona atbilstība. Tas ņem vērā vairākas norādes, tostarp ierobežojošo kārbu ātrumu, izmēru un attālumu.

Izšķiroša lieta, atklājot attēlus pa kadriem, bija izvairīties no jebkādiem kadru kritieniem, jo tad robots var nonākt neizdevīgā stāvoklī, ja robots nepamana bumbas kustības virzienu kadru kritumu dēļ. Ja bumba iziet no kameras diapazona, tā nonāks tā dēvētajā limbo stāvoklī, tādā gadījumā bots pagriežas par 360 grādiem, lai apskatītu apkārtējo telpu, līdz bumba atgriežas kadrā. kameru un tad sāciet kustēties tās virzienā.

Attēlu analīzei es ņemu katru kadru un pēc tam maskēju to ar nepieciešamo krāsu. Tad es atrodu visas kontūras un atrodu lielāko no tām un sasēju to taisnstūrī. Un parādiet taisnstūri galvenajā attēlā un atrodiet taisnstūra centra koordinātas.

Visbeidzot, bots mēģina novietot bumbiņas koordinātas tās koordinātu ass centrā. Šādi darbojas robots. To var vēl vairāk uzlabot, izmantojot IoT ierīci, piemēram, fotonu daļiņu, kas var ļaut jums tikt informētam, kad lieta tiek atklāta un ka robots tai seko vai kad robots ir zaudējis pēdas un tagad atgriežas bāzē.

Attēlu apstrādes nolūkos jūsu aveņu pi ir jāinstalē OpenCV programmatūra, kas man bija diezgan sarežģīta.

Jūs varat iegūt visu nepieciešamo informāciju, lai instalētu OpenCV, izmantojot šo saiti: noklikšķiniet šeit

4. solis: shēmas

Image
Image
Shēmas
Shēmas
Shēmas
Shēmas

Iepriekš es esmu iesniedzis sava projekta shēmas, un kopā ar to ir iespiedshēmas plate (PCB).

Un šeit ir daži galvenie savienojumi, kas jums jādara:

• Pirmkārt, Raspberry Pi kameras modulis ir tieši savienots ar Raspberry Pi.

• Ultraskaņas sensori VCC ir savienoti ar kopējo termināli, tāpat kā GND (zemējums), un atlikušie divi ultraskaņas sensora porti ir pievienoti Raspberry Pi GPIO tapām.

• Motori ir savienoti, izmantojot H-tiltu.

• Barošana tiek nodrošināta, izmantojot akumulatoru.

Esmu pievienojis arī videoklipu, kas varētu palīdzēt izprast ultraskaņas sensora darbību un tā darbību.

un arī jūs varat sekot šai saitei, ja nevarat atrast iepriekš minēto videoklipu.

5. darbība. Kā rīkoties?

Es izveidoju šo projektu, attēlojot pamata robotu, kas var izsekot bumbiņai. Robots izmanto kameru attēlu apstrādei, uzņemot rāmjus un izsekojot bumbiņai. Lai izsekotu bumbu, tiek izmantotas dažādas funkcijas, piemēram, tās krāsa, izmērs, forma.

Robots atrod grūti iekodētu krāsu un pēc tam meklē šīs krāsas bumbiņu un seko tai. Šajā projektā esmu izvēlējies Raspberry Pi kā mikrokontrolleri, jo tas ļauj mums izmantot tā kameras moduli un nodrošina lielu elastību kodā, jo tas izmanto ļoti lietotājam draudzīgu python valodu, kā arī ļauj mums izmantot OpenCV bibliotēku attēlu analīzei.

H-tilts ir izmantots, lai pārslēgtu motoru griešanās virzienu vai apturētu tos.

Attēlu analīzei es ņemu katru kadru un pēc tam maskēju to ar nepieciešamo krāsu. Tad es atrodu visas kontūras un atrodu lielāko no tām un sasēju to taisnstūrī. Un parādiet taisnstūri galvenajā attēlā un atrodiet taisnstūra centra koordinātas.

Visbeidzot, bots mēģina novietot bumbiņas koordinātas tās koordinātu ass centrā. Šādi darbojas robots. To var vēl vairāk uzlabot, izmantojot IoT ierīci, piemēram, fotonu daļiņu, kas var ļaut jums tikt informētam, kad lieta tiek atklāta un ka robots tai seko vai kad robots ir zaudējis pēdas un tagad atgriežas bāzē. Un, lai to izdarītu, mēs izmantosim tiešsaistes programmatūras platformu, kas savieno ierīces un ļauj tām veikt noteiktas darbības ar konkrētiem aktivizētājiem, kas ir IFTTT aktivizētāji.

6. darbība: pseidokods

Pseidokods
Pseidokods

Šeit ir atklāšanas daļas pseidokods, izmantojot OpenCV, kur mēs atklājam bumbu.

7. solis: kods

Kods
Kods
Kods
Kods
Kods
Kods
Kods
Kods

Iepriekš ir koda fragmenti, un zemāk ir detalizēts koda apraksts.

# importējiet nepieciešamos iepakojumus

MĒS IMPORTĒJAM VISAS VAJADZĪGĀS IEPAKOJUMS

no picamera.array importēt PiRGBArray #Tā kā aveņu pi ir izšķirtspējas problēma, nevarēs uzņemt kadrus ar VideoCapture

no picamera importa PiCamera importa RPi. GPIO kā GPIO importa laika importa numpy kā np

TAGAD MĒS UZSTĀDĀJAM Aparatūru un PIEVIENOJAM APSTIPRINĀTOS PINS

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Kreisais ultraskaņas sensors

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Priekšējais ultraskaņas sensors

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Pareizais ultraskaņas sensors

GPIO_ECHO3 = 35

MOTOR1B = 18 #Kreisais motors

MOTOR1E = 22

MOTOR2B = 21 #Pareizais motors

MOTOR2E = 19

LED_PIN = 13 #Ja tā atrod bumbu, tā iedegas

# Iestatiet tapas kā izeju un ievadi

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Aktivizēt GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Aktivizēt GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Aktivizēt GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Iestatiet aktivizētāju uz False (zems)

GPIO.izvade (GPIO_TRIGGER1, nepatiesa) GPIO.izvade (GPIO_TRIGGER2, nepatiesa) GPIO.izvade (GPIO_TRIGGER3, nepatiesa)

Šī funkcija izmanto visus ultraskaņas sensorus, lai savāktu attālumu no objektiem, kas atrodas ap mūsu botu

# Ļaujiet modulim nokārtoties

def sonārs (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Iestatīt tapas kā izeju un ievadi GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Aktivizēt GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Iestatīt aktivizētāju uz False (Zems) GPIO.izvade (GPIO_TRIGGER, False) #Ļaujiet modulim nokārtot laiku. Miega (0.01) #kamēr attālums> 5: #Nosūtiet 10us impulsu, lai aktivizētu GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. izvade (GPIO_TRIGGER, False) begin = time.time (), savukārt GPIO.input (GPIO_ECHO) == 0 un time.time ()

SASNIEGT DC MOTORUS DARBĀ AR AITRU PI

GPIO iestatīšana (MOTOR1B, GPIO. OUT)

GPIO iestatīšana (MOTOR1E, GPIO. OUT)

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

FUNKCIJU DEFINĒŠANA ROBOTA DARBĪBAI UN PĀRVIETOŠANAI DAŽĀDOS NORĀDĪJUMOS

def uz priekšu ():

GPIO izeja (MOTOR1B, GPIO. HIGH) GPIO izeja (MOTOR1E, GPIO. LOW) GPIO izeja (MOTOR2B, GPIO. HIGH) GPIO izvade (MOTOR2E, GPIO. LOW) def revers (): GPIO izeja (MOTOR1B, GPIO. LOW) GPIO.izvade (MOTOR1E, GPIO. HIGH) GPIO.izvade (MOTOR2B, GPIO. LOW) GPIO.izvade (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO izeja (MOTOR1E, GPIO. HIGH) GPIO izeja (MOTOR2B, GPIO. HIGH) GPIO izeja (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO. output (MOTOR1E, GPIO. LOW) GPIO izeja (MOTOR2B, GPIO. LOW) GPIO izeja (MOTOR2E, GPIO. HIGH)

def stop ():

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

KAMERAS MODULES DARBOŠANA UN IESTATĪJUMU PIELĀGOŠANA

#KAMERAS UZŅEMŠANA

#inicializējiet kameru un paņemiet atsauci uz neapstrādāto kameras uztveršanas kameru = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, izmērs = (160, 120)) # atļaut kamerai līdz iesildīšanās laikam. gulēt (0,001)

TAGAD ĪSTENOJOT GALVENO LĪDZEKLI, KURĀ BOTS SEKO BALLEI UN NEVĒRTA KĀDUS ŠĶĪRUMUS

kamēr (1 <10): { #attālums, kas nāk no priekšējā ultraskaņas sensora attālumaC = sonārs (GPIO_TRIGGER2, GPIO_ECHO2) #attālums no labās ultraskaņas sensora attāluma, GPIO_ECHO1) ja (attālumsC = 8: pagrieziens pa labi 0: leftturn () laiks. Miega (0.00625) elif distance (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #pretējā gadījumā tas virzās uz priekšu () time.sleep (0.00625), ja (attālumsC> 10): #tas nes bumbiņas koordinātas kameras iedomātās ass centrā. ja (centrs_x = 20): ja (centrs_x0): karogs = 1 leftturn () laiks. miega (0,025) uz priekšu () laiks. miegs (0,00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

cits:

#ja tā atrod bumbu un ir pārāk tuvu, tā iedegas. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # notīriet straumi, gatavojoties nākamais kadrs}

DARĪT VAJADZĪGO TĪRĪŠANU

GPIO.cleanup () #atbrīvo visas GPIO tapas

8. darbība. Ārējās saites

Saite uz demonstrācijas video: noklikšķiniet šeit (Youtube)

Saite uz Git-hub kodu: noklikšķiniet šeit (Git-Hub)

Ieteicams: