Kazalo:

Roomba, ki pomaga astronavtom: 4 koraki
Roomba, ki pomaga astronavtom: 4 koraki

Video: Roomba, ki pomaga astronavtom: 4 koraki

Video: Roomba, ki pomaga astronavtom: 4 koraki
Video: Дэниел Шмахтенбергер: Уничтожат ли нас технологии? 2024, November
Anonim
Roomba, ki pomaga astronavtom
Roomba, ki pomaga astronavtom

Ta projekt je narejen z uporabo Raspberry Pi 3 na iRobot Create Version 2. MATLAB se uporablja za programiranje robota, da sledi posebnim navodilom s svojimi senzorji in kamero. Senzorji in kamere se uporabljajo za izvajanje posebnih nalog, ki bi sledile astronavtu, in mu/ji omogočijo komunikacijo z domačo bazo, če gre kaj narobe.

Korak: Potrebni deli

Potrebni deli
Potrebni deli
Potrebni deli
Potrebni deli
Potrebni deli
Potrebni deli
Potrebni deli
Potrebni deli

1. iRobot Ustvari različico 2

IRobot Create je najpomembnejši del tega projekta, saj ga je mogoče programirati in je lahko odlična predstavitev dejanskega roverja, ki sledi astronavtom in jim v prihodnosti pomaga

2. Malina Pi 3

Za ta projekt je bilo mogoče programirati Raspberry Pi. Koda je zasnovana za Pi, različica priloženega Pi pa je 3 (model B). Druge programabilne plošče, kot je arduino, so uporabne, vendar bodo arduino in večina drugih plošč zahtevale drugačno kodiranje, kot je opisano v naslednjem koraku

3. Modul kamere Raspberry Pi

Edina zunanja povezava z Raspberry Pi, potrebna za ta projekt, je modul kamere. Modul kamere je sestavni del tega projekta, saj bo roomba opravljala naloge le na podlagi tega, kar vidi v kameri

4. MATLAB 2018a

Druga najnovejša različica podjetja MATLAB, 2018a, je bila uporabljena za kodiranje, vključeno v to nastavitev. Verjetno bodo s tem delovale številne druge različice MATLAB -a, saj programiranje roomba obstaja že nekaj časa

2. korak: Datoteke in konfiguracija kamere

Datoteke in konfiguracija kamere
Datoteke in konfiguracija kamere

1. Povezave Raspberry Pi in kamere do roombe

  • Pi se lahko poveže z iRobotom neposredno z mikro USB -jem. To je vse, kar mora biti pripravljeno za uporabo. Priporočljivo pa je, da ga varno namestite na roombo, kot je prikazano na slikah skozi celotno predstavitev.
  • Kamera ima neposredno povezavo z Raspberry Pi in zelo priporočljivo je, da nekaj kupite ali naredite, da fotoaparat držite neposredno navzgor. Kamera nima pravega smisla, če je ni mogoče držati na mestu in prikazati, kaj vidi roomba.

2. Datoteke

  • Ko vse nastavite in povežete, se prepričajte, da je robot ponastavljen in pripravljen za delo, tako da skupaj držite tipki "Spot" in "Dock" 10 sekund skupaj.
  • Tu je MATLAB prvič potreben. Datoteke za roombo je treba najprej namestiti in vse, kar je potrebno za zagon teh datotek, je koda na tej povezavi:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3. korak: Začetno testiranje Roombe

Na roombi je treba opraviti veliko začetnih pregledov, da se prepričamo, da deluje.

1. Prepričajte se, da ste povezani z istim omrežjem WiFi kot roomba. Brez tega se nikoli ne boste povezali prek MATLAB -a.

2. Ugotovite, kateri številki je dodeljena vaša roomba, da se lahko posebej povežete z izbrano roombo. Če je na primer številka vaše roombe 30, bi se z njo povezali tako, da v ukazno okno v MATLAB vnesete roomba (30).

3. Roombo lahko upravljate s pomočjo struktur v MATLAB -u. Če na primer nastavite kodo za roombo (30) na spremenljivko 'r', lahko robot premaknete naprej z ukazom r.moveDistance (0,2, 0,1).

4. Roombi je mogoče sporočiti veliko različnih ukazov, ki jih lahko vidite tako, da v ukazno okno vnesete 'doc roomba'.

5. Senzorje za odčitke svetlobe, udarcev in pečin lahko berete z ukazi, vidnimi v "doc roomba", vendar je način, da imate stalen, urejen meni za ogled podatkov senzorjev, viden z uporabo "r.testSensors" '.

6. Po preizkusu vsega tega lahko programsko opremo za zbiranje slik robota uporabite za branje in ogled posnetih slik. Osnovna koda za to bi bila img = r.getImage in imshow (img);.

7. RGB vrednosti slike je mogoče najti s kodami red_mean = mean (povprečno (img (:,:, 1)));

zeleno_pomen = povprečje (povprečje (img (:,:, 2))); in blue_mean = povprečje (povprečje (img (:,:, 3)));.

4. korak: Primer kode MATLAB

Primer kode MATLAB
Primer kode MATLAB

Na tej točki ste zdaj pripravljeni uporabiti senzorje in programsko opremo za fotografiranje, da ustvarite svoj spin na prototipu Mars Rover, ki pomaga človeku. Naš primer je slediti astronavtu tako, da sledimo beli barvi in se premaknemo proti njej. Robot bo piskal, če njegovi senzorji berejo visoke vrednosti, tako da lahko astronavt ponastavi robota, če je obtičal, ali pa ga dvigne in ponastavi, če je obtičal na pečini. Vendar te napake bere le, če je videti belo. Ne da bi videl belo barvo, bo robot vstopil v način napake. Programiran je za pošiljanje dveh različnih vrst e -poštnih sporočil nazaj v domačo bazo, odvisno od tega, kaj vidi. Če opazi barvo kože astronavta, to očitno ni dobro, zato bo domačo bazo opozoril, če ima astronavt kožo z okvaro obleke. Drugo sporočilo je pripravljeno, če astronavt preprosto izgine izpred oči. Če za kamere ni prikazana bela barva ali barva kože, se bo robot vrtel in poslal drugo, vendar drugačno e -pošto. Slike, na katerih roomba ne vidi astronavta, bodo poslane skupaj s sporočilom v e -poštnih sporočilih. Koda za naš projekt je prikazana spodaj:

za i = 1:.1: 3 img = r.getImage; slika (img) rdeče_srednje = povprečno (povprečno (img (:,:, 1))); zeleno_pomen = povprečje (povprečje (img (:,:, 2))); modro_pomen = povprečje (povprečje (img (:,:, 3))); če 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 || svetloba.desno spredaj> 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 %barve kože (treba ga je prilagoditi glede na barvo kože astronavta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %pošlje e -poštno sporočilo, da je obleka izključena psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'predmet'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', gostitelj); setpref ('Internet', 'SMTP_Uporabniš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', gostitelj); props.setProperty ('mail.smtp.port', vrata); 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', vrata); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Uniforma astronavtov ni več!', img); end if red_mean 135 || zeleno_pomen 135 || blue_mean 135 za j = 1: 2 %, če robot ne najde bele barve r.turnAngle (360) mail = '[email protected]'; psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'predmet'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', gostitelj); setpref ('Internet', 'SMTP_Uporabniš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', gostitelj); props.setProperty ('mail.smtp.port', vrata); 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', vrata); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Astronavta ni mogoče najti!', img); r.stop konec end konec

Očitno je tukaj grdo, vendar bi se moralo kopirati, ko se kopira. Gesla in e -poštna sporočila za to morajo jasno dati tisti, ki izvajajo ta projekt.

Vendar pa je naš primer le eden od mnogih načinov, kako se poigravati s tem robotom, da bo ustrezal vsem. Narediti je treba veliko različnih stvari, ki si jih lahko prilagodite sami.

Priporočena: