Sadržaj:
- Korak 1: Potrebni dijelovi
- Korak 2: Datoteke i konfiguracija kamere
- Korak 3: Početno testiranje Roombe
- Korak 4: Primjer MATLAB koda
Video: Roomba koja pomaže astronautima: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Ovaj projekt napravljen je korištenjem Raspberry Pi 3 na ploči iRobot Create Version 2. MATLAB se koristi za programiranje robota da slijedi određene upute pomoću njegovih senzora i kamere. Senzori i kamere koriste se za obavljanje posebnih zadataka koji bi slijedili astronauta i pružaju mu/joj mogućnost komunikacije s njegovom/njezinom kućnom bazom ako nešto pođe po zlu.
Korak 1: Potrebni dijelovi
1. iRobot Izradi verziju 2
IRobot Create najvažniji je dio ovog projekta jer se može programirati i može biti sjajan prikaz za stvarnog rovera koji prati astronaute i pomaže im u budućnosti
2. Malina Pi 3
Raspberry Pi je bio programabilni za ovaj projekt. Kôd je dizajniran za Pi, a verzija Pi priložena je 3 (model B). Druge programabilne ploče, poput arduina, su upotrebljive, međutim, arduino i većina drugih ploča zahtijevaju drugačije kodiranje od opisanog u drugom koraku
3. Modul kamere Raspberry Pi
Jedina vanjska veza s Raspberry Pi -om potrebna za ovaj projekt je modul kamere. Modul kamere sastavni je dio ovog projekta, budući da će roomba obavljati samo zadatke na temelju onoga što vidi u kameri
4. MATLAB 2018a
Druga najnovija verzija MATLAB -a, 2018a, korištena je za kodiranje uključeno u ovu postavku. Vjerojatno će mnoge druge verzije MATLAB -a raditi s ovim budući da je roomba programiranje prisutno već neko vrijeme
Korak 2: Datoteke i konfiguracija kamere
1. Povezivanje Raspberry Pi i kamere s roombom
- Pi se može povezati s iRobotom izravno putem mikro USB -a. To je sve što je potrebno da bi bilo spremno za upotrebu. Međutim, preporučuje se da se sigurno postavi na roombu, kao što je prikazano na slikama tijekom cijele prezentacije.
- Kamera ima izravnu vezu s Raspberry Pi i jako se preporučuje da se nešto kupi ili napravi kako bi se kamera držala izravno gore. Kamera nema smisla ako se ne može držati na mjestu kako bi pokazala što roomba vidi.
2. Datoteke
- Nakon što ste sve postavili i povezali, provjerite je li robot resetiran i spreman za rad držeći zajedno tipke "Spot" i "Dock" 10 sekundi.
- Ovdje je MATLAB prvi put potreban. Datoteke za roombu moraju se prvo instalirati, a sve što je potrebno za pokretanje ovih datoteka je kôd naveden na ovoj poveznici:
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Korak 3: Početno testiranje Roombe
Mnogo je početnih provjera koje treba izvršiti na roombi kako bi se uvjerili da radi.
1. Provjerite jeste li povezani na istu WiFi mrežu kao i roomba. Bez toga se nikada nećete povezati putem MATLAB -a.
2. Saznajte kojem je broju vaša roomba dodijeljena kako biste se mogli posebno povezati s roombom koju ste odabrali. Na primjer, ako je broj vaše roombe 30, povežite se s njom upisivanjem roombe (30) u naredbeni prozor u MATLAB -u.
3. Roomba se može kontrolirati pomoću struktura u MATLAB -u. Na primjer, ako svoj kôd za roombu (30) postavite na varijablu 'r', robot se može pomaknuti naprijed naredbom r.moveDistance (0.2, 0.1).
4. Postoji mnogo različitih naredbi koje se mogu prenijeti roombi, a to se može vidjeti upisivanjem 'doc roomba' u naredbeni prozor.
5. Svi senzori za očitanje svjetla, udara i litica mogu se čitati pomoću naredbi viđenih u 'doc roomba', ali način da imate stalan, uredan izbornik za prikaz podataka senzora može se vidjeti pomoću 'r.testSensors '.
6. Nakon testiranja svega ovoga, softver za prikupljanje slika robota može se koristiti za čitanje i pregled snimljenih slika. Osnovni kôd za to bio bi img = r.getImage i imshow (img);.
7. RGB vrijednosti slike mogu se pronaći s kodovima red_mean = mean (mean (img (:,:, 1)));
zeleno_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 2))); i plavo_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 3)));.
Korak 4: Primjer MATLAB koda
Sada ste spremni koristiti senzore i softver za snimanje slika za stvaranje vlastitog okretanja na prototipu Mars Rover koji pomaže osobi. Naš je primjer slijediti astronauta prateći bijelu boju i krećući se prema njoj. Robot će se oglasiti zvučnim signalom ako senzori očitavaju visoke vrijednosti tako da astronaut može resetirati robota ako je zaglavljen ili otići pokupiti ga i resetirati ako je zaglavljen na litici. Međutim, čita ove pogreške samo ako vidi bijelo. Bez mogućnosti da vidi bijelu boju, robot će ući u način pogreške. Programiran je za slanje dvije različite vrste e -pošte natrag u matičnu bazu, ovisno o tome što vidi. Ako vidi boju kože astronauta, to očito nije dobro, pa će upozoriti matičnu bazu ako astronaut ima kožu na kojoj se vidi kvar s odijelom. Druga poruka je pripremljena ako astronaut jednostavno nestane s vidika. Ako se za kamere ne prikazuje bijela ili boja kože, robot će se vrtjeti i poslati drugu, ali drugačiju e -poštu. Slike na kojima roomba ne može vidjeti astronauta bit će poslane zajedno s porukom u e -porukama. Kôd našeg projekta prikazan je u nastavku:
za i = 1:.1: 3 img = r.getImage; image (img) red_mean = mean (mean (img (:,:, 1))); zeleno_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 2))); plavo_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 3))); ako je red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || neravnina.lijevo> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || litica.lijevoPrednja <10 || litica.desnoPreda <10 || litica.desno700 || svjetlo.lijevoPredaj> 700 || svjetlo.lijevi centar> 700 || svjetlo.desnoCentar> 700 || svjetlo.desnoSpred> 700 || light.desno> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else za i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %boje kože (potrebno je prilagoditi na temelju boje kože astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %šalje e -poštu koja pokazuje da je odijelo isključeno psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Korisničko ime', pošta); setpref ('Internet', 'SMTP_Password', psswd); rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'istina'); props.setProperty ('mail.smtp.auth', 'istina'); 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, 'Upomoć!', 'Uniforma astronauta je skinuta!', img); kraj ako crveno_znači 135 || zeleno_značenje 135 || blue_mean 135 za j = 1: 2 %ako robot ne može pronaći bijelo r.turnAngle (360) mail = '[email protected]'; psswd = 'da'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjekt'; m_text = 'test'; setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Korisničko ime', pošta); setpref ('Internet', 'SMTP_Password', psswd); rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'istina'); props.setProperty ('mail.smtp.auth', 'istina'); 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, 'Upomoć!', 'Astronauta nije moguće pronaći!', img); r.stop end kraj kraj end
Očito je ovdje neuredno, ali bi se trebalo izbrisati nakon kopiranja. Očigledno će oni koji rade na ovom projektu dostaviti lozinke i e -poštu za to.
Međutim, naš je primjer samo jedan od mnogih načina da se petljate s ovim robotom kako bi odgovarao svima. Mnogo je različitih stvari koje treba učiniti, a koje možete prilagoditi sebi.
Preporučeni:
Glasovna navigacija Raspberry Pi pomaže slijepim osobama: 7 koraka (sa slikama)
Raspberry Pi Glasovna navigacija pomaže slijepim osobama: Bok U ovom uputstvu ćemo vidjeti kako malina pi može pomoći slijepim osobama koristeći korisnički definirane glasovne upute. Evo, uz pomoć ultrazvučnog senzorskog ulaza za mjerenje udaljenosti koju možemo glasovni vodič slijepcima do slijedećeg
AI pomaže očima (Sustav računalnog vida koji podsjeća operatore da nose zaštitne naočale): 4 koraka
AI AIDS Eyes (Sustav računalnog vida koji podsjeća operatore da nose zaštitne naočale): Evo demo sustava. Kad sustav otkrije da je bušilica podignuta, automatski će izdati upozorenje o zaštitnim naočalama. Kako bi predstavljali prisutnost upozorenja zaštitnih naočala, rub RGB slike je obojen crvenom bojom u demo v
ANTIDISKRETNOST: držač pametnog telefona koji vam pomaže pri fokusiranju: 7 koraka (sa slikama)
ANTiDISTRACTION: Držač pametnog telefona koji vam pomaže pri fokusiranju: Naš ANTiDISTRACTION uređaj ima za cilj prekinuti sve oblike stanične distrakcije tijekom razdoblja intenzivnog fokusiranja. Stroj djeluje kao stanica za punjenje na koju je montiran mobilni uređaj kako bi se olakšalo okruženje bez smetnji
PCB koji pomaže u upravljanju kabelima: 6 koraka (sa slikama)
PCB koji pomaže pri upravljanju kabelima: Prije nekog vremena napravio sam prilagođeni stolni CNC mlin. Od tada sam ga nadograđivao novim komponentama. Zadnji put sam dodao drugi Arduino s 4 -znamenkastim zaslonom za kontrolu broja okretaja vretena pomoću PID petlje. Morao sam ga povezati s primarnim Arduino veprom
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
Roomba Roomba upravljani preglednikom robot s modelom Raspberry Pi 3 A+: pregledOva instrukcija će se usredotočiti na to kako mrtvoj Roombi dati novi mozak (Raspberry Pi), oči (web kamera) i način da kontrolirate sve iz web preglednika. Postoji mnogo Roomba hakova koji omogućuju kontrolu putem serijskog sučelja. Nisam