3D Scanner

Um für einen zukünftigen Roboter mit einem Entfernungsmesser für Hindernisse ausstatten zu können, wurde ein Distanzsensor mittels zwei Servos drehbar befestigt. Kern des Scanners ist ein Sharp 2Y0A02 Sensor, der Entfernungen von 20cm bis 1,5 Meter messen kann. Der Sensor liefert ein analoges Ausgangssignal, welches abhängig von der Entfernung zum nächstem Hindernis ist. Mit den Servos lässt sich der Sensor in zwei Richtungen um jeweils 140° drehen. Werden sämtliche Servo Stellungen nacheinander angefahren und der Sensorwert ausgelesen, so erhält man ein komplettes 3D Bild der Umgebung. Der Nachteil dieser Punkt-für-Punkt Methode ist allerdings seine niedrige Geschwindigkeit.

Funktionsweise

Ein ATmega8 dient dazu die die Servos anzusteuern, den Sensor auszulesen und Befehle durch die serielle Schnittstelle Befehle entgegen zunehmen und die vor-verarbeiteten Sensorwerte zu senden. Jeder Servo kann in 256 verschiedene Positionen gefahren werden, so dass sich ein 3D Bild mit maximal 65536 Bildpunkten generieren lässt. Als Vorverarbeitung lässt sich der Wert des Sensors direkt in eine Entfernung in Millimeter umrechnen. Zusammen mit den Servopositionen lässt sich eine X,Y,Z Position relativ zum Sensor ermitteln. Zusätzlich zu dem Distanzsensor wurde ein Fototransistor auf den Servos befestigt um die Helligkeit des abgetasteten Punktes ermitteln zu können. Leider hat der Fototransistor hierfür einen zu großen Öffnungswinkel, so dass dieser nur von begrenzten Nutzen ist. Durch Messen des ungefähren Stromverbrauchs der Servomotoren kann festgestellt werden, ob sich diese noch bewegen oder schon die gewünschte erreicht haben. Entsprechend wird mit einer Distanzmessung gewartet, bis dies der Fall ist. Optional lässt sich an dem Controller ein 16x2 Zeichen LCD und ein Taster anschließen, um die gemessenen Werte direkt ablesen zu können. Da die Ausgangsspannung nicht linear zur Entfernung ist, wurde eine Tabelle erstellt, die A/D Werte in Zentimeter umrechnet.

Der Sensor

Sensor Ausgangs Linie Laut Datenblatt kann der Sensor von 20cm bis 1,5 Meter Messungen durchführen. Allerdings ist die Ausgangsspannung nicht linear zur Entfernung. Daher wurde eine Tabelle erstellt, die die A/D Werte in Zentimeter umrechnet. Hierfür wurde der Sensor ungefähr senkrecht auf braune Pappe ausgerichtet und die durch den 10Bit A/D Wandler des Controllers gelieferten Werte bei jeder Entfernung notiert. Es stellte sich heraus, dass der Sensor von 13cm bis 160cm Entfernung brauchbare Werte liefert, wobei die Genauigkeit bei 20cm Abstand ungefähr 0,5cm und bei 1,8 Metern noch 4-8cm beträgt. Die X Achse der nebenstehenden Grafik bezeichnet den Abstand in Zentimetern. Die Y Achse zeigt den bei dem gegebenem Abstand gemessenen 10Bit A/D Wert bei 5V Referenzspannung an. Der grüne Graph zeigt die direkt gemessenen Werte, für den roten Graph wurden die Werte geglättet. Der rote Graph wurde als Umrechnungstabelle in den Mikrocontroller programmiert. Da die Ausgangsspannung bei Entfernungen unter 13cm wieder absinkt besteht hier die Gefahr, dass zwei verschiedene Entfernungen die gleichen Sensorwerte liefern.

Java GUI

Um 3D Scans leicht durchzuführen wurde eine plattformunabhängige GUI in Java geschrieben. Sie ermöglicht es einen beliebigen Bildausschnitt zu Scannen, die erstellten Scans zu laden und abzuspeichern, sowie in das PNG-Format zu exportieren und die Punkte mit POV-Ray als 3D Szene  rendern zu lassen.

Bilder

Software

Wie immer, Verwendung auf eigenes Risiko und ohne Gewähr.
3dscanner_1-00.zip
Quellcode für den Mikrocontroller und die Java GUI. Version: 1.00
3dscanner1-schematic.png Schaltplan des Scanners

Fazit

Die Auflösung von 1cm reicht um grobe Strukturen zu erkennen. Während das scannen einzelner Punkte schnell erledigt ist, so dauert doch das Scannen bei einer Geschwindigkeit von 6 Punkten pro Sekunde, eine ganze Weile. Der Scan für das oben gezeigte zweite 3D-Bild dauerte rund 1,5 Stunden. Wer sich also selber einscannen möchte wird sehr viel Geduld benötigen. Der Fototransistor ist so zunächst wenig zu gebrauchen, hier wäre gegebenenfalls eine entsprechende Optik von Vorteil. In Anbetracht der Einfachheit des 3D Scanners sind die Scans aber zufriedenstellend.