Inhaltsverzeichnis:

EyeRobot - der weiße Roboterstock - Gunook
EyeRobot - der weiße Roboterstock - Gunook

Video: EyeRobot - der weiße Roboterstock - Gunook

Video: EyeRobot - der weiße Roboterstock - Gunook
Video: Asking Sophia, Hanson Robotic’s human-like AI robot, to show her range of emotions. 2024, November
Anonim
EyeRobot - der weiße Roboterstock
EyeRobot - der weiße Roboterstock

Zusammenfassung:Mit dem iRobot Roomba Create habe ich ein Gerät namens eyeRobot als Prototyp erstellt. Es wird blinde und sehbehinderte Benutzer durch überladene und bevölkerte Umgebungen führen, indem Roomba als Basis verwendet wird, um die Einfachheit des traditionellen weißen Gehstocks mit den Instinkten eines Blindenhundes zu verbinden. Der Benutzer gibt seine gewünschte Bewegung durch intuitives Aufdrücken und Drehen des Griffs an. Der Roboter nimmt diese Informationen und findet einen klaren Weg durch einen Flur oder durch einen Raum und lenkt den Benutzer mithilfe von Sonar in eine geeignete Richtung um statische und dynamische Hindernisse herum. Der Benutzer folgt dann dem Roboter, der den Benutzer durch die spürbare Kraft durch den Griff in die gewünschte Richtung führt. Diese Roboteroption erfordert wenig Training: Push-to-Go, Pull-to-Stop, Twist-to-Turn. Die Weitsicht, die die Entfernungsmesser bieten, ähnelt einem Blindenhund und ist ein erheblicher Vorteil gegenüber dem ständigen Ausprobieren, das die Verwendung des weißen Stocks kennzeichnet. Doch eyeRobot bietet immer noch eine viel billigere Alternative als Blindenführhunde, die über 12.000 US-Dollar kosten und nur 5 Jahre lang nützlich sind, während der Prototyp für weit unter 400 US-Dollar gebaut wurde. Es ist auch eine relativ einfache Maschine, die ein paar billige Sensoren, verschiedene Potentiometer, etwas Hardware und natürlich einen Roomba Create erfordert.

Schritt 1: Videodemonstration

Videodemonstration
Videodemonstration

Hochwertige Version

Schritt 2: Betriebsübersicht

Betriebsübersicht
Betriebsübersicht

Benutzersteuerung: Die Bedienung von eyeRobot ist so intuitiv wie möglich gestaltet, um Schulungen stark zu reduzieren oder zu eliminieren. Um eine Bewegung zu beginnen, muss der Benutzer lediglich mit dem Vorwärtsgehen beginnen, ein linearer Sensor an der Basis des Sticks nimmt diese Bewegung auf und beginnt, den Roboter vorwärts zu bewegen. Mit diesem Linearsensor kann der Roboter dann seine Geschwindigkeit an die gewünschte Geschwindigkeit des Benutzers anpassen. eyeRobot bewegt sich so schnell, wie der Benutzer möchte. Um anzuzeigen, dass eine Wendung gewünscht wird, muss der Benutzer lediglich den Griff drehen, und wenn eine Wendung möglich ist, reagiert der Roboter entsprechend.

Roboternavigation: Beim Reisen im offenen Raum versucht eyeRobot, einen geraden Weg zu halten, jedes Hindernis zu erkennen, das den Benutzer behindern könnte, und führt den Benutzer um dieses Objekt herum und zurück auf den ursprünglichen Weg. In der Praxis kann der Benutzer dem Roboter natürlich mit wenig bewusstem Nachdenken folgen. Um einen Flur zu navigieren, sollte der Benutzer versuchen, den Roboter in eine der Wände auf beiden Seiten zu schieben der Benutzer den Flur hinunter. Wenn eine Kreuzung erreicht wird, spürt der Benutzer, wie der Roboter beginnt, sich zu drehen, und kann durch Drehen des Griffs wählen, ob er den neuen Abzweig abbiegt oder auf einem geraden Weg weiterfährt. Auf diese Weise ist der Roboter dem weißen Stock sehr ähnlich, der Benutzer kann mit dem Roboter die Umgebung erfühlen und diese Informationen für die globale Navigation verwenden.

Schritt 3: Reichweitensensoren

Reichweitensensoren
Reichweitensensoren

Ultraschall: Der eyeRobot trägt 4 Ultraschall-Entfernungsmesser (MaxSonar EZ1). Die Ultraschallsensoren sind bogenförmig an der Vorderseite des Roboters positioniert, um Informationen über Objekte vor und an den Seiten des Roboters zu liefern. Sie informieren den Roboter über die Reichweite des Objekts und helfen ihm, eine offene Route um dieses Objekt herum und zurück auf seine ursprüngliche Bahn zu finden.

