UniBwM » ETTI » ETTI4 » Datentechnik und Schaltungstechnik » Lehre » Abschlussarbeiten » Abgeschlossene Arbeiten » Untersuchung und Implementierung des SLAM-Algorithmus zur Steuerung von autonomen Robotern

Untersuchung und Implementierung des SLAM-Algorithmus (Simultaneous Localization and Mapping) zur Steuerung von autonomen Robotern

Untersuchung und Implementierung des SLAM-Algorithmus (Simultaneous Localization and Mapping) zur Steuerung von autonomen Robotern

Aufgabenstellung

Ziel der Masterarbeit war es, den CoreSLAM - Algorithmus von Bruno Steux und Oussama El Hamzaoui  in C# umzusetzen und für den Roboter Rumbler TV-5 zu implementieren. Als Basis für den Algorithmus ist das BeagleBoard xM mit einem Microsoft Windows CE 6.0 vorgesehen. Das Windows CE 6.0 der Firma MPC-Data Incorporated ist eine Standard Windows CE Implementierung welche mit Hilfe des Board-Support-Package (BSP) von der Firma Texas Instruments Incorporated auf dem BeagleBoard xM lauffähig ist. Der CoreSLAM - Algorithmus ist ein SLAM - Algorithmus mit einem Partikelfilter auf Basis der Monte-Carlo - Suchmethode. Roboter mit diesem Algorithmus lassen sich in Gebäuden gut einsetzen, da diese viele Vergleichspunkte für die Monte-Carlo-Suche bieten.

 

Durchführung

Zu Beginn der Arbeit wurde das Windows CE 6.0 mit den benötigten Einstellungen und Treibern erstellt und auf dem BeagleBoard getestet. Dabei stellte sich der Treiber für das DeLock-WLAN – Modul als fehlerhaft heraus und wurde wieder entfernt. Um dennoch eine WLAN-Verbindung zum Rumbler herzustellen wurde ein WLAN-fähiger Router im Roboter verbaut. Dieser verbindet nicht nur das Logic-Subsystem mit dem Communication-Subsystem über eine 100 MBit –Verbindung sondern ermöglich auch das Steuern des Roboters über die WLAN-Verbindung.

Der Schwerpunkt der Arbeit, die Umsetzung des in C geschriebenen CoreSLAM – Algorithmus, stellte eine schwierige Aufgabe dar. Der Algorithmus erstellt aus den Daten des Laserscanners und der Odometrie eine Karte. Diese ist ohne Korrektur sehr ungenau, da beim Integrieren der Position große Abweichungen entstehen. Diese Fehler wird durch den Filter des SLAM-Algorithmus korrigiert. Zusätzlich musste der Algorithmus nicht nur in C# umgesetzt werden, es mussten auch Plattform- und Performance-spezifische Aspekte beachtet werden. Hierbei ist das Verhalten des Garbage Collektors zu erwähnen. Dieser wird in regelmäßigen Zeitintervallen vom .NET Compact Framework 3.5 aufgerufen und kann durch den Benutzer nicht deaktiviert werden. Da der Garbage Collector bei großen zu bereinigenden Datenmengen viel Zeit benötigt, wurde bei der Implementierung darauf geachtet, dass große Datenmengen nicht mehrmals im Speicher angelegt werden und somit durch den Garbage Collector bereinigt werden müssen. Dieses Ziel wurde durch das Anlegen der Daten in den Schnittstellenklassen und anschließender Übergabe per Referenz an die benötigten Klassen erreicht. Hierdurch konnte der Garbage Collector weitest gehend umgangen werden.

 

Fazit

Der SLAM-Algorithmus erstellt Karten mit sehr hoher Genauigkeit. Diese fallen jedoch der Laufzeit zur Last und können mit der aktuellen Implementierung der MonteCarlo-Suche als Filterverfahren dadurch keine Echtzeitfähigkeit erreichen. Die implementierten Klassen der Schnittstellen und Daten arbeiten schnell und effektiv. Gerade die Klassen der einzelnen Schnittstellen erreichen eine hohe Performance durch kurze Verarbeitungszeiten.

Der SLAM-Algorithmus besitzt ein großes Potential, welches in dieser Arbeit nicht ausgeschöpft werden konnte. Durch verschiedene andere Filter-Verfahren wie z.B. einem Kalman-Filter oder Extended Kalman-Filter könnten weitere Vergleichswerte im Bereich der Filterlaufzeiten ermittelt werden um die Geschwindigkeiten der Positionskorrektur zu erhöhen.

Die Karten wurden in der vorliegenden Version des Algorithmus mit 4000 x 4000 Pixeln und einem Skalierungsfaktor von 2,5 cm pro Pixel erstellt. Daraus ergibt sich eine maximale Fläche von 100m x 100m, welche jedoch pro Karte einen Speicherverbrauch von 16 MByte erforfert. Dies ist für Anwendungen in Gebäuden gerade noch ausreichend, jedoch im freien Gelände nicht mehr benutzbar. Hierzu würde sich ein QuadTree eignen, welcher nur relativ kleine Kartenausschnitte speichert, sofern diese Daten enthalten. Dadurch könnte im Bereich von freien Flächen viel Speicherplatz gespart werden.

 

Thomas Solzbacher, August 2011

Gebaeudeplan

Karte mit SLAM

Karte ohne SLAM