Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Csatlakozás
- 3. lépés: Logikusan hozzon létre egy MATLAB kódot az érzékelők használatához
- 4. lépés: A kód és a robot tesztelése
- 5. lépés: A hiba felismerése
- 6. lépés: Következtetés
Videó: Roomba parkoló Pal: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
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
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
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 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:
A Roomba átalakítása Mars Roverré: 5 lépés
A Roomba átalakítása Mars Roverré:
Egyetemi egyetemi hallgatói parkoló térkép: 7 lépés (képekkel)
Egyetemi egyetemi hallgatói parkolási térkép: Sok diák azon gondolkodik, hol parkolhat egyetemi egyetemen. Ennek a problémának a megoldására létrehoztam egy világító parkolási térképet a Utah State University campusának fő területéről. A térkép arra szolgál, hogy a diákok gyors pillantást vethessenek a parkolási lehetőségekre
Autonóm párhuzamos parkoló autó készítése az Arduino használatával: 10 lépés (képekkel)
Autonóm párhuzamos parkoló autók készítése Arduino használatával: Az autonóm parkolás során algoritmusokat és helyzetérzékelőket kell létrehoznunk bizonyos feltételezések szerint. Feltételezéseink a következők lesznek ebben a projektben. A forgatókönyv szerint az út bal oldala falakból és parkterületekből áll. Mint te
Intelligens parkoló a Raspberry Pi használatával: 5 lépés
Intelligens parkoló a Raspberry Pi használatával: Ebben az utasításban egy teljesen automatikus parkolórendszert hozunk létre, amely egy webes felülethez kapcsolódik. Láthatja, hogy melyik helyet foglalta el, eldöntheti, ki lép be és ki megy ki, és automatikus világítási rendszerrel van felszerelve
MIDI Pod-Pal: 4 lépés
MIDI Pod-Pal: *** UPDATE 4/22/'21 ****** Hozzáadtam egy teljes vázlatot, amely bemutatja az összes vezetéket, hogy segítse az építkezést. *** Nem megyek bele nevetséges mennyiségű Az építési rész mélységében az volt a szándékom, hogy egy másik példát mutassak be egy Arduino alapú MI építésére