Wesentliche Teile dieser Arbeit entstanden im Rahmen eines Programmierpraktikums ,,3D-Laserscanner``. Aufgabe war es, einen handelsüblichen 2D-Laserscanner dahingehend zu modifizieren, daß Szenen in 3 Dimensionen aufgenommen werden. Der entwickelte 3D-Laserscanner soll speziell zur Navigation und Exploration auf autonomen mobilen Robotern eingesetzt werden.
Wichtige Fragestellungen in der Robotik sind die Kartierung und Navigation der Umgebung sowie anwendungsspezifische Aufgaben der jeweiligen Roboter, beispielsweise Andock- und Einparkaufgaben. Für solche autonomen Systeme braucht man präzise, schnelle und preisgünstige Sensoren. Heute verwenden viele Roboter 2D-Laserscanner. Die Erstellung von 2D-Karten und Navigation ist damit in Grundzügen möglich [Sur95]. Es besteht jedoch nicht die Möglichkeit, Hindernisse auf Grundlage eines 2D-Scans vollständig zu erfassen, da diese beispielsweise überstehende Kanten aufweisen können. Objekterkennung ist ebenfalls nicht ohne den Einsatz weiterer Sensoren wie beispielsweise Kameras möglich. Ein 3D-Laserscanner bietet für Probleme dieser Art eine echte Alternative.
Der in dieser Arbeit vorgestellte Ansatz verwendet einen 2D-Laserscanner, der auf einer horizontalen, senkrecht zur Hauptblickrichtung des Scanners verlaufenden Drehachse montiert wird. Dadurch ist es möglich, den Scanner wie einen herkömlichen 2D-Laserscanner zu betreiben. Ferner können vorhandene Algorithmen weiterhin zur Roboter-Lokalisation eingesetzt werden [Arr96]. Zusätzlich ist es nun möglich, 3D-Szenen aufzunehmen. Dabei wird der Laserscanner um einen Winkel von 90 Grad in der horizontalen Drehachse gedreht. Ein handelsüblichen Servomotor aus dem Modellbaubereich dreht den 2D-Scanner.
Die Präzision des zu realisierenden 3D-Senosrs soll eine Mindestgenauigkeit von 5cm besitzen. In jeder Scanebene ist die Genauigkeit durch die Genauigkeit des Lasers bestimmt, die bei dem in dieser Arbeit verwendeten Laser bei etwa 4cm liegt. Die vertikale Genauigkeit bestimmt sich durch die Servogenauigkeit und dem Ansteuerungsverfahren des Servos. Die hier erreichte Genauigkeit liegt bei etwa 0.5 Grad. Für die Ansteuerung des Servos wird das Echtzeitbetriebsystem RT-Linux verwendet. Der 3D-Laserscanner besitzt eine Auflösung von bis zu 113400 Punkten (420 270) bei einem Öffnungswinkel von . Damit können Objekte im Nahbereich ab einer Größe von cmcmcm erkannt werden.
Neben der Qualität ist die Geschwindigkeit ein entscheidendes Kriterium für den Einsatz von Sensoren auf mobilen Platformen. Die Zeit, die für eine Aufnahme einer 3D-Szene benötigt wird, ist von der Geschwindigkeit des Lasers abhängig sowie der gewählten Auflösung. Die Zeit für einen kompletten Scan von 150 90 beträgt - je nach Auflösung - zwischen 1 und 12 Sekunden, wobei der Scanner alle 30ms einen 2D-Scan aufnimmt.
Letztendlich bestimmt auch der Preis über den Einsatz von Sensoren auf mobilen Fahrzeugen. Der 3D-Scanner ist sehr preisgünstig, da ein vorhandener 2D-Laserscanner um einen Modellbauservo und eine Aufhängung erweitert wurde. Der eingesetzte Servo der Firma Multiplex kostet 110,--.
Werden die autonomen Roboter zur Vermessung von Gebäuden und zur Kartengenerierung eingesetzt, so ist eine realistische Visualisierung erwünscht. Zu diesem Zweck wurde eine Digitalkamera an den Laserscanner gekoppelt. Aus dem während des 3D-Scans aufgenommenen Kamerabildern werden Texturen für die 3D-Szene extrahiert.
Online-Algorithmen zur Erkennung von Linien und Flächen bilden die Software-Basis für die anschließende Objektsegmentierung und Erkennung. Die Visualisierung erfolgt durch eine seperate Software auf der Basis der OpenGL-Bibliothek.
Aufbau der Arbeit
Die vorliegende Arbeit gliedert sich in 7 Kapitel: