Our implementation of "SLAM"1 allows our robot to locate itself and map its environment simultaneously by measuring the environtment and performing landmark2 extracting and matching.
- python3
- low level_controller - continuously turns our motor (28BYJ-48 stepper) on which our Lidar sensor (VL6180 VL6180X) is fixated by 360 degrees. Range measurements of the environment on the horiuzontal level of the sensor are thereby taken.
- nervo - receives the measurements and respective rotation data and puts them into MHIST.
- MHIST - is a simple on-disc measurement data base that stores and redistributes measurements consisting of a name, a value and optionally a timestamp through grpc.
- run nervo and MHIST on Raspberry Pi
- run low level_controller on Arduino
- run SLAM with
make run
on Raspberry Pi
The "landmark extractor" iterates through the point batch (where the points are trigonometrically derived from the range and rotation data) and extracts local "spike landmarks"3. Local means it is relative to the robot's current position instead of to the origin (i.e. the robot's first position).
Those extracted landmarks are then "matched" (as in set in comparison and paired in the case of sufficient likeness) with landmarks from previous measurement rounds in the landmark matcher.
From these matched landmarks the new robot position is estimated. With the position the new landmarks are globalized so that they are relative to the origin. They are then added to "stored landmarks". The point batch is also globalised.
Lastly, both the position of the robot as well as the global points are sent to MHIST so that the high-level-controller can retrieve the data and plan and optimise the robot's further trajectory.
Footnotes
-
"Simultaneous localization and mapping is the computational problem of constructing or updating a map of an unknown environment while simultaneously keeping track of an agent's location within it." - wikipedia ↩
-
"A prominent identifying feature of a landscape." -wordnik ↩
-
"The spike landmark extraction uses extrema to find landmarks. They are identified by finding values in the range of a laser scan where two values differ by more than a certain amount, e.g. 0.5 meters." - SLAM for dummies ↩