Innholdsfortegnelse:

EyeRobot - Robotic White Cane: 10 trinn (med bilder)
EyeRobot - Robotic White Cane: 10 trinn (med bilder)

Video: EyeRobot - Robotic White Cane: 10 trinn (med bilder)

Video: EyeRobot - Robotic White Cane: 10 trinn (med bilder)
Video: Top 10 AI Robots In 2023 | Advanced AI Robots in the World | Artificial Intelligence | Simplilearn 2024, Juli
Anonim
EyeRobot - Robotic White Cane
EyeRobot - Robotic White Cane

Abstract: Ved å bruke iRobot Roomba Create har jeg prototypet en enhet som heter eyeRobot. Den vil guide blinde og synshemmede brukere gjennom rotete og befolket miljøer ved å bruke Roomba som en base for å gifte seg med enkelheten i den tradisjonelle hvite stokken med instinkter fra en seende øyehund. Brukeren indikerer ønsket bevegelse ved intuitivt å skyve på og vri håndtaket. Roboten tar denne informasjonen og finner en tydelig sti ned en gang eller over et rom, ved hjelp av ekkolodd for å styre brukeren i en passende retning rundt statiske og dynamiske hindringer. Brukeren følger deretter bak roboten mens den leder brukeren i ønsket retning av den merkbare kraften som kjennes gjennom håndtaket. Dette robotalternativet krever lite trening: trykk for å gå, trekk for å stoppe, vri for å snu. Fremsynet avstandsmålere gir ligner på en seende øyehund, og er en betydelig fordel i forhold til den konstante prøving og feiling som markerer bruken av den hvite stokken. Likevel gir eyeRobot fortsatt et mye billigere alternativ enn førerhunder, som koster over $ 12 000 og er nyttige i bare 5 år, mens prototypen ble bygget for godt under $ 400. Det er også en relativt enkel maskin, som krever noen få billige sensorer, forskjellige potensiometre, litt maskinvare og selvfølgelig en Roomba Create.

Trinn 1: Videodemonstrasjon

Videodemonstrasjon
Videodemonstrasjon

Versjon av høy kvalitet

Trinn 2: Driftsoversikt

Oversikt over driften
Oversikt over driften

Brukerkontroll: Betjeningen av eyeRobot er designet for å være så intuitiv som mulig for sterkt å redusere eller eliminere trening. For å starte bevegelsen må brukeren bare begynne å gå fremover, en lineær sensor ved foten av pinnen vil fange opp denne bevegelsen og begynne å bevege roboten fremover. Ved hjelp av denne lineære sensoren kan roboten deretter matche hastigheten til ønsket hastighet for brukeren. eyeRobot vil bevege seg så raskt som brukeren ønsker å gå. For å indikere at en sving er ønsket, må brukeren ganske enkelt vri håndtaket, og hvis en sving er mulig, vil roboten svare deretter.

Robotnavigasjon: Når du reiser i det åpne rommet, vil eyeRobot prøve å holde en rett bane, oppdage eventuelle hindringer som kan hindre brukeren, og veilede brukeren rundt objektet og tilbake til den opprinnelige banen. I praksis kan brukeren naturlig følge bak roboten med liten bevisst tanke. For å navigere i en gang, bør brukeren prøve å skyve roboten inn i en av veggene på hver side, når roboten får en vegg, begynner den å følge den og veileder brukeren nedover gangen. Når et kryss er nådd, vil brukeren føle at roboten begynner å snu, og ved å vri på håndtaket velge om den nye avleggeren skal skrus ned eller fortsette på en rett vei. På denne måten ligner roboten veldig mye på den hvite stokken, brukeren kan føle miljøet med roboten og bruke denne informasjonen til global navigasjon.

Trinn 3: Avstandssensorer

Rekkevidde sensorer
Rekkevidde sensorer

Ultralyd: EyeRobot har 4 ultralydavstandsmålere (MaxSonar EZ1). Ultralydsensorene er plassert i en bue på forsiden av roboten for å gi informasjon om objekter foran og på sidene av roboten. De informerer roboten om objektets rekkevidde og hjelper den med å finne en åpen rute rundt objektet og tilbake til den opprinnelige banen.

IR -avstandsmålere: EyeRobot har også to IR -sensorer (GP2Y0A02YK). IR -avstandsmålere er plassert slik at de vender ut 90 grader til høyre og venstre for å hjelpe roboten i veggen. De kan også varsle roboten om objekter som er for nær sidene som brukeren kan gå inn i.

Trinn 4: Cane Position Sensors

Cane Position Sensors
Cane Position Sensors

Lineær sensor: For at eyeRobot skal matche hastigheten til brukerens, registrerer eyeRobot om brukeren skyver eller senker bevegelsen fremover. Dette oppnås ved å skyve bunnen av stokken langs et spor, et potensiometer registrerer stokkens posisjon. EyeRobot bruker denne inngangen til å regulere robotens hastighet. Ideen om at eyeRobot tilpasser seg brukerens hastighet gjennom en lineær sensor ble faktisk inspirert av familie gressklipper. Foten på stokken er koblet til en styreblokk som beveger seg langs en skinne. Festet til styreblokken er et glidepotensiometer som leser posisjonen til styreblokken og rapporterer det til prosessoren. For å la pinnen rotere i forhold til roboten, løper en stang opp gjennom en treblokk som danner et roterende lager. Dette lageret festes deretter til et hengsel for å la pinnen justere seg til brukerens høyde.

