Obsah:

Roomba pomáhajúca astronautom: 4 kroky
Roomba pomáhajúca astronautom: 4 kroky

Video: Roomba pomáhajúca astronautom: 4 kroky

Video: Roomba pomáhajúca astronautom: 4 kroky
Video: Ostatni VideoNews?! Apple przynudza a Google rozdaje cziperki - VideoNews 318 2024, Júl
Anonim
Roomba pomáhajúca astronautom
Roomba pomáhajúca astronautom

Tento projekt je vyrobený s využitím Raspberry Pi 3 na palube iRobot Create verzie 2. MATLAB sa používa na programovanie robota, aby podľa senzorov a kamery robil konkrétne pokyny. Senzory a kamery slúžia na vykonávanie konkrétnych úloh, ktoré by nasledovali po astronautovi a poskytli mu schopnosť komunikovať so svojou domovskou základňou, ak sa niečo pokazí.

Krok 1: Potrebné diely

Potrebné diely
Potrebné diely
Potrebné diely
Potrebné diely
Potrebné diely
Potrebné diely
Potrebné diely
Potrebné diely

1. iRobot Create Verzia 2

IRobot Create je najdôležitejšou súčasťou tohto projektu, pretože je programovateľný a môže byť skvelou reprezentáciou skutočného rovera, ktorý sleduje astronautov a pomáha im v budúcnosti

2. Raspberry Pi 3

Programovateľným programom použitým pre tento projekt bol Raspberry Pi. Kód je určený pre Pi a pripojená verzia Pi je 3 (model B). Použiteľné sú aj iné programovateľné dosky, ako napríklad arduino, arduino a väčšina ostatných dosiek však budú vyžadovať iné kódovanie, ako je popísané v inom kroku

3. Modul kamery Raspberry Pi

Jediným externým pripojením k Raspberry Pi potrebným pre tento projekt je kamerový modul. Kamerový modul je neoddeliteľnou súčasťou tohto projektu, pretože robot Roomba bude vykonávať úlohy iba na základe toho, čo vidí vo fotoaparáte

4. MATLAB 2018a

Na kódovanie zahrnuté v tomto nastavení bola použitá druhá najnovšia verzia programu MATLAB, 2018a. Je pravdepodobné, že s tým bude fungovať mnoho ďalších verzií MATLABu, pretože programovanie roomba existuje už nejaký čas

Krok 2: Konfigurácia súborov a fotoaparátu

Konfigurácia súborov a kamier
Konfigurácia súborov a kamier

1. Pripojenie Raspberry Pi a fotoaparátu k robotu Roomba

  • Pi sa môže k iRobot pripojiť priamo pomocou micro USB. To je všetko, čo potrebuje, aby bolo pripravené na použitie. Odporúča sa však, aby bol na izbovej izbe bezpečne umiestnený tak, ako je to zatiaľ znázornené na obrázkoch.
  • Kamera má priame pripojenie k Raspberry Pi a dôrazne sa odporúča, aby sa niečo kúpilo alebo vyrobilo, aby sa kamera držala priamo hore. Kamera nemá zmysel, ak ju nemožno držať na mieste, aby ukázala, čo roomba vidí.

2. Súbory

  • Keď všetko nastavíte a pripojíte, uistite sa, že je robot resetovaný a pripravený na spustenie, podržaním tlačidiel „Spot“a „Dock“na 10 sekúnd spoločne.
  • Tu je MATLAB najskôr potrebný. Súbory pre roomba je potrebné nainštalovať ako prvé a na spustenie týchto súborov stačí iba kód uvedený na tomto odkaze:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Krok 3: Počiatočné testovanie robota Roomba

Na Roombe je potrebné vykonať mnoho počiatočných kontrol, aby sa ubezpečil, že funguje.

1. Uistite sa, že ste pripojení k rovnakej sieti WiFi ako roomba. Bez toho sa nikdy nepripojíte cez MATLAB.

2. Zistite, akému číslu je priradená vaša robota Roomba, aby ste sa mohli konkrétne pripojiť k robote, ktorú ste si vybrali. Ak je napríklad číslo vašej roboty roomba 30, pripojili by ste sa k nej zadaním príkazu roomba (30) do príkazového okna v programe MATLAB.

3. Roomba sa dá ovládať pomocou štruktúr v MATLABe. Ak napríklad nastavíte kód pre roomba (30) na premennú „r“, robot sa bude dať posúvať dopredu príkazom r.moveDistance (0,2, 0,1).

4. Roomba môže oznámiť veľa rôznych príkazov, ktoré je možné vidieť zadaním príkazu „doc roomba“do príkazového okna.

5. Senzory na čítanie svetiel, nárazov a útesov je možné čítať pomocou príkazov uvedených v dokumente „doc roomba“, ale spôsob, ako mať konštantnú a úhľadnú ponuku na zobrazenie údajov senzorov, je možné zobraziť pomocou programu „r.testSensors“. '.

6. Po otestovaní tohto všetkého je možné softvér na zhromažďovanie obrázkov robota použiť na čítanie a prezeranie nasnímaných fotografií. Základný kód pre to by bol img = r.getImage a imshow (img);.

7. Hodnoty RGB obrázka nájdete pomocou kódov red_mean = priemer (priemer (obrázok (:,:, 1)));

green_mean = priemer (priemer (obrázok (:,:; 2))); a blue_mean = priemer (priemer (obrázok (:,:, 3)));.

Krok 4: Príklad kódu MATLAB

Príklad kódu MATLAB
Príklad kódu MATLAB

V tomto bode ste teraz pripravení použiť senzory a softvér na snímanie fotografií na vytvorenie vlastného točenia na prototype Mars Rover, ktorý pomáha ľuďom. Náš príklad je nasledovať astronauta sledovaním bielej farby a pohybom k nej. Ak senzory čítajú vysoké hodnoty, robot zapípa, takže astronaut môže resetovať robota, ak je zaseknutý, alebo ho ísť vyzdvihnúť a resetovať, ak je zaseknutý na útese. Tieto chyby však číta iba vtedy, pokiaľ vidí biele. Bez toho, aby robot videl bielu farbu, prejde do chybového režimu. Je naprogramovaný tak, aby odosielal dva rôzne druhy e -mailov späť na domácu základňu podľa toho, čo vidí. Ak vidí farbu pokožky astronauta, zjavne to nie je dobré, a tak upozorní domácu základňu, ak má astronaut kožu zobrazenú s poruchou obleku. Druhá správa je pripravená, ak astronaut jednoducho zmizne z dohľadu. Ak sa pre kamery nezobrazuje biela alebo farba pokožky, robot sa otočí a odošle ďalší, ale iný e -mail. Obrázky, na ktorých roomba astronauta nevidí, budú odoslané spolu so správou v e -mailoch. Kód pre náš projekt je uvedený nižšie:

pre i = 1:.1: 3 img = r.getImage; obrázok (img) red_mean = priemer (priemer (obrázok (:,:, 1))); green_mean = priemer (priemer (obrázok (:,:; 2))); blue_mean = priemer (priemer (obrázok (:,:; 3))); ak red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || svetlo.vpravo> 700 r.píp () r.píp () r.píp () r.píp () r.píp () r.zastaviť inak pre i = 1: 2 r.pohybová vzdialenosť (0,2, 0,1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %color color showing (need to adjust based on astronaut's skin skin) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %odosiela e -maily s hlásením, že oblek je vypnutý psswd = 'áno'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'predmet'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', hostiteľ); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', hostiteľ); 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 (email na: „Pomoc!“, „Uniforma astronautov je vypnutá!“, obr.); koniec, ak red_mean 135 || green_mean 135 || blue_mean 135 pre j = 1: 2 %, ak robot nemôže nájsť bielu r.turnAngle (360) mail = '[email protected]'; psswd = 'áno'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'predmet'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', hostiteľ); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', hostiteľ); 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 (email na: „Pomoc!“, „Astronauta nemožno nájsť!“, obr.); r.stop koniec koniec koniec

Očividne je to tu chaotické, ale po skopírovaní by sa to malo vymazať. Heslá a e -maily k tomu musia poskytnúť tí, ktorí robia tento projekt.

Náš príklad je však len jedným z mnohých spôsobov, ako sa s týmto robotom pohrávať, aby vyhovoval každému. Je potrebné urobiť veľa rôznych vecí, ktoré si môžete prispôsobiť sami.

Odporúča: