Cuprins:
- Pasul 1: demonstrație video
- Pasul 2: Prezentare generală a operației
- Pasul 3: Senzori de gamă
- Pasul 4: Senzori de poziție a bastonului
- Pasul 5: Procesor
- Pasul 6: Prezentare generală a codului
- Pasul 7: Lista pieselor
- Pasul 8: Motivație și îmbunătățire
- Pasul 9: Concluzie
- Pasul 10: Construcție și cod
Video: EyeRobot - Bastonul alb robotizat: 10 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
Rezumat: Folosind iRobot Roomba Create, am prototipat un dispozitiv numit eyeRobot. Acesta va ghida utilizatorii nevăzători și cu deficiențe de vedere prin medii aglomerate și populate, folosind Roomba ca bază pentru a se căsători cu simplitatea trestiei albe tradiționale cu instinctele unui câine cu ochi văzători. Utilizatorul indică mișcarea dorită prin apăsarea intuitivă și răsucirea mânerului. Robotul ia aceste informații și găsește o cale clară pe un hol sau printr-o cameră, folosind sonar pentru a direcționa utilizatorul într-o direcție adecvată în jurul obstacolelor statice și dinamice. Utilizatorul urmează apoi în spatele robotului, în timp ce îl ghidează în direcția dorită, prin forța vizibilă simțită prin mâner. Această opțiune robotică necesită puțină pregătire: împingeți pentru a merge, trageți pentru a opri, răsuciți pentru a vă întoarce. Previziunea pe care o oferă telemetrii este similară cu un câine cu ochi văzători și este un avantaj considerabil față de încercarea și eroarea constantă care marchează utilizarea bastonului alb. Cu toate acestea, eyeRobot oferă în continuare o alternativă mult mai ieftină decât câinii ghizi, care costă peste 12 000 USD și sunt utili doar 5 ani, în timp ce prototipul a fost construit cu mult sub 400 USD. Este, de asemenea, o mașină relativ simplă, care necesită câțiva senzori ieftini, diferiți potențiometri, niște hardware și, bineînțeles, un Roomba Create.
Pasul 1: demonstrație video
Versiune de înaltă calitate
Pasul 2: Prezentare generală a operației
Control utilizator: Funcționarea eyeRobot este concepută pentru a fi cât mai intuitivă posibil pentru a reduce sau elimina foarte mult antrenamentul. Pentru a începe mișcarea, utilizatorul trebuie pur și simplu să înceapă să meargă înainte, un senzor liniar la baza stick-ului va prelua această mișcare și va începe să deplaseze robotul înainte. Folosind acest senzor liniar, robotul își poate potrivi apoi viteza cu viteza dorită a utilizatorului. eyeRobot se va deplasa cât de repede dorește utilizatorul. Pentru a indica faptul că se dorește o întoarcere, utilizatorul trebuie pur și simplu să răsucească mânerul și, dacă este posibilă o întoarcere, robotul va răspunde în consecință.
Navigare robot: Când călătoriți în spațiu deschis, eyeRobot va încerca să păstreze o cale dreaptă, detectând orice obstacol care ar putea împiedica utilizatorul și ghidând utilizatorul în jurul acelui obiect și înapoi pe calea originală. În practică, utilizatorul poate urmări în mod natural în spatele robotului, cu o gândire puțin conștientă. utilizatorul pe coridor. Când este atinsă o intersecție, utilizatorul va simți că robotul începe să se întoarcă și poate alege, răsucind mânerul, dacă va abate noul ramură sau va continua pe o cale dreaptă. În acest fel, robotul seamănă foarte mult cu bastonul alb, utilizatorul poate simți mediul înconjurător cu robotul și poate folosi aceste informații pentru navigația globală.
Pasul 3: Senzori de gamă
Ultrasonice: eyeRobot poartă 4 telemetre cu ultrasunete (MaxSonar EZ1). Senzorii cu ultrasunete sunt poziționați într-un arc în partea din față a robotului pentru a furniza informații despre obiectele din fața și către părțile laterale ale robotului. Ei informează robotul despre raza obiectului și îl ajută să găsească o rută deschisă în jurul acelui obiect și să revină pe calea sa originală.
Telemetre IR: EyeRobot poartă, de asemenea, doi senzori IR (GP2Y0A02YK). Telemetrele IR sunt poziționate orientate spre 90 de grade spre dreapta și spre stânga pentru a ajuta robotul să urmeze peretele. De asemenea, pot alerta robotul cu privire la obiecte prea aproape de părțile laterale în care utilizatorul ar putea intra.
Pasul 4: Senzori de poziție a bastonului
Senzor liniar: Pentru ca eyeRobot să corespundă vitezei cu cea a utilizatorului, eyeRobot simte dacă utilizatorul împinge sau întârzie mișcarea sa înainte. Acest lucru se realizează prin alunecarea bazei bastonului de-a lungul unei căi, întrucât un potențiometru simte poziția bastonului. EyeRobot folosește această intrare pentru a regla viteza robotului. Ideea adaptării eyeRobot la viteza utilizatorului printr-un senzor liniar a fost de fapt inspirată de mașina de tuns iarba a familiei. Baza bastonului este conectată la un bloc de ghidare care se deplasează de-a lungul unei șine. Atașat blocului de ghidare este un potențiometru glisant care citește poziția blocului de ghidare și îl raportează procesorului. Pentru a permite bățului să se rotească în raport cu robotul, există o tijă care trece printr-un bloc de lemn, formând un rulment rotativ. Acest rulment este apoi atașat la o balama pentru a permite bastonului să se adapteze la înălțimea utilizatorului.
Senzor de răsucire: senzorul de răsucire permite utilizatorului să răsucească mânerul pentru a întoarce robotul. Un potențiometru este atașat la capătul unui arbore de lemn, iar butonul este introdus și lipit în partea superioară a mânerului. Sârmele curg pe diblă și alimentează informațiile de răsucire în procesor.
Pasul 5: Procesor
Procesor: Robotul este controlat de un Zbasic ZX-24a așezat pe o placă de bază II Robodyssey Advanced. Procesorul a fost ales pentru viteză, ușurință în utilizare, costuri accesibile și 8 intrări analogice. Este conectat la o placă mare de protejare pentru a permite schimbări rapide și ușoare. Toată puterea pentru robot vine de la sursa de alimentare de pe placa de bază. Zbasic comunică cu roomba prin portul portului de marfă și are control deplin asupra senzorilor și motoarelor Roomba.
Pasul 6: Prezentare generală a codului
Evitarea obstacolelor: Pentru evitarea obstacolelor, eyeRobot folosește o metodă în care obiectele din apropierea robotului exercită o forță virtuală asupra robotului îndepărtându-l de obiect. Cu alte cuvinte, obiectele împing robotul departe de ele. În implementarea mea, forța virtuală exercitată de un obiect este invers proporțională cu distanța pătrată, astfel încât forța împingerii crește pe măsură ce obiectul se apropie și creează o curbă de răspuns neliniar: PushForce = ResponseMagnitudeConstant / Distance2Împingerile provenite de la fiecare senzor sunt adăugate împreună; senzorii din partea stângă împing la dreapta și invers, pentru a obține un vector pentru călătoria robotului. Viteza roților este apoi modificată, astfel încât robotul să se întoarcă spre acest vector. Pentru a se asigura că obiectele moarte în fața robotului nu prezintă un „niciun răspuns” (deoarece forțele de pe ambele părți se echilibrează), obiectele din fața moartă împing robotul în partea mai deschisă. Când robotul a trecut de obiect, acesta folosește codificatoarele Roomba pentru a corecta schimbarea și a reveni la vectorul original.
Urmărirea peretelui: Principiul urmăririi peretelui este menținerea distanței dorite și a unghiului paralel cu peretele. Problemele apar atunci când robotul este rotit față de perete, deoarece senzorul unic produce citiri inutile ale intervalului. Citirile de distanță sunt efectuate atât de unghiul roboților față de perete, cât și de distanța reală față de perete. Pentru a determina unghiul și a elimina astfel această variabilă, robotul trebuie să aibă două puncte de referință care să poată fi comparate pentru a obține unghiul roboților. Deoarece eyeRobot are un singur telemetru IR orientat lateral, pentru a atinge aceste două puncte, acesta trebuie să compare distanța de la telemetru în timp, în timp ce robotul se mișcă. Apoi își determină unghiul din diferența dintre cele două citiri pe măsură ce robotul se deplasează de-a lungul peretelui. Apoi folosește aceste informații pentru a corecta poziționarea necorespunzătoare. Robotul intră în modul următor de perete ori de câte ori are un perete alături de el pentru o anumită perioadă de timp și iese din el ori de câte ori există un obstacol în calea sa, care îl împinge de pe cursul său sau dacă utilizatorul folosește mânerul de răsucire pentru a aduce robot departe de perete.
Pasul 7: Lista pieselor
Piese necesare: 1x) Roomba create1x) Foaie mare de acril2x) Sharp GP2Y0A02YK telemetru IR4x) telemetre ultrasonice Maxsonar EZ11x) microprocesor ZX-24a1x) Placă de bază Robodyssey Advanced II1x) potențiometru glisant1x) potențiometru cu o singură rotație 1x) suport liniar)) Balamale, dibluri, șuruburi, piulițe, suporturi și fire
Pasul 8: Motivație și îmbunătățire
Motivație: Acest robot a fost conceput pentru a umple golul evident dintre câinele călăreț capabil, dar scump și bastonul alb ieftin, dar limitat. În dezvoltarea unui Baston Alb Robotic comercializabil și mai capabil, Roomba Create a fost vehiculul perfect pentru proiectarea unui prototip rapid pentru a vedea dacă conceptul a funcționat. În plus, premiile ar oferi sprijin economic pentru cheltuiala considerabilă a construirii unui robot mai capabil.
Îmbunătățire: Cantitatea pe care am învățat-o construind acest robot a fost substanțială și aici voi încerca să prezint ceea ce am învățat pe măsură ce încerc să construiesc un robot de a doua generație: 1) Evitarea obstacolelor - Am învățat multe despre obstacolele în timp real evitare. În procesul de construire a acestui robot am trecut prin două coduri de evitare a obstacolelor complet diferite, începând cu ideea originală de forță a obiectului, apoi trecând la principiul găsirii și căutării celui mai deschis vector și apoi trecând înapoi la ideea de forță a obiectului cu realizarea cheie că răspunsul obiectului ar trebui să fie neliniar. În viitor, îmi voi corecta greșeala de a nu face nicio cercetare online a metodelor utilizate anterior înainte de a mă apuca de proiectul meu, deoarece acum învăț o căutare rapidă pe Google ar fi dat numeroase lucrări extraordinare pe această temă. senzori - Începând cu acest proiect, am crezut că singura mea opțiune pentru un senzor liniar era să folosesc un vas glisant și un fel de rulment liniar. Acum îmi dau seama că o opțiune mult mai simplă ar fi fost să atașați pur și simplu vârful tijei la un joystick, astfel încât împingerea stick-ului înainte să împingă și joystick-ul spre înainte. În plus, o simplă îmbinare universală ar permite ca răsucirea bățului să fie transpusă în axa de răsucire a multor joystick-uri moderne. Această implementare ar fi fost mult mai simplă decât cea pe care o folosesc în prezent. 3) Roți rotative libere - Deși acest lucru ar fi fost imposibil cu Roomba, acum pare evident că un robot cu roți rotative libere ar fi ideal pentru această sarcină. Un robot care rulează pasiv nu ar necesita motoare și o baterie mai mică și, prin urmare, ar fi mai ușor. În plus, acest sistem nu necesită senzor liniar pentru a detecta apăsarea utilizatorilor, robotul ar rula pur și simplu la viteza utilizatorilor. Robotul ar putea fi rotit direcționând roțile ca o mașină, iar dacă utilizatorul ar trebui oprit ar putea fi adăugate frâne. Pentru următoarea generație eyeRobot, voi folosi cu siguranță această abordare foarte diferită. 4) Doi senzori distanți pentru urmărirea peretelui - După cum sa discutat mai devreme, au apărut probleme la încercarea de urmărire a peretelui cu un singur senzor orientat lateral, astfel a fost necesar să deplasați robotul între citiri pentru a atinge diferite puncte de referință. Doi senzori cu o distanță între ei ar simplifica foarte mult urmărirea peretelui. 5) Mai mulți senzori - Deși acest lucru ar fi costat mai mulți bani, a fost dificil să încercăm să codificăm acest robot cu atât de puține ferestre din lume în afara procesorului. Ar fi făcut codul de navigație mult mai puternic cu o gamă de sonare mai completă (dar, bineînțeles, senzorii costă bani, ceea ce nu aveam în acel moment).
Pasul 9: Concluzie
Concluzie: iRobot s-a dovedit o platformă de prototipare ideală pentru experimentarea conceptului de Baston Alb Robotic. Din rezultatele acestui prototip reiese că un robot de acest tip este într-adevăr viabil. Sper să dezvolt un robot de a doua generație din lecțiile pe care le-am învățat din utilizarea Roomba Create. În versiunile viitoare ale eyeRobot prevăd un dispozitiv capabil să facă mai mult decât să ghideze o persoană pe hol, mai degrabă un robot care poate fi pus în mâinile orbilor pentru a fi folosit în viața de zi cu zi. Cu acest robot, utilizatorul își vorbește pur și simplu destinația și robotul îi va ghida acolo fără efort conștient din partea utilizatorului. Acest robot ar fi suficient de ușor și compact pentru a putea fi transportat cu ușurință pe scări și aruncat într-un dulap. Acest robot ar putea face navigație globală în plus față de local, fiind capabil să ghideze utilizatorul de la început până la destinație fără cunoștințele sau experiența prealabilă a utilizatorilor. Această capacitate ar depăși cu mult chiar și câinele ghid, cu GPS și senzori mai avansați care permit orbilor să navigheze liber în lume, Nathaniel Barshay, (Intrat de Stephen Barshay) (Mulțumiri speciale lui Jack Hitt pentru Roomba Create)
Pasul 10: Construcție și cod
Câteva cuvinte străine despre construcție: puntea este realizată dintr-o bucată de acrilic tăiată într-un cerc cu o deschidere în spate pentru a permite accesul electronicului și este apoi înșurubată în orificiile de montare de lângă compartimentul de încărcare. Placa de prototipare este înșurubată în orificiul șurubului din partea inferioară a golfului. Zbasic este montat cu un suport L cu aceleași șuruburi ca puntea. Fiecare sonar este înșurubat într-o bucată de acrilic, care este la rândul său atașată la un suport L atașat la punte (consolele L sunt îndoite înapoi cu 10 grade pentru a oferi o imagine mai bună). Pista pentru senzorul liniar este înșurubată chiar în punte, iar vasul glisant este montat cu consolele L lângă ea. O descriere mai tehnică a construcției senzorului liniar și a tijei de comandă poate fi găsită la pasul 4.
Cod: am atașat versiunea completă a codului roboților. De-a lungul unei ore am încercat să-l curăț de cele trei sau patru generații de coduri care erau în fișier, ar trebui să fie suficient de ușor de urmat acum. Dacă aveți ID-ul ZBasic, ar trebui să fie ușor de vizualizat, dacă nu, utilizați blocnotes începând cu fișierul main.bas și trecând prin celelalte fișiere.bas.
Recomandat:
Luminează Gandalf toiagul alb: 9 pași
Luminează Gandalf toiagul alb: Întotdeauna mi-am dorit un Gandalf toiagul alb de când mă uitam la Domnul Inelelor. Am găsit un design pentru unul pe Thingivers.com. Folosind Tinkercad am modificat designul pentru a lumina
Boxe pasive puternice cu față din stejar alb: 16 pași (cu imagini)
Boxe pasive puternice cu față din stejar alb: Acesta este al treilea proiect de difuzoare și complet diferit de cele anterioare! De data aceasta am de gând să fac niște monitoare mari, puternice și drăguțe care să meargă în camera mea audio! Am alte proiecte pe Instagram, vă rog să le verificați
Lumina albă de zgomot alb: 11 pași (cu imagini)
White Noise Night Light: Acesta este un proiect pe care l-am făcut pentru copilul meu de 1 an de Crăciun. Sincer, totuși, a fost un cadou sănătos pentru mine și soția mea. Este un aparat de zgomot alb care poate reda mai multe sunete diferite selectate printr-o interfață web și, de asemenea, încorporează lumină
Ceasul Iepurelui alb Nixie: 7 pași (cu imagini)
White Rabbit Nixie Clock: Bună tuturor După cum puteți spune din postările mele anterioare, am o fascinație pentru tuburile Nixie, istoria lor, modul în care funcționează și aspectul unic și lumina pe care o dau, am avut norocul să am acces la aN Cutter laser Epilog pentru acest proiect și nu
Baston alb cu voce Arduino (prima parte): 6 pași (cu imagini)
Arduino Voiced White Cane (Prima parte): Cu ani în urmă, eram cu un student care avea un membru al familiei care era orb, mi-am dat seama că am putea ajunge la o mică soluție capabilă să facă audibil câți pași există un obstacol, evident un arduino cu numere înregistrate anterior ar putea