Twist Sensor: Twist -sensoren lar brukeren vri på håndtaket for å snu roboten. Et potensiometer er festet til enden av det ene treskaftet og knotten settes inn og limes inn i den øvre delen av håndtaket. Ledningene løper nedover pluggen og mater vridningsinformasjonen inn i prosessoren.

Trinn 5: Prosessor

Prosessor
Prosessor

Prosessor: Roboten styres av en Zbasic ZX-24a som sitter på et Robodyssey Advanced Motherboard II. Prosessoren ble valgt for sin hastighet, brukervennlighet, rimelige kostnader og 8 analoge innganger. Den er koblet til et stort brødbrett med prototyper for å gjøre det enkelt å bytte. All strøm til roboten kommer fra strømforsyningen på hovedkortet. Zbasic kommuniserer med roomba gjennom lastebrythavnen, og har full kontroll over Roombas sensorer og motorer.

Trinn 6: Kodeoversikt

Kodeoversikt
Kodeoversikt

Hindring av hindringer: For å unngå hindringer bruker eyeRobot en metode der objekter i nærheten av roboten utøver en virtuell kraft på roboten som beveger den bort fra objektet. Med andre ord skyver objekter roboten vekk fra seg selv. I min implementering er den virtuelle kraften som utøves av et objekt omvendt proporsjonal med avstanden i kvadrat, så styrken på skyvet øker når objektet kommer nærmere og skaper en ikke -lineær responskurve: PushForce = ResponseMagnitudeConstant/Distance2Trykkene som kommer fra hver sensor blir lagt sammen; sensorer på venstre side skyver til høyre, og omvendt, for å få en vektor for robotens reise. Hjulhastigheten endres deretter, slik at roboten svinger mot denne vektoren. For å sikre at gjenstander som er døde foran roboten ikke viser et "nei -svar" (fordi kreftene på begge sider balanserer) skyver gjenstander mot dødfronten roboten til den mer åpne siden. Når roboten har passert objektet, bruker den Roombas kodere for å korrigere for endringen og komme tilbake til den opprinnelige vektoren.

Veggfølge: Prinsippet for veggfølge er å opprettholde ønsket avstand og parallell vinkel til en vegg. Problemer oppstår når roboten vendes i forhold til veggen fordi den enkelte sensoren gir ubrukelige avstandsmålinger. Avstandsavlesninger påvirkes like mye av robotenes vinkel mot veggen som av den faktiske avstanden til veggen. For å bestemme vinkelen og dermed eliminere denne variabelen, må roboten ha to referansepunkter som kan sammenlignes for å få robotenes vinkel. Fordi eyeRobot bare har en side som vender mot IR -måler, må den sammenligne avstanden fra avstandsmåleren over tid når roboten beveger seg for å oppnå disse to punktene. Den bestemmer deretter vinkelen ut fra forskjellen mellom de to avlesningene når roboten beveger seg langs veggen. Den bruker deretter denne informasjonen til å korrigere for feil posisjonering. Roboten går i veggen etter modus når den har en vegg ved siden av den i en viss tid og forlater den når det er en hindring i veien, som skyver den ut av banen, eller hvis brukeren bruker vridhåndtaket for å bringe roboten vekk fra veggen.

Trinn 7: Deleliste

Deleliste
Deleliste

Nødvendige deler: 1x) Roomba create1x) Stort ark med akryl2x) Sharp GP2Y0A02YK IR avstandsmåler4x) Maxsonar EZ1 ultralydavstandsmålere1x) ZX-24a mikroprosessor1x) Robodyssey Advanced hovedkort II1x) Slide potensiometer1x) Enkelt sving potensiometer1x) Lineært brødbord1)) Linearless1) Hengsler, plugger, skruer, muttere, braketter og ledninger

Trinn 8: Motivasjon og forbedring

Motivasjon og forbedring
Motivasjon og forbedring

Motivasjon: Denne roboten ble designet for å fylle det åpenbare gapet mellom den dyktige, men dyre førerhunden og den billige, men begrensede hvite stokken. I utviklingen av en salgbar og mer kapabel Robotic White Cane, var Roomba Create det perfekte kjøretøyet for å designe en rask prototype for å se om konseptet fungerte. I tillegg vil premiene gi økonomisk støtte til de betydelige utgiftene ved å bygge en mer kapabel robot.

Forbedring: Mengden jeg lærte å bygge denne roboten var betydelig, og her vil jeg prøve å legge frem det jeg har lært mens jeg går videre for å prøve å bygge en andre generasjon robot: 1) Hindring av hindringer - Jeg har lært mye om hindring i sanntid unngåelse. I prosessen med å bygge denne roboten har jeg gått gjennom to helt forskjellige hindringskoder, som startet med den opprinnelige objektstyrkeideen, deretter gikk jeg over til prinsippet om å finne og søke etter den mest åpne vektoren, og deretter gå tilbake til objektstyrkeideen med nøkkelen erkjennelse av at objektresponsen skal være ikke-lineær. I fremtiden vil jeg rette opp min feil om ikke å gjøre noen online -undersøkelser av tidligere brukte metoder før jeg går i gang med prosjektet mitt, ettersom jeg nå lærer at et raskt Google -søk ville ha gitt mange flotte artikler om emnet. 2) Design av pinnen sensorer - I begynnelsen av dette prosjektet trodde jeg at mitt eneste alternativ for en lineær sensor var å bruke en glidekanne og en slags lineær lager. Jeg innser nå at et mye enklere alternativ ville vært å bare feste toppen av stangen til en joystick, slik at det å skyve pinnen fremover også ville skyve joysticken fremover. I tillegg ville en enkel universalledd tillate vridning av pinnen å bli oversatt til vridningsaksen til mange moderne joysticks. Denne implementeringen ville vært mye enklere enn den jeg bruker for øyeblikket. 3) Frie svinghjul - Selv om dette hadde vært umulig med Roomba, virker det nå åpenbart at en robot med frie svinghjul ville være ideell for denne oppgaven. En robot som ruller passivt vil ikke kreve motorer og et mindre batteri og dermed være lettere. I tillegg krever dette systemet ingen lineær sensor for å oppdage at brukerne skyver, roboten ville ganske enkelt rulle med brukerens hastighet. Roboten kan dreies ved å styre hjulene som en bil, og hvis brukeren må stoppes, kan bremser legges til. For neste generasjon eyeRobot vil jeg absolutt bruke denne svært forskjellige tilnærmingen. 4) To avstandssensorer for veggfølge - Som diskutert tidligere oppstod det problemer når man prøvde å følge med bare én sidevendt sensor, og derfor var det nødvendig å flytte roboten mellom avlesninger for å oppnå forskjellige referansepunkter. To sensorer med en avstand mellom dem ville forenkle veggfølge sterkt. 5) Flere sensorer - Selv om dette ville ha kostet mer penger, var det vanskelig å prøve å kode denne roboten med så få vinduer på verden utenfor prosessoren. Det ville ha gjort navigasjonskoden mye kraftigere med et mer komplett ekkoloddarray (men selvfølgelig koster sensorer penger, noe jeg ikke hadde den gangen).

Trinn 9: Konklusjon

Konklusjon
Konklusjon

Konklusjon: iRobot viste seg å være en ideell plattform for prototyper for eksperimentering med konseptet om en Robotic White Cane. Fra resultatene av denne prototypen er det tydelig at en robot av denne typen faktisk er levedyktig. Jeg håper å utvikle en andre generasjons robot fra leksjonene jeg har lært av å bruke Roomba Create. I fremtidige versjoner av eyeRobot ser jeg for meg en enhet som er i stand til å gjøre mer enn bare å lede en person ned i gangen, snarere en robot som kan legges i blindehender for bruk i hverdagen. Med denne roboten vil brukeren bare snakke destinasjonen sin, og roboten vil lede dem dit uten bevisst innsats fra brukeren. Denne roboten ville være lett og kompakt nok til lett å kunne bæres opp trapper og gjemt i et skap. Denne roboten vil kunne utføre global navigasjon i tillegg til lokal, og kunne veilede brukeren fra start til destinasjon uten brukerens forkunnskaper eller erfaring. Denne evnen vil gå langt utover selv førerhunden, med GPS og mer avanserte sensorer som lar blinde fritt navigere i verden, Nathaniel Barshay, (angitt av Stephen Barshay) (Spesiell takk til Jack Hitt for Roomba Create)

Trinn 10: Konstruksjon og kode

Konstruksjon og kode
Konstruksjon og kode

Noen få fremmedord om konstruksjon: Dekket av laget av et stykke akryl kuttet i en sirkel med en åpning på baksiden for å gi tilgang til elektronikk, og skrues deretter inn i monteringshullene ved siden av lasterommet. Prototypebrettet er skrudd inn i skruehullet i bunnen av brønnen. Zbasic er montert med en L -brakett med de samme skruene som dekket. Hver sonar er skrudd inn i et stykke akryl, som igjen er festet til en L -brakett festet til dekket (L -brakettene er bøyd 10 grader tilbake for å gi et bedre utsyn). Sporet for den lineære sensoren er skrudd rett inn i dekket og glidepotten er montert med L -braketter ved siden av. En mer teknisk beskrivelse av konstruksjonen til den lineære sensoren og kontrollstangen finnes i trinn 4.

Kode: Jeg har lagt ved fullversjonen av robotkoden. I løpet av en time har jeg forsøkt å rydde det opp fra de tre eller fire generasjonene av kode som var i filen, det burde være enkelt nok å følge nå. Hvis du har ZBasic IDE, bør det være enkelt å se. Hvis ikke, bruk notisblokk som starter med filen main.bas og går gjennom de andre.bas -filene.

Anbefalt: