Obsah:

Roomba Parking Pal: 6 kroků
Roomba Parking Pal: 6 kroků

Video: Roomba Parking Pal: 6 kroků

Video: Roomba Parking Pal: 6 kroků
Video: Ludzie, którzy zamienili się w zwierzęta 😲🤔 2024, Listopad
Anonim
Roomba Parking Pal
Roomba Parking Pal

Tento projekt používá iRobot Create programovatelný roomba, MATLAB r2018a a MATLAB mobile. Pomocí těchto tří médií a našich znalostí kódování jsme naprogramovali iRobot Create tak, aby interpretoval barvy a používal palubní senzory k plnění úkolů. Tyto projekty k provedení těchto úkolů závisí na komunikaci Raspberry Pi a MATLAB.

Krok 1: Materiály

Materiály
Materiály
Materiály
Materiály

1. Robot iRobot Create

2. MATLAB r2018a

3. Raspberry Pi

4. Modul kamery

5. Stojan stabilizátoru fotoaparátu s 3D potiskem

6. Smartphone s nainstalovaným mobilním telefonem MATLAB

7. Notebook/počítač s nainstalovaným MATLABem

Krok 2: Připojení

Tento krok se týká připojení Raspberry Pi k robotovi, zadruhé připojení robota k počítači a připojení smartphonu k počítači.

Nejjednodušší součástí tohoto procesu je připojení Raspberry Pi k vašemu robotu, protože Raspberry Pi je namontováno na horní části robota. Od robota je kabel, který stačí zapojit do boku Raspberry Pi.

Dalším krokem je připojení robota k počítači, abyste mohli spouštět příkazy, které má robot provádět. První věc, kterou musíte udělat, je připojit počítač k bezdrátové síti, kterou vytváří váš roomba. Nyní se doporučuje použít ikonu Nastavit cestu v MATLABu k nastavení cesty, abyste mohli používat funkce v sadě nástrojů Roomba od MATLABu. Pokaždé, když začínáte a ukončujete používání robota, musíte provést tvrdý reset robota „dvěma prsty“, což znamená, že na deset sekund podržíte tlačítka doku a bodu, dokud světlo nezhasne, což znamená uvolnění. S tímto tvrdým resetem jste byli úspěšní, pokud slyšíte robota hrát v krátkém měřítku. Dále se musíte připojit k roomba pomocí řádku kódu, jako je tento „r = roomba (x)“, kde „x“je číslo určené robotovi, kterého máte.

Nakonec si musíte stáhnout MATLAB mobile na jakékoli mobilní zařízení, které budete pro tento projekt používat, a tato aplikace je k dispozici na zařízeních Android i Apple. Jakmile je aplikace nainstalována, budete se muset přihlásit pomocí svých přihlašovacích údajů. Poté musíte toto zařízení připojit k počítači pomocí karty označené „Více“-> poté klikněte na „nastavení“-> poté klikněte na „Přidat počítač“, čímž se zobrazí obrazovka zobrazená na výše uvedených obrázcích. Poté, co uvidíte toto dalším krokem, kterým musíte projít, je pouze připojení a uchování požadovaných informací. Jakmile se úspěšně připojíte, budete moci volat funkce, které definujete na počítači v telefonu, k ovládání robota.

Krok 3: Logické vytvoření kódu MATLAB pro použití senzorů

Logické vytvoření kódu MATLAB pro použití senzorů
Logické vytvoření kódu MATLAB pro použití senzorů

Kód bude nejjednodušší vytvořit, když je většina z nich v cyklu on while, aby roomba mohla neustále aktualizovat platné hodnoty, na které se dívá. Pokud dojde k chybě, MATLAB zobrazí chybu a kde se v kódu objeví, takže je řešení problémů relativně jednoduché.

Tento kód, navržený v r2018a MATLAB, využívá standardní sady nástrojů, sadu nástrojů iRobot Create a také mobilní sadu nástrojů MATLAB. Roomba použitá v tomto příkladu je označena jako 26 a r = roomba (26) musí být spuštěna pouze jednou, aby plně komunikovala s roomba.

Kód:

funkce parkovací asistent (x), pokud x == 1

r = roomba (26) % se připojí k roomba

zatímco pravda

r.setDriveVelocity (.05,.05) % nastaví roomba na nižší rychlost jízdy

bump = r.getBumpers % získává data ze snímačů nárazů

cliff = r.getCliffSensors % získává data ze snímačů útesu

light = r.getLightBumpers % získává data ze senzorů světelných nárazů

img = r.getImage;% čte kameru mimo robota

red_mean = průměr (průměr (img (:,:, 1))) % čte průměrné množství červených pixelů

green_mean = průměr (průměr (img (:,,:, 2))) % čte průměrné množství zelených pixelů

blue_mean = průměr (průměr (obrázek (:,:, 3))) % přečte průměrné množství modrých pixelů

pokud bump.front == 1 %čte snímače předních nárazů

r.stop %zastaví roomba

msgbox ('Path Obscured!', 'Parking Assistant Message') % zobrazuje zprávu, že cesta je zakryta break % ends the loop

elseif green_mean> 150

r.stop %zastaví roomba

cont = questdlg ('Continue?', 'Path Completed') %zobrazuje pole otázek s žádostí o pokračování

if cont == 'Yes'

parkassist (1) %restartuje kód

jiný

konec

break % ukončí smyčku

elseif red_mean> 140

r.turnAngle (45) %otočí roombu o 45 stupňů

r.timeStart %spustí počítadlo času

zatímco pravda

r.setDriveVelocity (.05,.05) %nastavuje rychlost roomba

time = r.timeGet %přiřadí čas proměnné

bump = r.getBumpers % získává data ze snímačů nárazů

cliff = r.getCliffSensors % získává data ze snímačů útesu

light = r.getLightBumpers % získává data ze senzorů světelných nárazů

img = r.getImage;% čte kameru mimo robota

red_mean = průměr (průměr (img (:,:, 1))) % čte průměrné množství červených pixelů

green_mean = průměr (průměr (img (:,,:, 2))) % čte průměrné množství zelených pixelů

blue_mean = průměr (průměr (img (:,,: 3))) % přečte průměrné množství modrých pixelů

pokud blue_mean> 120

r.moveDistance (-0,01) % posune roomba zpět o nastavenou vzdálenost song Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % hraje rostoucí hudební stupnici

msgbox ('Water Found!', 'Parking Assistant Message') % zobrazuje zprávu, že byla nalezena voda r.turnAngle (-80) % otočí roomba o 80 stupňů

break % ukončí aktuální smyčku

elseif light.rightPřední> 25 || light.leftFront> 25 %čte světelné nárazové senzory

r.moveDistance (-0,01) % posune roomba zpět o nastavenou vzdálenost

r.turnAngle (-35) % otočí roomba o 35 stupňů

break %ukončí aktuální smyčku

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %čte oba senzory útesu

r.moveDistance (-0,1) % přesune roomba zpět o nastavenou vzdálenost

r.turnAngle (-80) %otočí roomba o 80 stupňů

break % ukončí aktuální smyčku

jinak, pokud>> 3

r.stop %zastaví roomba

contin = questdlg ('Stanice zdarma, pokračovat?', 'Zpráva asistenta parkování') %se zeptá, zda má roomba pokračovat, pokud bude pokračovat == 'Ano'

r.turnAngle (-90) % otočí roomba o 90 stupňů

parkassist (1) %restartuje funkci

jiný

r.stop % zastaví roomba

konec

jiný

konec

konec

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %čte oba senzory útesu

r.moveDistance (-0,1) %přesune roomba zpět o nastavenou vzdálenost

r.turnAngle (-90) %otočí roomba o 90 stupňů

elseif cliff.rightFront <2500 %čte správný snímač útesu

r.turnAngle (-5) %mírně otočí robota v opačném směru čidla útesu

elseif cliff.leftFront <2500 %čte snímač levého útesu

r.turnAngle (5) %mírně otočí robota v opačném směru čidla útesu

jiný

konec

konec

konec

Krok 4: Testování kódu a robota

Testování kódu a robota
Testování kódu a robota
Testování kódu a robota
Testování kódu a robota
Testování kódu a robota
Testování kódu a robota

Poté, co byl kód vyvinut, bylo dalším krokem testování kódu a robota. Vzhledem k tomu, že v kódu lze provést mnoho různých úprav, jako je úhel, kterým se robot otáčí, rychlost, kterou se pohybuje, a prahové hodnoty pro každou barvu, je nejlepším způsobem, jak tyto hodnoty pro svého robota zjistit, testovat změňte je za pochodu. Pro každý pracovní den, který jsme měli, jsme tyto hodnoty neustále měnili, protože některé z nich se spoléhaly na prostředí, ve kterém váš robot pracuje. Nejlepší způsob, jak jsme zjistili, bylo umístit robota Roomba na cestu, kterou chcete sledovat, a mít dostatečně vysoká bariéra, aby kamera nemohla detekovat barvy, které nechcete. Dalším krokem je nechat jej běžet a ukázat mu požadované barvy, když ho chcete dokončit. Pokud vidíte problém, je nejlepší zatlačit přední nárazník dovnitř a zastavit ho, poté změnit parametr, se kterým jste měli potíže.

Krok 5: Rozpoznání chyby

S každým dokončeným projektem vždy existují zdroje chyb. Pro nás jsme zažili chybu s prostým faktem, že robot není přesný v úhlu, pod kterým se otáčí, takže pokud mu řeknete, aby se otočil o 45 stupňů, nebude to přesné. Dalším zdrojem chyb pro nás bylo, že někdy robot nefunguje správně a než jej znovu spustíte, musíte jej tvrdě resetovat. Hlavním posledním zdrojem chyb pro nás bylo, že stejný kód nebude mít stejný účinek na různé roboty, takže s ním možná budete muset mít trpělivost a podle toho se přizpůsobit.

Krok 6: Závěr

Nyní máte všechny nástroje, se kterými si můžete hrát s robotem Roomba, což znamená, že s kódem můžete manipulovat tak, jak chcete, abyste dosáhli cílů, které si přejete. To by měla být nejlepší část vašeho dne, tak se bavte a jezděte bezpečně!

Doporučuje: