Innholdsfortegnelse:

Astronaut-assisterende Roomba: 4 trinn
Astronaut-assisterende Roomba: 4 trinn

Video: Astronaut-assisterende Roomba: 4 trinn

Video: Astronaut-assisterende Roomba: 4 trinn
Video: NASA UFO team calls for higher quality data in first public meeting 2024, November
Anonim
Astronaut-assisterende Roomba
Astronaut-assisterende Roomba

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

Nødvendige deler
Nødvendige deler
Nødvendige deler
Nødvendige deler
Nødvendige deler
Nødvendige deler
Nødvendige deler
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

Filer og kamerakonfigurasjon
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

Eksempel på MATLAB -kode
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: