- Nødvendig hardware:
- Programmeringskrav:
- Opsætning af behandling på Raspberry Pi:
- Kredsløbsdiagram:
- Raspberry Pi Ball tracking program:
- Arbejde med Raspberry Pi Ball Tracking Robot:
Området for robotik, kunstig intelligens og maskinindlæring udvikler sig hurtigt, så det helt sikkert vil ændre menneskehedens livsstil i nær fremtid. Robotter antages at forstå og interagere med den virkelige verden gennem sensorer og maskinindlæring. Billedgenkendelse er en af de populære måder, hvorpå robotterne menes at forstå objekter ved at se på den virkelige verden gennem et kamera, ligesom vi gør. I dette projekt skal du bruge kraften fra Raspberry Pi til at bygge en robot, der kan spore bold og følge den ligesom robotterne, der spiller fodbold.
OpenCV er et meget berømt og open source-værktøj, der bruges til billedbehandling, men i denne vejledning for at holde tingene enkle bruger vi Processing IDE. Da behandling til ARM også har frigivet GPIO-biblioteket til behandling, behøver vi ikke længere skifte mellem python og behandling for at arbejde med Raspberry Pi. Lyder fedt, ikke? Så lad os komme i gang.
Nødvendig hardware:
- Hindbær Pi
- Kameramodul med båndkabel
- Robotchassis
- Gearmotorer med hjul
- L293D motor driver
- Powerbank eller enhver anden bærbar strømkilde
Programmeringskrav:
- Skærm eller anden skærm til Raspberry pi
- Tastatur eller mus til Pi
- Behandler ARM-software
Bemærk: Det er obligatorisk at have en skærm tilsluttet Pi gennem ledninger under programmering, for først da kan kameraets video ses
Opsætning af behandling på Raspberry Pi:
Som tidligere fortalt bruger vi behandlingsmiljøet til at programmere vores Raspberry Pi og ikke standardmetoden til at bruge python. Så følg nedenstående trin:
Trin 1: - Tilslut din Raspberry Pi til din skærm, tastatur og mus, og tænd den.
Trin 2: - Sørg for, at din Pi har forbindelse til en aktiv internetforbindelse, fordi vi er ved at downloade nogle få ting.
Trin 3: - Klik på Processing ARM for at downloade behandlings-IDE til Raspberry Pi. Downloadet vil være i form af en ZIP-fil.
Trin 4: - Når du er downloadet, skal du udpakke filerne i din ZIP-mappe i det foretrukne bibliotek. Jeg har lige hentet det på mit skrivebord.
Trin 5: - Åbn nu den udpakkede mappe, og klik på filen med navnet behandling. Det skal åbne et vindue som vist nedenfor.
Trin 6: - Dette er det miljø, hvor vi vil skrive vores koder. For folk, der er fortrolige med Arduino, skal du ikke være chokeret JA IDE ligner Arduino, og det samme gør programmet.
Trin 7: - Vi har brug for to biblioteker for at vores kuglefølgende program skal fungere. For at installere skal du bare klikke på Skitse -> Importer bibliotek -> Tilføj bibliotek . Følgende dialogboks åbnes.
Trin 8: - Brug det øverste venstre tekstfelt til at søge efter Raspberry Pi og tryk enter, dit søgeresultat skal se sådan ud.
Trin 9: - Søg efter bibliotekerne "GL Video" og "Hardware I / O", og klik på installer for at installere dem. Sørg for at installere begge biblioteker.
Trin 10: - Baseret på dit internet vil installationen tage nogle minutter. Når det er gjort, er vi klar til at behandle software.
Kredsløbsdiagram:
Kredsløbsdiagrammet for dette Raspberry Pi Ball Tracking Project er vist nedenfor.
Som du kan se, involverer kredsløbet et PI-kamera, et motordrivermodul og et par motorer tilsluttet Raspberry pi. Det komplette kredsløb drives af en mobil strømbank (repræsenteret af AAA-batteri i kredsløbet ovenfor).
Da stiftdetaljerne ikke er nævnt på Raspberry Pi, skal vi kontrollere stifterne ved hjælp af nedenstående billede
For at køre motorerne har vi brug for fire ben (A, B, A, B). Disse fire ben er tilsluttet fra henholdsvis GPIO14,4,17 og 18. Den orange og hvide ledning danner sammen forbindelsen til en motor. Så vi har to sådanne par til to motorer.
Motorerne er tilsluttet L293D Motor Driver- modulet som vist på billedet, og drivermodulet drives af en strømbank. Sørg for, at strømbankens jord er forbundet til jorden på Raspberry Pi, kun da fungerer din forbindelse.
Det er det, vi er færdige med vores hardwareforbindelse, lad os gå tilbage til vores behandlingsmiljø og begynde at programmere for at lære vores robot at spore en bold.
Raspberry Pi Ball tracking program:
Det komplette behandlingsprogram for dette projekt findes i slutningen af denne side, som du bruger direkte. Længere nedenfor, har jeg forklaret, hvordan koden fungerer, så du kan bruge den til andre lignende projekter.
Det program Konceptet er meget enkelt. Selvom projektets hensigt er at spore en bold, vil vi faktisk ikke gøre det. Vi skal bare identificere bolden ved hjælp af dens farve. Som vi alle ved, er videoer intet andet end kontinuerlige rammer af billeder. Så vi tager hvert billede og deler det i pixels. Derefter sammenligner vi hver pixelfarve med boldens farve; hvis der findes en kamp, kan vi sige, at vi har fundet bolden. Med denne information kan vi også identificere kuglens position (pixelfarve) på skærmen. Hvis positionen er langt til venstre, bevæger vi robotten til højre, hvis positionen er langt til højre, bevæger vi robotten mod venstre, så pixelpositionen altid forbliver i midten af skærmen. Du kan se Computer Vision-video af Daniel shiffman for at få et klart billede.
Som altid begynder vi med at importere de to biblioteker, vi downloader. Dette kan gøres ved hjælp af følgende to linjer. Hardware I / O-biblioteket bruges til at få adgang til GPIO-stifterne på PI direkte fra behandlingsmiljøet, glvideo-biblioteket bruges til at få adgang til Raspberry Pi-kameramodulet.
importbehandling.io. *; import gohai.glvideo. *;
Inde i opsætningsfunktionen initialiserer vi outputstifterne for at styre motoren og henter også videoen fra pi-kameraet og størrelse det i et vindue i størrelsen 320 * 240.
ugyldig opsætning () {størrelse (320, 240, P2D); video = ny GLCapture (dette); video.start (); trackColor = farve (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
Det tomrum draw er ligesom den uendelig løkke koden inde i denne løkke vil blive eksekvere, så længe programmet er afsluttet. Hvis en kamerakilde er tilgængelig, læser vi videoen, der kommer ud af den
ugyldig tegning () {baggrund (0); hvis (video.available ()) {video.read (); }}
Derefter begynder vi at opdele videorammen i pixels. Hver pixel har en værdi på rød, grøn og blå. Disse værdier er gemt i variablen r1, gl og b1
for (int x = 0; x <video.width; x ++) {for (int y = 0; y <video.højde; y ++) {int loc = x + y * video.width; // Hvad er den aktuelle farvefarve currentColor = video.pixels; flyde r1 = rød (nuværende farve); flyde g1 = grøn (nuværende farve); flyde b1 = blå (nuværende farve);
For at opdage farve på bolden oprindeligt skal vi klikke på farven. Når du har klikket, gemmes bolden i farven i trackColour .
ugyldig mousePressed () {// Gem farve, hvor musen klikkes i trackColor-variabel int loc = mouseX + musY * video.width; trackColor = video.pixels; }
Når vi først har sporfarven og den aktuelle farve, skal vi sammenligne dem. Denne sammenligning bruger dist-funktionen. Den kontrollerer, hvor tæt den aktuelle farve er på sporfarven.
flyde d = dist (r1, gl, b1, r2, g2, b2);
Den værdi af dist vil være nul for en eksakt match. Så hvis værdien af dist er mindre end en specificeret værdi (verdensrekord) antager vi, at vi har fundet sporfarven. Derefter får vi placeringen af den pixel og gemmer den i variablen nærmest X og nærmest Y for at finde placeringen af bolden
hvis (d <worldRecord) {worldRecord = d; nærmesteX = x; tættestY = y; }
Vi tegner også en ellipse omkring den fundne farve for at indikere, at farven er fundet. Værdien af positionen er også trykt på konsollen, dette hjælper meget under fejlretning.
hvis (worldRecord <10) {// Tegn en cirkel ved det spores pixelfyld (trackColor); slagvægt (4.0); slagtilfælde (0); ellipse (nærmesteX, nærmesteY, 16, 16); println (nærmesteX, nærmesteY);
Endelig kan vi sammenligne placeringen af det nærmeste X og nærmeste Y og justere motorerne på en sådan måde, at farven kommer til midten af skærmen. Nedenstående kode bruges til at dreje robotten til højre, da X-positionen af farven viste sig at være i venstre side af skærmen (<140)
hvis (nærmesteX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); forsinkelse (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Drej til højre"); }
På samme måde kan vi kontrollere placeringen af X og Y for at styre motorerne i den ønskede retning. Som altid kan du se bunden af siden for det komplette program.
Arbejde med Raspberry Pi Ball Tracking Robot:
Når du er klar med hardware og program, er det tid til at have det sjovt. Før vi tester vores bot på jorden, skal vi sørge for, at alt fungerer fint. Tilslut din Pi for at overvåge og starte behandlingskoden. Du skal se videofeed i et lille vindue. Bring nu kuglen inden i rammen og klik på bolden for at lære robotten, at den skal spore netop denne farve. Flyt nu bolden rundt på skærmen, og du skal bemærke, at hjulene roterer.
Hvis alt fungerer som forventet, skal du slippe boten på jorden og begynde at lege med den. Sørg for, at rummet er jævnt oplyst for at opnå de bedste resultater. Den komplette bearbejdning af projektet vises i videoen nedenfor. Håber du forstod projektet og nød at bygge noget lignende. Hvis du har problemer, er du velkommen til at skrive dem i kommentarfeltet nedenfor eller hjælpe.