Innehållsförteckning:

Roomba Explorer: 4 steg
Roomba Explorer: 4 steg

Video: Roomba Explorer: 4 steg

Video: Roomba Explorer: 4 steg
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, November
Anonim
Roomba Explorer
Roomba Explorer

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

Initiering och sensorer
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

Slutsats
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: