Innehållsförteckning:

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

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

Video: EyeRobot - Robotic White Cane: 10 steg (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

Sammanfattning: Med iRobot Roomba Create har jag prototyperat en enhet som heter eyeRobot. Det kommer att vägleda blinda och synskadade användare genom röriga och befolkade miljöer genom att använda Roomba som bas för att gifta sig med enkelheten i den traditionella vita käppen med instinkterna från en seende hund. Användaren indikerar sin önskade rörelse genom att intuitivt trycka på och vrida handtaget. Roboten tar denna information och hittar en tydlig väg ner i en korridor eller över ett rum, med hjälp av ekolod för att styra användaren i lämplig riktning runt statiska och dynamiska hinder. Användaren följer sedan bakom roboten när den leder användaren i önskad riktning av den märkbara kraft som känns genom handtaget. Detta robotalternativ kräver lite träning: tryck för att gå, dra för att stoppa, vrid för att svänga. Framsynen som avståndsmätarna ger liknar en synande ögonhund och är en avsevärd fördel jämfört med den ständiga prövningen och felet som markerar användningen av den vita käppen. Ändå erbjuder eyeRobot fortfarande ett mycket billigare alternativ än ledarhundar, som kostar över $ 12 000 och är användbara i bara 5 år, medan prototypen byggdes för långt under $ 400. Det är också en relativt enkel maskin som kräver några billiga sensorer, olika potentiometrar, lite hårdvara och naturligtvis en Roomba Create.

Steg 1: Videodemonstration

Videodemonstration
Videodemonstration

Högkvalitativ version

Steg 2: Översikt över drift

Översikt över drift
Översikt över drift

Användarkontroll: Användningen av eyeRobot är utformad för att vara så intuitiv som möjligt för att kraftigt minska eller eliminera träning. För att starta rörelsen måste användaren helt enkelt börja gå framåt, en linjär sensor vid basen av pinnen tar upp denna rörelse och börjar flytta roboten framåt. Med hjälp av denna linjära sensor kan roboten sedan matcha sin hastighet till önskad hastighet för användaren. eyeRobot kommer att gå så snabbt som användaren vill gå. För att indikera att en sväng önskas måste användaren helt enkelt vrida handtaget, och om en sväng är möjlig svarar roboten därefter.

Robotnavigering: När du reser i öppet utrymme kommer eyeRobot att försöka hålla en rak väg, upptäcka eventuella hinder som kan hindra användaren och guida användaren runt objektet och tillbaka till den ursprungliga vägen. I praktiken kan användaren naturligtvis följa bakom roboten med lite medvetet tänkande. För att navigera i en korridor bör användaren försöka trycka in roboten i en av väggarna på vardera sidan, när roboten anskaffar en vägg börjar den följa den och guidar användaren i korridoren. När en korsning nås kommer användaren att känna att roboten börjar svänga och genom att vrida handtaget välja om den nya avläggaren ska stängas av eller fortsätta på en rak väg. På så sätt liknar roboten mycket den vita käppen, användaren kan känna miljön med roboten och använda denna information för global navigering.

Steg 3: Räckviddssensorer

Räckviddssensorer
Räckviddssensorer

Ultraljud: EyeRobot har 4 ultraljudsmätare (MaxSonar EZ1). Ultraljudssensorerna är placerade i en båge på framsidan av roboten för att ge information om föremål framför och på sidorna av roboten. De informerar roboten om objektets räckvidd och hjälper den att hitta en öppen rutt runt objektet och tillbaka till sin ursprungliga väg.

IR -avståndsmätare: eyeRobot har också två IR -sensorer (GP2Y0A02YK). IR -avståndsmätarna är placerade för att vända ut 90 grader åt höger och vänster för att hjälpa roboten i väggen efter. De kan också varna roboten om föremål för nära dess sidor som användaren kan gå in i.

Steg 4: Cane Position Sensors

Cane Position Sensors
Cane Position Sensors

Linjär sensor: För att eyeRobot ska matcha dess hastighet till användarens, känner eyeRobot om användaren trycker eller fördröjer sin rörelse framåt. Detta uppnås genom att skjuta käppens bas längs ett spår, eftersom en potentiometer känner av käppens position. EyeRobot använder denna ingång för att reglera robotens hastighet. Idén med att eyeRobot skulle anpassa sig till användarens hastighet genom en linjär sensor inspirerades faktiskt av familjens gräsklippare. Rörets bas är ansluten till ett styrblock som rör sig längs en skena. Fäst på styrblocket är en glidpotentiometer som läser styrblockets position och rapporterar det till processorn. För att låta pinnen rotera i förhållande till roboten är det en stav som löper upp genom ett träblock och bildar ett roterande lager. Detta lager fästs sedan på ett gångjärn för att låta stickan anpassa sig till användarens höjd.

Twist Sensor: Twist -sensorn låter användaren vrida på handtaget för att vrida roboten. En potentiometer är fäst vid änden av en träaxel och vredet sätts in och limmas i den övre delen av handtaget. Trådarna går ner för pluggen och matar in vridningsinformationen i processorn.

Steg 5: Processor

Processor
Processor

Processor: Roboten styrs av en Zbasic ZX-24a som sitter på ett Robodyssey Advanced Motherboard II. Processorn valdes för sin hastighet, användarvänlighet, överkomliga kostnad och 8 analoga ingångar. Den är ansluten till en stor prototypbrödbräda för att möjliggöra snabba och enkla ändringar. All kraft till roboten kommer från strömförsörjningen på moderkortet. Zbasic kommunicerar med roomba genom lastutrymmet och har full kontroll över Roombas sensorer och motorer.

Steg 6: Kodöversikt

Kodöversikt
Kodöversikt

Undvikande av hinder: För hinderundvikande använder eyeRobot en metod där föremål nära roboten utövar en virtuell kraft på roboten som flyttar den bort från föremålet. Med andra ord, föremål skjuter bort roboten från sig själva. I min implementering är den virtuella kraften som utövas av ett objekt omvänt proportionell mot avstånd i kvadrat, så tryckets styrka ökar när objektet kommer närmare och skapar en olinjär svarskurva: PushForce = ResponseMagnitudeConstant/Distance2Pusharna som kommer från varje sensor läggs ihop; sensorer på vänster sida trycker på höger och vice versa för att få en vektor för robotens resa. Hjulhastigheter ändras sedan så att roboten vänder sig mot denna vektor. För att säkerställa att föremål som är döda framför roboten inte uppvisar ett "inget svar" (eftersom krafterna på båda sidor balanserar) skjuter föremål mot dödfronten roboten till den mer öppna sidan. När roboten har passerat objektet använder den Roombas kodare för att korrigera ändringen och komma tillbaka till den ursprungliga vektorn.

Väggföljning: Principen för väggföljning är att upprätthålla ett önskat avstånd och en parallell vinkel mot en vägg. Problem uppstår när roboten vrids i förhållande till väggen eftersom den enda sensorn ger värdelösa avläsningar. Avståndsmätningar påverkas lika mycket av robotarnas vinkel mot väggen som av det faktiska avståndet till väggen. För att bestämma vinkeln och därmed eliminera denna variabel måste roboten ha två referenspunkter som kan jämföras för att få robotens vinkel. Eftersom eyeRobot bara har en sida som vetter mot IR -avståndsmätaren måste den för att uppnå dessa två punkter jämföra avståndet från avståndsmätaren över tiden när roboten rör sig. Den bestämmer sedan dess vinkel utifrån skillnaden mellan de två avläsningarna när roboten rör sig längs väggen. Den använder sedan denna information för att korrigera för felaktig positionering. Roboten går in i väggföljningsläge närhelst den har en vägg bredvid den under en viss tid och lämnar den när det finns ett hinder i vägen, som driver den ur sin kurs, eller om användaren använder vridhandtaget för att ta med robot bort från väggen.

Steg 7: Dellista

Reservdelar
Reservdelar

Delar som krävs: 1x) Roomba create1x) Stort ark akryl2x) Sharp GP2Y0A02YK IR-avståndsmätare4x) Maxsonar EZ1 ultraljudsmätare1x) ZX-24a mikroprocessor1x) Robodyssey Advanced moderkort II1x) Slide potentiometer1x) Enstaka potentiometer1x) Linjärt bredd1x) Linjärt bredd1x) Linjärt lagerbräde1)) Linjärt lagerbord)) Gångjärn, pluggar, skruvar, muttrar, fästen och trådar