IR-Entfernungsmesser: Der eyeRobot trägt auch zwei IR-Sensoren (GP2Y0A02YK). Die IR-Entfernungsmesser sind so positioniert, dass sie 90 Grad nach rechts und links zeigen, um den Roboter bei der Wandverfolgung zu unterstützen. Sie können den Roboter auch vor Objekten warnen, die sich zu nahe an seinen Seiten befinden, in die der Benutzer treten könnte.

Schritt 4: Stockpositionssensoren

Stockpositionssensoren
Stockpositionssensoren

Linearsensor: Damit der eyeRobot seine Geschwindigkeit an die des Benutzers anpasst, erkennt der eyeRobot, ob der Benutzer seine Vorwärtsbewegung drückt oder verzögert. Dies wird erreicht, indem die Basis des Stocks entlang einer Schiene verschoben wird, da ein Potentiometer die Position des Stocks erfasst. Der eyeRobot verwendet diesen Eingang, um die Geschwindigkeit des Roboters zu regulieren. Die Idee, dass sich der eyeRobot über einen Linearsensor an die Geschwindigkeit des Benutzers anpasst, wurde von den Rasenmähern der Familie inspiriert. Die Basis des Stocks ist mit einem Führungsblock verbunden, der sich entlang einer Schiene bewegt. Am Führungsblock ist ein Schiebepotentiometer angebracht, das die Position des Führungsblocks liest und an den Prozessor meldet. Damit sich der Stock relativ zum Roboter drehen kann, läuft eine Stange durch einen Holzblock und bildet ein rotierendes Lager. Dieses Lager wird dann an einem Scharnier befestigt, damit sich der Stock an die Körpergröße des Benutzers anpassen kann.

Drehsensor: Der Drehsensor ermöglicht es dem Benutzer, den Griff zu drehen, um den Roboter zu drehen. Am Ende einer Holzwelle wird ein Potentiometer angebracht und der Knauf wird in das Griffoberteil eingesteckt und verklebt. Die Drähte laufen den Dübel hinunter und leiten die Verdrillungsinformationen in den Prozessor ein.

Schritt 5: Prozessor

Prozessor
Prozessor

Prozessor: Der Roboter wird von einem Zbasic ZX-24a gesteuert, der auf einem Robodyssey Advanced Motherboard II sitzt. Der Prozessor wurde aufgrund seiner Geschwindigkeit, Benutzerfreundlichkeit, erschwinglichen Kosten und 8 analogen Eingängen ausgewählt. Es ist mit einem großen Prototyping-Steckbrett verbunden, um schnelle und einfache Änderungen zu ermöglichen. Der gesamte Strom für den Roboter kommt aus dem Netzteil auf dem Motherboard. Der Zbasic kommuniziert mit dem Roomba über den Laderaumanschluss und hat die volle Kontrolle über die Sensoren und Motoren des Roomba.

Schritt 6: Codeübersicht

Codeübersicht
Codeübersicht

Hindernisvermeidung: Zur Hindernisvermeidung verwendet der eyeRobot eine Methode, bei der Objekte in der Nähe des Roboters eine virtuelle Kraft auf den Roboter ausüben, um ihn vom Objekt weg zu bewegen. Mit anderen Worten, Objekte stoßen den Roboter von sich weg. In meiner Implementierung ist die von einem Objekt ausgeübte virtuelle Kraft umgekehrt proportional zum Quadrat der Entfernung, sodass die Stärke des Stoßes zunimmt, wenn sich das Objekt nähert und eine nichtlineare Reaktionskurve erzeugt: PushForce = ResponseMagnitudeConstant/Distance2Die von jedem Sensor kommenden Stöße werden addiert; Sensoren auf der linken Seite drücken nach rechts und umgekehrt, um einen Vektor für die Bewegung des Roboters zu erhalten. Die Radgeschwindigkeiten werden dann geändert, sodass sich der Roboter in Richtung dieses Vektors dreht. Um sicherzustellen, dass tote Objekte vor dem Roboter keine "keine Reaktion" zeigen (weil sich die Kräfte auf beiden Seiten ausgleichen), schieben Objekte in der toten Front den Roboter auf die offenere Seite. Wenn der Roboter das Objekt passiert hat, verwendet er die Encoder des Roomba, um die Änderung zu korrigieren und zum ursprünglichen Vektor zurückzukehren.

Wandverfolgung: Das Prinzip der Wandverfolgung besteht darin, einen gewünschten Abstand und Parallelwinkel zu einer Wand einzuhalten. Wenn der Roboter relativ zur Wand gedreht wird, treten Probleme auf, da der einzelne Sensor nutzlose Entfernungsmessungen liefert. Die Entfernungsmessung wird sowohl durch den Winkel des Roboters zur Wand als auch durch den tatsächlichen Abstand zur Wand beeinflusst. Um den Winkel zu bestimmen und somit diese Variable zu eliminieren, muss der Roboter zwei Referenzpunkte haben, die verglichen werden können, um den Roboterwinkel zu erhalten. Da der eyeRobot nur eine Seite hat, die dem IR-Entfernungsmesser zugewandt ist, muss er, um diese beiden Punkte zu erreichen, die Entfernung vom Entfernungsmesser über die Zeit vergleichen, während sich der Roboter bewegt. Er bestimmt dann seinen Winkel aus der Differenz zwischen den beiden Messwerten, während sich der Roboter an der Wand entlang bewegt. Es verwendet dann diese Informationen, um eine falsche Positionierung zu korrigieren. Der Roboter geht in den Wandverfolgungsmodus, wenn er eine bestimmte Zeit lang eine Wand neben sich hat und verlässt ihn, wenn sich ein Hindernis auf seinem Weg befindet, das ihn aus seiner Bahn drängt, oder wenn der Benutzer den Drehgriff verwendet, um die Roboter von der Wand weg.

Schritt 7: Teileliste

Liste der Einzelteile
Liste der Einzelteile

Erforderliche Teile:1x) Roomba create1x) Große Acrylplatte2x) Sharp GP2Y0A02YK IR-Entfernungsmesser4x) Maxsonar EZ1 Ultraschall-Entfernungsmesser1x) ZX-24a Mikroprozessor1x) Robodyssey Advanced Motherboard II1x) Schiebepotentiometer1x) Singleturn-Potentiometer1x) Linearlager1x) Lötfreies Steckbrett))) Scharniere, Dübel, Schrauben, Muttern, Halterungen und Drähte

Schritt 8: Motivation und Verbesserung

Motivation und Verbesserung
Motivation und Verbesserung

Motivation: Dieser Roboter wurde entwickelt, um die offensichtliche Lücke zwischen dem fähigen, aber teuren Blindenführhund und dem billigen, aber begrenzten weißen Gehstock zu schließen. Bei der Entwicklung eines marktfähigen und leistungsfähigeren Robotic White Cane war der Roomba Create das perfekte Vehikel, um einen schnellen Prototyp zu entwerfen, um zu sehen, ob das Konzept funktioniert. Darüber hinaus würden die Preise die erheblichen Kosten für den Bau eines leistungsfähigeren Roboters wirtschaftlich decken.

Verbesserung: Die Menge, die ich beim Bau dieses Roboters gelernt habe, war beträchtlich und hier werde ich versuchen, das Gelernte darzulegen, während ich weitermache, um einen Roboter der zweiten Generation zu bauen: 1) Hindernisvermeidung - Ich habe viel über Echtzeit-Hindernisse gelernt Vermeidung. Beim Bau dieses Roboters habe ich zwei völlig unterschiedliche Codes zur Hindernisvermeidung durchlaufen, angefangen mit der ursprünglichen Objektkraftidee, dann zum Prinzip des Findens und Suchens des offensten Vektors und dann zurück zur Objektkraftidee mit die entscheidende Erkenntnis, dass die Objektantwort nichtlinear sein sollte. In Zukunft werde ich meinen Fehler korrigieren, vor Beginn meines Projekts keine Online-Recherche zu bisher verwendeten Methoden durchzuführen, da ich jetzt lerne, dass eine schnelle Google-Suche zahlreiche großartige Artikel zu diesem Thema ergeben hätte.2) Design des Sticks Sensoren - Zu Beginn dieses Projekts dachte ich, dass meine einzige Option für einen Linearsensor darin besteht, einen Gleittopf und eine Art Linearlager zu verwenden. Mir ist jetzt klar, dass eine viel einfachere Möglichkeit gewesen wäre, einfach die Oberseite der Stange an einem Joystick zu befestigen, so dass das Drücken des Sticks nach vorne auch den Joystick nach vorne drücken würde. Außerdem würde ein einfaches Kreuzgelenk es ermöglichen, die Drehung des Knüppels in die Drehachse vieler moderner Joysticks zu übersetzen. Diese Implementierung wäre viel einfacher gewesen als die, die ich derzeit verwende.3) Frei drehende Räder - Obwohl dies mit dem Roomba unmöglich gewesen wäre, scheint es jetzt offensichtlich, dass ein Roboter mit frei drehenden Rädern für diese Aufgabe ideal wäre. Ein passiv rollender Roboter bräuchte keine Motoren und einen kleineren Akku und wäre damit leichter. Darüber hinaus benötigt dieses System keinen Linearsensor, um den Druck des Benutzers zu erkennen, der Roboter würde einfach mit der Geschwindigkeit des Benutzers rollen. Der Roboter könnte durch Lenken der Räder wie ein Auto gedreht werden, und wenn der Benutzer angehalten werden musste, könnten Bremsen hinzugefügt werden. Für den eyeRobot der nächsten Generation werde ich sicherlich diesen ganz anderen Ansatz verwenden.4) Zwei beabstandete Sensoren für die Wandverfolgung - Wie bereits erwähnt, traten Probleme auf, wenn versucht wurde, mit nur einem seitlichen Sensor der Wand zu folgen, daher war es notwendig, den Roboter zwischen den Messungen zu bewegen verschiedene Bezugspunkte zu erreichen. Zwei Sensoren mit einem Abstand zwischen ihnen würden die Wandverfolgung erheblich vereinfachen.5) Mehr Sensoren - Obwohl dies mehr Geld gekostet hätte, war es schwierig, diesen Roboter mit so wenigen Fenstern auf die Welt außerhalb des Prozessors zu codieren. Es hätte den Navigationscode mit einem vollständigeren Sonar-Array viel leistungsfähiger gemacht (aber natürlich kosteten Sensoren Geld, das ich damals nicht hatte).

Schritt 9: Fazit

Abschluss
Abschluss

Fazit: Der iRobot erwies sich als ideale Prototyping-Plattform zum Experimentieren mit dem Konzept eines Robotic White Cane. Aus den Ergebnissen dieses Prototyps geht hervor, dass ein Roboter dieses Typs tatsächlich realisierbar ist. Ich hoffe, aus den Erfahrungen, die ich aus der Verwendung des Roomba Create gelernt habe, einen Roboter der zweiten Generation zu entwickeln. In zukünftigen Versionen von eyeRobot stelle ich mir ein Gerät vor, das mehr kann, als nur eine Person durch einen Flur zu führen, sondern einen Roboter, der Blinden für den Alltag in die Hände gelegt werden kann. Bei diesem Roboter würde der Benutzer einfach sein Ziel ansprechen und der Roboter würde ihn ohne bewusstes Zutun des Benutzers dorthin führen. Dieser Roboter wäre leicht und kompakt genug, um problemlos Treppen hoch getragen und in einem Schrank verstaut zu werden. Dieser Roboter wäre in der Lage, zusätzlich zur lokalen auch eine globale Navigation durchzuführen und den Benutzer ohne Vorkenntnisse oder Erfahrung des Benutzers vom Start zum Ziel zu führen. Diese Fähigkeit würde selbst den Blindenführhund weit übersteigen, mit GPS und fortschrittlicheren Sensoren, die es Blinden ermöglichen, sich frei durch die Welt zu bewegen, Nathaniel Barshay, (Eingetragen von Stephen Barshay) (Besonderer Dank an Jack Hitt für Roomba Create)

Schritt 10: Konstruktion und Code

Konstruktion und Code
Konstruktion und Code

Ein paar überflüssige Worte zum Aufbau: Das Deck besteht aus einem kreisförmig geschnittenen Acrylstück mit einer Öffnung an der Rückseite für den Zugang zur Elektronik und wird dann in die Befestigungslöcher neben dem Laderaum geschraubt. Die Prototyping-Platine wird in das Schraubenloch an der Unterseite des Schachts eingeschraubt. Das Zbasic wird mit einem L-Bügel mit den gleichen Schrauben wie das Deck montiert. Jedes Sonar wird in ein Stück Acryl geschraubt, das wiederum an einer am Deck befestigten L-Halterung befestigt ist (die L-Halterungen sind um 10 Grad nach hinten gebogen, um eine bessere Sicht zu ermöglichen). Die Schiene für den Linearsensor wird direkt in das Deck eingeschraubt und der Slide Pot wird mit L-Bügeln daneben montiert. Eine eher technische Beschreibung des Aufbaus des Linearsensors und der Steuerstange finden Sie in Schritt 4.

Code: Ich habe die Vollversion des Robotercodes angehängt. Im Laufe einer Stunde habe ich versucht, es von den drei oder vier Codegenerationen zu bereinigen, die sich in der Datei befanden, es sollte jetzt einfach sein, es zu verfolgen. Wenn Sie die ZBasic IDE haben, sollte sie leicht zu sehen sein, wenn nicht, verwenden Sie Notepad, beginnend mit der Datei main.bas und gehen Sie durch die anderen.bas-Dateien.