Sisällysluettelo:

Astronautia avustava Roomba: 4 vaihetta
Astronautia avustava Roomba: 4 vaihetta

Video: Astronautia avustava Roomba: 4 vaihetta

Video: Astronautia avustava Roomba: 4 vaihetta
Video: МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K 2024, Heinäkuu
Anonim
Astronauttia avustava Roomba
Astronauttia avustava Roomba

Tämä projekti on tehty hyödyntämällä iRobot Create Version 2: n Raspberry Pi 3: ta. MATLABia käytetään ohjelmoimaan robotti noudattamaan tiettyjä ohjeita sen antureiden ja kameran avulla. Antureita ja kameroita käytetään suorittamaan tiettyjä tehtäviä, jotka seuraavat astronauttia ja antavat hänelle mahdollisuuden kommunikoida kotitukikohtansa kanssa, jos jokin menee pieleen.

Vaihe 1: Tarvittavat osat

Tarvittavat osat
Tarvittavat osat
Tarvittavat osat
Tarvittavat osat
Tarvittavat osat
Tarvittavat osat
Tarvittavat osat
Tarvittavat osat

1. iRobot Luo versio 2

IRobot Create on tämän projektin tärkein osa, koska se on ohjelmoitava ja voi olla loistava esitys todelliselle roverille, joka seuraa astronautteja ja auttaa heitä tulevaisuudessa

2. Vadelma Pi 3

Raspberry Pi oli ohjelmoitavissa tässä projektissa. Koodi on suunniteltu Pi: lle ja liitteenä oleva Pi -versio on 3 (malli B). Muut ohjelmoitavat levyt, kuten arduino, ovat käyttökelpoisia, mutta arduino ja useimmat muut levyt edellyttävät erilaista koodausta kuin toisessa vaiheessa on kuvattu

3. Raspberry Pi -kameramoduuli

Ainoa vieras yhteys Raspberry Pi: hen, jota tarvitaan tähän projektiin, on kameramoduuli. Kameramoduuli on erottamaton osa tätä projektia, koska roomba suorittaa tehtäviä vain sen perusteella, mitä se näkee kamerassa

4. MATLAB 2018a

MATLABin toiseksi viimeisin versio, 2018a, käytettiin tässä asennuksessa käytettävään koodaukseen. On todennäköistä, että monet muut MATLAB -versiot toimivat tämän kanssa, koska roomba -ohjelmointi on ollut käytössä jonkin aikaa

Vaihe 2: Tiedostot ja kameran määritykset

Tiedostot ja kameran asetukset
Tiedostot ja kameran asetukset

1. Raspberry Pi- ja Camera -liitännät roombaan

  • Pi voi muodostaa yhteyden iRobotiin suoraan mikro -USB: llä. Se on kaikki, mitä sen on oltava käyttövalmis. On kuitenkin suositeltavaa sijoittaa se turvallisesti huoneeseen, kuten kuvissa näkyy koko esityksen ajan.
  • Kameralla on suora yhteys Raspberry Pi -laitteeseen, ja on erittäin suositeltavaa ostaa tai tehdä jotain kameran pitämiseksi suoraan ylöspäin. Kamerassa ei ole mitään järkeä, jos sitä ei voida pitää paikallaan näyttääkseen, mitä roomba näkee.

2. Tiedostot

  • Kun kaikki on asennettu ja kytketty, varmista, että robotti on nollattu ja käyttövalmis pitämällä "Spot" - ja "Dock" -painikkeita 10 sekunnin ajan yhdessä.
  • Tässä tarvitaan ensin MATLABia. Roomban tiedostot on asennettava ensin, ja näiden tiedostojen suorittamiseen tarvitaan vain tämän linkin koodi:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Vaihe 3: Roomban ensimmäinen testaus

Roomban on suoritettava monia alkutarkastuksia sen toimivuuden varmistamiseksi.

1. Varmista, että olet yhteydessä samaan WiFi -verkkoon kuin roomba. Ilman tätä et koskaan muodosta yhteyttä MATLABin kautta.

2. Selvitä, mihin numeroon huoneesi on liitetty, jotta voit muodostaa yhteyden valitsemasi roombaan. Jos esimerkiksi huoneesi numero on 30, voit muodostaa yhteyden siihen kirjoittamalla roomba (30) MATLABin komentoikkunaan.

3. Roombaa voidaan ohjata MATLABin rakenteiden avulla. Jos esimerkiksi asetat roomba -koodisi (30) muuttujaan r, robotti voidaan siirtää eteenpäin komennolla r.moveDistance (0,2, 0,1).

4. Roomballe voidaan välittää monia erilaisia komentoja, jotka voidaan nähdä kirjoittamalla komentoikkunaan 'doc roomba'.

5. Kaikki valo-, törmäys- ja kallionlukemien anturit voidaan lukea käyttämällä "doc roomba" -komentoja, mutta tapa saada vakio, siisti valikko anturitietojen näkemiseksi voidaan nähdä käyttämällä "r.testSensors" ''.

6. Kun kaikki tämä on testattu, robotin kuvankeruuohjelmistoa voidaan käyttää otettujen kuvien lukemiseen ja katseluun. Tämän peruskoodi olisi img = r.getImage ja imshow (img);.

7. Kuvan RGB -arvot löytyvät koodeilla red_mean = mean (keskiarvo (img (:,:, 1)));

green_mean = keskiarvo (keskiarvo (img (:,:, 2))); ja blue_mean = keskiarvo (keskiarvo (img (:,:, 3)));.

Vaihe 4: Esimerkki MATLAB -koodista

Esimerkki MATLAB -koodista
Esimerkki MATLAB -koodista

Tässä vaiheessa olet nyt valmis hyödyntämään antureita ja kuvan ottamisohjelmistoa luodaksesi oman spinsi ihmisen avustavalle Mars Rover -prototyypille. Esimerkkimme on seurata astronauttia seuraamalla valkoista väriä ja siirtymällä sitä kohti. Robotti piippaa, jos sen anturit lukevat korkeita arvoja, jotta astronautti voi nollata robotin, jos se on jumissa, tai noutaa sen ja nollaa sen, jos se on jumissa kalliolla. Se lukee kuitenkin nämä virheet vain niin kauan kuin se näkee valkoisen. Jos robotti ei näe valkoista väriä, se siirtyy virhetilaan. Se on ohjelmoitu lähettämään kahdenlaisia sähköpostiviestejä takaisin kotitukikohtaan sen mukaan, mitä se näkee. Jos se näkee astronautin ihonvärin, se ei tietenkään ole hyvä, joten se varoittaa kotitukikohtaa, jos astronautilla on iho, joka näyttää puvussa. Toinen viesti valmistellaan, jos astronautti katoaa näkyvistä. Jos kameroissa ei näy valkoista tai ihonväriä, robotti pyörii ympäri ja lähettää toisen, mutta erilaisen sähköpostin. Kuvat, joissa roomba ei näe astronauttia, lähetetään sähköpostin viestin mukana. Projektimme koodi näkyy alla:

i = 1:.1: 3 img = r.getImage; kuva (img) red_mean = keskiarvo (keskiarvo (img (:,:, 1))); green_mean = keskiarvo (keskiarvo (img (:,:, 2))); blue_mean = keskiarvo (keskiarvo (img (:,:, 3))); jos red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || törmäys. vasen> 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 || 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 end end end end if green_mean <35 && blue_mean <35 %ihonväri näkyy (täytyy säätää astronautin ihon värin mukaan) r.beep (); r. piippaus (); r. piippaus (); mail = '[email protected]'; %lähettää sähköpostin, jossa näkyy, että puku on pois päältä psswd = 'yeah'; isäntä = 'smtp.gmail.com'; portti = '465'; emailto = '[email protected]'; m_subject = 'aihe'; m_text = 'testi'; setpref ('Internet', 'Sähköposti', posti); setpref ('Internet', 'SMTP_palvelin', isäntä); setpref ('Internet', 'SMTP_Käyttäjänimi', posti); setpref ('Internet', 'SMTP_Password', psswd); rekvisiitta = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', posti); props.setProperty ('mail.smtp.host', isäntä); props.setProperty ('mail.smtp.port', portti); 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', portti); 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); loppu, jos red_mean 135 || green_mean 135 || blue_mean 135, jos j = 1: 2 %, jos robotti ei löydä valkoista r.turnAngle (360) mail = '[email protected]'; psswd = 'joo'; isäntä = 'smtp.gmail.com'; portti = '465'; emailto = '[email protected]'; m_subject = 'aihe'; m_text = 'testi'; setpref ('Internet', 'Sähköposti', posti); setpref ('Internet', 'SMTP_palvelin', isäntä); setpref ('Internet', 'SMTP_Käyttäjänimi', posti); setpref ('Internet', 'SMTP_Password', psswd); rekvisiitta = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', posti); props.setProperty ('mail.smtp.host', isäntä); props.setProperty ('mail.smtp.port', portti); 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', portti); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Ohje!', 'Astronauttia ei löydy!', img); r. lopeta päätypää

Ilmeisesti se on sotkuista täällä, mutta sen pitäisi hiipua kopioinnin jälkeen. Salasanat ja sähköpostit tälle projektille on ilmeisesti toimitettava.

Esimerkkimme on kuitenkin vain yksi monista tavoista sekoittaa tämän robotin kanssa, jotta se sopisi kaikille. On tehtävä monia erilaisia asioita, jotka voit sovittaa itsellesi.

Suositeltava: