Entwicklung einer Software-Komponente zur Bestimmung der Roboterposition mit einem SICK-Laserscanner.


Zusammenfassung

Wir besitzen einen SICK TIM 551 Laserscanner, der mittels eines Infrarotlasers radial Distanzen misst. In der richtigen Höhe in einen unserer Roboter eingebaut, wäre es damit prinzipiell möglich, die Roboterposition anhand der beobachteten Entfernungen zum Spielfeldrand zu berechnen. Probleme machen dabei jedoch die Ausreißer durch im Lichtweg befindliche Spielelemente, das Messrauschen, die zeitliche Latenz der Verarbeitung und die Verzerrung der Messungen bei Bewegung des Roboters.

Daher soll eine Software-Komponente entwickelt und in die Robotersoftware integriert werden, die die per Ethernet/UDP ausgegebenen Daten des Laserscanners verarbeitet, daraus seine Position und Ausrichtung auf dem Spielfeld schätzt und diese an die Robotersoftware übermittelt. Dort soll eine weitere Komponente die Positionsdaten entgegennehmen und unter bestimmten Voraussetzungen und Ausgleich der Zeitverzögerung die bekannte Roboterposition und -ausrichtung damit korrigieren.

Da für den Laserscanner bereits ein Treiber im Software-Framework ROS existiert, bietet es sich an, die Software zur Positionsberechnung ebenfalls in ROS zu entwickeln und die Daten anschließend über das XPCC-Protokoll an den Microcontroller des Roboters zu senden.

Geplante Features:

  • Filterung der Messwerte (Tiefpass?)
  • Ausreißer-Elimination (z.B. RANSAC-Verfahren)
  • Überwachung der Roboterbewegung; Korrektur nur bei stehendem Roboter oder Entzerrung der Messung
  • Plausibilitätsprüfung der Positionen/Ausrichtungen vor Korrektur
  • Visualisierung der berechneten Daten zur Validierung des Verfahrens
  • Entwicklung als ROS-Node; zusätzliche Nodes zur Kommunikation mit dem Roboter

Tätigkeitsfelder und Technologien

  • Herleitung von Geometrische Berechnungen und Algorithmen
  • Entwicklung von Algorithmen zur Signalverarbeitung (Filterung, Ausreißeranalyse)
  • Software-Entwicklung für ROS in Python und/oder C++
  • Software für Microcontroller in C++ mit modm.io

Referenzen und Links