Tartalomjegyzék:

Roomba parkoló Pal: 6 lépés
Roomba parkoló Pal: 6 lépés

Videó: Roomba parkoló Pal: 6 lépés

Videó: Roomba parkoló Pal: 6 lépés
Videó: V-TAC Robotporszívó - felmosó gyorsteszt 2024, November
Anonim
Roomba parkoló Pal
Roomba parkoló Pal

Ez a projekt egy iRobot Create programozható roomba -t, MATLAB r2018a és MATLAB mobile -t használ. E három médium és a kódolási ismereteink felhasználásával programoztuk az iRobot Create-et a színek értelmezésére és a fedélzeti érzékelők használatára a feladatok elvégzéséhez. Ezek a projektek a Raspberry Pi és a MATLAB kommunikációtól függenek e feladatok elvégzéséhez.

1. lépés: Anyagok

Anyagok
Anyagok
Anyagok
Anyagok

1. iRobot Create Robot

2. MATLAB r2018a

3. Málna Pi

4. Kamera modul

5. 3-D nyomtatott kamera stabilizátor állvány

6. Okostelefon telepített MATLAB mobiltelefonnal

7. Laptop/számítógép, MATLAB telepítve

2. lépés: Csatlakozás

Ez a lépés arról szól, hogy a Raspberry Pi -t csatlakoztatja a robothoz, másodszor pedig a robotot a számítógéphez, és az okostelefont a számítógéphez.

Ennek a folyamatnak a legegyszerűbb része a Raspberry Pi csatlakoztatása a robothoz, mivel a Raspberry Pi a robot tetejére van felszerelve. Van egy vezeték a robotból, amit csak be kell dugni a Raspberry Pi oldalába.

A következő lépés a robot csatlakoztatása a számítógéphez, hogy parancsokat futtasson a robot számára. Az első dolog, amit meg kell tennie, csatlakoztassa számítógépét a roomba által létrehozott vezeték nélküli hálózathoz. Most azt javasoljuk, hogy a MATLAB -ban az Útvonal beállítása ikon segítségével állítsa be az útvonalat, hogy használhassa a MATLAB Roomba eszköztárának funkcióit. Minden alkalommal, amikor elkezdi és befejezi a robot használatát, el kell végeznie a "kétujjas üdvözlést", és alaphelyzetbe kell állítania a robotot, ami azt jelenti, hogy tíz másodpercig lenyomva tartja a dokkoló és a spot gombokat, amíg a fény elhalványul, jelezve, hogy elengedi. Sikeres volt a hard reset, ha hallja, hogy a robot rövid skálát játszik. Ezután csatlakoznia kell a roomba -hoz egy ilyen kódsor segítségével: "r = roomba (x)", ahol "x" a robot számára kijelölt szám.

Végül le kell töltenie a MATLAB mobileszközt bármilyen mobil eszközre, amelyet ehhez a projekthez használ, és ez az alkalmazás Android és Apple eszközökön is elérhető. Miután telepítette az alkalmazást, hitelesítő adataival kell bejelentkeznie. Ezután csatlakoztassa ezt az eszközt a számítógépéhez a "Továbbiak" fül segítségével -> kattintson a "Beállítások" -> gombra, majd a "Számítógép hozzáadása" gombra, ez előhozza a fenti képeken látható képernyőt. A következő lépés, amin keresztül kell mennie, csak az általa kért információk be- és kikapcsolása. Miután sikeresen csatlakozott, hívhatja a számítógépén megadott funkciókat a telefonon, hogy vezérelje robotját.

3. lépés: Logikusan hozzon létre egy MATLAB kódot az érzékelők használatához

Logikusan létrehozni egy MATLAB kódot az érzékelők használatához
Logikusan létrehozni egy MATLAB kódot az érzékelők használatához

A kód akkor lesz a legegyszerűbb létrehozni, ha többsége bekapcsolt cikluson belül van, így a roomba folyamatosan frissítheti az érvényes értékeket. Hiba esetén a MATLAB hibát jelenít meg, és ahol a kód megjelenik, így a hibaelhárítás viszonylag egyszerű.

Az r2018a MATLAB -ban tervezett kód a szabványos eszköztárakat, az iRobot Create eszköztárat és a MATLAB mobil eszköztárat használja. A példában használt roomba -t 26 -nak jelöltük, és az r = roomba (26) -t csak egyszer kell futtatni, hogy teljes mértékben kommunikálhasson a roomba -val.

Kód:

függvény parkassist (x), ha x == 1

r = roomba (26) % csatlakozik a roomba -hoz

míg igaz

r.setDriveVelocity (.05,.05) % a Roomba -t lassabb menetsebességre állítja

bump = r.getBumpers % megkapja az adatokat az ütésérzékelőktől

cliff = r.getCliffSensors % megkapja az adatokat a sziklaérzékelőktől

light = r.getLightBumpers % megkapja az adatokat a fényütés érzékelőitől

img = r.getImage;% leolvassa a kamerát a robotról

red_mean = átlag (átlag (img (:,:, 1))) % beolvassa a piros pixelek átlagos mennyiségét

green_mean = átlag (átlag (img (:,:, 2))) % a zöld pixelek átlagos mennyiségét olvassa

blue_mean = átlag (átlag (img (:,:, 3))) % a kék képpontok átlagos mennyiségét olvassa

ha bump.front == 1 %olvassa el az első ütközésérzékelőket

r.stop %leállítja a Roomba -t

msgbox ('Elrejtett út!', 'Parkolósegéd -üzenet') % üzenetet jelenít meg, amely szerint az útvonal el van takarva % % befejezi a ciklust

elseif green_mean> 150

r.stop %leállítja a Roomba -t

cont = questdlg ('Folytatja?', 'Elkészült az útvonal') %megjeleníti a folytatás kérésére szolgáló kérdésmezőt

if cont == 'Igen'

parkassist (1) %újraindítja a kódot

más

vége

break % befejezi a ciklust

140

r.turnAngle (45) %45 fokkal elfordítja a szobát

r.timeStart %elindít egy időszámlálót

míg igaz

r.setDriveVelocity (.05,.05) %beállítja a roomba sebességét

time = r.timeGet %hozzárendeli az időt egy változóhoz

bump = r.getBumpers % megkapja az adatokat az ütésérzékelőktől

cliff = r.getCliffSensors % megkapja az adatokat a sziklaérzékelőktől

light = r.getLightBumpers % megkapja az adatokat a fényütés érzékelőitől

img = r.getImage;% leolvassa a kamerát a robotról

red_mean = átlag (átlag (img (:,:, 1))) % beolvassa a piros pixelek átlagos mennyiségét

green_mean = átlag (átlag (img (:,:, 2))) % a zöld pixelek átlagos mennyiségét olvassa

blue_mean = átlag (átlag (img (:,:, 3))) % a kék képpontok átlagos mennyiségét olvassa

ha blue_mean> 120

r.moveDistance (-0,01) % visszafelé mozgatja a roomba egy meghatározott távolságú dalt

msgbox ('Vizet talált!', 'Parkolósegéd üzenet') % üzenetet jelenít meg, miszerint vizet talált r.turnAngle (-80) % elforgatja a szobát 80 fokkal

break % befejezi az aktuális ciklust

elseif light.rightFront> 25 || light.leftFront> 25 %olvassa a fényütés érzékelőket

r.moveDistance (-0,01) % a Roomba hátrafelé mozgat egy beállított távolságot

r.turnAngle (-35) % 35 fokkal elforgatja a szobát

break %befejezi az aktuális ciklust

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %mindkét sziklaérzékelőt olvassa

r.moveDistance (-0,1) % a Roomba hátrafelé mozgat egy meghatározott távolságot

r.turnAngle (-80) %elforgatja a szobát 80 fokkal

break % befejezi az aktuális ciklust

elseif idő> = 3

r.stop %leállítja a Roomba -t

contin = questdlg ('Állomás ingyenes, folytatja?', 'Parkolósegéd -üzenet') %megkérdezi, hogy a roomba folytatja -e, ha Contin == 'Igen'

r.turnAngle (-90) % 90 fokkal elforgatja a szobát

parkassist (1) %újraindítja a funkciót

más

r.stop % leállítja a roomba -t

vége

más

vége

vége

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %mindkét sziklaérzékelőt olvassa

r.moveDistance (-0,1) %a Roomba hátrafelé mozgat egy beállított távolságot

r.turnAngle (-90) %elforgatja a szobát 90 fokkal

elseif cliff.rightFront <2500 %olvassa el a megfelelő sziklaérzékelőt

r.turnAngle (-5) %kissé elfordítja a Roomba-t a sziklaérzékelő ellenkező irányába

elseif cliff.leftFront <2500 %olvassa a bal sziklaérzékelőt

r.turnAngle (5) %kissé elfordítja a Roomba -t a sziklaérzékelő ellenkező irányába

más

vége

vége

vége

4. lépés: A kód és a robot tesztelése

A kód és a robot tesztelése
A kód és a robot tesztelése
A kód és a robot tesztelése
A kód és a robot tesztelése
A kód és a robot tesztelése
A kód és a robot tesztelése

A kód kifejlesztése után a következő lépés a kód és a robot tesztelése volt. Mivel a kódban sokféle beállítás végezhető el, mint például a robot elfordulási szöge, a sebesség, és az egyes színekhez tartozó küszöbértékek, a legjobb módja annak, hogy kiszámítsa ezeket az értékeket a robot számára, ha tesztel és változik menet közben. Minden munkanapunk során folyamatosan változtattunk ezen értékeken, mivel néhányuk a környezetétől függ, amelyben a robot működik. A legjobb módszer, amit találtunk, az volt, hogy a Roomba -t arra az útra helyeztük, amelyet követni akart, és olyan magas gát, hogy a kamera nem tudja észlelni a nem kívánt színeket. A következő lépés, ha futni kezd, és megmutatja a kívánt színeket, amikor azt szeretné, hogy elvégezze ezt a feladatot. Ha menet közben úgy látja, hogy a probléma a legjobb, ha benyomja az első lökhárítót, és leállítja, majd módosítja a problémát.

5. lépés: A hiba felismerése

Minden befejezett projektnél mindig vannak hibaforrások. Számunkra hibát tapasztaltunk azzal az egyszerű ténnyel, hogy a robot nem pontos azzal a szöggel, amelyen elfordul, így ha azt mondja, hogy 45 fokot kell fordítania, akkor nem lesz pontos. Egy másik hibaforrás számunkra az volt, hogy néha a robot meghibásodik, és alaposan vissza kell állítania, mielőtt újra működne. A fő utolsó hibaforrás számunkra az volt, hogy ugyanaz a kód nem lesz azonos hatással a különböző robotokra, ezért lehet, hogy türelmesnek kell lennie vele, és ennek megfelelően kell beállítania.

6. lépés: Következtetés

Most már minden eszköze megvan ahhoz, hogy játsszon a roomba -val, ami azt jelenti, hogy bármikor manipulálhatja a kódot, ha el szeretné érni a kívánt célokat. Ez legyen a legjobb része a napodnak, úgyhogy érezd jól magad és közlekedj biztonságosan!

Ajánlott: