Sadržaj:

Roomba koja pomaže astronautima: 4 koraka
Roomba koja pomaže astronautima: 4 koraka

Video: Roomba koja pomaže astronautima: 4 koraka

Video: Roomba koja pomaže astronautima: 4 koraka
Video: Я вернул его домой. Немецкая овчарка по имени Дом 2024, Novembar
Anonim
Roomba koja pomaže astronautima
Roomba koja pomaže astronautima

Ovaj projekt napravljen je korištenjem Raspberry Pi 3 na iRobot Create Version 2. MATLAB se koristi za programiranje robota da slijedi specifična uputstva pomoću njegovih senzora i kamere. Senzori i kamere se koriste za obavljanje određenih zadataka koji bi slijedili astronauta i pružaju mu/joj mogućnost komunikacije sa njegovom/njenom kućnom bazom ako nešto pođe po zlu.

Korak 1: Potrebni dijelovi

Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi
Potrebni dijelovi

1. iRobot Kreiraj verziju 2

IRobot Create je najvažniji dio ovog projekta jer se može programirati i može biti odlična predstava za stvarnog rovera koji prati astronaute i pomaže im u budućnosti

2. Malina Pi 3

Raspberry Pi je bio programabilni za ovaj projekt. Kôd je dizajniran za Pi, a verzija priloženog Pi je 3 (model B). Ostale programabilne ploče, poput arduina, su upotrebljive, međutim, arduino i većina drugih ploča zahtijevaju drugačije kodiranje nego što je opisano u drugom koraku

3. Modul kamere Raspberry Pi

Jedina vanjska veza s Raspberry Pi -om potrebna za ovaj projekt je modul kamere. Modul kamere je sastavni dio ovog projekta, jer će roomba obavljati samo zadatke na osnovu onoga što vidi u kameri

4. MATLAB 2018a

Druga najnovija verzija MATLAB -a, 2018a, korištena je za kodiranje uključeno u ovu postavku. Vjerojatno će mnoge druge verzije MATLAB -a raditi s ovim budući da je roomba programiranje prisutno već neko vrijeme

Korak 2: Datoteke i konfiguracija kamere

Datoteke i konfiguracija kamere
Datoteke i konfiguracija kamere

1. Povezivanje Raspberry Pi i kamere na roombu

  • Pi se može povezati s iRobotom direktno putem mikro USB -a. To je sve što je potrebno da bi bilo spremno za upotrebu. Međutim, preporučuje se da se sigurno postavi na roombu, kao što je prikazano na slikama tokom cijele prezentacije.
  • Kamera ima direktnu vezu sa Raspberry Pi i preporučuje se da se nešto kupi ili napravi kako bi se kamera držala direktno podignuta. Kamera nema smisla ako se ne može držati na mjestu kako bi pokazala šta roomba vidi.

2. Datoteke

  • Nakon što ste sve postavili i povezali, provjerite je li robot resetiran i spreman za rad držeći zajedno tipke "Spot" i "Dock" 10 sekundi.
  • Ovdje je MATLAB prvi put potreban. Datoteke za roombu moraju se prvo instalirati, a sve što je potrebno za pokretanje ovih datoteka je kôd naveden na ovoj vezi:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Korak 3: Početno Roomba testiranje

Mnogo je početnih provjera koje treba izvršiti na roombi kako bi se uvjerili da radi.

1. Provjerite jeste li povezani na istu WiFi mrežu kao i roomba. Bez ovoga se nikada nećete povezati putem MATLAB -a.

2. Saznajte kojem je broju dodijeljena vaša roomba kako biste se mogli posebno povezati s roombom koju ste odabrali. Na primjer, ako je broj vaše roombe 30, povežite se s njom upisivanjem roombe (30) u naredbeni prozor u MATLAB -u.

3. Roomba se može kontrolirati putem struktura u MATLAB -u. Na primjer, ako postavite kôd za roomba (30) na varijablu 'r', robot se može pomaknuti naprijed naredbom r.moveDistance (0.2, 0.1).

4. Postoji mnogo različitih naredbi koje se mogu prenijeti roombi, a to se može vidjeti upisivanjem 'doc roomba' u komandni prozor.

5. Svi senzori za očitanje svjetla, udara i litica mogu se čitati pomoću naredbi viđenih u 'doc roomba', ali način da imate stalan, uredan meni za pregled podataka senzora može se vidjeti pomoću 'r.testSensors '.

6. Nakon testiranja svega ovoga, softver za prikupljanje slika robota može se koristiti za čitanje i pregled slika. Osnovni kod za ovo bi bio img = r.getImage i imshow (img);.

7. RGB vrijednosti slike mogu se pronaći sa kodovima red_mean = mean (mean (img (:,:, 1)));

green_mean = mean (mean (img (:,:, 2))); and blue_mean = mean (mean (img (:,:, 3)));.

Korak 4: Primjer MATLAB koda

Primjer MATLAB koda
Primjer MATLAB koda

U ovom trenutku, sada ste spremni za korištenje senzora i softvera za snimanje slika za kreiranje vlastitog okretanja na prototipu Mars Rover koji pomaže osobi. Naš primjer je da pratimo astronauta prateći bijelu boju i krećući se prema njoj. Robot će se oglasiti zvučnim signalom ako njegovi senzori očitavaju visoke vrijednosti tako da astronaut može resetirati robota ako je zaglavljen ili otići, podići ga i resetirati ako je zaglavljen na litici. Međutim, čita ove greške samo ako vidi bijelo. Bez mogućnosti da vidi bijelu boju, robot će ući u način greške. Programiran je za slanje dvije različite vrste e -pošte natrag u matičnu bazu, ovisno o tome što vidi. Ako vidi boju kože astronauta, to očito nije dobro, pa će upozoriti matičnu bazu ako astronaut ima kožu sa neispravnošću u odijelu. Druga poruka se priprema ako astronaut jednostavno nestane s vidika. Ako se za kamere ne prikazuje bijela ili boja kože, robot će se okrenuti i poslati drugu, ali drugačiju e -poštu. Slike na kojima roomba ne može vidjeti astronauta bit će poslane zajedno s porukom u e -porukama. Kôd našeg projekta prikazan je ispod:

za i = 1:.1: 3 img = r.getImage; image (img) red_mean = mean (mean (img (:,:, 1))); green_mean = mean (mean (img (:,:, 2))); blue_mean = mean (mean (img (:,:, 3))); ako je red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 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.stop else za i = 1: 2 r.moveDistance (0,2, 0,1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %boja kože (potrebno je prilagoditi na osnovu boje kože astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %šalje e -poruku u kojoj se vidi da je odelo isključeno psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'tema'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', host); 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, 'Upomoć!', 'Uniforma astronauta je skinuta!', img); end if red_mean 135 || green_mean 135 || blue_mean 135 za j = 1: 2 %ako robot ne može pronaći bijelu boju r.turnAngle (360) mail = '[email protected]'; psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'tema'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', host); 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, 'Upomoć!', 'Astronauta nije moguće pronaći!', img); r.stop end kraj end end

Očigledno je ovdje neuredno, ali bi se trebalo izbrisati nakon kopiranja. Lozinke i e -poštu za ovo će očito dostaviti oni koji rade na ovom projektu.

Međutim, naš primjer je samo jedan od mnogih načina da se petljate s ovim robotom kako bi odgovarao svima. Mnogo je različitih stvari koje treba učiniti, a koje možete prilagoditi sebi.

Preporučuje se: