Sisällysluettelo:

Pallonseurantarobotti: 8 vaihetta
Pallonseurantarobotti: 8 vaihetta

Video: Pallonseurantarobotti: 8 vaihetta

Video: Pallonseurantarobotti: 8 vaihetta
Video: J. Krishnamurti - Сан-Диего, США 1974 - 8 беседа с А. Андерсоном - Приносит ли удовольствие счастье? 2024, Heinäkuu
Anonim
Pallonseurantarobotti
Pallonseurantarobotti
Pallonseurantarobotti
Pallonseurantarobotti
Pallonseurantarobotti
Pallonseurantarobotti

Joten tässä kerron kuinka tehdä pallonseurantarobotti, joka on robotti, joka tunnistaa pallon ja seuraa sitä. Se on pohjimmiltaan automaattinen valvontatekniikka, jota voidaan käyttää nykymaailmassa. Joten hyppäämme vain sisään ja aloita rakentaminen …

HUOMAUTUS: Tämä osatehtävä toimitettiin Deakinin yliopistolle, IT-kouluun, SIT-210 Embedded Systems Development

Tarvikkeet

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

Vaihe 1: Johdanto

Johdanto
Johdanto

Tämän päivän valvonta on suuri haittapuoli, joka perustuu ihmisten osallistumiseen, jotka me kaikki tiedämme voidaan helposti häiritä, joten oli äärimmäisen tärkeää löytää järjestelmä, joka voi valvoa alueita itsenäisesti ja jatkuvasti. Haluamme myös tunnistaa vastenmieliset tai ei -toivotut asiat ja vaarat samalla kun teemme päätöksiä ja vastaamme niihin. Objektien seuranta älykkäiden järjestelmien ja tietokoneiden avulla on siis välttämätöntä ja ratkaisevan tärkeää automaattisen valvonnan aikaansaamiseksi.

Kaikkien ulkovalvontajärjestelmien on kyettävä seuraamaan näkökentässään liikkuvia esineitä, luokittelemaan nämä kohteet ja havaitsemaan joitakin niiden toimintoja. Olen kehittänyt menetelmän näiden objektien seuraamiseksi ja luokittelemiseksi realistisissa skenaarioissa. Kohteen seuranta yhdessä kamerassa suoritetaan vähentämällä tausta, jota seuraa alueen kirjeenvaihto. Tässä otetaan huomioon useita vihjeitä, mukaan lukien rajoituslaatikoiden nopeudet, koot ja etäisyydet.

Vaihe 2: Tässä projektissa käytetyt materiaalit ja ohjelmistot

Tässä projektissa käytetyt materiaalit ja ohjelmistot
Tässä projektissa käytetyt materiaalit ja ohjelmistot
Tässä projektissa käytetyt materiaalit ja ohjelmistot
Tässä projektissa käytetyt materiaalit ja ohjelmistot
Tässä projektissa käytetyt materiaalit ja ohjelmistot
Tässä projektissa käytetyt materiaalit ja ohjelmistot

Käytetyt laitteistokomponentit:

  • Raspberry Pi (x1)
  • Raspberry Pi -kameramoduuli (x1)
  • Ultraäänianturi (x3)
  • SparkFun Dual H-Bridge -moottoriajurit L298 (x1)
  • DC -moottori (x1)
  • Leipälauta (x1)
  • Johtojen yhdistäminen

Käytetty ohjelmisto:

OpenCV

Käsityökalut:

Python

Vaihe 3: Mitä tehdä?

Kaikkien ulkovalvontajärjestelmien on kyettävä seuraamaan näkökentässään liikkuvia esineitä, luokittelemaan nämä kohteet ja havaitsemaan joitakin niiden toimintoja. Olen kehittänyt menetelmän näiden objektien seuraamiseksi ja luokittelemiseksi realistisissa skenaarioissa. Objektien seuranta yhdessä kamerassa suoritetaan käyttämällä taustavähennystä, jota seuraa alueen kirjeenvaihto. Tämä ottaa huomioon useita vihjeitä, mukaan lukien rajoituslaatikoiden nopeudet, koot ja etäisyydet.

Olennaista otettaessa kuvia kuva kerrallaan oli välttää kehyspisarat, sillä silloin botti voi mennä limbo -tilaan, jos botti ei huomaa pallon liikesuuntaa kehyksen putoamisen vuoksi. Jos pallo menee kameran kantaman ulkopuolelle, se menee niin sanottuun limbo-tilaan, jolloin botti tekee 360 asteen kierroksen nähdäkseen ympäröivän tilan, kunnes pallo tulee takaisin kameraa ja aloita sitten liikkua sen suuntaan.

Kuva -analyysiä varten otan jokaisen kehyksen ja peitän sen sitten tarvittavalla värillä. Sitten löydän kaikki ääriviivat ja löydän niistä suurimman ja sidon sen suorakulmioon. Näytä suorakulmio pääkuvassa ja etsi suorakulmion keskipisteen koordinaatit.

Lopuksi botti yrittää tuoda pallon koordinaatit sen koordinaattiakselin keskelle. Robotti toimii näin. Tätä voidaan edelleen parantaa käyttämällä IoT -laitetta, kuten fotonipartikkelia, jonka avulla voit saada ilmoituksen, kun asia havaitaan ja että robotti seuraa sitä tai kun robotti on menettänyt sen ja palaa nyt tukikohtaan.

Kuvankäsittelyä varten sinun on asennettava OpenCV -ohjelmisto vadelmapiisi, mikä oli minulle melko hankalaa.

Saat tarvittavat tiedot OpenCV: n asentamiseksi tämän linkin kautta: napsauta tätä

Vaihe 4: Kaaviot

Image
Image
Kaaviot
Kaaviot
Kaaviot
Kaaviot

Yllä olen toimittanut kaaviot projektilleni ja sen rinnalla on piirilevy (PCB).

Ja tässä on joitain tärkeimpiä yhteyksiä, jotka sinun on tehtävä:

• Ensinnäkin Raspberry Pi Camera -moduuli on kytketty suoraan Raspberry Pi -laitteeseen.

• Ultraääni -anturit VCC on kytketty samaan liitäntään kuin GND (maa) ja loput kaksi ultraäänianturin porttia on liitetty Raspberry Pi -laitteen GPIO -nastoihin.

• Moottorit on kytketty H-sillan avulla.

• Virta toimitetaan akun avulla.

Olen myös lisännyt videon, joka voi auttaa ymmärtämään ultraäänianturin toimintaa ja sen toimintaa.

ja voit myös seurata tätä linkkiä, jos et löydä yllä olevaa videota.

Vaihe 5: Kuinka tehdä?

Tein tämän projektin, joka kuvaa perusrobottia, joka pystyy seuraamaan palloa. Robotti käyttää kameraa kuvankäsittelyyn ottamalla kehyksiä ja seuraamalla palloa. Palloa seurataan eri ominaisuuksilla, kuten sen värillä, koolla ja muodolla.

Robotti löytää kovakoodatun värin ja etsii sitten kyseisen värin pallon ja seuraa sitä. Olen valinnut Raspberry Pi: n mikro-ohjaimeksi tässä projektissa, koska sen avulla voimme käyttää kameramoduulia ja antaa paljon joustavuutta koodissa, koska se käyttää erittäin käyttäjäystävällistä python-kieltä ja mahdollistaa myös OpenCV-kirjaston käytön kuvien analysointiin.

H-siltaa on käytetty moottorien pyörimissuunnan vaihtamiseen tai pysäyttämiseen.

Kuva -analyysiä varten otan jokaisen kehyksen ja peitän sen sitten tarvittavalla värillä. Sitten löydän kaikki ääriviivat ja löydän niistä suurimman ja sidon sen suorakulmioon. Näytä suorakulmio pääkuvassa ja etsi suorakulmion keskipisteen koordinaatit.

Lopuksi botti yrittää tuoda pallon koordinaatit sen koordinaattiakselin keskelle. Robotti toimii näin. Tätä voidaan edelleen parantaa käyttämällä IoT -laitetta, kuten fotonipartikkelia, jonka avulla voit saada ilmoituksen, kun jokin asia havaitaan ja että robotti seuraa sitä tai kun robotti on menettänyt sen ja palaa nyt tukikohtaan. Tätä varten käytämme online -ohjelmistoa, joka yhdistää laitteet ja antaa niille mahdollisuuden suorittaa tiettyjä toimintoja tietyillä laukaisimilla, jotka ovat IFTTT -laukaisimia.

Vaihe 6: Pseudo-koodi

Pseudo-koodi
Pseudo-koodi

Tässä on pseudo-koodi OpenCV-tunnistusosalle, jossa havaitsemme pallon.

Vaihe 7: Koodi

Koodi
Koodi
Koodi
Koodi
Koodi
Koodi
Koodi
Koodi

Yllä on koodinpätkät ja alla on koodin yksityiskohtainen kuvaus.

# tuoda tarvittavat paketit

TUomme KAIKKI TARPEET PAKETIT

osoitteesta picamera.array Tuo PiRGBArray #Koska vadelma pi: n tarkkuusongelma, VideoCapture ei pysty sieppaamaan kehyksiä

alkaen picamera tuonti PiCamera tuonti RPi. GPIO GPIO tuonti aika tuonti numpy np

NYT ASENNAME LAITTEISTON JA ANTAMME RASPBERRY PI: N KYTKETYT PINSIT

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Vasen ultraäänianturi

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Etuosan ultraäänianturi

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Oikea ultraäänianturi

GPIO_ECHO3 = 35

MOTOR1B = 18 #Vasen moottori

MOTOR1E = 22

MOTOR2B = 21 #Oikea moottori

MOTOR2E = 19

LED_PIN = 13 #Jos se löytää pallon, se sytyttää ledin

# Aseta nastat lähtö- ja tuloksi

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Käynnistä GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Käynnistä GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Käynnistä GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Aseta liipaisin arvoon False (Low)

GPIO.lähtö (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO. output (GPIO_TRIGGER3, False)

TÄMÄ TOIMINTO KÄYTÄÄ KAIKKI ULTRASONISET ANTURIT, JOTKA KERÄVÄT ETÄISYYDEN BOTIN YMPÄRISTÖN OBJEKTEISTA

# Anna moduulin asettua

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Aseta nastat lähtö- ja tuloksi GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Laukaisu GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Aseta liipaisin arvoon False (Alhainen) GPIO. -lähtö (GPIO_TRIGGER, False) #Anna moduulin asettaa aika. Nukkumiseen (0,01) #kun etäisyys> 5: #Lähetä 10us pulssi GPIO.output (GPIO_TRIGGER, True) time.sleep (0,00001) GPIO: n käynnistämiseksi. lähtö (GPIO_TRIGGER, False) begin = time.time () kun GPIO.input (GPIO_ECHO) == 0 ja time.time ()

DC -MOOTTORIEN KÄYTTÖÖNOTTAMINEN KASVIPERÄISEN PI: N KANSSA

GPIO.asetukset (MOTOR1B, GPIO. OUT)

GPIO.asetukset (MOTOR1E, GPIO. OUT)

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

ROBOTIN TOIMINNAN MÄÄRITTÄMINEN JA SIIRTÄMINEN ERI SUUNTAAN

def eteenpäin ():

GPIO.lähtö (MOTOR1B, GPIO. HIGH) GPIO.lähtö (MOTOR1E, GPIO. LOW) GPIO.lähtö (MOTOR2B, GPIO. HIGH) GPIO.lähtö (MOTOR2E, GPIO. LOW) def peruutus (): GPIO.lähtö (MOTOR1B, GPIO. LOW) GPIO. -lähtö (MOTOR1E, GPIO. HIGH) GPIO. -lähtö (MOTOR2B, GPIO. LOW) GPIO -lähtö (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.lähtö (MOTOR1E, GPIO. HIGH) GPIO.lähtö (MOTOR2B, GPIO. HIGH) GPIO.lähtö (MOTOR2E, GPIO. LOW) def leftturn (): GPIO. output (MOTOR1B, GPIO. HIGH) GPIO. output (MOTOR1E, GPIO. LOW) GPIO. -lähtö (MOTOR2B, GPIO. LOW) GPIO -lähtö (MOTOR2E, GPIO. HIGH)

def stop ():

GPIO -lähtö (MOTOR1E, GPIO. LOW) GPIO -lähtö (MOTOR1B, GPIO. LOW) GPIO -lähtö (MOTOR2E, GPIO. LOW) GPIO -lähtö (MOTOR2B, GPIO. LOW)

KAMERAMODULIN TOIMINTA JA ASETUSTEN SÄÄTÄMINEN

#KAMERAN KAPPALE

#alusta kamera ja nappaa viittaus raakakameran sieppauskameraan = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, koko = (160, 120)) # salli kamera lämpenemisaikaan. nukkumiseen (0,001)

TÄYTÄNTÖÖNPANO TÄYTÄNTÖÖNPANO TÄYTÄNTÖÖN, JOS BOT SEURAA PALLOA JA VÄLTÄÄ ESTEITÄ

kun taas (1 <10): {#etäisyys edestä tulevan ultraäänianturin etäisyydestä, 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: kääntymisaika () aika. Nukkuminen (0,00625) elif -etäisyys L> = 8: leftturn () aika. Unen (0,00625) pysäytys () aika. Nukkuminen (0,0125) eteenpäin () aika. Nukkuminen (0,00625) pysäytys () aika. Nukkuminen (0.0125) oikea käännös () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #muuten se siirtyy eteenpäin () time.sleep (0.00625) jos (etäisyys C> 10): #on tuo pallon koordinaatit kameran kuvitteellisen akselin keskelle. if (center_x = 20): if (center_x0): flag = 1 leftturn () time.sleep (0.025) eteenpäin () time.sleep (0.00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

muu:

#jos se löytää pallon ja on liian lähellä, se syttyy led -valoon. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("piirtää", kehys) rawCapture.truncate (0) # tyhjentää virran valmistautuessaan seuraava kuva}

TEE TARPEET PUHDISTUKSET

GPIO.cleanup () #free kaikki GPIO -nastat

Vaihe 8: Ulkoiset linkit

Linkki esittelyvideoon: klikkaa tästä (Youtube)

Linkki Git-hubin koodiin: napsauta tätä (Git-Hub)

Suositeltava: