-
-
360° Sharp-Scanner für Mapbuilding
360° Scanner für Mapbuilding
Im Rahmen einer Semesterarbeit an der Ecole Polytechnique Fédérale Lausanne (EPFL) habe ich einen Roboteraufsatz entwickelt, der es erlaubt die Umgebung des Roboters auszumessen. Als Grundroboter dient der e-Puck, der auch an der EPFL entwickelt wurde (siehe http://asl.epfl.ch/research/systems/epuck/index.php für Details). Es handelt sich hierbei um einen Roboter mit 7cm Durchmesser, der für die Ausbildung der Studenten eingesetzt wird.
In diesem Beitrag möchte ich diesen Roboteraufsatz beschreiben, da ich denke, dass dieser einfach auch für andere Roboter übernommen werden könnte und ohne weiteres in einer Hobbywerkstatt nachgebaut werden kann. Ich werde die wichtigsten Passagen des von mir geschriebenen Berichts (75 Seiten auf Französisch) hier kurz auf Deutsch zusammenfassen.
Als erstes einmal zwei Photos des Aufbaus: Unten kann der e-Puck erkannt werden, dessen Standardaufsatz (mit Lautsprecher) durch mein Scanmodul ersetzt wurde. Der von mir gebaute Aufsatz beinhaltet die beiden PCBs (in grün) mit allen Komponenten oberhalb (Motor, Sensorfixierung und Sensoren).
Bild hier
Bild hier
-
Ziel
Dieser Roboteraufsatz kann permanent drehend die Umgebung des Roboters ausmessen. Die Daten können schlussendlich dazu genutzt werden um:
- Hindernissen auszuweichen
- Die Position des Roboters in einer bekannten Umgebung zu bestimmen
- Die Umgebung des Roboters zu erkunden um eine Umgebungskarte zu erstellen
Mapbuilding
Den letzten Punkt; das Mapbuilding möchte ich hier kurz erläutern:
Bild hier
1. Man startet an Position A (von welcher man Position und Ausrichtung ungefähr kennt) und bewegt ein wenig vorwärts. Mit Hilfe der ausgeführten Bewegungen (Schritte des Schrittmotors) schätzt man die neue Position B.
2. Mit den Distanzsensoren wird die Erkennung der Umgebung durchgeführt (Mehrere Messungen im Kreis herum). Aus diesen Daten extrahiert man die Konturen (rot)
3. Diese werden mit der bereits erfassten Karte übereingebracht, womit die genaue Position des Roboters ermittelt werden kann (C).
4. Schlussendlich kann die Karte mit den neuen Daten erweitert werden
Der Vorgang des Mapbuildings ist sehr komplex und rechenaufwändig, aber ermöglicht sehr interessante Anwendungen, wie das erkunden unbekannter Umgebungen.
-
Sensoren
Der Sensorturm ist so konstruiert, dass entweder analoge Sharpsensoren oder Ultraschallsensoren (z.B. Devantech SRF10 UltraSonic) angeschlossen werden können.
Ultraschallsensoren sind eher für die Objekterkennung und das Ausweichen solcher geeignet, während die Sharpsensoren gut geeignet sind für das Mapbuilding
(Bis jetzt habe ich den Aufsatz erst mit Sharpsensoren getestet)
Permanente Drehung des Aufsatzes
Zum Einlesen der Sensordaten der ganzen Umgebung des Roboters haben wie eine permanente Drehung der Sensoren gewählt. Dies ermöglicht relativ hohe Drehgeschwindigkeiten. Eine Hin-und-her- Bewegung würde für einen so kleine Roboter zu grosse störende Trägheitsmomente aufweisen. Das ständige Beschleunigen und Abbremsen würde den Roboter bewegen und die Genauigkeit der Odometrie (Abschätzung der Position und Ausrichtung per Zählen von ausgeführter Schritte) negativ beeinflussen.
Diese Lösung bietet aber viel grössere mechanische Probleme, als eine einfache Hin-und-her- Bewegung. Die elektrischen Verbindungen können nicht einfach per Kabel übergeben werden, da sich diese aufwickeln würden.
Bild hier
-
Die Schleifkontakte
Die Schleifkontakte
Zur Lösung dieses Problems wurden Schleifkontakte eingesetzt. Diese sind im Gegensatz zu möglichen Induktiven Stromübertragungen und Funk, resp. Infrarot- Signalübertragungen einfach zu realisieren. Sie sind verhältnismässig billig herzustellen und benötigen keine zusätzliche Elektronik. Nur die Abnutzung der Kontakte und die unbekannte Zuverlässigkeit dieses Systems boten anfangs rund zum Zweifeln.
Das Prinzip der Schleifkontakte
Bild hier
Pro elektrische Verbindung schleift je ein Kohlestift auf einer Kupferbahn. Per Klingenfeder wird dieser Stift auf die Bahn gedrückt und so der elektrische Kontakt sichergestellt.
Material
Durch die Firma Hoffmann (Österreich) habe ich geeignete Schleifkohlen gefunden.
Dimensionen: 3mm Durchmesser 6mm Höhe
Material : Kohle mit 90% Silbergehalt (gute Leitfähigkeit mit dem Vorteil der schmierenden Kohlen). Eine Seite der Stifte ist verkupfert und somit gut lötbar.
Anpressdruck: 5-15N/cm^2 <=> 0.35-1N pro Stift
Bild hier
Hier noch einige Detailbilder zu den Kontakten.
Die Kupferbahnen sind direkt auf die PCBs geätzt, was die erstellung sehr vereinfacht.
Ich habe auf diesen Bildern absichtlich versucht die Abnutzung der Kontakte zu zeigen. Dies sind bilder nach etwa 10h konstantem Drehen.
Es kann deutlich erkannt werden, dass die Kupferbahnen bereits etwas oxidiert sind. Der Anpressdruck (in meinem Fall ca 0.8N) ermöglicht jedoch ein permanentes Abschleifen der oxidierten Schicht.
Bild hier
Bild hier
-
Antrieb
Als Antrieb wurde ein PG15S-020 Schrittmotor eingesetzt.
Maximale Drehgeschwindigkeit ~1U/sec
Zur absoluten Winkelbestimmung wurde auf dem Roboteraufsatz eine Lichtschranke angebracht. Das Licht der Lichtschranke fällt durch das Loch, das in dem Photo oben zwischen den Kupferbahnen sichtbar ist.
Per Schrittmotor und diesem absoluten Index ist es also möglich, permanent die Ausrichtung des Turmes zu kennen.
Konstruktion
Der Motor wurde verkehrt herum montiert, damit er vom Prozessor des Aufbaus gesteuert werden kann. Die Achse wird in einem Flansch (blau) auf dem unteren PCB fixiert.
Bild hier
Die grau und blau eingefärbten Teile sind fix mit dem Roboter verbunden (Dunkelgrau; die Schleifkohlen). Die rot und gelb eingefärbten Teile drehen mit dem Motorgehäuse mit.
Fixierung der Sensoren
Diese können direkt auf eine Alublock geschraubt werden. Der Alublock wird um den Motor geklemmt
Bild hier
-
Super-Moderator
Lebende Robotik Legende
Wie werden denn die Kanten von Hindernissen abgebildet die nur zum Teil vom Sensor erfasst werden?
Ergibt sich da eine Verschiebung des gemessenen Abstands?
Manfred
-
Programmierung/Kommunikation
Die Daten der Sensoren werden zuerst von einem PIC, der sich auf der Erweiterung befindet, empfangen und gespeichert. Der dsPIC, der sich auf dem e-Puck befindet, kann diese Daten anfordern (I2C) und sie per Bluetooth (emulierte serielle Schnittstelle) an den PC weitersenden.
Bild hier
Per Hyperterminal kann mit dem e-Puck kommuniziert werden und viele Einstellungen vorgenommen werden (siehe Screenshots)
Bild hier
Bild hier
Bild hier
Die letzte Ausgabe des Hyperterminals stellt die 80 Messungen dar, die pro Umdrehung gemacht werden. Es sind direkte AD-Werte der Sharpsensoren.
Diese müssen, um interpretiert werden zu können, zuerst linearisiert werden (siehe http://www.kreatives-chaos.com/index.php?seite=gp2d120) und können dann in Polarkoordinaten geplottet werden.
-
Resultate
Resultate
Bild hier
Bild hier
Hier zweimal dieselbe Situation (Photo und 360°-Scan per Sharpsensoren geplottet in Matlab)
Bild hier
Hier die Erfassung einer Ecke während 20 Umdrehungen. (20 Messungen pro Winkel).
--> Mauern können gut als Geraden erkannt werden
--> Einzig in den Ecken gibt es einige unpräzise Messresultate
Zur Automatisierung und bequemeren Steuerung habe ich in Matlab ein kleines GUI geschrieben, das per emulierte serielle Schnittstelle mit dem e-Puck kommunizieren kann. Damit kann ich den e-Puck steuern und gleichzeitig die Sensordaten erneuern lassen.
--> Kleines Echtzeit-Radar!!
Ca 3 Aktualisierungen des Screens pro Sekunde bei ½ Umdrehungen des Turms pro Sekunde.
Bild hier
\/ macht richtig Spass mit diesem Interface etwas blind herumzufahren und die eigene Wohnung zu erkunden!! \/
voilà,
hoffe einige mit dieser Idee begeistert zu haben. Ist von mir aus gesehen eine einfache Methode die Sharpsensoren optimal zu nutzen.
Um die Datenflut vernünftig auszubeuten ist natürlich recht viel Programmieraufwand nötig, aber ist sicher spannend!
PS: hab das ganze bisher nur mit Sharpsensoren getestet. Ultraschallsensoren wären aber für andere Zwecke ohne weiteres auch denkbar...
-
ciao manfred,
ganz genau kann ich dir da nicht antwort geben. ich weiss nur, dass die sharpsensoren während den 40ms messzeit 32 messungen durchführen und den mittelwert (wohl des PSD-Widerstands??) zurückgeben. dh es ist ungefähr der mittelwert der in diesem zeitfenster überstrichenen distanzen zu erwarten.
bisher habe ich bei schnellen distanzwechseln noch keine allzu schlimmen resultate gesehen.
hoffe, dass ich deine frage richtig verstanden habe... leider kann ich dir nicht genauer antworten. die testphase des systems war recht kurz und ich bin leider bereits nicht mehr im besitz dieses Aufbaus
-
Erfahrener Benutzer
Roboter Experte
Hi,
cooles Ding...
kurze Fragen:
Mit welcher Sprache wurde das Programm auf dem Roboter geschrieben, mit welcher das Programm realTimeTest?
Gruß Michi
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen