Innehållsförteckning:
Video: Roomba Explorer: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Genom att använda MATLAB och iRobots Create2 Robot kommer detta projekt att utforska olika områden på en okänd plats. Vi använde sensorerna på roboten för att manövrera en farlig terräng. Genom att få fotografier och videoflöde från en Raspberry Pi som är bifogad kunde vi fastställa de hinder som roboten kommer att möta, och de kommer att klassificeras.
Delar och material
För detta projekt behöver du
-en dator
-nyaste versionen av MATLAB (MATLAB R2018b användes för detta projekt)
- roombaInstallera verktygslåda
-iRobots Create2 -robot
-Raspberry Pi med kamera
Steg 1: Initiering och sensorer
Innan vi påbörjade någon programmering laddade vi ner verktygslådan roombaInstall, som gav åtkomst till olika komponenter i roboten.
Inledningsvis skapade vi ett GUI för att initiera alla robotar. För att göra detta måste du skriva in robotens nummer som en ingång. Detta gör det möjligt att köra vårt program till roboten Vi arbetade med att få roboten att manövrera genom de många terrängen den skulle stöta på. Vi implementerade Cliff Sensors, Light Bump Sensors och Physical Bump Sensors genom att använda deras utgångar för att utlösa roboten för att ändra dess hastighet och eller riktning. När någon av de sex ljusstötssensorerna detekterar ett objekt minskar värdet som de matar ut, vilket gör att robotens hastighet minskar för att undvika en kollision med full hastighet. När roboten äntligen krockar med ett hinder kommer Physical Bump -sensorerna att rapportera ett värde som är större än noll; på grund av detta kommer roboten att stanna, så det blir inga fler kollisioner och fler funktioner kan tas i bruk. För Cliff Sensors kommer de att läsa ljusstyrkan i området runt dem. Om värdet är större än 2800 bestämde vi att roboten skulle vara på en stabil mark och säker. Men om värdet är mindre än 800 kommer Cliff Sensors att upptäcka en klippa och stanna omedelbart för att inte falla av. Varje värde däremellan bestämdes för att representera vatten och kommer att få roboten att stoppa sin handling. Genom att använda sensorerna ovan ändras robotens hastighet så att vi bättre kan avgöra om det finns någon fara.
Nedan är koden (från MATLAB R2018b)
%% Initialisering
dlgPrompts = {'Roomba -nummer'};
dlgTitle = 'Välj din Roomba';
dlgDefaults = {''};
opts. Resize = 'on';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Skapa fönster som uppmanar användaren att ange sitt roomba -nummer
n = str2double (dlgout {1});
r = roomba (n); % Initierar användarspecificerad Roomba %% Hastighetsbestämning från Light Bump Sensors medan true s = r.getLightBumpers; % får ljusstötssensorer
lbumpout_1 = extraktfält (er, 'vänster'); % tar sensornas numeriska värden och gör dem mer användbara lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'rightFront');
lbumpout_6 = extractfield (s, 'right');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konverterar värden till matris
sLbump = sort (lbout); %sorterar matris till lägsta värde kan extraheras
lowLbump = sLbump (1); hastighet =.05+(lowLbump)*. 005 %med lägsta värde, som representerar nära hinder, för att bestämma hastighet, högre hastighet när ingenting upptäcks
r.setDriveVelocity (hastighet, hastighet)
slutet
% Fysiska stötfångare
b = r.getBumpers; %Output sant, falskt
bsen_1 = extraktfält (b, 'vänster')
bsen_2 = extraktfält (b, 'höger')
bsen_3 = extraktfält (b, 'front')
bsen_4 = extraktfält (b, 'leftWheelDrop')
bsen_5 = extraktfält (b, 'rightWheelDrop')
gupp = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = summa (bums)
om tbump> 0 r.setDriveVelocity (0, 0)
slutet
% Cliff Sensors
c = r.getCliffSensors %% 2800 säker, annars vatten
csen_1 = extraktfält (c, 'vänster')
csen_2 = extraktfält (c, 'höger')
csen_3 = extraktfält (c, 'leftFront')
csen_4 = extraktfält (c, 'rightFront')
klippor = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sortera (klippor)
om ordcliff (1) <2750
r.setDriveVelocity (0, 0)
om klippa <800
disp 'klippa'
annan
disponera 'vatten'
slutet
r. TurnAngle (45)
slutet
Steg 2: Skaffa data
När de fysiska stötsensorerna har utlösts kommer roboten att implementera sin Raspberry Pi ombord för att ta ett foto av hindret. Efter att ha tagit ett fotografi, med hjälp av textigenkänning om det finns text i bilden, avgör roboten vad hindret är och vad hindret säger.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
erkänt text = ocrResults. Text;
figur;
imshow (foto) text (220, 0, erkänt text, 'BackgroundColor', [1 1 1]);
Steg 3: Avsluta uppdraget
När roboten avgör att hindret är HEM, kommer den att slutföra sitt uppdrag och stanna hemma. Efter uppdraget kommer roboten att skicka ett e-postmeddelande om att den har återvänt hem och den kommer att skicka bilderna som den tog under resan.
% Skicka e-post
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', '[email protected]'); % e -postkonto som ska skickas från setpref ('Internet', 'SMTP_Username', 'enter sender email'); % avsändarnamn användarnamn setpref ('Internet', 'SMTP_Password', 'ange avsändarlösenord'); % Avsändares lösenord
rekvisita = 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 ('Ange mottagande e -post', 'Roomba', 'Roomba har återvänt hem !!', 'imgfromcamera.jpg') % e -postkonto att skicka till
Roboten är sedan klar.
Steg 4: Slutsats
Det inkluderade MATLAB -programmet separeras från hela skriptet som användes med roboten. I det slutliga utkastet, se till att lägga in all kod, förutom initialiseringssteget, i en stundslinga för att se till att stötfångarna ständigt körs. Detta program kan redigeras för att passa användarens behov. Konfigurationen av vår robot visas.
*Påminnelse: Glöm inte att roombaInstall -verktygslådan behövs för att MATLAB ska kunna interagera med roboten och Raspberry Pi ombord.
Rekommenderad:
Förvandla din Roomba till en Mars Rover: 5 steg
Förvandla din Roomba till en Mars Rover:
Kortkommandon för Internet Explorer !!: 4 steg
Tangentbordsgenvägar för Internet Explorer !!: Denna instruktion visar dig några användbara tangentbordsgenvägar för internet explorer Prenumerera på min kanal Tack
Roomba Scout Explorer: 8 steg
Roomba Scout Explorer: Som ett av de mest efterlängtade och mycket efterforskade amerikanska projekten har Mars rover-projekten blivit mänskliga prestationer i den ständigt avancerade produktionen av högteknologiska autonoma system i enda syfte att undersöka och integrera
Från Roomba till Rover på bara 5 steg !: 5 steg
Från Roomba till Rover i bara fem steg !: Roomba -robotar är ett roligt och enkelt sätt att doppa tårna i robotikens värld. I denna instruktionsbok kommer vi att beskriva hur man konverterar en enkel Roomba till en kontrollerbar rover som samtidigt analyserar sin omgivning.Parts lista1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 steg
Bus Pirate 3EEPROM Explorer Board: Om du har en av Hack a Day's Bus Pirates, vad gör du med den? Lär dig om 1-tråds, I2C och SPI EEPROM med 3EEPROM explorer-kortet (vi kallar det THR-EE-PROM). EEPROM är en typ av minneskort som lagrar data utan kontinuerlig ström