Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Acest Instructable este un ghid pas cu pas pentru programarea și comanda robotului Mars Reconnaissance.
Pentru a începe, trebuie să obțineți lista următoarelor materiale: Un iRobot încărcat creat personalizat de Tickle College of Eningeering Univerisity din Tennessee, O rețea fără fir care este conectată la Raspberry Pi în iRobot, UTK iRobot creează încărcător, capabil Wifi computer cu acces la MATLAB și la internet.
Pasul 1: Roomba Toolbox
Deschideți MATLAB și creați un folder nou pentru fișierele de cod care vor fi stocate din proiect. În MATLAB, deschideți un nou script și rulați codul de mai jos. După executarea scriptului, adăugați noul folder în directorul în care MATLAB caută fișiere.
Cod:
function roombaInstallclc; % 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 2: Pregătirea pentru conectare
Conectați micro-USB-ul care iese din robot la portul inferior al Raspberry Pi. Apoi, în partea de sus a Roomba, apăsați simultan și mențineți apăsate butoanele de andocare și puncte până când lumina de pe Roomba se estompează. Ar trebui să auziți o cântare electronică de la Roomba odată ce eliberați.
Pasul 3: Conectarea la robot
Deschideți rețelele disponibile pe computer și selectați rețeaua existentă între computer și Raspberry Pi. În folderul curent al MATLAB, faceți clic dreapta pe folderul de proiect curent și selectați caseta de instrumente roomba descărcată la pasul 1 și adăugați la cale. Într-o rețea proiectată pentru mai multe conexiuni Pi, specificați robotul dvs. prin crearea unui obiect din clasa Roomba. Vezi exemplul de mai jos
Dacă aveți un Roomba atribuit numărului 7, introduceți următoarele:
r = roomba (7)
% Amintiți-vă că această variabilă este acum atribuită roomba, orice comandă dată robotului trebuie să fie condusă de variabila atribuită.
Pasul 4: Cod
drive.google.com/drive/folders/1OVR5oTHUsn…
Folosind linkul de mai sus, salvați toate fișierele.m în folderul dat unde va fi rulat programul principal. Link-ul ar trebui să fie deschis tuturor celor care au link-ul. Deschideți un nou script în folderul curent și rulați mycontrolprogram.m așa cum se vede mai jos:
function mycontrolprogram (r) global m m = mobiledev; emailInit (); alergare = 1; global f numărare globală = 0; f = r; global direc direc = 0; r.getAngle; r.getDistance; curLoc global curLoc = [0, 0]; puncte globale puncte puncte = zerouri (1, 2, 2); manual = adevărat; graphObs (1); v = 0,15; în timp ce numărați <50 if (manual == false) obsDetect (r, v, pts); direc = direc + r.getAngle; r.setLEDDigits (num2str (count)); else direc = direc + r.getAngle; manualDrive (); end end figSend (); Sfârșit
Robotul ar trebui să își îndeplinească acum sarcina proiectată.