Steg 8: Motivation och förbättring

Motivation och förbättring
Motivation och förbättring

Motivation: Denna robot var utformad för att fylla det uppenbara gapet mellan den kapabla men dyra ledarhunden och den billiga men begränsade vita käppen. I utvecklingen av en marknadsförbar och mer kapabel Robotic White Cane var Roomba Create det perfekta fordonet för att designa en snabb prototyp för att se om konceptet fungerade. Dessutom skulle priserna ge ekonomiskt stöd för de betydande kostnaderna för att bygga en mer kapabel robot.

Förbättring: Mängden jag lärde mig att bygga den här roboten var stor och här kommer jag att försöka redogöra för vad jag har lärt mig när jag går vidare för att försöka bygga en andra generationens robot: 1) Hinder Undvikande - Jag har lärt mig mycket om hinder i realtid undvikande. I processen med att bygga denna robot har jag gått igenom två helt olika hinderundvikandekoder, som börjar med den ursprungliga objektkraftsidén, sedan går jag till principen att hitta och söka den mest öppna vektorn och sedan gå tillbaka till objektkraftidén med nyckel insikten att objektsvaret ska vara icke-linjärt. I framtiden kommer jag att rätta till mitt misstag att inte göra någon onlineforskning av tidigare använda metoder innan jag påbörjar mitt projekt, eftersom jag nu lär mig att en snabb Google -sökning skulle ha gett många bra artiklar om ämnet. 2) Design av pinnen sensorer - I början av detta projekt trodde jag att mitt enda alternativ för en linjär sensor var att använda en glidgryta och något slags linjärt lager. Jag inser nu att ett mycket enklare alternativ hade varit att helt enkelt fästa stångens ovansida till en joystick, så att tryckning av pinnen framåt också skulle driva joysticken framåt. Dessutom skulle en enkel universalfog göra det möjligt att översätta stickans vridning till vridaxeln för många moderna joysticks. Denna implementering hade varit mycket enklare än den jag använder för närvarande. 3) Fritt svängande hjul - Även om detta hade varit omöjligt med Roomba, verkar det nu självklart att en robot med fritt vridande hjul skulle vara idealisk för denna uppgift. En robot som rullar passivt kräver inga motorer och ett mindre batteri och blir därmed lättare. Dessutom kräver detta system ingen linjär sensor för att upptäcka användarnas tryck, roboten skulle helt enkelt rulla med användarnas hastighet. Roboten kan vridas genom att styra hjulen som en bil, och om användaren måste stoppas kan bromsar läggas till. För nästa generations eyeRobot kommer jag säkert att använda detta mycket annorlunda tillvägagångssätt. 4) Två åtskilda sensorer för väggföljning - Som diskuterats uppstod tidigare problem när man försökte väggfölja med bara en sida som vetter mot sensorn, så det var nödvändigt att flytta roboten mellan avläsningar för att uppnå olika referenspunkter. Två sensorer med ett avstånd mellan dem skulle förenkla väggföljden kraftigt. 5) Fler sensorer - Även om detta skulle ha kostat mer pengar var det svårt att försöka koda denna robot med så få fönster på världen utanför processorn. Det skulle ha gjort navigationskoden mycket kraftfullare med ett mer komplett ekolod (men naturligtvis kostar sensorer pengar, vilket jag inte hade då).

