«

»

Robotour 2015: Das Geheimnis wird gelüftet

Bei der Robotour 2015 musste Beteigeuze autonom eine Route von A nach B durch eine Stadt planen und dieser dann, durch enge Gassen und vorbei an zahlreichen Hindernissen, folgen.

Der Herausforderung an die Roboter konnte Beteigeuze besser als die gesamte Konkurrenz meistern und so den 1. Platz belegen. Die Skills, die Beteigeuze den Sieg einbrachten, werden im folgenden genauer beleuchtet.

Siegerfoto bei der Robotour 2015

Siegerfoto bei der Robotour 2015

Robotour 2015

Während es beim FieldRobotEvent um die autonome Navigation in einem festen und bekannten Raum geht, geht die Robotour noch einen Schritt weiter. Der Roboter bekommt Start -und Zielkoordinaten in einer Stadt eingegeben und muss selbstständig vom Start zum Ziel fahren. Eine Aufgabe, an der auch große Konzerne im Hinblick auf das autonome Auto der Zukunft forschen. Ganz so schwierig wie auf einer befahrenen Straße unfallfrei zu navigieren geht es bei der Robotour zwar nicht zu, sie findet in verkehrsfreien Parks und Innenstädten statt. Trotzdem muss auf Passanten und feste Hindernisse acht gegeben werden. Zudem muss auch noch der richtige Weg zum Ziel gewählt werden.

Kamaro hat 2015 zum ersten mal mit unserem Roboter Beteigeuze an der Robotour teilgenommen und auch gleich den ersten Platz belegt. Zwar sind wir nur bis auf 10m an das Ziel herangekommen aufgrund der Ungenauigkeiten des GPS, haben es aber als einziges Team durch die Stadt vom Start bis zum Ziel geschafft.

Beteigeuze fährt durch eine Innenstadt bei der Robotour 2015

Beteigeuze fährt durch eine Innenstadt bei der Robotour 2015

Routenplanung

Nachdem der Roboter die Zielkoordinaten bekommen hat ist der erste Schritt das Planen der Route, die von der aktuellen GPS Position des Roboters zum Ziel führt.

Hierfür wurden Karten der Stadt Pisek, die vom Openstreetmap-Projekte stammen, vor dem Wettbewerb heruntergeladen und auf den Roboter kopiert, da dieser im Ausland keinen Internetzugang hat. Anschließend wurde mit Hilfe eines A*-Algorithmus die kürzeste Route vom Start zum Ziel bestimmt. Da Openstreetmaps die Karten als Graph speichert, ist das ohne weitere Transformationen möglich. Hierzu musste lediglich ein Knoten für Start und Ziel gefunden werden, der den GPS Koordinaten am nächsten kommt.

Straßenerkennung

Hat der Roboter eine Route bestimmt, so muss er beim Abfahren der Route darauf achten, nicht von der Straße ab zu kommen, da die Regeln dies mit Disqualifikation bestrafen. Dafür ist eine Bilderkennung, die die Straße mit Hilfe einer nach vorne gerichteten Kamera wahrnimmt, notwendig.

Die Beschreibung der Bildverarbeitung ist diesem Paper [2] zu entnehmen. Bei der Bildverarbeitung wird jeder Richtung, die der Roboter einschlagen kann, eine Wahrscheinlichkeit zugeordnet, ob es dort eine Straße gibt. Das wurde mithilfe einer Klassifikation basierend auf den Farbwerten im Bild erreicht.

Auf dem Bild ist links die gut erkannte befahrbare Region zu sehen im Vergleich zum Originalbild rechts.

Links als befahrbar erkannte Region, rechts original Bild.

Die Kombination ist alles!

Hat man seine Route bestimmt und weiß wo sich vermutlich die Straße befindet, muss man diese Informationen nur noch richtig kombinieren.

Um sicher zu fahren ist jedoch noch etwas mehr Information nötig. Um zu verhindern, dass der Roboter mit Passanten, Autos oder anderen Objekten kollidiert, werden die Lidar-Daten – welche einen 360° Querschnitt durch die Welt darstellen – genutzt. Es wird mithilfe der Lidar-Daten für jede Richtung in die der Roboter fahren kann bestimmt, wie sicher diese Richtung ist, also wie weit die Objekte in dieser Richtung entfernt sind. Es wird also eine Wahrscheinlichkeitsverteilung generiert, die jeder möglichen Richtung eine Wahrscheinlichkeit zuordnet, wie sicher es ist, dort entlang zu fahren.

Die Bildverarbeitung und die Hinderniserkennung liefern beide Wahrscheinlichkeitsverteilungen, also ist es nur Logisch, dass auch die Route in eine Wahrscheinlichkeitsverteilung konvertiert wird. Dies funktioniert bei uns so, dass der Roboter mithilfe seiner GPS Position den Fortschritt auf der Route bestimmt und dann die Richtung kennt, in die er gerne Fahren möchte. Mithilfe dieser Richtung und seiner eigenen Orientierung, die er dank dem eingebauten Kompass kennt, kann er eine Wahrscheinlichkeitsverteilung generieren, die jeder Richtung eine Wahrscheinlichkeit zuordnet, wie sehr sie Beteigeuze dem Ziel näher bringt.

Wahrscheinlichkeitsverteilungen kann man einfach Kombinieren, indem man die Wahrscheinlichkeiten für die entsprechenden Richtungen miteinander multipliziert. Das Ergebnis ist dann eine neue Wahrscheinlichkeitsverteilung, die jeder Richtung eine Wahrscheinlichkeit zuordnet, dass sie die richtige ist. Jetzt könnte man einfach die Richtung mit der größten Wahrscheinlichkeit wählen, aber das war uns zu unsicher gegen einzelne fehlerhafte Werte. Deshalb bildet Beteigeuze zunächst die HPD-Region (Highest Posterior Density Region). Das sind die Regionen in der Verteilung, die die höchsten Wahrscheinlichkeiten haben. Nimmt man nun die Größte solche Region und wählt die Mitte daraus als Richtung, so hat man eine Richtung, die nicht nur eine hohe Wahrscheinlichkeit hat, sondern auch die Umgebenden Richtungen haben eine hohe Wahrscheinlichkeit, was dem Roboter Spielraum für Fehler liefert. Der Roboter wählt somit zwar nicht unbedingt die optimale Route, aber dafür die Route mit dem dem Sicherheitsabstand zur Verletzung der Kriterien.

Posteriore Dichten und deren Kombination (schwarz), welche alle Einschränkungen erfüllt.

Posteriore Dichten und deren Kombination (schwarz), welche alle Einschränkungen erfüllt.

Referenzen

[1] http://robotika.cz/competitions/robotour/2015/cs

[2] http://wordpress.kamaro-engineering.de/wp-content/uploads/2016/04/RobotourImageProcessing_mini.pdf