Inhoudsopgave:

EyeRobot - de Robotic White Cane - Ajarnpa
EyeRobot - de Robotic White Cane - Ajarnpa

Video: EyeRobot - de Robotic White Cane - Ajarnpa

Video: EyeRobot - de Robotic White Cane - Ajarnpa
Video: Top 10 AI Robots In 2023 | Advanced AI Robots in the World | Artificial Intelligence | Simplilearn 2024, Juli-
Anonim
EyeRobot - de robotachtige witte wandelstok
EyeRobot - de robotachtige witte wandelstok

Samenvatting: Met behulp van de iRobot Roomba Create heb ik een prototype gemaakt van een apparaat met de naam eyeRobot. Het zal blinde en slechtziende gebruikers door rommelige en bevolkte omgevingen leiden door de Roomba als basis te gebruiken om de eenvoud van de traditionele witte wandelstok te combineren met de instincten van een blindengeleidehond. De gebruiker geeft zijn/haar gewenste beweging aan door intuïtief op de hendel te duwen en te draaien. De robot neemt deze informatie en vindt een duidelijk pad door een gang of door een kamer, waarbij hij sonar gebruikt om de gebruiker in een geschikte richting rond statische en dynamische obstakels te sturen. De gebruiker volgt dan achter de robot terwijl deze de gebruiker in de gewenste richting leidt door de voelbare kracht die door het handvat wordt gevoeld. Deze robotoptie vereist weinig training: duwen om te gaan, trekken om te stoppen, draaien om te draaien. De vooruitziende blik die de afstandsmeters bieden, is vergelijkbaar met die van een blindengeleidehond en is een aanzienlijk voordeel ten opzichte van het constante vallen en opstaan dat het gebruik van de witte stok markeert. Toch biedt eyeRobot nog steeds een veel goedkoper alternatief dan blindengeleidehonden, die meer dan $12.000 kosten en slechts 5 jaar bruikbaar zijn, terwijl het prototype werd gebouwd voor ver onder de $400. Het is ook een relatief eenvoudige machine, waarvoor een paar goedkope sensoren, verschillende potentiometers, wat hardware en natuurlijk een Roomba Create nodig zijn.

Stap 1: Videodemonstratie

Videodemonstratie
Videodemonstratie

Hoge kwaliteit versie

Stap 2: Bedieningsoverzicht

Bedieningsoverzicht
Bedieningsoverzicht

Gebruikerscontrole: de bediening van eyeRobot is ontworpen om zo intuïtief mogelijk te zijn om training aanzienlijk te verminderen of te elimineren. Om beweging te beginnen, hoeft de gebruiker alleen maar vooruit te lopen, een lineaire sensor aan de basis van de stick zal deze beweging oppikken en de robot naar voren bewegen. Met behulp van deze lineaire sensor kan de robot zijn snelheid vervolgens afstemmen op de gewenste snelheid van de gebruiker. eyeRobot zal zo snel bewegen als de gebruiker wil. Om aan te geven dat een bocht gewenst is, hoeft de gebruiker alleen maar aan de hendel te draaien, en als een bocht mogelijk is, zal de robot dienovereenkomstig reageren.

Robotnavigatie: wanneer in open ruimte wordt gereisd, zal eyeRobot proberen een recht pad aan te houden, obstakels te detecteren die de gebruiker kunnen hinderen en de gebruiker rond dat object en terug naar het oorspronkelijke pad te leiden. In de praktijk kan de gebruiker de robot natuurlijk volgen zonder er bewust bij na te denken. Om door een gang te navigeren, moet de gebruiker proberen de robot aan weerszijden tegen een van de muren te duwen. de gebruiker in de gang. Wanneer een kruising is bereikt, voelt de gebruiker dat de robot begint te draaien en kan hij door aan de hendel te draaien kiezen of hij de nieuwe uitloper afwijst of op een recht pad verdergaat. Op deze manier lijkt de robot erg op de witte wandelstok, de gebruiker kan de omgeving met de robot voelen en deze informatie gebruiken voor wereldwijde navigatie.

Stap 3: Bereiksensoren

Bereiksensoren
Bereiksensoren

Ultrasoon: de eyeRobot heeft 4 ultrasone afstandsmeters (MaxSonar EZ1). De ultrasone sensoren zijn in een boog aan de voorkant van de robot geplaatst om informatie te geven over objecten voor en aan de zijkanten van de robot. Ze informeren de robot over het bereik van het object en helpen hem een open route rond dat object te vinden en terug op zijn oorspronkelijke pad.

IR-afstandsmeters: de eyeRobot heeft ook twee IR-sensoren (GP2Y0A02YK). De IR-afstandsmeters zijn zo geplaatst dat ze 90 graden naar rechts en links wijzen om de robot te helpen bij het volgen van de muur. Ze kunnen de robot ook waarschuwen voor objecten die zich te dicht bij zijn zijkanten bevinden en waar de gebruiker tegenaan kan lopen.

Stap 4: Cane-positiesensoren

Stokpositiesensoren
Stokpositiesensoren

Lineaire sensor: Om ervoor te zorgen dat de eyeRobot zijn snelheid aan die van de gebruiker aanpast, voelt de eyeRobot of de gebruiker duwt of de voorwaartse beweging vertraagt. Dit wordt bereikt door de voet van de stok langs een baan te schuiven, terwijl een potentiometer de positie van de stok meet. De eyeRobot gebruikt deze input om de snelheid van de robot te regelen. Het idee dat de eyeRobot zich aanpast aan de snelheid van de gebruiker via een lineaire sensor, is eigenlijk geïnspireerd op de familiegrasmaaier. De basis van de stok is verbonden met een geleidingsblok dat langs een rail beweegt. Aan het geleideblok is een schuifpotentiometer bevestigd die de positie van het geleideblok afleest en aan de processor rapporteert. Om de stok te laten roteren ten opzichte van de robot loopt er een staaf omhoog door een blok hout, die een draaiend lager vormt. Dit lager wordt vervolgens bevestigd aan een scharnier zodat de stick zich kan aanpassen aan de lengte van de gebruiker.

Draaisensor: met de draaisensor kan de gebruiker aan het handvat draaien om de robot te draaien. Een potentiometer is bevestigd aan het uiteinde van een houten schacht en de knop wordt in het bovenste deel van het handvat gestoken en gelijmd. De draden lopen langs de plug en voeren de twist-informatie in de processor.

Stap 5: Verwerker

Verwerker
Verwerker

Processor: De robot wordt bestuurd door een Zbasic ZX-24a die op een Robodyssey Advanced Motherboard II zit. De processor is gekozen vanwege zijn snelheid, gebruiksgemak, betaalbare kosten en 8 analoge ingangen. Het is verbonden met een groot prototype breadboard om snelle en gemakkelijke veranderingen mogelijk te maken. Alle stroom voor de robot komt van de voeding op het moederbord. De Zbasic communiceert met de roomba via de laadruimte en heeft volledige controle over de sensoren en motoren van de Roomba.

Stap 6: Codeoverzicht

Codeoverzicht
Codeoverzicht

Obstakel vermijden: voor het vermijden van obstakels gebruikt de eyeRobot een methode waarbij objecten in de buurt van de robot een virtuele kracht uitoefenen op de robot door deze van het object af te bewegen. Met andere woorden, objecten duwen de robot van zichzelf weg. In mijn implementatie is de virtuele kracht die door een object wordt uitgeoefend omgekeerd evenredig met de afstand in het kwadraat, dus de kracht van de duw neemt toe naarmate het object dichterbij komt en creëert een niet-lineaire responscurve: PushForce = ResponseMagnitudeConstant/Distance2De duwtjes die van elke sensor komen, worden bij elkaar opgeteld; sensoren aan de linkerkant duwen naar rechts en vice versa om een vector te krijgen voor de reis van de robot. De wielsnelheden worden dan gewijzigd, zodat de robot naar deze vector draait. Om ervoor te zorgen dat objecten die dood zijn voor de robot geen "geen reactie" vertonen (omdat de krachten aan beide zijden in evenwicht zijn), duwen objecten voor de dode voorkant de robot naar de meer open kant. Wanneer de robot het object is gepasseerd, gebruikt hij de encoders van Roomba om de verandering te corrigeren en terug te keren naar de oorspronkelijke vector.

Wandvolging: Het principe van wandvolging is om een gewenste afstand en parallelle hoek met een muur te behouden. Er ontstaan problemen wanneer de robot ten opzichte van de muur wordt gedraaid, omdat de enkele sensor nutteloze afstandsmetingen oplevert. De afstandsmetingen worden zowel beïnvloed door de hoek van de robot ten opzichte van de muur als door de werkelijke afstand tot de muur. Om de hoek te bepalen en dus deze variabele te elimineren, moet de robot twee referentiepunten hebben die kunnen worden vergeleken om de hoek van de robot te krijgen. Omdat de eyeRobot slechts één zijdelingse IR-afstandsmeter heeft, moet hij, om deze twee punten te bereiken, de afstand tot de afstandsmeter in de loop van de tijd vergelijken terwijl de robot beweegt. Het bepaalt vervolgens zijn hoek uit het verschil tussen de twee metingen terwijl de robot langs de muur beweegt. Vervolgens gebruikt het deze informatie om onjuiste positionering te corrigeren. De robot gaat in de muurvolgmodus wanneer hij gedurende een bepaalde tijd een muur naast zich heeft en verlaat deze wanneer er een obstakel op zijn pad is dat hem van zijn koers duwt, of als de gebruiker de draaihendel gebruikt om de robot te verplaatsen. robot weg van de muur.

Stap 7: Onderdelenlijst

Onderdelen lijst
Onderdelen lijst

Benodigde onderdelen:1x) Roomba create1x) Grote plaat acryl2x) Sharp GP2Y0A02YK IR-afstandsmeter4x) Maxsonar EZ1 ultrasone afstandsmeters1x) ZX-24a microprocessor1x) Robodyssey Advanced moederbord II1x) Schuifpotentiometer1x) Single turn potentiometer1x) Lineair breadsort1x) Soldeer) Assortimentsbord1x) Scharnieren, pluggen, schroeven, moeren, beugels en draden

Stap 8: Motivatie en verbetering

Motivatie en verbetering
Motivatie en verbetering

Motivatie: Deze robot is ontworpen om het voor de hand liggende gat te vullen tussen de capabele maar dure geleidehond en de goedkope maar beperkte witte wandelstok. Bij de ontwikkeling van een verkoopbare en meer capabele Robotic White Cane, was de Roomba Create het perfecte voertuig voor het ontwerpen van een snel prototype om te zien of het concept werkte. Bovendien zouden de prijzen een economische ondersteuning bieden voor de aanzienlijke kosten van het bouwen van een meer capabele robot.

Verbetering: het bedrag dat ik heb geleerd bij het bouwen van deze robot was aanzienlijk en hier zal ik proberen uit te leggen wat ik heb geleerd terwijl ik verder ga met het bouwen van een robot van de tweede generatie: 1) Obstakel vermijden - ik heb veel geleerd over realtime obstakels vermijden. Tijdens het bouwen van deze robot heb ik twee totaal verschillende codes voor het vermijden van obstakels doorlopen, te beginnen met het oorspronkelijke idee van objectkracht, vervolgens naar het principe van het vinden en zoeken van de meest open vector, en dan teruggaand naar het idee van objectkracht met het belangrijkste besef dat de objectrespons niet-lineair moet zijn. In de toekomst zal ik mijn fout corrigeren door geen online onderzoek te doen naar eerder gebruikte methoden voordat ik aan mijn project begon, aangezien ik nu leer dat een snelle Google-zoekopdracht talloze geweldige artikelen over dit onderwerp zou hebben opgeleverd.2) Ontwerp van de stick sensoren - Bij het begin van dit project dacht ik dat mijn enige optie voor een lineaire sensor het gebruik van een schuifpot en een soort lineair lager was. Ik realiseer me nu dat een veel eenvoudigere optie zou zijn geweest om simpelweg de bovenkant van de stang aan een joystick te bevestigen, zodat het naar voren duwen van de stick ook de joystick naar voren zou duwen. Bovendien zou een eenvoudige kruiskoppeling het mogelijk maken om de draaiing van de stick te vertalen in de draaias van veel moderne joysticks. Deze implementatie zou veel eenvoudiger zijn geweest dan degene die ik momenteel gebruik.3) Vrij draaiende wielen - Hoewel dit onmogelijk zou zijn geweest met de Roomba, lijkt het nu duidelijk dat een robot met vrij draaiende wielen ideaal zou zijn voor deze taak. Een robot die passief rolt, zou geen motoren en een kleinere batterij nodig hebben en dus lichter zijn. Bovendien heeft dit systeem geen lineaire sensor nodig om de duw van de gebruiker te detecteren, de robot zou gewoon met de snelheid van de gebruiker rollen. De robot kon worden gedraaid door de wielen te besturen als een auto, en als de gebruiker moest worden gestopt, konden remmen worden toegevoegd. Voor de volgende generatie eyeRobot zal ik zeker deze heel andere benadering gebruiken.4) Twee op afstand van elkaar geplaatste sensoren voor muurvolging - Zoals eerder besproken, deden zich problemen voor bij het proberen om de muur te volgen met slechts één zijdelingse sensor, dus het was nodig om de robot tussen metingen te verplaatsen verschillende referentiepunten te bereiken. Twee sensoren met een onderlinge afstand zouden het volgen van de muur aanzienlijk vereenvoudigen.5) Meer sensoren - Hoewel dit meer geld zou hebben gekost, was het moeilijk om deze robot te coderen met zo weinig vensters op de wereld buiten de processor. Het zou de navigatiecode veel krachtiger hebben gemaakt met een completere sonararray (maar sensoren kosten natuurlijk geld, wat ik op dat moment niet had).

Stap 9: Conclusie

Conclusie
Conclusie

Conclusie: De iRobot bleek een ideaal prototypeplatform te zijn om te experimenteren met het concept van een Robotic White Cane. Uit de resultaten van dit prototype blijkt dat een robot van dit type inderdaad levensvatbaar is. Ik hoop een tweede generatie robot te ontwikkelen uit de lessen die ik heb geleerd door het gebruik van de Roomba Create. In toekomstige versies van eyeRobot stel ik me een apparaat voor dat meer kan dan alleen een persoon door een gang leiden, eerder een robot die in de handen van blinden kan worden geplaatst voor gebruik in het dagelijks leven. Met deze robot zou de gebruiker eenvoudig zijn bestemming uitspreken en de robot zou hem daarheen leiden zonder bewuste inspanning van de gebruiker. Deze robot zou licht en compact genoeg zijn om gemakkelijk de trap op te worden gedragen en in een kast te worden opgeborgen. Deze robot zou naast lokaal ook globale navigatie kunnen doen, en de gebruiker van start naar bestemming kunnen begeleiden zonder dat de gebruiker voorkennis of ervaring heeft. Deze mogelijkheid zou veel verder gaan dan zelfs de geleidehond, met GPS en meer geavanceerde sensoren waardoor blinden vrij door de wereld kunnen navigeren, Nathaniel Barshay, (ingevoerd door Stephen Barshay) (Speciale dank aan Jack Hitt voor de Roomba Create)

Stap 10: constructie en code

Constructie en code
Constructie en code

Een paar vreemde woorden over de constructie: het dek is gemaakt van een stuk acryl dat in een cirkel is gesneden met een opening aan de achterkant om toegang tot de elektronica mogelijk te maken, en wordt vervolgens in de montagegaten naast het laadruim geschroefd. Het prototypebord wordt in het schroefgat aan de onderkant van de baai geschroefd. De Zbasic wordt gemonteerd met een L-beugel met dezelfde schroeven als het dek. Elke sonar wordt in een stuk acryl geschroefd, dat op zijn beurt is bevestigd aan een L-beugel die aan het dek is bevestigd (de L-beugels zijn 10 graden naar achteren gebogen voor een beter zicht). De rail voor de lineaire sensor wordt recht in het dek geschroefd en de schuifpot wordt gemonteerd met L-beugels ernaast. Een meer technische beschrijving van de constructie van de lineaire sensor en regelstaaf is te vinden in stap 4.

Code: Ik heb de volledige versie van de robots-code bijgevoegd. In de loop van een uur heb ik geprobeerd het op te schonen van de drie of vier generaties code die in het bestand zaten, het zou nu gemakkelijk genoeg moeten zijn om te volgen. Als je de ZBasic IDE hebt, zou het gemakkelijk te bekijken moeten zijn, zo niet, gebruik dan kladblok beginnend met het bestand main.bas en ga door de andere.bas-bestanden.

Aanbevolen: