Sadržaj:
- Korak 1: Potrebni materijali
- Korak 2: Postavljanje/preuzimanje
- Korak 3: Kod 1. dio: Funkcija praćenja
- Korak 4: Kod 2, dio: Dok je petlja
- Korak 5: Kod 3: odjeljak e -pošte
Video: UTK EF 230 MarsRoomba projekt jesen 2018: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Trenutno se Mars roveri koriste za prikupljanje podataka o površini Marsa različitim metodama, do konačnog kraja saznanja više o potencijalima planeta 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. Planirani cilj roverske misije za 2020. uglavnom je isti, ali s posebnim zadatkom "prikupiti uzorke tla i stijena i pohraniti ih na površinu za potencijalni povratak na Zemlju putem buduće misije", navodi NASA.
Međutim, pod pretpostavkom da će se budući roveri koristiti za ljudsku pomoć, naš je tim 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 opreme za održavanje i život, naš bi rover mogao poslužiti kao pokretni svjetionik, primijetivši da je astronaut koji je slijedio nepomičan i prenosio poruku u nevolji. Da bi pratio čovjeka i utvrdio nepokretnost, rover bi uzimao unose kao što su boja ljudskih cipela i njihovo kretanje. Još jedan ulaz koji treba uzeti u obzir jest 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 takvom 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 osmišljen je kako bi pomogao čitatelju u programiranju njegove ili njezine Roombe da uspješno slijedi "astronauta" i 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) Preuzimanje Roombe i Roombe
Korak 2: Postavljanje/preuzimanje
Pokrenite ovu skriptu u MATLAB -u kako biste preuzeli softver potreban za pristup Roombi (spremljen u vlastitu datoteku u mapi projekta)
Dodatna pomoć:
% Instalacijski program za EF 230 Roomba Project% Zadnje ažuriranje: 13. rujna 2017. (Riješeni sigurnosni problemi povezani s https poslužiteljem i upozorenje o brisanju datoteke ako se jave pogreške) funkcija roombaInstall clc; % popis 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 certifikata server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instaliranje/ažuriranje Roombe'; % display purpose and get prompt prompt = {'Ovaj program će preuzeti ove datoteke EF 230 Roomba:' '' strjoin (files, '') '' '' u ovu mapu: '' 'cd' '' Želite li nastaviti? '}; bip; yn = questdlg (upit, … dlgTitle, … 'Da', 'Ne', 'Da');
if ~ strcmp (yn, 'Da'), return; kraj
% get popis datoteka koje postoje postojeće_datoteke = datoteke (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % provjerite je li u redu zamijeniti ih prompt = {'Zamjenjujete ove datoteke (datoteke):' '' strjoin (postojeće_datoteke, '') '' 'U redu za zamjenu?' }; bip; yn = questdlg (upit, … dlgTitle, … 'Da', 'Ne', 'Da'); if ~ strcmp (yn, 'Da'), return; kraj kraj
% preuzimanje datoteka cnt = 0; za i = 1: duljina (datoteke) f = datoteke {i}; disp (['Preuzimanje' f]); probajte url = [poslužitelj f]; websave (f, url, opcije); % dodanih mogućnosti za izbjegavanje sigurnosnih pogrešaka cnt = cnt + 1; catch disp (['Pogreška pri preuzimanju' f]); lutka = [f '.html']; ako postoji (lažna, 'datoteka') == 2 brisanje (lažna) end end end
if cnt == length (files) msg = 'Instalacija uspješna'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Greška pri instalaciji - detalje potražite u naredbenom prozoru'; waitfor (errordlg (msg, dlgTitle)); kraj
kraj %roombaInstaliraj
Korak 3: Kod 1. dio: Funkcija praćenja
Ova funkcija uzima varijablu Roomba i sliku s kamere na Roombi te pronalazi središnje xy koordinate praćenog objekta
Spremite ovaj kôd u drugu datoteku u istoj mapi.
funkcija [xm, ym] = trackingblue (r) %Ulazi: roomba varijabla %Izlazi: x i y vrijednost središta sljedećeg objekta %Svrha: pronalazi središte plavog objekta sa slikom %Upotreba [x vrijednost, y vrijednost] = trackingblue (roomba varijabla) img = r.getImage; % čita kameru s podcrta robota (1, 2, 2) podslika (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 = samoPLAV> 40; držite na podcrtici (1, 2, 2) podslika (bw); [x, y] = nađi (tm); 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 (tm, 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: Kod 2, dio: Dok je petlja
Ovaj kôd pokreće Roombu na temelju x i y lokacije objekta iz funkcije praćenja. Zbog toga će Roomba paziti na zidove i litice, dok traži plavo. To će također uzeti x i y koordinate putanje Roombe i stvoriti odgovarajuću plohu sa slikom za praćenje. Ako je senzor udarca aktiviran, preći će na odjeljak e -pošte
%Rover projekt
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ulazi: vrijednost roombe, podaci o kameri, udarci, svjetlo i zidni senzori %Svrha: Prati astronauta i izbjegava prepreke. Ako je upozoren, roomba šalje e -poruku %s pojedinostima o karti i o njezinoj lokaciji prema početnoj poziciji. %Upotreba: samo pokrenite program s deklariranom roomba varijablom, također %imate pokretni zeleni objekt %Izlazi: prikazuje sliku za praćenje slike, mapu e -pošte i tekst korisniku %% Slijedeći odjeljak b = 0; %Inicijaliziranje varijabli c = 0; x = 0; y = 0; theta = 0; dok je c == 0 %Petlja za otkrivanje plavog objekta i prepreka 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 svjetlo.lijevi centar> = 10 || light.rightCenter> = 10 % Osjeti postoji li zid u blizini r.stop r.setLEDDigits ('pomoć') c = 1 % dok je b == 0 % ako je neravnina.desna == 1 || bump.left == 1 || bump.front == 1 % Osjeti da li je naletio na nešto nakon što je osjetio zid % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Osjeti ako je nešto naletjelo, ako je tako, poslat će e -poruku r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || litica.desnoSpred <= 100 || litica.lijevo <= 100 || cliff.right <= 100 %Osjeti ako se u blizini r.stop nalazi litica c = 1 r.setLEDDigits ('pomoć') else %Postavlja brzine vožnje da slijede plavo ako je yval = 100 r.setDriveVelocity (0.1) elseif yval 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) iscrtavanje (x, y, 'bd') % iscrtava putanju i dodaje naslov naslova ('Roomba Path') hold on; kraj
Korak 5: Kod 3: odjeljak e -pošte
To će uzeti zacrtanu putanju i sliku te ih poslati na navedenu adresu e -pošte
(Ovdje prikazano s primjerom e -pošte)
%% odjeljak e -pošte
ako je b == 1 saveas (gcf, 'rovermap.png') %sprema brojku setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % e -mail računa za slanje s setpref ('Internet', 'SMTP_Username', '[email protected]'); % korisničko ime pošiljatelja setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Rekviziti lozinke pošiljatelja = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'istina'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('example email', 'RoverBeacon', 'Astronaut se prestao kretati. Za oporavak slijedite upute u priloženoj datoteci.', 'rovermap.png') disp ('email sent') end
Preporučeni:
Venus Flytrap - ITM jesen 2019: 5 koraka
Venus Flytrap - ITM jesen 2019: Što nedostaje svima na stolu? Mehanička Venusova mušica koja drži olovke, olovke i druge predmete
ITTT projekt 2018. - Zemlja: 5 koraka
ITTT projekt 2018. | Earth: Zdravo! Moja škola mi je dala projekt u kojem sam morao stvoriti interaktivni sustav koristeći Arduino i to izgraditi u stvarnom životu. Odlučio sam napraviti svjetski globus u kojem bi vaša interakcija sa senzorima i gumbima osvijetlila zemlje i natjerala svijet da se okreće
Mars Roomba projekt UTK: 4 koraka
Projekt Mars Roomba UTK: ODRICANJE OD ODGOVORNOSTI: OVO ĆE RADITI SAMO AKO JE ROOMBA POSTAVLJENA NA JAKO POSEBAN NAČIN, OVO UPUTSTVO JE STVORENO I NAMJERENO KORISTITI SVEUČILIŠTE UČENIKA TENESA I FAKULTET napisano i s
Plamenik s USB pogonom! Ovaj projekt može izgorjeti kroz plastiku / drvo / papir (zabavan projekt također mora biti vrlo fino drvo): 3 koraka
Plamenik s USB pogonom! Ovaj projekt može izgorjeti kroz plastiku / drvo / papir (zabavan projekt također mora biti vrlo fino drvo): NEMOJTE OVAJ KORISTITI USB!!! iz svih komentara saznao sam da to može oštetiti vaše računalo. moje računalo je dobro. Koristite punjač za telefon od 600m 5v. Koristio sam ovo i radi dobro i ništa se ne može oštetiti ako upotrijebite sigurnosni utikač za zaustavljanje napajanja
Kako napraviti vijenac od jabuka za jesen ili povratak u školu: 13 koraka (sa slikama)
Kako napraviti vijenac od jabuka za jesen ili povratak u školu: Anjeanette iz tvrtke RootsAndWingsCo napravila je ovaj preslatki vijenac od jabuka 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.)