Add Euroc driver for SLAM dataset evaluation
About the driver
This driver reads datasets in the EuRoC format, which are a mix of image sequences, IMU samples, and optionally calibration data and ground-truth data. It is intended for the evaluation of SLAM systems.
Some peculiarities of this MR:
- It adds a new datatype
xrt_imu_sample
in a414ea2f instead of reusingxrt_tracking_sample
as it:- Uses
double
s. - Does not assume units.
- Has the timestamp (using a sample without a timestamp seems unlikely).
- Uses
- It adds an
xrt_imu_sink
interface in cbb606a6 This interface together withxrt_imu_sample
seem to nicely fit in thexrt_tracked_{psmv, psvr}
interfaces, so I added@todo
comments to use them. - While the
euroc_player
implementsxrt_fs
, it doesn't perfectly fit on it. One of the reasons is the many playback knobs that can be tuned. Soxrt_fs_stream_start
works more like an initialization, while the user is who starts the stream from the debug UI. Similarly, only onexrt_fs_mode
is exposed. - This is using two image sinks instead of one sink with stereo. This is mainly due to the SLAM systems I've tried not receiving one big stereo frame, but having two separate queues for left and right frames instead.
- The driver is mostly written in C style but using some C++ std features.
- I had to do some macro conditions in the
p_tracking.c
andp_prober.c
files. I couldn't find a better place to start the driver.
How it might be improved
- I'm not using the ground truth or calibration data the dataset could be providing.
- It is relatively easy to capture datasets in this format, I have that working here and might open a MR for it in the future.