Hi,
Ich arbeite in einem Schulprojekt schon lange an einem Roboter, der autonom durch ein Labyrinth fahren muss. Der Roboter verfügt über ein Lidar (genauer "RPLidar A1M8"), mit dem er die Umgebung scannen kann. Der Roboter ist dafür gedacht an dem "Rescue Maze" Wettbewerb des RoboCup Juniors teilzunehmen (Der Roboter ist etwa 18x22 cm groß). Der Wettbewerb funktioniert so, dass der Roboter in eine Arena gesetzt wird, die aus vielen „Räumen“ besteht, die jeweils 30x30 cm groß sind. Diese Räume haben dann zwischen 0 und 4 Wänden. Diese Arena, die der Roboter vorher nicht kennt, muss er dann autonom durchfahren. Wir verwenden das Lidar bereits, um die Wände in der Arena zu erkennen und sie in eine Karte einzutragen.

Jetzt würden wir gerne das Lidar nutzen um eine genauere Karte des Labyrinths anzufertigen, während wir durch dieses fahren. Damit wollen wir erkennen, wenn der Roboter nicht mehr dort ist, wo er glaubt, dass er gerade ist. Ich habe mich schon in die Richtung von Algorithmen, wie "Iterative Closest Point" und "Coherent point drift" umgesehen, habe aber bisher keinen Startpunkt für die Umsetzung gefunden. Da wir mit einem Raspberry Pi 3 fahren (wir wollen demnächst auf einen RockPi umsteigen), ist auch die Geschwindigkeit des Algorithmus nicht ganz unerheblich.

Wie ich meine Karte bauen kann, nachdem ich weiß wo der Roboter sich bewegt hat, ist mir relativ klar. Nur weiß ich nicht, wie ich genau herausfinden kann, wie er sich bewegt hat, da im Labyrinth auch Hindernisse stehen können, an denen der Roboter hängengeblieben sein könnte. Am besten wäre für mich ein System, mit dem der Roboter über die durch das Lidar erstellte Karte navigieren könnte, um automatisch Hindernissen auszuweichen und um schneller zu sein, als das Ganze „Feld-für-Feld“ anzugehen.

Habt ihr irgendwelche Ideen oder Erfahrungen, wie ich so ein System bauen kann bzw. welche Algorithmen ich genau verwenden sollte, um herauszufinden, wo sich der Roboter gerade befindet bzw. wie er sich bewegt hat über die Bilder die das Lidar ausgibt?