Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Johdanto
- Vaihe 2: Tässä projektissa käytetyt materiaalit ja ohjelmistot
- Vaihe 3: Mitä tehdä?
- Vaihe 4: Kaaviot
- Vaihe 5: Kuinka tehdä?
- Vaihe 6: Pseudo-koodi
- Vaihe 7: Koodi
- Vaihe 8: Ulkoiset linkit
Video: Pallonseurantarobotti: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
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
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
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
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
Tässä on pseudo-koodi OpenCV-tunnistusosalle, jossa havaitsemme pallon.
Vaihe 7: 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:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen