Innholdsfortegnelse:
- Trinn 1: Nødvendige deler
- Trinn 2: Filer og kamerakonfigurasjon
- Trinn 3: Første Roomba -test
- Trinn 4: Eksempel på MATLAB -kode
Video: Astronaut-assisterende Roomba: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Dette prosjektet er laget ved å bruke Raspberry Pi 3 ombord på iRobot Create Version 2. MATLAB brukes til å programmere roboten til å følge spesifikke instruksjoner ved hjelp av sensorer og kamera. Sensorene og kameraene brukes til å utføre spesifikke oppgaver som vil følge en astronaut og gi ham/henne muligheten til å kommunisere med hjemmebasen hvis noe går galt.
Trinn 1: Nødvendige deler
1. iRobot Lag versjon 2
IRobot Create er den viktigste delen av dette prosjektet siden det er programmerbart og kan være en flott representasjon for en faktisk rover som følger astronauter og hjelper dem i fremtiden
2. Raspberry Pi 3
Raspberry Pi var den programmerbare som ble brukt til dette prosjektet. Koden er designet for Pi og versjonen av Pi vedlagt er 3 (modell B). Andre programmerbare tavler som arduino er brukbare, men arduino og de fleste andre tavler vil kreve annen koding enn beskrevet i et annet trinn
3. Raspberry Pi kameramodul
Den eneste eksterne tilkoblingen til Raspberry Pi som er nødvendig for dette prosjektet er kameramodulen. Kameramodulen er en integrert del av dette prosjektet, siden roomba bare vil utføre oppgaver basert på det den ser i kameraet
4. MATLAB 2018a
MATLABs nest siste versjon, 2018a, ble brukt for kodingen som er involvert i dette oppsettet. Det er sannsynlig at mange andre versjoner av MATLAB vil fungere med dette siden roomba -programmeringen har eksistert en stund
Trinn 2: Filer og kamerakonfigurasjon
1. Raspberry Pi og kameratilkoblinger til roomba
- Pi kan koble til iRobot direkte med en mikro -USB. Det er alt den trenger for å være klar til bruk. Imidlertid anbefales det at det plasseres trygt på roomba slik som vist på bilder under hele presentasjonen så langt.
- Kameraet har en direkte forbindelse til Raspberry Pi, og det anbefales på det sterkeste at noe er kjøpt eller laget for å holde kameraet direkte oppe. Det er ikke noe egentlig poeng med kameraet hvis det ikke kan holdes på plass for å vise hva roomba ser.
2. Filer
- Etter at alt er satt opp og tilkoblet, må du kontrollere at roboten er tilbakestilt og klar til å gå ved å holde knappene "Spot" og "Dock" i 10 sekunder sammen.
- Det er her MATLAB først er nødvendig. Filene for roomba må installeres først, og alt som trengs for disse filene er å kjøre er koden på denne lenken:
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Trinn 3: Første Roomba -test
Det er mange innledende kontroller som skal utføres på roomba for å sikre at det fungerer.
1. Pass på at du er koblet til det samme WiFi -nettverket som roomba. Uten dette vil du aldri koble deg til via MATLAB.
2. Finn ut hvilket nummer din roomba er tildelt, slik at du spesifikt kan koble deg til roomba du valgte. For eksempel, hvis rommet ditt er 30, vil du koble til det ved å skrive inn romba (30) i kommandovinduet i MATLAB.
3. Roomba kan styres gjennom strukturer i MATLAB. For eksempel, hvis du angir koden for roomba (30) til variabelen 'r', kan roboten flyttes fremover med kommandoen r.moveDistance (0.2, 0.1).
4. Det er mange forskjellige kommandoer som kan kommuniseres til roomba, og disse kan sees ved å skrive 'doc roomba' i kommandovinduet.
5. Sensorene for lys-, støt- og klippeavlesninger kan alle leses ved å bruke kommandoene som er sett i 'doc roomba', men en måte å ha en konstant, ryddig meny for å se sensordata kan sees ved å bruke 'r.testSensors '.
6. Etter å ha testet alt dette, kan bildesamlingsprogramvaren til roboten brukes til å lese og se bilder som er tatt. Den grunnleggende koden for dette vil være img = r.getImage og imshow (img);.
7. RGB -verdier for bildet finnes med kodene red_mean = mean (gjennomsnitt (img (:,:, 1)));
green_mean = mean (mean (img (:,:, 2))); og blue_mean = mean (mean (img (:,:, 3)));.
Trinn 4: Eksempel på MATLAB -kode
På dette tidspunktet er du nå klar til å bruke sensorene og programvaren for å ta bilder for å lage ditt eget snurr på en menneskelig assisterende prototype Mars Rover. Vårt eksempel er å følge astronauten ved å spore fargen hvit og bevege seg mot den. Roboten piper hvis sensorene leser høye verdier, slik at astronauten kan tilbakestille roboten hvis den sitter fast eller gå og plukke den opp og tilbakestille den hvis den sitter fast på en klippe. Imidlertid leser den bare disse feilene så lenge den ser hvit. Uten å kunne se fargen hvit, går roboten inn i feilmodus. Den er programmert til å sende to forskjellige typer e -poster tilbake til hjemmebasen, avhengig av hva den ser. Hvis det ser astronautens hudfarge, er det åpenbart ikke bra, så det vil varsle hjemmebasen hvis astronauten har hud som viser seg med funksjonssvikt i dressen. Det andre budskapet er utarbeidet hvis astronauten rett og slett forsvinner fra synet. Hvis det ikke vises noen hvit eller hudfarge for kameraene, vil roboten snurre rundt og sende en annen, men annerledes e -post. Bildene der roomba ikke kan se astronauten blir sendt sammen med meldingen i e -postene. Koden for prosjektet vårt er vist nedenfor:
for i = 1:.1: 3 img = r.getImage; image (img) red_mean = gjennomsnitt (gjennomsnitt (img (:,:, 1))); green_mean = mean (mean (img (:,:, 2))); blue_mean = mean (mean (img (:,:, 3))); hvis red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump. venstre> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stopp ellers for i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end hvis green_mean <35 && blue_mean <35 %hudfarge vises (må justeres basert på astronautens hudfarge) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %sender e -post som viser at dressen er av psswd = 'yeah'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subject'; m_text = 'test'; setpref ('Internett', 'E_mail', post); setpref ('Internett', 'SMTP_Server', vert); setpref ('Internett', 'SMTP_Username', mail); setpref ('Internett', 'SMTP_Password', psswd); rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', vert); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'The astronauts uniform is off!', img); slutt hvis red_mean 135 || green_mean 135 || blue_mean 135 for j = 1: 2 %hvis hvit ikke kan bli funnet av roboten r.turnAngle (360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subject'; m_text = 'test'; setpref ('Internett', 'E_mail', post); setpref ('Internett', 'SMTP_Server', vert); setpref ('Internett', 'SMTP_Username', mail); setpref ('Internett', 'SMTP_Password', psswd); rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', vert); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Hjelp!', 'Astronauten kan ikke bli funnet!', img); r. stopp ende ende ende
Det er åpenbart rotete her, men det bør buffes ut når det er kopiert. Passord og e -post for dette skal åpenbart leveres av de som gjør dette prosjektet.
Imidlertid er vårt eksempel bare en av mange måter å rote med denne roboten for å få den til å passe alle. Det er mange forskjellige ting å gjøre, som du kan passe for deg selv.
Anbefalt:
Gjør Roomba til en Mars Rover: 5 trinn
Gjør Roomba til en Mars Rover:
Cosmo Clock - Endrer farge hver gang en astronaut går inn i rommet: 8 trinn (med bilder)
Cosmo Clock - Endrer farge hver gang en astronaut kommer inn i verdensrommet: Hei! Er du en plassentusiast? Hvis ja så hi-fi! Jeg elsker plass og astronomi. Tydeligvis er jeg ingen astronaut for å gå opp dit og se nærmere på universet. Men hver gang jeg finner ut at en person fra jorden har reist til himmelen, blir jeg inspirert
Roomba Bot the Bulider: 5 trinn (med bilder)
Roomba Bot Bulider: Bot the Builder er en roomba, som med " grabbers " festet til fronten vil kunne flytte objekter rundt. Koden med den er satt til å registrere den første satsen med en GUI -boks som du kan kontrollere med bare museklikk. Etter
MATLAB -kontrollert Roomba: 5 trinn
MATLAB -kontrollert Roomba: Målet med dette prosjektet er å bruke MATLAB så vel som en modifisert iRobot programmerbar robot. Gruppen vår kombinerte kodingskunnskapene våre for å lage et MATLAB -skript som bruker mange funksjoner i iRobot, inkludert klippesensorene, støtfangersensoren
Fra Roomba til Rover på bare 5 trinn !: 5 trinn
Fra Roomba til Rover på bare 5 trinn !: Roomba -roboter er en morsom og enkel måte å dyppe tærne i robotikkens verden. I denne instruksen vil vi detaljere hvordan du konverterer en enkel Roomba til en kontrollerbar rover som samtidig analyserer omgivelsene. Deleliste1.) MATLAB2.) Roomb