Indholdsfortegnelse:

Astronaut-assisterende Roomba: 4 trin
Astronaut-assisterende Roomba: 4 trin

Video: Astronaut-assisterende Roomba: 4 trin

Video: Astronaut-assisterende Roomba: 4 trin
Video: Danny Sheehan: UFO Disclosure, UFOs + Consciousness, ET visitors, an alleged ALIEN interview, & UAP 2024, Juli
Anonim
Astronaut-assisterende Roomba
Astronaut-assisterende Roomba

Dette projekt er lavet ved at bruge Raspberry Pi 3 ombord på iRobot Create Version 2. MATLAB bruges til at programmere robotten til at følge specifikke instruktioner ved hjælp af dens sensorer og kamera. Sensorerne og kameraerne bruges til at udføre specifikke opgaver, der ville følge en astronaut og give ham/hende mulighed for at kommunikere med sin hjemmebase, hvis noget går galt.

Trin 1: Nødvendige dele

Nødvendige dele
Nødvendige dele
Nødvendige dele
Nødvendige dele
Nødvendige dele
Nødvendige dele
Nødvendige dele
Nødvendige dele

1. iRobot Opret version 2

IRobot Create er den mest essentielle del af dette projekt, da det er programmerbart og kan være en god repræsentation for en egentlig rover, der følger astronauter og hjælper dem i fremtiden

2. Raspberry Pi 3

Raspberry Pi var den programmerbare, der blev brugt til dette projekt. Koden er designet til Pi, og versionen af Pi vedhæftet er 3 (model B). Andre programmerbare tavler, f.eks. Arduino, kan bruges, men arduino og de fleste andre tavler kræver anden kodning end beskrevet i et andet trin

3. Raspberry Pi kameramodul

Den eneste fremmede forbindelse til Raspberry Pi, der er nødvendig til dette projekt, er kameramodulet. Kameramodulet er en integreret del af dette projekt, da roomba kun vil udføre opgaver baseret på, hvad det ser i kameraet

4. MATLAB 2018a

MATLABs anden seneste version, 2018a, blev brugt til kodning involveret i denne opsætning. Det er sandsynligt, at mange andre versioner af MATLAB vil arbejde med dette, da roomba -programmeringen har eksisteret i et stykke tid

Trin 2: Filer og kamerakonfiguration

Filer og kamerakonfiguration
Filer og kamerakonfiguration

1. Raspberry Pi og kameraforbindelser til roomba

  • Pi kan tilslutte til iRobot direkte med en mikro -USB. Det er alt det skal være klar til brug. Det anbefales dog, at det placeres sikkert på roomba, som vist på billeder under hele præsentationen indtil nu.
  • Kameraet har en direkte forbindelse til Raspberry Pi, og det anbefales stærkt, at der købes eller laves noget for at holde kameraet direkte oppe. Der er ingen reel mening med kameraet, hvis det ikke kan holdes på plads for at vise, hvad roomba ser.

2. Filer

  • Når alt er sat op og tilsluttet, skal du sørge for, at robotten er nulstillet og klar til at gå ved at holde knapperne "Spot" og "Dock" i 10 sekunder sammen.
  • Det er her, MATLAB først er nødvendigt. Filerne til roomba skal installeres først, og alt, hvad der er nødvendigt for at disse filer skal køre, er koden på dette link:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Trin 3: Indledende Roomba -test

Der er mange indledende kontroller, der skal udføres på roomba for at sikre, at det fungerer.

1. Sørg for, at du har forbindelse til det samme WiFi -netværk som roomba. Uden dette vil du aldrig oprette forbindelse via MATLAB.

2. Find ud af, hvilket nummer din roomba er tildelt, så du specifikt kan oprette forbindelse til den roomba, du valgte. For eksempel, hvis dit roombas nummer er 30, ville du oprette forbindelse til det ved at skrive roomba (30) i kommandovinduet i MATLAB.

3. Roomba kan styres gennem strukturer i MATLAB. Hvis du f.eks. Indstiller din kode for roomba (30) til variablen 'r', kan robotten flyttes fremad med kommandoen r.moveDistance (0.2, 0.1).

4. Der er mange forskellige kommandoer, der kan kommunikeres til roomba, og disse kan ses ved at skrive 'doc roomba' i kommandovinduet.

5. Sensorerne til lys-, bump- og klippeaflæsninger kan alle læses ved hjælp af kommandoerne set i 'doc roomba', men en måde at få en konstant, pæn menu til at se sensordata kan ses ved hjælp af 'r.testSensors '.

6. Efter at have testet alt dette kan robotens billedopsamlingssoftware bruges til at læse og se billeder taget. Den grundlæggende kode for dette ville være img = r.getImage og imshow (img);.

7. Billedets RGB -værdier kan findes med koderne red_mean = mean (middelværdi (img (:,:, 1)));

green_mean = middelværdi (middelværdi (img (:,:, 2))); og blue_mean = middelværdi (middelværdi (img (:,:, 3)));.

Trin 4: Eksempel på MATLAB -kode

Eksempel på MATLAB -kode
Eksempel på MATLAB -kode

På dette tidspunkt er du nu klar til at bruge sensorerne og billedoptagelsessoftwaren til at oprette dit eget spin på en Human-Assisting Prototype Mars Rover. Vores eksempel er at følge astronauten ved at spore farven hvid og bevæge sig mod den. Robotten vil bippe, hvis dens sensorer læser høje værdier, så astronauten kan nulstille robotten, hvis den sidder fast, eller gå og hente den og nulstille den, hvis den sidder fast på en klippe. Den læser dog kun disse fejl, så længe den ser hvid. Uden at kunne se farven hvid, går robotten ind i fejltilstand. Det er programmeret til at sende to forskellige slags e -mails tilbage til hjemmebasen afhængigt af hvad den ser. Hvis det ser astronautens hudfarve, er det naturligvis ikke godt, så det vil advare hjemmebasen, hvis astronauten har hud, der viser sig med en jakkesætfunktion. Det andet budskab er forberedt, hvis astronauten simpelthen forsvinder ud af syne. Hvis der ikke vises nogen hvid eller hudfarve til kameraerne, vil robotten dreje rundt og sende en anden, men anden e -mail. De billeder, hvor roomba ikke kan se astronauten, sendes sammen med beskeden i e -mailsne. Koden til vores projekt er vist herunder:

for i = 1:.1: 3 img = r.getImage; billede (img) red_mean = middelværdi (middelværdi (img (:,:, 1))); green_mean = middelværdi (middelværdi (img (:,:, 2))); blue_mean = middelværdi (middelværdi (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. venstre <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.stop 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 %hudfarve vises (skal justeres ud fra astronautens hudfarve) r.beep (); r.bip (); r.bip (); mail = '[email protected]'; %sender e -mail, hvor farven er slukket psswd = 'yeah'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'emne'; m_text = 'test'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', vært); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', vært); 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, 'Hjælp!', 'Astronauternes uniform er slukket!', img); slut hvis red_mean 135 || green_mean 135 || blue_mean 135 for j = 1: 2 %hvis hvid ikke kan findes af robotten r.turnAngle (360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'emne'; m_text = 'test'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', vært); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekvisitter = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', vært); 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, 'Hjælp!', 'Astronauten kan ikke findes!', img); r. stop ende ende ende

Det er naturligvis rodet her, men det skal buffes ud, når det er kopieret. Adgangskoder og e -mails til dette skal naturligvis leveres af dem, der laver dette projekt.

Vores eksempel er dog kun en af mange måder at rode med denne robot på, så den passer til alle. Der er mange forskellige ting, der skal gøres, som du kan passe til dig selv.

Anbefalede: