SLAM tracking
This MR enables the possibility to use an external SLAM system (like Kimera) to track devices that could be considered "SLAM sources" (i.e., provide necessary sensor data for SLAM). In particular, it implements a fake device in the euroc driver that uses the Euroc datasets as its sensor data and, together with a custom fork of Kimera, can get tracked in Monado.
About the changes
- Introduces a SLAM tracking module similar to the PSMV/PSVR/hand tracking and other necessary additions to Monado.
- The SLAM implementation is provided from an external system that implements the
slam_tracker.hpp
header (below is a guide for using it with my fork of Kimera). - Introduces a fake device (HMD or controller) in the euroc driver that is tracked through the external SLAM system.
- This is a preliminary interface and will likely change in future contributions (e.g., there is no pose prediction given a timestamp, the device just gets the last predicted pose from a queue)
Reviewing
The code is almost in its final form but I need to figure out a better build setup, make it work with Meson, and fix a weird issue that is causing the service build to not work.
The comments with a TODO@mateosss
tag are things I will solve or remove for the final version; many of these comments include questions or ideas that if you have advice on, please comment on them.
Trying it out
For now, it works only with this fork of Kimera in which I implemented the slam_tracker
class, so you will need to build Kimera.
That is usually a tedious task so I wrote this guide that should work on Ubuntu 20.04, 21.04, and derivatives. You should mostly copy and paste the commands but be sure to read the comments I wrote because some of them require manual intervention.