Tim551 Montiert

Ich habe den Laserscanner nun auf dem Roboter anstelle meines LiDARS montiert. Der Scanner ist auf Gummi gelagert, so das möglichst keine Vibrationen vom Roboter auf den Sensor übertragen werden. tim551montiertIch werde den Sensor nun voraussichtlich doch über Ethernet ansteuern, da ich von Sick den Hinweis bekommen habe, dass die Funktion des Senors über USB möglicherweise eingeschränkt ist. Zu diesem Zweck werde ich einen Netzwerkswitch, welchen ich von Sick bekommen habe, auf dem Roboter anbauen.

Sick TiM551

Ich habe von der Firma Sick einen Laserscanner vom Typ TiM551 zur Verfügung gestellt bekommen. Dieser hat eine Winkelauflösung von 1°, einen Messbereich von 270°, eine Reichweite von 10m und scant mit 15hz. Dieser Laserscanner wird mein selbstgebautes LiDAR Modul ersetzen.IMG_7780Ich arbeite an einem Treiber für den Raspberry Pi, um die Daten über Usb auslesen zu können. Alternativ kann man mit dem Sensor auch über Ethernet kommunizieren. Da der Raspi aber nur einen Netzwerkanschluss hat, ist dies für mich keine Möglichkeit.

Praktikum bei SICK

Zur Zeit mache ich ein Praktikum über vier Wochen in der Abteilung Forschung und Entwicklung bei Sick. Sick entwickelt Sensoren, welche besonders in der Industrie eingesetzt werden.

Ich arbeite an dem Pan-Robots Projekt, welches zum Ziel hat, die Logistik in Fabriken und Lagerhallen mit autonomen Gabelstaplern zu optimieren. Dazu müssen sich die Roboter natürlich lokalisieren. Dies wird mit Laserscannern und einem SLAM Algorithmus realisiert. Allerdings kann die Position zu Beginn mehrdeutig sein (der Scan von der Starposition aus lässt sich nicht eindeutig auf der Karte finden). Ein Lösungsansatz ist die initiale, approximative Lokalisierung über WLAN um den Standort einzugrenzen. Das bietet sich an, da die Roboter alle über WLAN kommunizieren, also Empfang garantiert ist. Dies ist das Thema an dem ich mitarbeite.

ICP Algorithmus

Seit längerem nun arbeite ich an der Implementierung des ICP (Iterative Closest Point) Algorithmus. Mit diesem lässt sich der Abstand zwischen zwei Punktwolken (also z.B. zwischen zwei Scans oder einer Karte und einem Scan) minimieren.

Bei meiner Implementierung ist der resultierende Vektor, mit welchem die zu matchende Punktwolke bewegt werden muss, um eine optimale Überdeckung zu erreichen, die Bewegung des Roboters zwischen den beiden Scans.

Dies funktioniert aber noch nicht zuverlässig. Der Schwellwert, welcher benutzt wird, um Ausreißer aus den Scans zu erkennen, ist sehr wichtig für den Erfolg des ICP Algorithmus. Dieser Schwellwert wird in meinem Programm für jede Iteration des Algorithmus dekrementiert, ist also dynamisch. Ich denke dies geschieht noch nicht ganz optimal.