Innehållsförteckning:

Astronautassisterande Roomba: 4 steg
Astronautassisterande Roomba: 4 steg

Video: Astronautassisterande Roomba: 4 steg

Video: Astronautassisterande Roomba: 4 steg
Video: Danny Saucedo - Brinner i bröstet ft. Malcolm B 2024, Juli
Anonim
Astronaut-assisterande Roomba
Astronaut-assisterande Roomba

Detta projekt görs genom att använda Raspberry Pi 3 ombord på iRobot Create Version 2. MATLAB används för att programmera roboten för att följa specifika instruktioner med dess sensorer och kamera. Sensorerna och kamerorna används för att utföra specifika uppgifter som skulle följa en astronaut och ge honom/henne möjlighet att kommunicera med sin hemmabas om något går fel.

Steg 1: Nödvändiga delar

Nödvändiga delar
Nödvändiga delar
Nödvändiga delar
Nödvändiga delar
Nödvändiga delar
Nödvändiga delar
Nödvändiga delar
Nödvändiga delar

1. iRobot Skapa version 2

IRobot Create är den viktigaste delen av detta projekt eftersom det är programmerbart och kan vara en bra representation för en verklig rover som följer astronauter och hjälper dem i framtiden

2. Hallon Pi 3

Raspberry Pi var den programmerbara som användes för detta projekt. Koden är utformad för Pi och den bifogade versionen av Pi är 3: an (modell B). Andra programmerbara kort som arduino är användbara, men arduino och de flesta andra brädor kommer att kräva annan kodning än beskrivs i ett annat steg

3. Raspberry Pi kameramodul

Den enda främmande anslutningen till Raspberry Pi som behövs för detta projekt är kameramodulen. Kameramodulen är en integrerad del av detta projekt, eftersom roomba bara kommer att utföra uppgifter baserat på vad den ser i kameran

4. MATLAB 2018a

MATLAB: s näst senaste version, 2018a, användes för kodningen som ingår i denna installation. Det är troligt att många andra versioner av MATLAB kommer att fungera med detta eftersom roomba -programmeringen har funnits ett tag

Steg 2: Filer och kamerakonfiguration

Filer och kamerakonfiguration
Filer och kamerakonfiguration

1. Raspberry Pi och kamerans anslutningar till roomba

  • Pi kan ansluta till iRobot direkt med ett mikro -USB. Det är allt som behövs för att vara redo att använda. Det rekommenderas dock att det placeras säkert på roomba så som visas på bilder under hela presentationen hittills.
  • Kameran har en direktanslutning till Raspberry Pi och det rekommenderas starkt att något köps eller görs för att hålla kameran direkt uppe. Det finns ingen riktig poäng med kameran om den inte kan hållas på plats för att visa vad roomba ser.

2. Filer

  • Efter att allt är inställt och anslutet, se till att roboten är återställd och redo att gå genom att hålla "Spot" och "Dock" knapparna i 10 sekunder tillsammans.
  • Det är här MATLAB först behövs. Filerna för roomba måste installeras först och allt som behövs för att dessa filer ska köras är koden som finns på denna länk:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Steg 3: Initial Roomba -testning

Det finns många första kontroller som ska utföras på roomba för att se till att det fungerar.

1. Se till att du är ansluten till samma WiFi -nätverk som roomba. Utan detta kommer du aldrig att ansluta via MATLAB.

2. Ta reda på vilket nummer din roomba har tilldelats så att du specifikt kan ansluta till den roomba du valde. Till exempel, om din roombas nummer är 30, skulle du ansluta till det genom att skriva roomba (30) i kommandofönstret i MATLAB.

3. Roomba kan styras genom strukturer i MATLAB. Om du till exempel anger din kod för roomba (30) till variabeln 'r' kan roboten flyttas framåt med kommandot r.moveDistance (0.2, 0.1).

4. Det finns många olika kommandon som kan kommuniceras till roomba och dessa kan ses genom att skriva "doc roomba" i kommandofönstret.

5. Sensorerna för ljus-, bump- och klippavläsningar kan alla läsas med hjälp av kommandona som visas i 'doc roomba' men ett sätt att ha en konstant, snygg meny för att se sensordata kan ses med hjälp av 'r.testSensors '.

6. Efter att ha testat allt detta kan robotens bildinsamlingsprogramvara användas för att läsa och se bilder som tagits. Grundkoden för detta skulle vara img = r.getImage och imshow (img);.

7. Bildens RGB -värden kan hittas med koderna red_mean = medelvärde (medelvärde (img (:,:, 1)));

green_mean = medelvärde (medelvärde (img (:,:, 2))); och blue_mean = medelvärde (medelvärde (img (:,:, 3)));.

Steg 4: Exempel på MATLAB -kod

Exempel på MATLAB -kod
Exempel på MATLAB -kod

Vid denna tidpunkt är du nu redo att använda sensorerna och bildtagningsprogramvaran för att skapa din egen snurr på en Human-Assisting Prototype Mars Rover. Vårt exempel är att följa astronauten genom att spåra färgen vit och gå mot den. Roboten piper om sensorerna läser höga värden så att astronauten kan återställa roboten om den fastnar eller gå och hämta den och återställa den om den fastnar på en klippa. Den läser dock bara dessa fel så länge den ser vitt. Utan att kunna se färgen vit kommer roboten in i felläget. Den är programmerad att skicka två olika sorters e -postmeddelanden tillbaka till hemmabasen beroende på vad den ser. Om det ser astronautens hudfärg är det uppenbarligen inte bra, så det kommer att varna hemmabasen om astronauten har hud som visar sig med en kostymfel. Det andra budskapet är förberett om astronauten helt enkelt försvinner ur sikte. Om det inte visas något vitt eller hudfärg för kamerorna kommer roboten att snurra runt och skicka ett annat men annorlunda e -postmeddelande. Bilderna där roomba inte kan se astronauten skickas tillsammans med meddelandet i e -postmeddelandena. Koden för vårt projekt visas nedan:

för i = 1:.1: 3 img = r.getImage; bild (img) red_mean = medelvärde (medelvärde (img (:,:, 1))); green_mean = medelvärde (medelvärde (img (:,:, 2))); blue_mean = medelvärde (medelvärde (img (:,:, 3))); om red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.vänster> 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 annars för i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end om green_mean <35 && blue_mean <35 %hudfärg visas (måste justeras baserat på astronautens hudfärg) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %skickar e -post som visar att kostym är avstängd psswd = 'yeah'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'ämne'; m_text = 'test'; setpref ('Internet', 'E_mail', e -post); setpref ('Internet', 'SMTP_Server', värd); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekvisita = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', värd); 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); avsluta om red_mean 135 || green_mean 135 || blue_mean 135 för j = 1: 2 %om vitt inte kan hittas av roboten r.turnAngle (360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'ämne'; m_text = 'test'; setpref ('Internet', 'E_mail', e -post); setpref ('Internet', 'SMTP_Server', värd); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekvisita = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', värd); 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 inte hittas!', img); r. stoppa ändänden

Uppenbarligen är det rörigt här, men det borde buffra ut när det har kopierats. Lösenord och e -postmeddelanden för detta ska givetvis tillhandahållas av dem som gör detta projekt.

Vårt exempel är dock bara ett av många sätt att bråka med den här roboten så att den passar alla. Det finns många olika saker att göra, som du kan passa för dig själv.

Rekommenderad: