Sadržaj:
- Korak 1: Potrebni materijali
- Korak 2: Postavljanje/preuzimanje
- Korak 3: Kod 1. dio: Funkcija praćenja
- Korak 4: Kôd Dio 2: While Loop
- Korak 5: Kod 3. dio: Odjeljak e -pošte
Video: UTK EF 230 MarsRoomba projekat jesen 2018: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Trenutno se Mars roveri koriste za prikupljanje podataka o površini Marsa različitim metodama, do konačnog kraja saznanja više o potencijalu planete za život mikroorganizama. Roveri prvenstveno koriste fotografije i alate za analizu tla za prikupljanje podataka, ali roveri također uključuju navigacijske instrumente, detektore zračenja, atmosferske senzore i laser za isparavanje uzoraka stijena. Planirana misija rovera za 2020. uglavnom je ista, ali sa posebnim zadatkom da "prikupi uzorke tla i stijena i pohrani ih na površinu za potencijalni povratak na Zemlju u budućnosti", navodi NASA.
Međutim, pod pretpostavkom da će se budući roveri koristiti za ljudsku pomoć, naš tim je razmotrio koje aspekte ljudi rover može nadzirati. Došli smo do zaključka da bi, u slučaju hitne situacije, astronaut ostao u nesvijesti s nedostatkom sredstava za održavanje i opremu, naš bi rover mogao poslužiti kao pokretni svjetionik, primijetivši da je astronaut koji je slijedio nepokretan i prenosio poruku o nevolji. Da bi pratio čovjeka i utvrdio nepokretnost, rover bi uzimao podatke kao što su boja ljudskih cipela i njihovo kretanje. Još jedan ulaz koji treba uzeti u obzir je da bi morao zapamtiti svoj put kako bi u slučaju nužde prenio signal opasnosti. Naš rover zadovoljava potrebu na Marsu da pokušaj tako skupe misije na tako stranom terenu zahtijeva više slojeva sigurnosnih sefova, a ako astronaut ne može dobiti svoju pomoć zbog kvara na odijelu ili nesvijesti, rover može upozoriti druge.
Ovaj Instructable dizajniran je da pomogne čitatelju u programiranju njegove ili njene Roombe da uspješno slijedi "astronauta" i da pošalje signal za pomoć ako je primjenjivo.
Korak 1: Potrebni materijali
1) Računalo/prijenosno računalo pristupačno internetu
2) MATLAB_R2018a
3) Roomba i Roomba Download
Korak 2: Postavljanje/preuzimanje
Pokrenite ovu skriptu u MATLAB -u kako biste preuzeli softver potreban za pristup Roombi (sačuvan u vlastitoj datoteci u fascikli projekta)
Dodatna pomoć:
% Instalacijski program za EF 230 Roomba Project% Posljednje ažuriranje: 13. septembra 2017. (Riješeni sigurnosni problemi povezani s https poslužiteljem i upozorenje o brisanju datoteke ako se jave greške) funkcija roombaInstall clc; % lista datoteka za instaliranje datoteka = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % lokacija za instaliranje iz options = weboptions ('Naziv datoteke certifikata', ''); % reci mu da zanemari zahtjeve sertifikata server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instaliranje/ažuriranje Roombe'; % display purpose i get prompt prompt = {'Ovaj program će preuzeti ove datoteke EF 230 Roomba:' '' strjoin (files, '') '' '' u ovu fasciklu: '' 'cd' '' Želite li nastaviti? '}; bip; yn = questdlg (prompt,… dlgTitle,… 'Yes', 'No', 'Yes');
if ~ strcmp (yn, 'Yes'), return; kraj
% get lista datoteka koje postoje postojeće_datoteke = datoteke (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % provjerite je li zaista u redu zamijeniti ih prompt = {'Zamjenjujete ove datoteke (datoteke):' '' strjoin (postojeće_datoteke, '') '' 'U redu za zamjenu?' }; bip; yn = questdlg (prompt,… dlgTitle,… 'Yes', 'No', 'Yes'); if ~ strcmp (yn, 'Yes'), return; end end
% preuzimanja datoteka cnt = 0; za i = 1: dužina (datoteke) f = datoteke {i}; disp (['Preuzimanje' f]); probajte url = [server f]; websave (f, url, opcije); % dodanih opcija za izbjegavanje sigurnosnih grešaka cnt = cnt + 1; catch disp (['Greška pri preuzimanju' f]); lutka = [f '.html']; ako postoji (dummy, 'file') == 2 delete (dummy) end end end
if cnt == length (files) msg = 'Instalacija je uspjela'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Greška pri instalaciji - pogledajte naredbeni prozor za detalje'; waitfor (errordlg (msg, dlgTitle)); kraj
end %roombaInstall
Korak 3: Kod 1. dio: Funkcija praćenja
Ova funkcija uzima varijablu Roomba i sliku s kamere na Roombi i pronalazi središnje xy koordinate praćenog objekta
Sačuvajte ovaj kod u drugu datoteku u istoj fascikli.
funkcija [xm, ym] = trackingblue (r) %Ulazi: roomba varijabla %Izlazi: x i y vrijednost centra sljedećeg objekta %Svrha: pronalazi središte plavog objekta sa slikom %Upotreba [x vrijednost, y value] = trackingblue (roomba varijabla) img = r.getImage; % čita kameru sa podslika slike robota (1, 2, 2) (img); %prikazuje sliku u istom prozoru kao i naslov putanje ('Slika za praćenje') red = img (:,:, 1); zelena = img (:,:, 2); plava = img (:,:, 3); justBlue = plavo - zeleno/2 - crveno/2; bw = samoPlavo> 40; zadržite podcrt (1, 2, 2) podslika (bw); [x, y] = nađi (bw); ako je ~ isempty (x) && ~ isempty (y) xm = okruglo (srednja vrijednost (x)); ym = okrugla (srednja vrijednost (y)); xx = max (1, xm-5): min (xm+5, veličina (bw, 1)); yy = max (1, ym-5): min (ym+5, veličina (tm, 2)); bwbw = nule (veličina (bw), 'uint8'); bwbw (xx, yy) = 255; zadržite podcrt (1, 2, 2) podslika (justBlue + bwbw); kraj
Korak 4: Kôd Dio 2: While Loop
Ovaj kôd pokreće Roombu na osnovu x i y lokacije objekta iz funkcije praćenja. Zbog toga će Roomba paziti na zidove i litice, dok traži plavo. Ovo će također uzeti x i y koordinate Roomba putanje i stvoriti odgovarajuću plohu sa slikom za praćenje. Ako je senzor udarca aktiviran, preći će na odjeljak e -pošte
%Rover Project
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ulazi: vrijednost roombe, podaci o kameri, udarci, svjetlosni i zidni senzori %Svrha: Prati astronauta i izbjegava prepreke. Ako je upozoren, roomba šalje e -poruku %s pojedinostima o karti i njenoj lokaciji prema početnoj poziciji. %Upotreba: samo pokrenite program sa deklarisanom roomba promenljivom, takođe %imate pokretni zeleni objekat %Izlazi: prikazuje sliku za praćenje slike, mapu e -pošte i tekst korisniku %% Sledeći Odeljak b = 0; %Pokretanje varijabli c = 0; x = 0; y = 0; theta = 0; dok je c == 0 %Petlja kako bi otkrila plavi objekt i prepreke t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %inicijalizacija struktura za vrijednosti senzora light = getLightBumpers (r); bump = getBumpers (r); ako je light.leftCenter> = 10 || light.rightCenter> = 10 % Oseća da li postoji zid u blizini r.stop r.setLEDDigits ('pomoć') c = 1 % dok je b == 0 % ako je neravnina desno == 1 || bump.left == 1 || bump.front == 1 % Oseti ako je nešto naletelo nakon što oseti zid % c = 1 % b = 1 % disp ('neravnina') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Oseti ako je nešto naletelo, ako jeste, poslaće e -poruku r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %Oseća da li postoji litica u blizini r.stop c = 1 r.setLEDDigits ('pomoć') else %Postavlja brzine vožnje da prate plavo ako je yval = 100 r.setDriveVelocity (0.1) inače 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d.*cosd (theta) + x; % x koordinata roombe y = d.*sind (theta).*d + y; % y koordinata roomba podcrta (1, 2, 1) plot (x, y, 'bd') % iscrtava putanju i dodaje naslov naslova ('Roomba Path') hold on; kraj
Korak 5: Kod 3. dio: Odjeljak e -pošte
Ovo će uzeti iscrtanu putanju i sliku i poslati ih na navedenu adresu e -pošte
(Ovdje prikazano s primjerom e -pošte)
%% Email sekcija
ako je b == 1 saveas (gcf, 'rovermap.png') %sprema cifru setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % mail naloga za slanje sa setpref ('Internet', 'SMTP_Username', '[email protected]'); % korisničko ime pošiljatelja setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Rekviziti lozinke pošiljalaca = 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 ('primjer e -pošte', 'RoverBeacon', 'Astronaut se prestao kretati. Za oporavak slijedite upute u priloženoj datoteci.', 'rovermap.png') disp ('poruka poslana') kraj
Preporučuje se:
Linefollower HoGent - sintetički projekat: 8 koraka
Linefollower HoGent - Syntheseproject: Za vaš sintetički projekat kreirajte našu liniju praćenja linija za izradu. In deze instructable zal ik uitleggen hoe ik deze gemaakt heb, en tegen welke problems ik o.a ben aangelopen
Venus Flytrap - ITM jesen 2019: 5 koraka
Venus Flytrap - ITM jesen 2019: Šta nedostaje svima na stolu? Mehanička Venusova mušica koja drži olovke, olovke i druge predmete
ITTT projekat 2018 - Zemlja: 5 koraka
ITTT projekat 2018 | Earth: Zdravo! Moja škola mi je dala projekat u kojem sam morao stvoriti interaktivni sistem koristeći Arduino i to izgraditi u stvarnom životu. Odlučio sam napraviti svjetski globus u kojem će vaša interakcija sa senzorima i tipkama osvijetliti zemlje i natjerati globus da se okreće
Mars Roomba projekat UTK: 4 koraka
Mars Roomba Project UTK: ODRICANJE OD ODGOVORNOSTI: OVO ĆE RADITI SAMO AKO JE ROOMBA POSTAVLJENA NA JAKO ODREĐEN NAČIN, OVO UPUTSTVO JE STVORENO I NAMJERENO KORISTITI UNIVERZITET UČENIKA TENESA I FAKULTETOva šifra se koristi za postavljanje napisano i s
Kako napraviti vijenac od jabuke za jesen ili povratak u školu: 13 koraka (sa slikama)
Kako napraviti vijenac od jabuka za jesen ili povratak u školu: Anjeanette, iz kompanije RootsAndWingsCo, napravila je ovaj preslatki vijenac od jabuke od filca i materijala. Bio je to jednostavan projekt koji čak i oni koji kažu da ne znaju šivati-mogu! (Sve dok možete provući iglu.)