Skip to content

SLAM tracking

Mateo de Mayo requested to merge mateosss/monado:mateosss/slam into master

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

  1. Introduces a SLAM tracking module similar to the PSMV/PSVR/hand tracking and other necessary additions to Monado.
  2. 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).
  3. Introduces a fake device (HMD or controller) in the euroc driver that is tracked through the external SLAM system.
  4. 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.

Edited by Mateo de Mayo

Merge request reports