Steg 9: Slutsats

Slutsats
Slutsats

Slutsats: iRobot visade sig vara en idealisk prototypplattform för att experimentera med konceptet Robotic White Cane. Av resultaten från denna prototyp är det uppenbart att en robot av denna typ verkligen är livskraftig. Jag hoppas kunna utveckla en andra generationens robot från de lärdomar jag har dragit av att använda Roomba Create. I framtida versioner av eyeRobot föreställer jag mig en enhet som kan göra mer än att bara vägleda en person i en korridor, snarare en robot som kan läggas i blindas händer för användning i vardagen. Med denna robot skulle användaren helt enkelt tala sin destination och roboten skulle vägleda dem dit utan medvetet ansträngning från användaren. Denna robot skulle vara lätt och kompakt nog för att enkelt bäras uppför trappor och gömd i en garderob. Denna robot skulle kunna utföra global navigering förutom lokal, och kunna vägleda användaren från start till destination utan användarnas förkunskaper eller erfarenhet. Denna förmåga skulle gå långt bortom till och med ledarhunden, med GPS och mer avancerade sensorer som låter blinda fritt navigera i världen, Nathaniel Barshay, (Inmatad av Stephen Barshay) (Särskilt tack till Jack Hitt för Roomba Create)

Steg 10: Konstruktion och kod

Konstruktion och kod
Konstruktion och kod

Några främmande ord om konstruktionen: Däcket är tillverkat av en bit akryl i en cirkel med en öppning på baksidan för att ge tillgång till elektronik och skruvas sedan in i monteringshålen bredvid lastrummet. Prototypskivan skruvas fast i skruvhålet längst ner i facket. Zbasic är monterad med ett L -fäste med samma skruvar som däcket. Varje ekolod skruvas fast i en bit akryl, som i sin tur fästs på ett L -fäste som fästs på däcket (L -fästena är böjda 10 grader bakåt för att ge en bättre bild). Spåret för den linjära sensorn skruvas in i däcket och glidgrytan är monterad med L -fästen bredvid. En mer teknisk beskrivning av konstruktionen av den linjära sensorn och styrstången finns i steg 4.

Kod: Jag har bifogat den fullständiga versionen av robotkoden. Under en timme har jag försökt städa upp det från de tre eller fyra generationer av kod som fanns i filen, det borde vara lätt nog att följa nu. Om du har ZBasic IDE ska det vara lätt att se, om inte, använd anteckningsblock som börjar med filen main.bas och går igenom de andra.bas -filerna.

Rekommenderad: