Kooperative Lokalisierung durch Mustererkennung mit einer Kamera, mit Ultraschall und Inertial Measurement Unit (IMU) für kompetitive mobile Robotik.


Zusammenfassung

Die Lokalisierung ist ein wichtiger Teil der Strategie, Wegeplanung und des Driver. Dabei steht nicht nur der eigene Roboter im Fokus, sondern auch die des Gegners. Denn mit diesem darf man während der Fahrt nicht kollidieren, dazu kann es zur Entscheidungsfindung der Strategie beitragen.

Dazu stehen verschiedene Datenquellen mit verschiedenen Eigenschaften zur Verfügung. Zum einen kann am Spielfeldrand eine Kamera platziert werden, die am Roboter befindliche Aruco Marker erkennt und damit Position und Orientierung bestimmt. Oder durch ein Ultraschallsystem wird die Position mittels Triangulation zu festen Referenzpunkten gemessen. Desweiteren bietet eine inertiale Messeinheit (Bewegungs-, Drehratensensor etc.) die Möglichkeit eine höhere Aktualisierungsrate durch die Messung relativer Bewegung zu erzielen.

Konkret sind folgende Aufgaben zu erledigen:

  • Schnittstellen-Definition zu Datenquellen (IMU, Kamera, etc.)
  • Schnitsstellen-Definition zur Strategie (Lokalisierung: Postition, Orientierung)
  • Recherche, Implementierung und Auswertung von Algorithmen zur Datenfusion vorhandener Daten
  • Integration und Test am und im Roboter

Geplante Features:

  • Filterung der Messwerte
  • Ausreißer-Elimination (z.B. RANSAC-Verfahren)
  • Überwachung der Roboterbewegung; Präferenz für Systeme je nach Eignung in der jeweiligen Situation
  • Plausibilitätsprüfung der Positionen/Ausrichtungen vor Korrektur
  • Visualisierung der berechneten Daten zur Validierung des Verfahrens
  • Entwicklung als ROS2-Node

Tätigkeitsfelder und Technologien

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

Requirements

  • Verständnis von Signalverarbeitung
  • Erfahrung mit C++ oder Python Programmierung
  • Ggf. Erfahrung mit Mikrocontrollerprogrammierung (Embedded Software Entwicklung)

Referenzen und Links

  • https://de.wikipedia.org/wiki/Inertiale_Messeinheit