Sisukord:

UTK EF 230 MarsRoomba projekti sügis 2018: 5 sammu
UTK EF 230 MarsRoomba projekti sügis 2018: 5 sammu

Video: UTK EF 230 MarsRoomba projekti sügis 2018: 5 sammu

Video: UTK EF 230 MarsRoomba projekti sügis 2018: 5 sammu
Video: UTK - EF 230 Autonomous Vehicle Project 2024, November
Anonim
UTK EF 230 MarsRoomba projekti sügis 2018
UTK EF 230 MarsRoomba projekti sügis 2018

Praegu kasutatakse Marsi kulgureid andmete kogumiseks Marsi pinnal erinevate meetodite abil, et lõplikult õppida rohkem planeedi potentsiaalist mikroobide eluks. Roverid kasutavad andmete kogumiseks peamiselt fotograafiat ja pinnaseanalüüsi tööriistu, kuid roverite hulka kuuluvad ka navigeerimisseadmed, kiirgusdetektorid, atmosfääriandurid ja kivimiproovide aurustamiseks mõeldud laser. Kavandatava 2020. aasta roveri missiooni eesmärk on enamasti sama, kuid eriülesandega on NASA andmetel „koguda pinnase- ja kivimiproove ning salvestada need vahemällu, et tulevane missioon võimaldaks Maale tagasi pöörduda”.

Eeldusel, et tulevasi rovereid kasutatakse inimeste abistamiseks, kaalus meie meeskond, milliseid inimeste aspekte saab rover jälgida. Jõudsime järeldusele, et kui mõni hädaolukord peaks astronaudi teadvuseta jätma, kui elutoetus ja varustus on ebaõnnestunud, võiks meie kulgur olla mobiilne majakas, jälgides, et tema järgitud astronaut on liikumatu ja edastab hädasõnumi. Inimese jälgimiseks ja liikumatuse kindlakstegemiseks võtaks rover sisendeid, näiteks inimese kingade värvi ja nende liikumist. Teine sisend, mida tuleb arvestada, on see, et hädaolukorra korral hädasignaali edastamiseks peab see oma teed meeles pidama. Meie rover vastab Marsi vajadustele, kuna sellise kuluka missiooni proovimine sellisel võõral maastikul nõuab mitut kihti tõrkeseifi ja kui astronaut ei saa rikke või teadvusetuse tõttu ise abi saada, võib rover teisi hoiatada.

See juhend on mõeldud lugejale abiks oma Roomba programmeerimisel, et edukalt "astronauti" jälgida, ja vajadusel hädasignaali saatmiseks.

Samm: vajalikud materjalid

Vajalikud materjalid
Vajalikud materjalid

1) Interneti -juurdepääsuga arvuti/sülearvuti

2) MATLAB_R2018a

3) Roomba ja Roomba allalaadimine

Samm: seadistamine/allalaadimine

Seadistamine/allalaadimine
Seadistamine/allalaadimine

Käivitage see skript MATLABis, et alla laadida Roombale juurdepääsuks vajalik tarkvara (salvestatud projekti kausta oma faili)

Täiendav abi:

% EF 230 Roomba projekti installiprogramm% Viimane värskendus: 13. september 2017 (Parandatud https -serveriga seotud turvaprobleemid ja vigade ilmnemisel eemaldatud faili kustutamise hoiatus) function roombaInstall clc; % installitavate failide loendist = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % asukoht installimiseks valikutest = weboptions ('CertificateFilename', ''); % käsib tal ignoreerida sertifikaadi nõudeid server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba installimine/värskendamine'; % kuva eesmärk ja saada kinnituse viip = {'See programm laadib alla need EF 230 Roomba failid:' '' strjoin (failid, '') '' '' sellesse kausta: '' 'cd' '' Kas soovite jätkata? '}; piiks; yn = questdlg (kiire,… dlgTitle,… 'Jah', 'Ei', 'Jah');

kui ~ strcmp (yn, 'Jah'), tagasta; lõpp

% saada olemasolevate failide loend olemasolevad_failid = failid (cellfun (@exist, files)> 0); kui ~ isempty (olemasolevad_failid) % veenduge, et nende asendamine on tõesti ok. }; piiks; yn = questdlg (kiire,… dlgTitle,… 'Jah', 'Ei', 'Jah'); kui ~ strcmp (yn, 'Jah'), tagasta; lõpp lõpp

% failide allalaadimine cnt = 0; i = 1 jaoks: pikkus (failid) f = failid {i}; disp (['Allalaadimine' f]); proovige url = [server f]; veebisalvestus (f, url, valikud); % lisatud võimalusi turvavigade vältimiseks cnt = cnt + 1; catch disp (['Viga allalaadimisel' f]); näiv = [f '.html']; kui on olemas (näiv, 'fail') == 2 kustuta (näiv) lõpp lõpp

if cnt == pikkus (failid) msg = 'Installimine õnnestus'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Paigaldusviga - üksikasju vaata käsuaknast'; waitfor (errordlg (msg, dlgTitle)); lõpp

end %roombaInstall

3. samm: kood 1. osa: jälgimisfunktsioon

Kood 1. osa: jälgimisfunktsioon
Kood 1. osa: jälgimisfunktsioon

See funktsioon võtab Roomba muutuja ja pildi Roomba kaamerast ning leiab jälgitava objekti xy keskkoordinaadid

Salvestage see kood samasse kausta teise faili.

funktsioon [xm, ym] = trackingblue (r) %Sisendid: roomba muutuja %Väljundid: x ja y järgmise objekti keskpunkti väärtus %Eesmärk: otsib pildi järgi sinise objekti keskpunkti %Kasutus [x väärtus, y väärtus] = jälgimissinine (roomba muutuja) img = r.getImage; % loeb kaamera välja roboti alamjoonise (1, 2, 2) alampildilt (img); %näitab pilti samas aknas kui tee pealkiri ('Jälgipilt') red = img (:,:, 1); roheline = img (:,:, 2); sinine = img (:,:, 3); justBlue = sinine - roheline/2 - punane/2; bw = justBlue> 40; hoidke alamjoonist (1, 2, 2) alampilti (bw); [x, y] = leid (bw); kui ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = ümmargune (keskmine (y)); xx = max (1, xm-5): min (xm+5, suurus (bw, 1)); yy = max (1, ym-5): min (ym+5, suurus (bw, 2)); bwbw = nullid (suurus (bw), 'uint8'); bwbw (xx, yy) = 255; hoidke alamplaani (1, 2, 2) alampilti (justBlue + bwbw); lõpp

4. samm: kood 2. osa: silmuse ajal

See kood juhib Roomba jälgimisfunktsiooni objekti x ja y asukoha alusel. See paneb Roomba jälgima seinu ja kaljusid, otsides samal ajal sinist värvi. See võtab ka Roomba tee x- ja y -koordinaadid ning loob jälgimispildiga vastava graafiku. Kui põrkeandur on aktiveeritud, liigub see edasi e -posti sektsiooni

%Roveri projekt

%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Sisendid: roomba väärtus, kaamera andmed, löök, valguse ja seina andurid Kui hoiatatakse, saadab roomba e -kirja %, mis kirjeldab üksikasjalikult kaarti ja asukohta vastavalt lähtepositsioonile. %Kasutamine: lihtsalt käivitage programm, kus on deklareeritud roomba muutuja, samuti %on liikuv roheline objekt %Väljundid: kuvab kasutajale pildi jälgimise pildi, meilide kaardi ja teksti %% Pärast jaotist b = 0; %Muutujate initsialiseerimine c = 0; x = 0; y = 0; teeta = 0; samas c == 0 %Loop, et see tuvastaks sinise objekti ja takistused t = r.timeGet; d = r.getDistance; [xval, yval] = jälgimissinine (r); kalju = getCliffSensors (r); %struktuuride initsialiseerimine anduri väärtuste jaoks valgus = getLightBumpers (r); muhk = getBumpers (r); kui valgus.leftCenter> = 10 || light.rightCenter> = 10 % Tunnetab, kui r.stop r.setLEDDigits ('abi') lähedal on sein, c = 1 %, samas kui b == 0 %, kui põrkub. parem == 1 || muhk.vasak == 1 || bump.front == 1 % Tunnetab, kui on pärast seina tuvastamist midagi põrutanud % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || muhk.vasak == 1 || bump.front == 1 %Tajub, kui on midagi põrutanud, kui jah, saadab ta meili r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || kalju.vasak <= 100 || cliff.right <= 100 %Tundub, kui kalju asub r.stop c = 1 r.setLEDDigits ('help') else %Määrab ajami kiirused, mis järgivad sinist, kui yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) otsa lõpp theta = theta + r.getAngle; x = d.*cosd (teeta) + x; toa % x koordinaat y = d.*sind (teeta).*d + y; Roomba alamjoonise % y koordinaat (1, 2, 1) graafik (x, y, 'bd') % joonistab tee ja lisab pealkirja pealkirja ('Roomba tee') ootele; lõpp

5. samm: kood 3. osa: e -posti jaotis

See võtab joonistatud tee ja pildi ning saadab selle määratud e -posti aadressile

(Siin näidatud näite e -postiga)

%% Meilijaotis

kui b == 1 saveas (gcf, 'rovermap.png') %salvestab figuuri setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % meilikonto saatmiseks aadressilt setpref ('Internet', 'SMTP_Username', '[email protected]'); % saatjate kasutajanimi setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Saatjate salasõna rekvisiidid = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('näite e -post', 'RoverBeacon', 'Astronaut on liikumise lõpetanud. Taastumiseks järgige lisatud failis toodud juhiseid.', 'rovermap.png') disp ('e -kiri saadetud') lõpp

Soovitan: