Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Deze Instructable is een stapsgewijze handleiding voor het programmeren en besturen van de Mars Reconnaissance Robot.
Om te beginnen moet men de lijst met de volgende materialen verkrijgen: Een opgeladen iRobot-creatie die is aangepast door het Tickle College of Eningeering University of Tennessee, Een draadloos netwerk dat is verbonden met de Raspberry Pi in de iRobot, UTK iRobot-creëerlader, Wifi-compatibel computer met toegang tot MATLAB en internet.
Stap 1: Roomba Toolbox
Open MATLAB en maak een nieuwe map aan voor de codebestanden die vanuit uw project moeten worden opgeslagen. Open in MATLAB een nieuw script en voer de onderstaande code uit. Nadat het script is uitgevoerd, voegt u de nieuwe map toe aan de map waar MATLAB naar bestanden zoekt.
Code:
functie kamerbaInstallclc; % lijst met te installeren bestanden bestanden = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % locatie om te installeren vanuit options = weboptions('CertificateFilename', ''); % vertel het de certificaatvereisten te negeren server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba installeren/bijwerken'; % weergavedoel en krijg bevestigingsprompt = { 'Dit programma zal deze EF 230 Roomba-bestanden downloaden:' '' strjoin(files, ' ') '' 'naar deze map:' '' cd '' 'Wilt u doorgaan? ' }; piep; yn = questdlg(prompt, … dlgTitle, … 'Ja', 'Nee', 'Ja');
if ~strcmp(yn, 'Ja'), return; einde
% haal een lijst op met bestanden die bestaan bestaande_bestanden = bestanden(cellfun(@exist, bestanden) > 0); if ~isempty(existing_files) % zorg ervoor dat het echt ok is om ze te vervangen prompt = {'U vervangt deze bestanden): ' '' strjoin(existing_files, ' ') '' 'OK om te vervangen?' }; piep; yn = questdlg(prompt, … dlgTitle, … 'Ja', 'Nee', 'Ja'); if ~strcmp(yn, 'Ja'), return; einde einde
% download de bestanden cnt = 0; voor i=1:lengte(bestanden) f=bestanden{i}; disp(['Bezig met downloaden' f]); probeer url = [server f]; websave (f, url, opties); % toegevoegde opties om beveiligingsfouten te voorkomen cnt = cnt + 1; catch disp(['Fout bij downloaden' f]); dummy = [f '.html']; if exist(dummy, 'file')==2 delete(dummy) end end end
if cnt == lengte(bestanden) msg = 'Installatie geslaagd'; waitfor(msgbox(msg, dlgTitle)); else msg = 'Installatiefout - zie opdrachtvenster voor details'; waitfor(errordlg(bericht, dlgTitel)); einde
einde %roombaInstall
Stap 2: Voorbereiden om verbinding te maken
Sluit de micro-USB die uit de robot steekt aan op de onderste poort van de Raspberry Pi. Houd vervolgens op de bovenkant van de Roomba tegelijkertijd de dock- en spot-knoppen ingedrukt totdat het lampje op de Roomba uitgaat. U zou een elektronische weegschaal uit de Roomba moeten horen zodra u deze loslaat.
Stap 3: Verbinding maken met de robot
Open de beschikbare netwerken op je computer en selecteer het bestaande netwerk tussen de computer en Raspberry Pi. Klik in de huidige map van MATLAB met de rechtermuisknop op uw huidige projectmap en selecteer de roomba-toolbox die u in stap 1 hebt gedownload en voeg deze toe aan het pad. In een netwerk dat is ontworpen voor meerdere Pi-verbindingen, specificeert u uw robot door een object van klasse Roomba te maken. Zie voorbeeld hieronder
Als u een Roomba hebt toegewezen aan nummer 7, voert u het volgende in:
r=roomba(7)
%Houd er rekening mee dat deze variabele nu is toegewezen aan de roomba, elk commando dat aan de robot wordt gegeven, moet worden geleid door de toegewezen variabele.
Stap 4: Coderen
drive.google.com/drive/folders/1OVR5oTHUsn…
Gebruik de bovenstaande link om alle.m-bestanden op te slaan in de opgegeven map waar het hoofdprogramma wordt uitgevoerd. De link moet openstaan voor iedereen die de link heeft. Open een nieuw script in de huidige map en voer mycontrolprogram.m uit zoals hieronder te zien is:
functie mycontrolprogram(r)global m m = mobiledev; emailInit(); draaien = 1; globaal f globaal aantal tellingen = 0; f = r; globale direc direc = 0; r.getAngle; r.getDistance; globale curLoc curLoc = [0, 0]; globale punten pts = nullen (1, 2, 2); handmatig = waar; grafiekObs(1); v = 0,15; while count < 50 if(manual == false) obsDetect(r, v, pts); direc = direc + r.getAngle; r.setLEDDigits(num2str(count)); anders direc = direc + r.getAngle; handmatige schijf(); einde einde figSend(); einde
De robot zou nu zijn ontworpen taak moeten uitvoeren.