Obsah:

Roomba Explorer: 4 kroky
Roomba Explorer: 4 kroky

Video: Roomba Explorer: 4 kroky

Video: Roomba Explorer: 4 kroky
Video: ¿Como solucionar el problema cuando la Roomba no carga? Solución en menos de 2 minutos 2023 2024, November
Anonim
Prieskumník Roomba
Prieskumník Roomba

S využitím programu Create2 Robot od MATLAB a iRobot tento projekt preskúma rôzne oblasti neznámeho miesta. Senzory na robote sme použili na pomoc pri manévrovaní s nebezpečným terénom. Získaním fotografií a videa z pripojeného Raspberry Pi sme dokázali určiť prekážky, s ktorými sa robot stretne, a budú klasifikované.

Diely a materiály

Na tento projekt budete potrebovať

-počítač

-západná verzia MATLABu (pre tento projekt bol použitý MATLAB R2018b)

- roombaNainštalujte si súpravu nástrojov

-iRobot Create2 Robot

-Malina Pi s kamerou

Krok 1: Inicializácia a senzory

Inicializácia a senzory
Inicializácia a senzory

Pred začatím akéhokoľvek programovania sme si stiahli súbor nástrojov roombaInstall, ktorý umožňoval prístup k rôznym komponentom robota.

Pôvodne sme vytvorili GUI na inicializáciu akéhokoľvek robota. Na to musíte zadať číslo robota ako vstup. To umožní prístup k spusteniu nášho programu na robota. Pracovali sme na tom, aby robot zvládol manévrovanie v mnohých terénoch, s ktorými sa stretne. Implementovali sme snímače útesu, senzory svetelných nárazov a snímače fyzického nárazu tým, že pomocou ich výstupov vypneme robota, aby zmenil jeho rýchlosť alebo smer. Keď ktorýkoľvek zo šiestich senzorov svetelných nárazov detekuje predmet, hodnota, ktorú vydávajú, sa zníži, čo spôsobí zníženie rýchlosti robota, aby sa zabránilo kolízii pri plnej rýchlosti. Keď sa robot konečne zrazí s prekážkou, senzory Physical Bump nahlásia hodnotu väčšiu ako nula; z tohto dôvodu sa robot zastaví, takže nedôjde k ďalším kolíziám a bude možné uviesť do činnosti ďalšie funkcie. Senzory útesu odčítajú jas okolia. Ak je hodnota väčšia ako 2 800, zistili sme, že robot bude na stabilnom povrchu a v bezpečí. Ak je však hodnota nižšia ako 800, senzory útesu rozpoznajú útes a okamžite sa zastavia, aby nespadli. Akákoľvek hodnota medzi nimi bola stanovená ako voda a spôsobí, že robot zastaví svoju činnosť. Použitím vyššie uvedených senzorov sa zmení rýchlosť robota, čo nám umožní lepšie určiť, či existuje nejaké nebezpečenstvo.

Nasleduje kód (z MATLAB R2018b)

%% inicializácia

dlgPrompts = {'Číslo Roomba'};

dlgTitle = 'Vyberte si Roombu';

dlgDefaults = {''};

opts. Resize = 'zapnuté';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Vytvoriť okno, ktoré vyzve užívateľa na zadanie čísla roomba

n = str2double (dlgout {1});

r = roomba (n); % Inicializuje používateľom špecifikované Roomba %% Určenie rýchlosti zo senzorov Light Bump, pričom true s = r.getLightBumpers; % získať svetelné snímače nárazov

lbumpout_1 = extrakčné pole (s, 'vľavo'); % preberá číselné hodnoty senzorov a robí ich použiteľnejšími lbumpout_2 = extrakčné pole (s, 'leftFront');

lbumpout_3 = extrakčné pole (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extrakčné pole (s, 'rightFront');

lbumpout_6 = extrakčné pole (s, 'vpravo');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % prevádza hodnoty do matice

sLbump = sort (lbout); Maticu %zoradenia na najnižšiu hodnotu je možné extrahovať

lowLbump = sLbump (1); rýchlosť =.05+(lowLbump)*. 005 %s použitím najnižšej hodnoty, ktorá predstavuje blízke prekážky, na určenie rýchlosti, vyššia rýchlosť, keď sa nič nezistí

r.setDriveVelocity (rýchlosť, rýchlosť)

koniec

% Fyzických nárazníkov

b = r.getBumpers; %Výstup true, false

bsen_1 = extractfield (b, 'vľavo')

bsen_2 = extractfield (b, 'vpravo')

bsen_3 = extractfield (b, 'predné')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

nerovnosti = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (bum)

ak tbump> 0 r.setDriveVelocity (0, 0)

koniec

% Snímače útesu

c = r.getCliffSensors %% 2 800 bezpečných, inak voda

csen_1 = extractfield (c, 'left')

csen_2 = extractfield (c, 'right')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

útesy = [csen_1, csen_2, csen_3, csen_4]

ordcliff = triediť (útesy)

ak ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ak je útes <800

disp 'cliff'

inak

vydať „vodu“

koniec

r. TurnAngle (45)

koniec

Krok 2: Získanie údajov

Potom, čo sa senzory fyzického nárazu vypnú, robot implementuje svoj palubný počítač Raspberry Pi na fotografovanie prekážky. Po nasnímaní fotografie pomocou rozpoznávania textu, ak je na obrázku text, robot určí, čo je prekážkou a čo prekážka hovorí.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

rozpoznanýText = ocrResults. Text;

obrázok;

imshow (foto) text (220, 0, rozpoznanýText, 'BackgroundColor', [1 1 1]);

Krok 3: Dokončenie misie

Akonáhle robot zistí, že prekážka je DOMA, dokončí svoju misiu a zostane doma. Po dokončení misie robot pošle e-mailové upozornenie, že sa vrátil domov, a pošle obrázky, ktoré urobil počas cesty.

% Odosielanie e-mailov

setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % poštový účet na odoslanie zo setpref ('Internet', 'SMTP_Username', 'zadajte e -mail odosielateľa'); % odosielateľov užívateľské meno setpref ('Internet', 'SMTP_Password', 'zadajte heslo odosielateľa'); % Heslo odosielateľa

props = 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 ('Zadajte príjem e -mailu', 'Roomba', 'Roomba sa vrátil domov !!', 'imgfromcamera.jpg') % poštový účet na odoslanie

Robot je potom hotový.

Krok 4: Záver

Záver
Záver

Zahrnutý program MATLAB je oddelený od celého skriptu, ktorý bol použitý s robotom. V konečnom návrhu nezabudnite vložiť celý kód, okrem kroku inicializácie, do slučky while, aby ste sa uistili, že nárazníky sú neustále spustené. Tento program je možné upraviť tak, aby vyhovoval potrebám používateľa. Zobrazí sa konfigurácia nášho robota.

*Pripomienka: Nezabudnite, že na to, aby MATLAB interagoval s robotom a integrovaným Raspberry Pi, je potrebná sada nástrojov roombaInstall.

Odporúča: