Sisukord:

Astronauti abistav Roomba: 4 sammu
Astronauti abistav Roomba: 4 sammu

Video: Astronauti abistav Roomba: 4 sammu

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

See projekt on tehtud, kasutades iRobot Create Version 2 pardal olevat Raspberry Pi 3. MATLABi abil programmeeritakse robot andurite ja kaamera abil konkreetseid juhiseid järgima. Andureid ja kaameraid kasutatakse konkreetsete ülesannete täitmiseks, mis järgiksid astronauti ja annaksid talle võimaluse suhelda oma kodubaasiga, kui midagi läheb valesti.

Samm: vajalikud osad

Vajalikud osad
Vajalikud osad
Vajalikud osad
Vajalikud osad
Vajalikud osad
Vajalikud osad
Vajalikud osad
Vajalikud osad

1. iRobot Loo versioon 2

IRobot Create on selle projekti kõige olulisem osa, kuna see on programmeeritav ja võib olla suurepärane esindus tegelikule roverile, kes jälgib astronaute ja abistab neid tulevikus

2. Vaarika Pi 3

Raspberry Pi oli selle projekti jaoks programmeeritav. Kood on mõeldud Pi jaoks ja lisatud Pi versioon on 3 (mudel B). Kasutatavad on ka muud programmeeritavad tahvlid, näiteks arduino, kuid arduino ja enamik teisi tahvleid vajavad teistsugust kodeerimist, kui on kirjeldatud teises etapis

3. Vaarika Pi kaamera moodul

Ainus kõrvaline ühendus Raspberry Pi -ga, mida selle projekti jaoks vaja on, on kaameramoodul. Kaameramoodul on selle projekti lahutamatu osa, kuna roomba täidab ülesandeid ainult selle põhjal, mida ta kaameras näeb

4. MATLAB 2018a

Selle seadistusega seotud kodeerimiseks kasutati MATLABi teist viimast versiooni 2018a. Tõenäoliselt töötavad sellega paljud teised MATLAB -i versioonid, kuna roomba programmeerimine on juba mõnda aega olnud

Samm: failid ja kaamera seadistamine

Failid ja kaamera konfiguratsioon
Failid ja kaamera konfiguratsioon

1. Vaarika Pi ja kaamera ühendused roombaga

  • Pi saab ühendada iRobotiga otse mikro -USB kaudu. See on kõik, mis peab olema kasutusvalmis. Siiski on soovitatav see kogu esitluse vältel kindlalt roombale paigutada, nagu piltidel näidatud.
  • Kaameral on otsene ühendus Raspberry Pi -ga ja on väga soovitatav midagi osta või teha, et kaamerat otse üleval hoida. Kaameral pole mõtet, kui seda ei saa hoida, et näidata, mida roomba näeb.

2. Failid

  • Kui olete kõik seadistanud ja ühendanud, veenduge, et robot on lähtestatud ja töövalmis, hoides 10 sekundit koos klahve "Spot" ja "Dock".
  • Siin on kõigepealt vaja MATLABi. Roomba failid tuleb kõigepealt installida ja nende failide käivitamiseks on vaja ainult sellel lingil olevat koodi:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3. samm: Roomba esialgne testimine

Roomba jaoks tuleb teha palju esialgseid kontrolle, et veenduda selle toimimises.

1. Veenduge, et olete ühendatud sama WiFi -võrguga nagu roomba. Ilma selleta ei saa te kunagi ühendust MATLABi kaudu.

2. Uurige, millisele numbrile teie roomba on määratud, et saaksite spetsiaalselt valitud roombaga ühenduse luua. Näiteks kui teie roomba number on 30, looge sellega ühendus, tippides Roomba (30) käsuaknasse MATLABis.

3. Roomba saab juhtida MATLABi konstruktsioonide kaudu. Näiteks kui määrate oma roomba (30) koodi muutujaks „r”, saab robotit käsuga r.moveDistance (0,2, 0,1) edasi liigutada.

4. Roombale saab edastada palju erinevaid käske ja neid saab näha, tippides käsuaknasse 'doc roomba'.

5. Valgus-, löögi- ja kaljuseadmete andureid saab lugeda, kasutades käske „doc roomba”, kuid võimalust saada pidev ja puhas menüü andurite andmete nägemiseks saab kasutada funktsiooni „r.testSensors” '.

6. Pärast selle kõige testimist saab tehtud piltide lugemiseks ja vaatamiseks kasutada roboti pildikogumistarkvara. Selle põhikood oleks img = r.getImage ja imshow (img);.

7. Pildi RGB väärtused leiate koodidega red_mean = mean (keskmine (img (:,:, 1)));

roheline_mean = keskmine (keskmine (img (:,:, 2))); ja blue_mean = keskmine (keskmine (img (:,:, 3)));.

Samm 4: MATLAB -koodi näide

Näide MATLAB -koodist
Näide MATLAB -koodist

Siinkohal olete nüüd valmis kasutama andureid ja pildistamistarkvara, et luua oma spin Mars-Roveri prototüübil. Meie näide on jälgida astronauti, jälgides valget värvi ja liikudes selle poole. Robot piiksub, kui selle andurid loevad kõrgeid väärtusi, et astronaut saaks roboti ummistumise korral lähtestada või minna ja võtta see üles ja lähtestada, kui see on kaljul kinni. Kuid ta loeb neid vigu ainult seni, kuni näeb valget. Ilma valge värvi nägemata siseneb robot vearežiimi. See on programmeeritud saatma kahte erinevat tüüpi e -kirju tagasi kodubaasi, sõltuvalt sellest, mida see näeb. Kui see näeb astronaudi nahavärvi, pole see ilmselgelt hea, nii et see teavitab kodubaasi, kui astronaudil on nahk, mis ilmneb ülikonna rikkega. Teine sõnum valmistatakse ette, kui astronaut lihtsalt silmapiirilt kaob. Kui kaamerate jaoks ei kuvata valget või nahavärvi, keerutab robot ringi ja saadab teise, kuid teistsuguse e -kirja. Pildid, kus Roomba ei näe astronauti, saadetakse koos meilisõnumiga. Meie projekti kood on näidatud allpool:

i = 1:.1: 3 img = r.getImage; pilt (img) red_mean = keskmine (keskmine (img (:,:, 1))); roheline_mean = keskmine (keskmine (img (:,:, 2))); blue_mean = keskmine (keskmine (img (:,:, 3))); kui red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || muhk.vasak> 0 || muhk.esine> 0 r.piiks () r.piiks () r.piiks () r.peatus muu kalju.vasak <10 || cliff.leftFront <10 || cliff.rightFront <10 || kalju.õige700 || 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 for i = 1: 2 r.moveDistance (0,2, 0,1) r. setDriveVelocity (.3,.2) r.peatus lõppu lõpp, kui roheline_mean <35 && blue_mean <35 %nahavärv näitab (tuleb kohandada astronaudi nahavärvi alusel) r.beep (); r.piiks (); r.piiks (); mail = 'tä[email protected]'; %saadab e -kirja, mis näitab, et ülikond on väljas psswd = 'jah'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'teema'; m_text = 'test'; setpref ('Internet', 'E_mail', post); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_kasutajanimi', post); setpref ('Internet', 'SMTP_Password', psswd); rekvisiidid = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', post); 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, 'Help!', 'The astronauts uniform is off!', img); lõpp, kui punane_ tähendab 135 || green_mean 135 || blue_mean 135, kui j = 1: 2 %, kui robot ei leia valget r.turnAngle (360) mail = '[email protected]'; psswd = 'jah'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'teema'; m_text = 'test'; setpref ('Internet', 'E_mail', post); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_kasutajanimi', post); setpref ('Internet', 'SMTP_Password', psswd); rekvisiidid = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', post); 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, 'Abi!', 'Astronauti ei leita!', img); r.peatus otsa lõpp

Ilmselgelt on see siin segane, kuid pärast kopeerimist peaks see hõõruma. Paroolid ja e -kirjad peavad selle projekti tegijad ilmselgelt esitama.

Kuid meie näide on vaid üks paljudest viisidest selle robotiga segadusse ajamiseks, et see sobiks kõigile. Tuleb teha palju erinevaid asju, mida saate endale sobitada.

Soovitan: