Indholdsfortegnelse:

EyeRobot - Robotic White Cane: 10 trin (med billeder)
EyeRobot - Robotic White Cane: 10 trin (med billeder)

Video: EyeRobot - Robotic White Cane: 10 trin (med billeder)

Video: EyeRobot - Robotic White Cane: 10 trin (med billeder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
EyeRobot - Robotic White Cane
EyeRobot - Robotic White Cane

Abstract: Ved hjælp af iRobot Roomba Create har jeg prototypet en enhed kaldet eyeRobot. Det vil guide blinde og svagtseende brugere gennem rodede og befolket miljøer ved at bruge Roomba som en base for at gifte sig med enkelheden i den traditionelle hvide stok med instinkterne fra en seende hund. Brugeren angiver sin ønskede bevægelse ved intuitivt at skubbe på og vride håndtaget. Robotten tager denne information og finder en klar sti ned ad en gang eller på tværs af et rum ved hjælp af ekkolod til at styre brugeren i en passende retning omkring statiske og dynamiske forhindringer. Brugeren følger derefter bag robotten, da den leder brugeren i den ønskede retning af den mærkbare kraft, der føles gennem håndtaget. Denne robotmulighed kræver lidt træning: tryk for at gå, træk for at stoppe, vrid for at dreje. Fremsynet, afstandsmålerne giver, ligner en seende øjenhund og er en betydelig fordel i forhold til den konstante forsøg og fejl, der markerer brugen af den hvide stok. Alligevel giver eyeRobot stadig et meget billigere alternativ end førerhunde, der koster over $ 12.000 og kun er nyttige i 5 år, mens prototypen blev bygget til langt under $ 400. Det er også en relativt enkel maskine, der kræver et par billige sensorer, forskellige potentiometre, noget hardware og selvfølgelig en Roomba Create.

Trin 1: Videodemonstration

Videodemonstration
Videodemonstration

Version i høj kvalitet

Trin 2: Oversigt over driften

Betjeningsoversigt
Betjeningsoversigt

Brugerkontrol: Betjeningen af eyeRobot er designet til at være så intuitiv som muligt for i høj grad at reducere eller eliminere træning. For at starte bevægelse skal brugeren simpelthen begynde at gå fremad, en lineær sensor i bunden af pinden vil opfange denne bevægelse og begynde at flytte robotten fremad. Ved hjælp af denne lineære sensor kan robotten derefter matche sin hastighed til den ønskede hastighed for brugeren. eyeRobot bevæger sig så hurtigt, som brugeren ønsker at gå. For at angive, at en drejning ønskes, skal brugeren blot dreje håndtaget, og hvis det er muligt at dreje, vil robotten reagere i overensstemmelse hermed.

Robotnavigation: Når du rejser i det åbne rum, vil eyeRobot forsøge at holde en lige sti, detektere enhver forhindring, der kan hindre brugeren, og guide brugeren rundt om objektet og tilbage på den originale sti. I praksis kan brugeren naturligvis følge bag robotten med lidt bevidst tanke. For at navigere i en gang skal brugeren forsøge at skubbe robotten ind i en af væggene på hver side, efter at have erhvervet en væg begynder robotten at følge den og guider brugeren ned ad gangen. Når et kryds er nået, vil brugeren føle, at robotten begynder at dreje, og ved at dreje i håndtaget vælge, om den nye offshoot skal skrues ned eller fortsættes på en lige sti. På denne måde ligner robotten meget den hvide stok, brugeren kan mærke miljøet med robotten og bruge disse oplysninger til global navigation.

Trin 3: Range Sensors

Range sensorer
Range sensorer

Ultralyd: EyeRobot bærer 4 ultralydsafstandsmålere (MaxSonar EZ1). Ultralydssensorerne er placeret i en bue på forsiden af robotten for at give information om objekter foran og til siderne af robotten. De informerer robotten om objektets rækkevidde og hjælper den med at finde en åben rute omkring objektet og tilbage til dets oprindelige sti.

IR -afstandsmålere: EyeRobot har også to IR -sensorer (GP2Y0A02YK). IR -afstandsmålere er placeret til at vende 90 grader ud til højre og venstre for at hjælpe robotten i væggen efter. De kan også advare robotten om objekter, der er for tæt på siderne, som brugeren kan komme ind i.

Trin 4: Cane Position Sensors

Cane Position Sensors
Cane Position Sensors

Lineær sensor: For at eyeRobot kan matche dens hastighed til brugerens, registrerer eyeRobot, om brugeren skubber eller forsinker sin bevægelse fremad. Dette opnås ved at skubbe sokkelbunden langs et spor, da et potentiometer registrerer stokkens position. EyeRobot bruger dette input til at regulere robotens hastighed. Idéen med, at eyeRobot tilpasser sig brugerens hastighed gennem en lineær sensor, var faktisk inspireret af familiens plæneklipper. Stokkens bund er forbundet med en styreblok, der bevæger sig langs en skinne. Fastgjort til guideblokken er et glidepotentiometer, der læser guideblokens position og rapporterer det til processoren. For at lade pinden rotere i forhold til robotten, løber en stang op gennem en træblok og danner et roterende leje. Dette leje er derefter fastgjort til et hængsel, så stokken kan justeres til brugerens højde.

Twist Sensor: Twist sensoren giver brugeren mulighed for at vride på håndtaget for at dreje robotten. Et potentiometer er fastgjort til enden af et træskaft, og knappen sættes i og limes ind i den øverste del af håndtaget. Ledningerne løber ned over dyvlen og indfører twist -informationen i processoren.

Trin 5: Processor

Processor
Processor

Processor: Robotten styres af en Zbasic ZX-24a, der sidder på et Robodyssey Advanced Motherboard II. Processoren blev valgt for sin hastighed, brugervenlighed, overkommelige omkostninger og 8 analoge indgange. Det er forbundet til et stort prototypebrødbræt for at muliggøre hurtige og lette ændringer. Al strøm til robotten kommer fra strømforsyningen på bundkortet. Zbasicen kommunikerer med roomba gennem lastrumsporten og har fuld kontrol over Roombas sensorer og motorer.

Trin 6: Kodeoversigt

Kodeoversigt
Kodeoversigt

Forhindring af forhindringer: For at undgå forhindringer bruger eyeRobot en metode, hvor objekter i nærheden af robotten udøver en virtuel kraft på robotten, der flytter den væk fra objektet. Med andre ord skubber objekter robotten væk fra sig selv. I min implementering er den virtuelle kraft, der udøves af et objekt, omvendt proportional med afstanden i kvadrat, så styrken af skubbet stiger, når objektet kommer tættere på og skaber en ikke -lineær responskurve: PushForce = ResponseMagnitudeConstant/Distance2De skub, der kommer fra hver sensor, lægges sammen; sensorer på venstre side skubber til højre og omvendt for at få en vektor til robotens rejse. Hjulhastigheder ændres derefter, så robotten drejer mod denne vektor. For at sikre, at genstande, der er døde foran robotten, ikke udviser et "nej -svar" (fordi kræfterne på begge sider balancerer), skubber objekter til dødfronten robotten til den mere åbne side. Når robotten har passeret objektet, bruger den Roombas kodere til at korrigere for ændringen og komme tilbage til den originale vektor.

Vægfølge: Princippet om vægfølge er at opretholde en ønsket afstand og parallel vinkel til en væg. Problemer opstår, når robotten drejes i forhold til væggen, fordi den enkelte sensor giver ubrugelige rækkevidder. Afstandsmålinger påvirkes lige så meget af robotternes vinkel på væggen som af den faktiske afstand til væggen. For at bestemme vinkel og dermed eliminere denne variabel skal robotten have to referencepunkter, der kan sammenlignes for at få robotternes vinkel. Fordi eyeRobot kun har den ene side vendt IR -afstandsmåler, skal den for at opnå disse to punkter sammenligne afstanden fra afstandsmåleren over tid, når robotten bevæger sig. Den bestemmer derefter sin vinkel ud fra forskellen mellem de to aflæsninger, når robotten bevæger sig langs væggen. Den bruger derefter disse oplysninger til at korrigere for forkert positionering. Robotten går i væg -følgende tilstand, når den har en væg ved siden af den i et bestemt stykke tid og forlader den, når der er en forhindring i dens vej, som skubber den ud af sin kurs, eller hvis brugeren bruger vridhåndtaget til at bringe robot væk fra væggen.

Trin 7: Deleliste

Liste over dele
Liste over dele

Påkrævede dele: 1x) Roomba create1x) Stort ark akryl2x) Sharp GP2Y0A02YK IR afstandsmåler4x) Maxsonar EZ1 ultralydsmåler1x) ZX-24a mikroprocessor1x) Robodyssey Advanced bundkort II1x) Slide potentiometer1x) Enkelt drejet potentiometer1x) Lineært brødbord1)) Lineært brødbord1)) Lineært brødbord1)) Linearless1) Hængsler, dyvler, skruer, møtrikker, beslag og ledninger

Trin 8: Motivation og forbedring

Motivation og forbedring
Motivation og forbedring

Motivation: Denne robot er designet til at udfylde det åbenlyse hul mellem den dygtige, men dyre førerhund og den billige, men begrænsede hvide stok. I udviklingen af en salgbar og mere dygtig Robotic White Cane var Roomba Create det perfekte køretøj til at designe en hurtig prototype for at se, om konceptet fungerede. Derudover ville præmierne give økonomisk opbakning til de betydelige omkostninger ved at bygge en mere dygtig robot.

Forbedring: Det beløb, jeg lærte at bygge denne robot, var betydeligt, og her vil jeg forsøge at lægge det, jeg har lært, frem, når jeg forsøger at bygge en anden generations robot: 1) Forhindring af forhindringer - jeg har lært meget om hindring i realtid undgåelse. I processen med at bygge denne robot har jeg gennemgået to helt forskellige forhindringsforebyggelseskoder, startende med den originale objektstyrkeide, derefter gå til princippet om at finde og søge efter den mest åbne vektor og derefter gå tilbage til objektstyrkeideen med nøglen erkendelse af, at objektets respons skal være ikke-lineær. I fremtiden vil jeg rette min fejl ved ikke at foretage nogen onlineforskning af tidligere anvendte metoder, inden jeg går i gang med mit projekt, da jeg nu lærer en hurtig Google -søgning ville have givet mange gode artikler om emnet. 2) Design af pinden sensorer - I begyndelsen af dette projekt tænkte jeg, at min eneste mulighed for en lineær sensor var at bruge en glidepotte og en slags lineært leje. Jeg er nu klar over, at en meget enklere mulighed ville have været at blot fastgøre toppen af stangen til et joystick, sådan at skubbe pinden fremad også ville skubbe joysticket fremad. Derudover ville en simpel universalledd gøre det muligt at oversætte pindens twist til mange moderne joysticks vridningsakse. Denne implementering ville have været meget enklere end den, jeg i øjeblikket bruger. 3) Fridrejende hjul - Selvom dette ville have været umuligt med Roomba, virker det nu indlysende, at en robot med frit drejende hjul ville være ideel til denne opgave. En robot, der ruller passivt, kræver ingen motorer og et mindre batteri og dermed være lettere. Derudover kræver dette system ingen lineær sensor til at registrere brugernes skub, robotten ville simpelthen rulle med brugernes hastighed. Robotten kunne drejes ved at styre hjulene som en bil, og hvis brugeren skulle standses, kunne der tilføjes bremser. Til den næste generation af eyeRobot vil jeg helt sikkert bruge denne meget anderledes tilgang. 4) To afstandssensorer til vægfølge - Som diskuteret opstod der tidligere problemer, når man forsøgte at følge væg med kun en side vendt sensor, derfor var det nødvendigt at flytte robotten mellem aflæsninger at opnå forskellige referencepunkter. To sensorer med en afstand mellem dem ville forenkle væggen meget. 5) Flere sensorer - Selvom dette ville have kostet flere penge, var det svært at forsøge at kode denne robot med så få vinduer på verden uden for processoren. Det ville have gjort navigationskoden meget mere kraftfuld med et mere komplet ekkolod array (men selvfølgelig koster sensorer penge, hvilket jeg ikke havde dengang).

Trin 9: Konklusion

Konklusion
Konklusion

Konklusion: iRobot viste sig at være en ideel prototypeplatform til at eksperimentere med konceptet om en Robotic White Cane. Af resultaterne af denne prototype er det tydeligt, at en robot af denne type faktisk er levedygtig. Jeg håber at kunne udvikle en anden generations robot fra de erfaringer, jeg har lært af at bruge Roomba Create. I fremtidige versioner af eyeRobot forestiller jeg mig en enhed, der er i stand til at gøre mere end bare at lede en person ned ad en gang, snarere en robot, der kan lægges i hænderne på blinde til brug i hverdagen. Med denne robot ville brugeren simpelthen tale deres destination, og robotten ville guide dem dertil uden bevidst indsats fra brugeren. Denne robot ville være let og kompakt nok til let at blive transporteret op ad trapper og gemt væk i et skab. Denne robot ville være i stand til at foretage global navigation ud over at være lokal, og kunne guide brugeren fra start til destination uden brugernes forudgående viden eller erfaring. Denne kapacitet ville gå langt ud over selv førerhunden, med GPS og mere avancerede sensorer, der giver blinde mulighed for frit at navigere i verden, Nathaniel Barshay, (indtastet af Stephen Barshay) (Særlig tak til Jack Hitt for Roomba Create)

Trin 10: Konstruktion og kode

Konstruktion og kode
Konstruktion og kode

Et par fremmede ord om konstruktion: Dækket af lavet af et stykke akryl skåret i en cirkel med en åbning på bagsiden for at give adgang til elektronik og skrues derefter i monteringshullerne ved siden af lastrummet. Prototypebordet er skruet ind i skruehullet i bunden af bugten. Zbasic er monteret med et L -beslag med de samme skruer som dækket. Hver sonar skrues i et stykke akryl, som igen er fastgjort til et L -beslag fastgjort til dækket (L -beslagene er bøjet 10 grader tilbage for at give et bedre overblik). Sporet til den lineære sensor skrues lige ind i dækket, og glidepotten monteres med L -beslag ved siden af. En mere teknisk beskrivelse af konstruktionen af den lineære sensor og kontrolstang findes i trin 4.

Kode: Jeg har vedhæftet den fulde version af robotkoden. I løbet af en time har jeg forsøgt at rydde det op fra de tre eller fire generationer af kode, der var i filen, skulle det være let nok at følge nu. Hvis du har ZBasic IDE, skal det være let at se, hvis ikke skal du bruge notesblok, der starter med filen main.bas og går igennem de andre.bas -filer.

Anbefalede: