Turinys:

Astronautui padedanti „Roomba“: 4 žingsniai
Astronautui padedanti „Roomba“: 4 žingsniai

Video: Astronautui padedanti „Roomba“: 4 žingsniai

Video: Astronautui padedanti „Roomba“: 4 žingsniai
Video: Отработка взаимодействия космонавта с антропоморфным роботом 2024, Liepa
Anonim
Astronautui padedanti Roomba
Astronautui padedanti Roomba

Šis projektas sukurtas naudojant „Raspberry Pi 3“, esančią „iRobot Create“2 versijoje. MATLAB naudojamas programuoti robotą vykdyti konkrečias instrukcijas naudojant jo jutiklius ir fotoaparatą. Jutikliai ir fotoaparatai naudojami tam tikroms užduotims atlikti, kurios būtų atliekamos paskui astronautą ir suteiktų jam galimybę bendrauti su savo namų baze, jei kas nors nutiktų.

1 žingsnis: reikalingos dalys

Reikalingos dalys
Reikalingos dalys
Reikalingos dalys
Reikalingos dalys
Reikalingos dalys
Reikalingos dalys
Reikalingos dalys
Reikalingos dalys

1. „iRobot“sukurkite 2 versiją

„IRobot Create“yra svarbiausia šio projekto dalis, nes ji yra programuojama ir gali būti puikus pavyzdys tikram roveriui, kuris seka astronautus ir padeda jiems ateityje

2. Raspberry Pi 3

„Raspberry Pi“buvo programuojamas naudojant šį projektą. Kodas skirtas „Pi“, o pridėta „Pi“versija yra 3 (B modelis). Galima naudoti kitas programuojamas plokštes, tokias kaip arduino, tačiau arduino ir daugumai kitų plokščių reikės kitokio kodavimo, nei aprašyta kitame etape

3. Raspberry Pi kameros modulis

Vienintelis pašalinis ryšys su „Raspberry Pi“, reikalingas šiam projektui, yra fotoaparato modulis. Kameros modulis yra neatskiriama šio projekto dalis, nes „roomba“atliks užduotis tik pagal tai, ką mato fotoaparate

4. MATLAB 2018a

Antroji naujausia MATLAB versija, 2018a, buvo naudojama koduojant šią sąranką. Tikėtina, kad daugelis kitų MATLAB versijų tai padarys, nes „roomba“programavimas jau kurį laiką egzistuoja

2 veiksmas: failai ir fotoaparato konfigūracija

Failai ir fotoaparato konfigūracija
Failai ir fotoaparato konfigūracija

1. „Raspberry Pi“ir „Camera“jungtys prie „roomba“

  • „Pi“gali prisijungti prie „iRobot“tiesiogiai naudodami „micro USB“. Tai viskas, ko reikia, kad jis būtų paruoštas naudoti. Tačiau rekomenduojama, kad jis būtų saugiai pastatytas ant kambario, kaip parodyta paveikslėliuose iki šiol.
  • Fotoaparatas turi tiesioginį ryšį su „Raspberry Pi“ir labai rekomenduojama ką nors nusipirkti ar pagaminti, kad fotoaparatas būtų tiesiai pakeltas. Nėra jokios prasmės kamerai, jei jos negalima laikyti vietoje, kad būtų parodyta, ką kambariukas mato.

2. Failai

  • Sumontavę ir prijungę viską, įsitikinkite, kad robotas yra iš naujo nustatytas ir paruoštas veikti, laikydami 10 sekundžių mygtukus „Spot“ir „Dock“kartu.
  • Čia pirmiausia reikia MATLAB. Pirmiausia reikia įdiegti „roomba“failus, o šiems failams tereikia paleisti tik šioje nuorodoje pateiktą kodą:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3 žingsnis: pradinis „Roomba“testavimas

„Roomba“reikia atlikti daugybę pirminių patikrinimų, kad įsitikintumėte, jog ji veikia.

1. Įsitikinkite, kad esate prisijungę prie to paties „WiFi“tinklo kaip ir „roomba“. Be to niekada neprisijungsite per MATLAB.

2. Sužinokite, kokiam numeriui priskirtas jūsų „roomba“, kad galėtumėte konkrečiai prisijungti prie pasirinktos „roomba“. Pvz., Jei jūsų „roomba“numeris yra 30, prie jo prisijungtumėte įvesdami roomba (30) į komandų langą MATLAB.

3. „Roomba“galima valdyti naudojant MATLAB konstrukcijas. Pavyzdžiui, jei „roomba“(30) kodą nustatote į kintamąjį „r“, robotą galima perkelti į priekį su komanda r.moveDistance (0,2, 0,1).

4. Yra daug skirtingų komandų, kurias galima perduoti „roomba“ir kurias galima pamatyti komandų lange įvedus „doc roomba“.

5. Šviesos, smūgių ir uolų rodmenų jutiklius galima perskaityti naudojant „doc roomba“pateiktas komandas, tačiau būdą turėti pastovų, tvarkingą meniu, kad būtų matomi jutiklių duomenys, galima pamatyti naudojant „r.testSensors““.

6. Išbandžius visa tai, roboto vaizdų rinkimo programinė įranga gali būti panaudota skaityti ir matyti padarytas nuotraukas. Pagrindinis kodas būtų img = r.getImage ir imshow (img);.

7. Paveikslėlio RGB reikšmes galima rasti su kodais red_mean = mean (vidurkis (img (:,:, 1)));

žalia_reikšmė = vidurkis (vidurkis (img (:,:, 2))); ir blue_mean = vidurkis (vidurkis (img (:,:, 3)));.

4 žingsnis: MATLAB kodo pavyzdys

MATLAB kodo pavyzdys
MATLAB kodo pavyzdys

Šiuo metu esate pasiruošę panaudoti jutiklius ir vaizdo įrašymo programinę įrangą, kad sukurtumėte savo sukimąsi žmogui padedančiame „Mars Rover“prototipe. Mūsų pavyzdys yra sekti astronautą, sekant baltą spalvą ir judant jos link. Robotas pypsės, jei jo jutikliai skaito dideles vertes, kad astronautas galėtų iš naujo nustatyti robotą, jei jis įstrigo, arba eiti, pasiimti ir iš naujo nustatyti, jei jis įstrigo ant uolos. Tačiau jis skaito šias klaidas tik tol, kol mato baltą spalvą. Nematydamas baltos spalvos, robotas įsijungs į klaidos režimą. Jis yra užprogramuotas siųsti du skirtingus el. Laiškus atgal į pagrindinę bazę, priklausomai nuo to, ką jie mato. Jei jis mato kosmonauto odos spalvą, tai akivaizdžiai nėra gerai, todėl jis įspės namų bazę, jei kosmonauto oda pasirodys su netinkamu kostiumu. Kita žinia paruošiama, jei astronautas tiesiog dingsta iš akių. Jei fotoaparatams nerodoma balta ar odos spalva, robotas suksis ir atsiųs kitą, bet kitokį el. Vaizdai, kuriuose Roomba nemato astronauto, bus siunčiami kartu su el. Laiškuose esančiu pranešimu. Mūsų projekto kodas parodytas žemiau:

i = 1:.1: 3 img = r.getImage; vaizdas (img) red_mean = vidurkis (vidurkis (img (:,:, 1))); žalia_reikšmė = vidurkis (vidurkis (img (:,:, 2))); blue_mean = vidurkis (vidurkis (img (:,:, 3))); jei red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || guzas.kairė> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif uola.kairė <10 || cliff.leftFront <10 || skardis.priekyje <10 || skardis. dešinysis700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || šviesa.priekyje> 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 pabaiga galas galas, jei žalioji_prasmė <35 && blue_mean <35 %odos spalva rodo (reikia koreguoti pagal astronauto odos spalvą) r.beep (); r. pypsėjimas (); r. pypsėjimas (); paštas = '[email protected]'; %siunčia el. laišką, rodantį, kad kostiumas išjungtas psswd = 'taip'; priegloba = 'smtp.gmail.com'; uostas = '465'; emailto = '[email protected]'; m_subject = 'tema'; m_text = 'testas'; setpref („Internetas“, „El. paštas“, paštas); setpref ('Internetas', 'SMTP_Server', priegloba); setpref ('Internetas', 'SMTP_vartotojo vardas', paštas); setpref ('Internetas', 'SMTP_Password', psswd); rekvizitai = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', paštas); props.setProperty ('mail.smtp.host', priegloba); props.setProperty ('mail.smtp.port', prievadas); 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', prievadas); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, „Pagalba!“, „Astronautų uniforma išjungta!“, img); pabaiga, jei red_mean 135 || žalioji prasmė 135 || blue_mean 135, jei j = 1: 2 %, jei robotas negali rasti baltos spalvos. r.turnAngle (360) mail = '[email protected]'; psswd = 'taip'; priegloba = 'smtp.gmail.com'; uostas = '465'; emailto = '[email protected]'; m_subject = 'tema'; m_text = 'testas'; setpref („Internetas“, „El. paštas“, paštas); setpref ('Internetas', 'SMTP_Server', priegloba); setpref ('Internetas', 'SMTP_vartotojo vardas', paštas); setpref ('Internetas', 'SMTP_Password', psswd); rekvizitai = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', paštas); props.setProperty ('mail.smtp.host', priegloba); props.setProperty ('mail.smtp.port', prievadas); 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', prievadas); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Pagalba!', 'Astronauto rasti nepavyksta!', img); r.stop end end end end

Akivaizdu, kad čia netvarkinga, tačiau nukopijavus ji turėtų išsiblaškyti. Akivaizdu, kad tam slaptažodžius ir el. Laiškus turi pateikti tie, kurie vykdo šį projektą.

Tačiau mūsų pavyzdys yra tik vienas iš daugelio būdų, kaip susipainioti su šiuo robotu, kad jis tiktų visiems. Reikia padaryti daug įvairių dalykų, kuriuos galite pritaikyti sau.

Rekomenduojamas: