Turinys:
- 1 žingsnis: reikalingos dalys
- 2 veiksmas: failai ir fotoaparato konfigūracija
- 3 žingsnis: pradinis „Roomba“testavimas
- 4 žingsnis: MATLAB kodo pavyzdys
Video: Astronautui padedanti „Roomba“: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Š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
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
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
Š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:
„Roomba“pavertimas „Mars Rover“: 5 žingsniai
„Roomba“pavertimas „Mars Rover“:
„Raspberry Pi“navigacija balsu, padedanti akliesiems: 7 žingsniai (su nuotraukomis)
„Raspberry Pi“navigacija balsu, padedanti akliesiems žmonėms: Sveiki, šioje pamokoje mes pamatysime, kaip „aviečių pi“gali padėti akliesiems žmonėms, naudodamas vartotojo nurodytas balso instrukcijas. Čia, naudojant ultragarso jutiklio įvestį, galima išmatuoti atstumą balsas veda aklus žmones paskui
PCB, padedanti valdyti kabelį: 6 žingsniai (su paveikslėliais)
PCB, padedanti valdyti kabelį: prieš kurį laiką sukūriau pasirinktinį stalinį CNC malūną. Nuo to laiko jį atnaujinau naujais komponentais. Paskutinį kartą pridėjau antrą „Arduino“su 4 skaitmenų ekranu, kad valdyčiau savo veleno apsisukimų greitį naudodami PID kilpą. Turėjau jį prijungti prie pagrindinio „Arduino“šerno
Sukurkite įrankį padedantį greitį/superįrangą [TAS] (delfinas): 5 žingsniai
Sukurkite įrankių padedamą „Speedrun“/„Superplay“[TAS] („Dolphin“): sukurkite filmą „Tool Assisted Speedrun/Superplay [TAS]“naudodami „Dolphin Gamecub“/„Wii“emuliatorių. Šioje pamokoje mes sukursime „Super Smash Brothers Melee“TAS „Nintendo Gamecube“. Aš naudosiu „Dolphin“4.0.2 versiją „Windows“
Nuo „Roomba“iki „Rover“vos 5 žingsniai!: 5 žingsniai
Nuo „Roomba“iki „Rover“vos 5 žingsniai!: „Roomba“robotai yra įdomus ir paprastas būdas pasinerti į kojų pirštus robotikos pasaulyje. Šioje instrukcijoje mes išsamiai aprašysime, kaip paprastą „Roomba“paversti valdomu roveriu, kuris tuo pačiu metu analizuoja jo aplinką. Dalių sąrašas1.) MATLAB2.) Roomb