Tartalomjegyzék:

Űrhajóssegítő Roomba: 4 lépés
Űrhajóssegítő Roomba: 4 lépés

Videó: Űrhajóssegítő Roomba: 4 lépés

Videó: Űrhajóssegítő Roomba: 4 lépés
Videó: Az űrhajós | Hivatalos előzetes | Netflix 2024, November
Anonim
Űrhajóssegítő Roomba
Űrhajóssegítő Roomba

Ez a projekt a Raspberry Pi 3 használatával készült az iRobot Create 2. verziójában. A MATLAB segítségével a robotot az érzékelők és a kamera segítségével programozhatja, hogy kövesse az utasításokat. Az érzékelőket és a kamerákat speciális feladatok elvégzésére használják, amelyek egy űrhajóst követnek, és lehetővé teszik számára, hogy kommunikáljon otthoni bázisával, ha valami baj történik.

1. lépés: Szükséges alkatrészek

Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek

1. iRobot Create 2. verzió

Az iRobot Create a projekt leglényegesebb része, mivel programozható, és remek ábrázolása lehet egy tényleges rovernek, aki követi az űrhajósokat és segíti őket a jövőben

2. Málna Pi 3

A Raspberry Pi volt a programozható program ebben a projektben. A kódot a Pi -re tervezték, és a csatolt Pi verzió a 3 (B modell). Más programozható táblák, például az arduino is használhatók, azonban az arduino és a legtöbb más kártya más kódolást igényel, mint egy másik lépésben leírtak

3. Málna Pi kamera modul

Az egyetlen külső kapcsolat a Raspberry Pi -hez, amely ehhez a projekthez szükséges, a kamera modul. A kamera modul a projekt szerves része, mivel a roomba csak a kamerában látottak alapján hajt végre feladatokat

4. MATLAB 2018a

A beállításhoz használt kódoláshoz a MATLAB második legutóbbi verzióját, a 2018a -t használták. Valószínű, hogy a MATLAB számos más verziója is működni fog ezzel, mivel a roomba programozás már egy ideje létezik

2. lépés: Fájlok és kamera konfigurálása

Fájlok és kamera konfiguráció
Fájlok és kamera konfiguráció

1. Raspberry Pi és Camera csatlakozók a roomba -hoz

  • A Pi közvetlenül csatlakoztatható az iRobothoz mikro USB -n keresztül. Ennyi kell ahhoz, hogy használatra kész legyen. Javasoljuk azonban, hogy az eddigi bemutató során biztonságosan helyezze el a roomba, például a képeken.
  • A fényképezőgép közvetlenül kapcsolódik a Raspberry Pi -hez, és erősen ajánlott, hogy vásároljon vagy készítsen valamit annak érdekében, hogy a fényképezőgépet közvetlenül felfelé tartsa. Nincs értelme a kamerának, ha nem lehet a helyén tartani, hogy megmutassa, mit lát a Roomba.

2. Fájlok

  • Miután mindent beállított és csatlakoztatott, győződjön meg arról, hogy a robot alaphelyzetbe áll és készen áll a használatra, tartsa lenyomva a "Spot" és a "Dock" gombokat 10 másodpercig.
  • Itt van először szükség a MATLAB -ra. Először a roomba fájljait kell telepíteni, és a fájlok futtatásához csak az ezen a linken található kódra van szükség:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3. lépés: Kezdeti Roomba tesztelés

Sok előzetes ellenőrzést kell elvégezni a roomban, hogy megbizonyosodjon arról, hogy működik -e.

1. Győződjön meg arról, hogy ugyanahhoz a WiFi hálózathoz csatlakozik, mint a roomba. E nélkül soha nem fog csatlakozni a MATLAB -on keresztül.

2. Tudja meg, hogy a roomba milyen számhoz van rendelve, így kifejezetten csatlakozhat a kiválasztott roomba -hoz. Például, ha a roomba száma 30, akkor csatlakozzon hozzá úgy, hogy beírja a roomba (30) parancsot a MATLAB parancsablakába.

3. A roomba a MATLAB struktúráin keresztül vezérelhető. Például, ha a roomba (30) kódját az „r” változóra állítja, akkor a robot az r.moveDistance paranccsal (0,2, 0,1) mozgatható előre.

4. Sok különböző parancsot lehet közölni a roomba -val, és ezek megtekinthetők a 'doc roomba' begépelésével a parancsablakba.

5. A fény-, ütés- és sziklaolvasási érzékelők mind a „doc roomba” parancsaival olvashatók le, de az „r.testSensors” segítségével látható az állandó, tiszta menü az érzékelőadatok megtekintéséhez '.

6. Mindezek tesztelése után a robot képgyűjtő szoftvere használható a készített képek olvasására és megtekintésére. Ennek alapkódja az img = r.getImage és imshow (img);.

7. A kép RGB értékei megtalálhatók a red_mean = átlag kódokkal (átlag (img (:,:, 1)));

zöld_érték = átlag (átlag (img (:,:, 2))); és blue_mean = átlag (átlag (img (:,:, 3)));.

4. lépés: Példa MATLAB kódra

Példa MATLAB kódra
Példa MATLAB kódra

Ezen a ponton készen áll arra, hogy az érzékelőket és a képfelvételi szoftvert felhasználva saját pörgetést hozzon létre egy emberi segítő Mars Rover prototípuson. Példánk az, hogy kövessük az űrhajóst úgy, hogy nyomon követjük a fehér színt, és felé haladunk. A robot sípolni fog, ha az érzékelői magas értékeket olvasnak, hogy az űrhajós vissza tudja állítani a robotot, ha elakadt, vagy menjen, vegye fel és állítsa vissza, ha egy sziklán ragadt. Ezeket a hibákat azonban csak addig olvassa, amíg fehéret lát. Anélkül, hogy látná a fehér színt, a robot hibaüzemmódba lép. Úgy van programozva, hogy két különböző típusú e -mailt küld vissza a kezdőállomásra, attól függően, hogy mit lát. Ha látja az űrhajós bőrszínét, az nyilvánvalóan nem jó, ezért figyelmezteti az otthoni bázist, ha az űrhajós bőröndje öltönyhibával rendelkezik. A másik üzenet akkor készül el, ha az űrhajós egyszerűen eltűnik a szeme elől. Ha a kamerákon nem jelenik meg fehér vagy bőrszín, a robot megpördül, és küld egy másik, de más e -mailt. Azokat a képeket, amelyeken a Roomba nem látja az űrhajósokat, az e -mailekben található üzenettel együtt küldjük el. Projektünk kódja az alábbiakban látható:

mert i = 1:.1: 3 img = r.getImage; kép (img) red_mean = átlag (átlag (img (:,:, 1))); zöld_érték = átlag (átlag (img (:,:, 2))); blue_mean = átlag (átlag (img (:,:, 3))); ha red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || ütés.bal> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || szikla.jobb700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop vége vég, ha green_mean <35 && blue_mean <35 %bőrszín jelenik meg (az űrhajós bőrszíne alapján kell módosítani) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %e -mailt küld annak jelzésére, hogy a ruha ki van kapcsolva psswd = 'ja'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'tárgy'; m_text = 'teszt'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', gazdagép); setpref ('Internet', 'SMTP_felhasználónév', mail); setpref ('Internet', 'SMTP_Password', psswd); kellékek = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', gazdagép); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'The astronauts uniform is off!', img); vége, ha red_mean 135 || green_mean 135 || blue_mean 135, ha j = 1: 2 %, ha a robot nem talál fehér színt. r.turnAngle (360) mail = '[email protected]'; psswd = 'igen'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'tárgy'; m_text = 'teszt'; setpref ('Internet', 'E_mail', mail); setpref ('Internet', 'SMTP_Server', gazdagép); setpref ('Internet', 'SMTP_felhasználónév', mail); setpref ('Internet', 'SMTP_Password', psswd); kellékek = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', gazdagép); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Segítség!', 'Az űrhajós nem található!', img); r.megáll vég vége vége

Nyilvánvalóan rendetlen itt, de a másolás után ki kell kopni. A jelszavakat és e -maileket nyilvánvalóan azoknak kell megadniuk, akik ezt a projektet végzik.

A mi példánk azonban csak egy a sok lehetőség közül, hogy összezavarjuk ezt a robotot, hogy mindenkinek megfeleljen. Sok különböző dolgot kell elvégezni, amelyeket saját magának is megfelelhet.

Ajánlott: