Cuprins:
- Pasul 1: Materiale necesare
- Pasul 2: Configurare / Descărcare
- Pasul 3: Cod Partea 1: Funcția de urmărire
- Pasul 4: Cod Partea 2: În timp ce bucla
- Pasul 5: Cod Partea 3: Secțiunea de e-mail
Video: UTK EF 230 MarsRoomba Project Toamna 2018: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
În prezent, rover-urile de pe Marte sunt folosite pentru a colecta date de pe suprafața lui Marte prin diferite metode, până la finalul final de a afla mai multe despre potențialul planetei pentru viața microbiană. Rover-urile folosesc în principal instrumente de fotografie și de analiză a solului pentru colectarea datelor, dar rover-urile includ și instrumente de navigație, detectoare de radiații, senzori atmosferici și un laser pentru vaporizarea probelor de rocă. Scopul planificat al misiunii rover 2020 este în mare parte același, dar cu sarcina specială de a „colecta mostre de sol și piatră și a le ascunde pe suprafață pentru o posibilă întoarcere pe Pământ de către o viitoare misiune”, potrivit NASA.
Cu toate acestea, sub premisa că viitorii rovers vor fi folosiți pentru asistență umană, echipa noastră a luat în considerare ce aspecte ale oamenilor ar putea monitoriza roverul. Am ajuns la concluzia că, în cazul în care o situație de urgență ar face un astronaut inconștient cu suportul de viață și echipamente defectuoase, rover-ul nostru ar putea servi drept far mobil mobil observând că astronautul pe care l-a urmat este imobil și transmite un mesaj de primejdie. Pentru a urmări umanul și pentru a determina imobilitatea, rover-ul ar lua intrări precum culoarea pantofilor omului și mișcarea lor. O altă intrare de luat în considerare este că ar trebui să-și amintească calea pentru a transmite un semnal de primejdie în caz de urgență. Roverul nostru răspunde unei nevoi de pe Marte, deoarece încercarea unei misiuni atât de costisitoare pe un teren străin necesită mai multe straturi de seifuri și dacă un astronaut nu poate obține propriul ajutor din cauza disfuncționalității sau inconștientului, roverul poate alerta pe alții.
Acest instructabil este conceput pentru a ajuta cititorul în programarea lui Roomba pentru a urmări cu succes un „astronaut” și pentru a trimite un semnal de primejdie, dacă este cazul.
Pasul 1: Materiale necesare
1) computer / laptop accesibil la internet
2) MATLAB_R2018a
3) Roomba și Roomba Download
Pasul 2: Configurare / Descărcare
Rulați acest script în MATLAB pentru a descărca software-ul necesar pentru a accesa Roomba (salvat în propriul fișier din folderul proiectului)
Ajutor suplimentar:
% Program de instalare pentru proiectul EF 230 Roomba Ultima actualizare: 13 septembrie 2017 (S-au remediat problemele de securitate asociate cu serverul https și eliminarea avertismentului de ștergere a fișierelor dacă au apărut erori) function roombaInstall clc; % list of files to install files = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % locație de instalat din options = weboptions ('CertificateFilename', ''); % spune-i să ignore cerințele certificatului server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instalare / actualizare Roomba'; % afișează scopul și primește promptul de confirmare = {'Acest program va descărca aceste fișiere EF 230 Roomba:' '' strjoin (files, '') '' 'în acest folder:' '' cd '' 'Vrei să continui? '}; bip; yn = questdlg (prompt, … dlgTitle, … 'Da', 'Nu', 'Da');
if ~ strcmp (yn, 'Da'), returnează; Sfârșit
% obține lista de fișiere care există existing_files = files (cellfun (@exist, files)> 0); if ~ isempty (existing_files)% asigurați-vă că este într-adevăr ok să le înlocuiți prompt = {'Înlocuiți aceste fișiere:' '' strjoin (existing_files, '') '' 'OK pentru a înlocui?' }; bip; yn = questdlg (prompt, … dlgTitle, … 'Da', 'Nu', 'Da'); if ~ strcmp (yn, 'Da'), returnează; sfârșit sfârșit
% descarcă fișierele cnt = 0; pentru i = 1: lungime (fișiere) f = fișiere {i}; disp ([„Descărcare” f]); încercați url = [server f]; websave (f, url, opțiuni); % opțiuni adăugate pentru a evita erorile de securitate cnt = cnt + 1; catch disp (['Eroare la descărcarea' f]); manechin = [f '.html']; dacă există (fictiv, „fișier”) == 2 ștergeți (fictiv)
if cnt == length (files) msg = 'Instalare reușită'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Eroare de instalare - vezi fereastra de comandă pentru detalii'; waitfor (errordlg (msg, dlgTitle)); Sfârșit
end% roombaInstall
Pasul 3: Cod Partea 1: Funcția de urmărire
Această funcție preia variabila Roomba și imaginea de pe camera de pe Roomba și găsește coordonatele xy centrale ale obiectului urmărit
Salvați acest cod într-un alt fișier din același folder.
funcție [xm, ym] = trackingblue (r)% Intrări: variabilă roomba% Ieșiri: valoarea x și y a centrului următorului obiect% Scop: găsește centrul unui obiect albastru dat o imagine% Utilizare [valoare x, y valoare] = trackingblue (variabila roomba) img = r.getImage; % citește camera de pe subimaginea robotului (1, 2, 2) subimagine (img); % arată imaginea în aceeași fereastră ca titlul căii („Urmărirea imaginii”) roșu = img (:,:, 1); verde = img (:,:, 2); albastru = img (:,:, 3); doar albastru = albastru - verde / 2 - roșu / 2; bw = justBlue> 40; mențineți subplot (1, 2, 2) subimagine (bw); [x, y] = găsi (bw); if ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = rotund (medie (y)); xx = max (1, xm-5): min (xm + 5, dimensiune (bw, 1)); yy = max (1, ym-5): min (ym + 5, dimensiune (bw, 2)); bwbw = zerouri (dimensiune (bw), 'uint8'); bwbw (xx, yy) = 255; mențineți subplot (1, 2, 2) subimagine (justBlue + bwbw); Sfârșit
Pasul 4: Cod Partea 2: În timp ce bucla
Acest cod conduce Roomba pe baza locației x și y a obiectului din funcția de urmărire. Acest lucru îl va face pe Roomba să fie atent la pereți și stânci, în timp ce caută albastru. Aceasta va lua, de asemenea, coordonatele x și y ale căii Roomba și va crea un grafic corespunzător cu imaginea de urmărire. Dacă senzorul de blocare este activat, acesta va trece la secțiunea de e-mail
% Proiect Rover
% Jonah Zahn, Wade Price, Noah Sloan% jzahn2, wprice15, nsloan1% Intrări: valoare roomba, date ale camerei, senzori de lumină și perete% Scop: Urmărește astronautul și evită obstacolele. Dacă este avertizat, roomba trimite un e-mail% care detaliază o hartă și unde se află în funcție de poziția sa de pornire. % Utilizare: pur și simplu rulați programul cu declararea unei variabile roomba, de asemenea% au un obiect verde în mișcare% Ieșiri: arată imaginea de urmărire a imaginilor, harta e-mailurilor și textul către utilizator %% Următoarea secțiune b = 0; % Initializarea variabilelor c = 0; x = 0; y = 0; theta = 0; în timp ce c == 0% Buclă pentru a face să detecteze obiectul albastru și obstacolele t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); % inițializarea structurilor pentru valorile senzorului light = getLightBumpers (r); bump = getBumpers (r); dacă light.leftCenter> = 10 || light.rightCenter> = 10% Simte dacă există un perete lângă r.stop r.setLEDDigits („ajutor”) c = 1% în timp ce b == 0% dacă bump.right == 1 || bump.left == 1 || bump.front == 1% Simte dacă a lovit ceva după ce a simțit un perete% c = 1% b = 1% disp ('bump')% end% end elseif bump.right == 1 || bump.left == 1 || bump.front == 1% Simte dacă a lovit ceva, dacă da, va trimite un e-mail r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || stâncă.stânga <= 100 || cliff.right <= 100% Simte dacă există o stâncă lângă r.stop c = 1 r.setLEDDigits („ajutor”) else% Setează viteza de acționare pentru a urma albastrul dacă yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d. * cosd (theta) + x; coordonata% x a camerei y = d. * sind (theta). * d + y; coordonata% y a subplotului roomba (1, 2, 1) grafic (x, y, 'bd')% trasează calea și adaugă un titlu de titlu ('Cale Roomba') așteptat; Sfârșit
Pasul 5: Cod Partea 3: Secțiunea de e-mail
Aceasta va lua calea și imaginea trasate și le va trimite la o adresă de e-mail specificată
(Afișat aici cu un exemplu de e-mail)
Secțiunea de e-mail %%
dacă b == 1 saveas (gcf, 'rovermap.png')% salvează cifra setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref („Internet”, „E-mail”, „[email protected]”); % cont de mail de trimis de la setpref ('Internet', 'SMTP_Username', '[email protected]'); % senders username setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Expeditori parola recuzită = 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 („exemplu de e-mail”, „RoverBeacon”, „Astronautul s-a oprit din mișcare. Pentru recuperare, urmați instrucțiunile din fișierul atașat.”, „rovermap.png”) disp („e-mail trimis”) sfârșit
Recomandat:
Proiect robot UTK 2017: 3 pași
Proiect robot UTK 2017: Misiune: Echipa noastră de ingineri a fost angajată de Froogle, o fundație nonprofit pentru dezvoltarea tehnologiei open-source, pentru a dezvolta o echipă inovatoare de asistență umană Mars Rover. Echipe „rover” este un roomba pe care l-am codat pentru a executa o serie o
Venus Flytrap - ITM Toamna 2019: 5 pași
Venus Flytrap - ITM Toamna 2019: Ce lipsește de pe biroul tuturor? O Trapă mecanică Venus care ține creioane, pixuri și alte obiecte
Proiectul Mars Roomba UTK: 4 pași
Mars Roomba Project UTK: DISCLAIMER: ACEASTA VA FUNCȚIONA DOAR DACĂ ROOMBA ESTE CONFIGURATĂ ÎN MOD DETERMINAT, ACEST INSTRUCTABIL A FOST CREAT PENTRU A FI UTILIZAT DE STUDENȚII ȘI FACULTATEA UNIVERSITĂȚII TENNESSEE Acest cod este utilizat pentru a configura un Roomba pentru a rula local. scris și s
Cum să puneți o imagine personalizată pe tabloul de bord Xbox 360. (Actualizare pre toamna 08): 8 pași
Cum să puneți o imagine personalizată pe tabloul dvs. de bord Xbox 360. (Actualizare pre toamna 08): În această instrucțiune vă voi arăta cum să puneți o imagine personalizată ca fundal pe xbox 360. există aceiași pași pentru a face acest lucru cu noul și vechiul tablou de bord. când voi avea șansa, voi actualiza totul cu imagini noi
Cum să faci o ghirlandă de mere pentru toamnă sau înapoi la școală: 13 pași (cu imagini)
Cum să faci o ghirlandă de mere pentru toamnă sau înapoi la școală: Anjeanette, din RootsAndWingsCo a făcut această adorabilă ghirlandă de mere din pâslă și material. A fost un proiect simplu pe care chiar și cei care spun că nu pot coase-îl pot face! (Atâta timp cât îți poți înfila acul.)