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, Listopad
Anonim
Průzkumník Roomba
Průzkumník Roomba

Pomocí projektu Create2 Robot MATLAB a iRobot tento projekt prozkoumá různé oblasti neznámého místa. Použili jsme senzory na robotu, abychom pomohli manévrovat v nebezpečném terénu. Díky získávání fotografií a videa z připojeného Raspberry Pi jsme byli schopni určit překážky, kterým bude robot čelit, a budou klasifikováni.

Díly a materiály

Pro tento projekt budete potřebovat

-počítač

-newest verze MATLABu (pro tento projekt byl použit MATLAB R2018b)

- roombaNainstalujte si sadu nástrojů

-iRobot Create2 Robot

-Malina Pi s kamerou

Krok 1: Inicializace a senzory

Inicializace a senzory
Inicializace a senzory

Před zahájením jakéhokoli programování jsme stáhli sadu nástrojů roombaInstall, která umožňovala přístup k různým komponentám robota.

Zpočátku jsme vytvořili GUI pro inicializaci jakéhokoli robota. Chcete -li to provést, zadejte jako vstup číslo robota. To umožní přístup ke spuštění našeho programu na robota Pracovali jsme na tom, aby robot mohl manévrovat v mnoha terénech, na které by narazil. Implementovali jsme senzory Cliff, Light Bump Sensors a Physical Bump Sensors pomocí jejich výstupů k vypnutí robota, aby změnil jeho rychlost nebo směr. Když některý ze šesti senzorů světelných nárazů detekuje předmět, hodnota, kterou vydávají, se sníží, což způsobí snížení rychlosti robota, aby se zabránilo kolizi při plné rychlosti. Když se robot konečně srazí s překážkou, senzory Physical Bump oznámí hodnotu větší než nula; z tohoto důvodu se robot zastaví, takže nedojde k dalším kolizím a bude možné uvést do provozu více funkcí. U snímačů útesu budou číst jas okolí. Pokud je hodnota větší než 2800, zjistili jsme, že robot bude na stabilní zemi a v bezpečí. Pokud je však hodnota nižší než 800, senzory útesu detekují útes a okamžitě se zastaví, aby nespadly. Jakákoli hodnota mezi nimi byla stanovena tak, aby představovala vodu, a způsobí, že robot zastaví svou činnost. Použitím výše uvedených senzorů se změní rychlost robota, což nám umožní lépe určit, zda existuje nějaké nebezpečí.

Níže je kód (z MATLAB R2018b)

%% inicializace

dlgPrompts = {'Číslo Roomba'};

dlgTitle = 'Vyberte si Roombu';

dlgDefaults = {''};

opts. Resize = 'zapnuto';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Vytvořit okno, které uživatele vyzve k zadání čísla Roomba

n = str2double (dlgout {1});

r = roomba (n); % Inicializuje uživatelem specifikované Roomba %% Určení rychlosti ze senzorů Light Bump, zatímco true s = r.getLightBumpers; % získat světelné nárazové senzory

lbumpout_1 = extrahovací pole (s, 'vlevo'); % bere číselné hodnoty senzorů a činí je použitelnějšími lbumpout_2 = extrahovatelné pole (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'vpravo');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % převádí hodnoty na matici

sLbump = sort (lbout); Lze extrahovat matici %řazení na nejnižší hodnotu

lowLbump = sLbump (1); rychlost =.05+(lowLbump)*. 005 %s použitím nejnižší hodnoty, která představuje blízké překážky, pro určení rychlosti, vyšší rychlost, když není nic detekováno

r.setDriveVelocity (rychlost, rychlost)

konec

% Fyzických nárazníků

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

bsen_1 = extractfield (b, 'vlevo')

bsen_2 = extractfield (b, 'vpravo')

bsen_3 = extractfield (b, 'přední')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (popáleniny)

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

konec

% Senzory útesu

c = r.getCliffSensors %% 2800 bezpečné, jinak 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 = sort (útesy)

pokud ordcliff (1) <2750

r.setDriveVelocity (0, 0)

pokud útes <800

disp 'útes'

jiný

vydat 'vodu'

konec

r. TurnAngle (45)

konec

Krok 2: Získání dat

Poté, co dojde k aktivaci snímačů fyzického nárazu, robot implementuje svůj palubní počítač Raspberry Pi a pořídí fotografii překážky. Po pořízení fotografie pomocí rozpoznávání textu, pokud je na obrázku text, robot určí, jaká je překážka a co překážka říká.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

rozpoznánoText = ocrResults. Text;

postava;

text zobrazení (fotografie) (220, 0, rozpoznaný text, 'BackgroundColor', [1 1 1]);

Krok 3: Dokončení mise

Když robot zjistí, že je překážka DOMŮ, dokončí svou misi a zůstane doma. Po dokončení mise robot pošle e-mailové upozornění, že se vrátil domů, a odešle obrázky, které pořídil během své cesty.

% Odesílání e-mailu

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

setpref ('Internet', 'E_mail', '[email protected]'); % poštovní účet k odeslání ze setpref ('Internet', 'SMTP_Uživatelské jméno', 'zadejte e -mail odesílatele'); % odesílatelů uživatelské jméno setpref ('Internet', 'SMTP_Password', 'zadejte heslo odesílatele'); % Heslo odesílatele

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 ('Zadejte přijímací e -mail', 'Roomba', 'Roomba se vrátil domů !!', 'imgfromcamera.jpg') % poštovní účet k odeslání

Robot je poté hotov.

Krok 4: Závěr

Závěr
Závěr

Zahrnutý program MATLAB je oddělen od celého skriptu, který byl použit s robotem. V konečném konceptu nezapomeňte vložit celý kód, kromě inicializačního kroku, do cyklu while, abyste se ujistili, že nárazníky jsou neustále spuštěné. Tento program lze upravit tak, aby vyhovoval potřebám uživatele. Zobrazí se konfigurace našeho robota.

*Připomenutí: Nezapomeňte, že pro interakci MATLABu s robotem a integrovaným Raspberry Pi je zapotřebí sada nástrojů roombaInstall.

Doporučuje: