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, Srpanj
Anonim
Roomba koja pomaže astronautima
Roomba koja pomaže astronautima

Ovaj projekt napravljen je korištenjem Raspberry Pi 3 na ploči iRobot Create Version 2. MATLAB se koristi za programiranje robota da slijedi određene upute pomoću njegovih senzora i kamere. Senzori i kamere koriste se za obavljanje posebnih zadataka koji bi slijedili astronauta i pružaju mu/joj mogućnost komunikacije s njegovom/njezinom 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 Izradi verziju 2

IRobot Create najvažniji je dio ovog projekta jer se može programirati i može biti sjajan prikaz 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 Pi priložena je 3 (model B). Druge programabilne ploče, poput arduina, su upotrebljive, međutim, arduino i većina drugih ploča zahtijevaju drugačije kodiranje od opisanog u drugom koraku

3. Modul kamere Raspberry Pi

Jedina vanjska veza s Raspberry Pi -om potrebna za ovaj projekt je modul kamere. Modul kamere sastavni je dio ovog projekta, budući da će roomba obavljati samo zadatke na temelju 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 s roombom

  • Pi se može povezati s iRobotom izravno 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 tijekom cijele prezentacije.
  • Kamera ima izravnu vezu s Raspberry Pi i jako se preporučuje da se nešto kupi ili napravi kako bi se kamera držala izravno gore. Kamera nema smisla ako se ne može držati na mjestu kako bi pokazala što 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 poveznici:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Korak 3: Početno testiranje Roombe

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 toga se nikada nećete povezati putem MATLAB -a.

2. Saznajte kojem je broju vaša roomba dodijeljena 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 pomoću struktura u MATLAB -u. Na primjer, ako svoj kôd za roombu (30) postavite 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 naredbeni 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 izbornik za prikaz 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 snimljenih slika. Osnovni kôd za to bio bi img = r.getImage i imshow (img);.

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

zeleno_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 2))); i plavo_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 3)));.

Korak 4: Primjer MATLAB koda

Primjer MATLAB koda
Primjer MATLAB koda

Sada ste spremni koristiti senzore i softver za snimanje slika za stvaranje vlastitog okretanja na prototipu Mars Rover koji pomaže osobi. Naš je primjer slijediti astronauta prateći bijelu boju i krećući se prema njoj. Robot će se oglasiti zvučnim signalom ako senzori očitavaju visoke vrijednosti tako da astronaut može resetirati robota ako je zaglavljen ili otići pokupiti ga i resetirati ako je zaglavljen na litici. Međutim, čita ove pogreške samo ako vidi bijelo. Bez mogućnosti da vidi bijelu boju, robot će ući u način pogreš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 na kojoj se vidi kvar s odijelom. Druga poruka je pripremljena ako astronaut jednostavno nestane s vidika. Ako se za kamere ne prikazuje bijela ili boja kože, robot će se vrtjeti 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 u nastavku:

za i = 1:.1: 3 img = r.getImage; image (img) red_mean = mean (mean (img (:,:, 1))); zeleno_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 2))); plavo_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 3))); ako je red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || neravnina.lijevo> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || litica.lijevoPrednja <10 || litica.desnoPreda <10 || litica.desno700 || svjetlo.lijevoPredaj> 700 || svjetlo.lijevi centar> 700 || svjetlo.desnoCentar> 700 || svjetlo.desnoSpred> 700 || light.desno> 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 %boje kože (potrebno je prilagoditi na temelju boje kože astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %šalje e -poštu koja pokazuje da je odijelo isključeno psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Korisničko ime', pošta); 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', 'istina'); props.setProperty ('mail.smtp.auth', 'istina'); 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); kraj ako crveno_znači 135 || zeleno_značenje 135 || blue_mean 135 za j = 1: 2 %ako robot ne može pronaći bijelo r.turnAngle (360) mail = '[email protected]'; psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Korisničko ime', pošta); 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', 'istina'); props.setProperty ('mail.smtp.auth', 'istina'); 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 kraj end

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

Međutim, naš je primjer 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čeni: