Tartalomjegyzék:
- 1. lépés: Alkatrészek és anyagok
- 2. lépés: Roomba adatbázis fájl
- 3. lépés: Csatlakozás a Roomba -hoz
- 4. lépés: A kód
- 5. lépés: Következtetés
Videó: MATLAB vezérelt Roomba: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
A projekt célja a MATLAB és egy módosított iRobot programozható robot használata. Csoportunk egyesítette kódolási készségeinket, hogy létrehozzon egy MATLAB szkriptet, amely az iRobot számos funkcióját használja, beleértve a sziklaérzékelőket, lökhárító érzékelőket, fényérzékelőket és a kamerát. Ezeket az érzékelő és a kamera leolvasásait használtuk bemenetként, lehetővé téve számunkra, hogy a kívánt kimeneteket a MATLAB kódfunkciók és ciklusok segítségével hozzuk létre. A MATLAB mobil eszközt és giroszkópot is használjuk az iRobothoz való csatlakozáshoz és vezérléshez.
1. lépés: Alkatrészek és anyagok
MATLAB 2018a
-A MATLAB 2018 -as verziója a legelőnyösebb verzió, leginkább azért, mert a legjobban működik a mobilkészülékhez csatlakozó kóddal. Kódunk nagy része azonban a MATLAB verziók többségében értelmezhető.
iRobot eszköz létrehozása
-Ez az eszköz egy speciális eszköz, amelynek egyetlen célja a programozás és a kódolás. (Ez nem valódi vákuum)
Raspberry Pi (kamerával)
- Ez egy nem drága számítógépes tábla, amely az iRobot agyaként működik. Lehet, hogy kicsi, de sok mindenre képes. A kamera további kiegészítő. Ezenkívül a málna pi -t használja az összes funkció és parancs eléréséhez. A fenti képen látható kamera egy 3D nyomtatott állványra van felszerelve, amelyet a Tennessee Egyetem Mérnöki Alapjai osztálya készített.
2. lépés: Roomba adatbázis fájl
Van egy fő fájl, amire szüksége lesz a roomba megfelelő funkcióinak és parancsainak használatához. Ez az a fájl, ahonnan kódot írt, amiből funkciókat merít, hogy jobban kezelhető legyen a roomba.
A fájl letölthető ezen a linken, vagy az alábbi letölthető fájl
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
3. lépés: Csatlakozás a Roomba -hoz
Először győződjön meg arról, hogy a robot mikro USB -csatlakozóval van csatlakoztatva a málna pi kártyához. Ezután megfelelően csatlakoztatnia kell a számítógépet és a robotot ugyanahhoz a WiFi -hez. Ha ez megtörtént, bekapcsolhatja a robotot, és csatlakozhat hozzá a robotadatbázis -fájlban megadott paranccsal. (Használat előtt és után mindig alaphelyzetbe kell állítani a robotot.) Például az "r.roomba (19)" parancsot használva csatlakozunk robotunkhoz, hozzárendelve az r változót a készülékünkhöz. Ez visszautal az adatbázisfájlra, amely a változónkat olyan struktúrának állítja be, amelyre bármikor hivatkozhatunk.
4. lépés: A kód
Az alábbiakban csatoltuk a teljes kódot, de itt van egy rövid áttekintés, amely kiemeli a szkriptünk fontos elemeit. Az összes érzékelőt és a kamerát is felhasználtuk, hogy maximálisan kihasználjuk robotunk potenciálját. Tartalmaztuk azt a kódot is, amely lehetővé tette számunkra, hogy mobileszközt csatlakoztassunk robotunkhoz, és annak gryoszkópját használva manuálisan vezéreljük.
Az egyszerű "r.setDriveVelocity (.06)" paranccsal kezdtük, amely a robot előrehaladási sebességét.06 m/s -ra állítja. Ez csak azért van, hogy a robot előre mozogjon
Ezután a fő szkriptünket egy while ciklussal indítjuk, amely lekéri az adott robot adatait olyan struktúrák létrehozásával, amelyekre hivatkozhatunk és felhasználhatjuk az alábbi feltételes utasításokban, így lehetővé téve számunkra, hogy elmondjuk a robotnak, hogy hajtson végre egy bizonyos parancsot a strukturális adatok alapján a robot olvas az érzékelőivel. Úgy állítottuk be, hogy a robot leolvassa sziklaérzékelőit, és fekete utat kövessen
míg true % while ciklus addig megy, amíg valami "hamis" nem történik (ebben az esetben végtelenül megy) data = r.getCliffSensors; data2 = r.getBumpers; % folyamatosan lekér adatokat a sziklaérzékelő értékeiről, és hozzárendeli őket egy változóhoz % img = r.getImage; % Képet készít a beépített kamerából % image (img); % Megjeleníti a készített képet % red_mean = átlagos (átlag (img (:,:, 1))); % A zöld szín átlagos értékét veszi fel, ha data.rightFront <2000 r.turnAngle (-2); % a Roomba -t kb.2 ° CW -ra fordítja, ha a jobb első sziklaérzékelők értéke 2000 r alá csökken. setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % azt mondja a Roomba -nak, hogy folytassa az előrehaladást kb.2 m/s sebességgel, ha a jobb első és a bal első szenzor értékei 2000 % alá esnek. r.turnAngle (0); % azt mondja a Roomba -nak, hogy ne forduljon, ha a fent említett feltételek teljesülnek
elseif adatok2.jobb == 1 r.moveDistance (-. 12); r.fordulószög (160); r.setDriveVelocity (.05); elseif data2.bal == 1 r.moveDistance (-. 2); r.fordulószög (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.fordulószög (160); r.setDriveVelocity (.05);
A while ciklus után egy másik while ciklusba lépünk, amely aktiválja a kamerán keresztül kapott adatokat. És használunk egy if utasítást ezen a cikluson belül, amely felismeri a képet egy adott program (alexnet) segítségével, és miután azonosította a képet, azonnal aktiválja a mobileszköz távirányítóját
anet = alexnet; % Az alexnet mély tanulást hozzárendeli egy változóhoz igaz % Végtelen, míg ciklus img = r.getImage; img = mérettelen (img, [227, 227]); címke = osztályozni (anet, img); ha címke == "papírtörlő" || label == "hűtőszekrény" label = "víz"; végkép (img); cím (char (címke)); vontatott;
A while ciklus, amely lehetővé teszi számunkra, hogy a készüléket telefonnal vezéreljük, lekéri ezeket az adatokat a telefon giroszkópjából, és csatlakoztatjuk azokat egy mátrixhoz, amely folyamatosan továbbítja az adatokat a számítógép MATLAB -jába. Egy if utasítást használunk, amely beolvassa a mátrix adatait, és olyan kimenetet ad, amely a telefon giroszkópjának bizonyos értékei alapján mozgatja az eszközt. Fontos tudni, hogy a mobil eszköz orientációs érzékelőit használtuk. A fent említett egyenként három mátrixot a telefon orientációs érzékelőinek minden eleme kategorizálja, az azimut, a hangmagasság és az oldal. Ha az állítások olyan feltételeket hoztak létre, amelyek azt állították, hogy az oldal meghaladja az 50 értéket, vagy -50 alá esik, akkor a robot egy bizonyos távolságot előre (pozitív 50) vagy hátra (negatív 50) mozgat. És ugyanez vonatkozik a hangmagasság értékére is. Ha a hangmagasság értéke meghaladja a -25 alá esés 25 értékét, a robot 1 fokos (pozitív 25) vagy negatív 1 fokos (negatív 25) szögben fordul
míg igaz szünet (.1) %.5 másodperces szünet minden érték felvétele előtt Vezérlő = iphone. Orientation; % Az iPhone tájolásának értékeihez tartozó mátrixot hozzárendeli az Azimuthal = Controller (1) változóhoz; % A mátrix első értékét a Pitch = Controller (2) változóhoz rendeli; % A mátrix második értékét hozzárendeli egy változóhoz (billentés előre és hátra, ha az iPhone -t oldalra tartja) Side = Controller (3); % A mátrix harmadik értékét hozzárendeli egy változóhoz (balra és jobbra döntve, ha az iPhone oldalra kerül) % Kimenetet okoz a telefon tájolása alapján, ha az oldal> 130 || Oldal 25 r.moveDistance (-. 1) % A Roomba hátrafelé mozgatása kb. 1 méter, ha az iPhone legalább 25 fokkal hátra van billentve, ha oldal 25 r.turnAngle (-1) % Körülbelül 1 fokkal elfordítja a Roomba-t, ha az iPhone balra van döntve legalább 25 fokkal, ha a dőlésszög <-25 fordulat. fordulat
Ezek csak a legfontosabb elemei kódunk főbb részeinek, amelyeket akkor vettünk fel, ha gyorsan másolnia és beillesztenie kell egy részt a javára. Szükség esetén azonban a teljes kódot az alábbiakban csatoljuk
5. lépés: Következtetés
Ez a kód, amelyet írtunk, kifejezetten a robotunk számára készült, valamint a projekt általános elképzelései. Célunk az volt, hogy minden MATLAB kódolási készségünket felhasználjuk egy jól megtervezett szkript elkészítéséhez, amely a robot legtöbb funkcióját hasznosítja. A telefonvezérlő használata nem olyan nehéz, mint gondolná, és reméljük, hogy a kódunk segít jobban megérteni az iRobot kódolásának koncepcióját.
Ajánlott:
DIY Arduino Bluetooth vezérelt autó: 6 lépés (képekkel)
DIY Arduino Bluetooth vezérelt autó: Hello barátok! A nevem Nikolas, 15 éves vagyok, és Athénban élek, Görögországban. Ma megmutatom, hogyan lehet kétkerekű Bluetooth-vezérlésű autót készíteni Arduino Nano, 3D nyomtató és néhány egyszerű elektronikus alkatrész segítségével! Feltétlenül nézze meg a
Weboldal által vezérelt karácsonyfa (bárki irányíthatja): 19 lépés (képekkel)
Weboldal által vezérelt karácsonyfa (bárki irányíthatja): Tudni szeretné, hogyan néz ki egy webhely által vezérelt karácsonyfa? Itt van a videó, amely bemutatja a karácsonyfám projektjét. Az élő közvetítés mára véget ért, de készítettem egy videót, rögzítve a történteket: Idén, Decembe közepén
MATLAB vezérelt mikrokontroller (Arduino MKR1000): 4 lépés
MATLAB vezérelt mikrokontroller (Arduino MKR1000): Projektünk célja az volt, hogy a MATLAB -ot, valamint az Arduino MKR1000 -t a lehető legjobban használjuk. Célunk egy olyan szkript létrehozása volt, amely lehetővé tette az arduino bizonyos funkciói számára, hogy egy bizonyos bemenet alapján előállítsanak egy bizonyos kimenetet. Sokat használtunk
Roomba MATLAB projekt: 5 lépés
Roomba MATLAB projekt: A NASA jelenlegi terve a Mars roverre vonatkozóan, hogy adatgyűjtő legyen, és a Mars körül barangoljon, mintákat gyűjtsön a talajból, hogy visszahozza őket a Földre, hogy a tudósok láthassák, léteztek -e korábbi életformák A bolygó. További
Roomba MATLAB -tal: 4 lépés (képekkel)
Roomba MATLAB -szal: Ez a projekt a MATLAB -ot és egy iRobot Create2 programozható robotot használja. A MATLAB ismereteit próbára téve képesek vagyunk a Create2 programozására a képek értelmezésére és a jelek észlelésére. A robot funkcionalitása elsősorban attól függ, hogy