MIT-SPARK / Kimera-VIO

Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
BSD 2-Clause "Simplified" License
1.56k stars 418 forks source link

Kimera MonoImuPipeline drift on Realsense D455 #170

Closed mateosss closed 1 year ago

mateosss commented 3 years ago

Hello, I'm trying to use Kimera mono-inertial with a Realsense D455 using the left infrared camera 640x360 15fps. While the rotations seem to be properly reflected the trajectory ends up drifting a lot.

Here is an example of the problem as a EuRoC-formatted dataset, it was run with these parameter files. It should be enough to modify DATASET_PATH and PARAMS_PATH in stereoVIOEuroc.bash to run the dataset. In any case here is a video of the problem (though with some delay between frames to better see the problem).

Do you have any idea what the cause of the drift could be? This happens without any modifications to Kimera.

Versions used:

mateosss commented 3 years ago

Just an update that might be useful. I noticed my D455 accelerometer gravity is a bit different on each axis.

+X ~= 9.81, -X ~= 9.80
+Y ~= 9.79, -Y ~= 9.84
+Z ~= 9.97, -Z ~= 9.62

Could that difference between the axes' gravity values (mainly the Z-axis) be causing this drift?

duda1202 commented 2 years ago

Were you able to tune it properly? I am having the same issue trying to use the MonoImu pipeline. Even with EurocMono on the euroc dataset, it drifts rapidly.

mateosss commented 2 years ago

No, not really. After a while I moved on to other systems, I figured Kimera's strengths are not on the tracking aspect.

ORB-SLAM3 has pretty nice features including monocular tracking, but it's very unstable.

Basalt proved to be pretty good for stereo VIO and also has a permissive license. Although it doesn't support monocular tracking out of the box (there is this fork of Basalt that is monocular though).

For monocular tracking, DM-VIO looks amazing on paper, but I haven't had the time to try it out. And it's GPL.

zgxsin commented 2 years ago

No, not really. After a while I moved on to other systems, I figured Kimera's strengths are not on the tracking aspect.

ORB-SLAM3 has pretty nice features including monocular tracking, but it's very unstable.

Basalt proved to be pretty good for stereo VIO and also has a permissive license. Although it doesn't support monocular tracking out of the box (there is this fork of Basalt that is monocular though).

For monocular tracking, DM-VIO looks amazing on paper, but I haven't had the time to try it out. And it's GPL.

Did you try openvins/vins_mono? It has nice results. But the license is GPL

mateosss commented 2 years ago

No, I did not, mainly for its license, but it looked pretty good and well documented. I think ILLIXR was able to use it for VR tracking successfully.

marcusabate commented 2 years ago

If you are using IMU this could be caused by the imu interpolation. We're pushing an update soon that should fix this. If you want the fix quickly, change this line from getImuDataInterpolatedUpperBorder to getImuDataInterpolatedBorders. With this change I can run mono very effectively using Kimera.

If it doesn't work I'm happy to help further. I can say that Vins-Fusion does perfom well in the mono configuration as well.

mateosss commented 2 years ago

Thanks for the update @marcusabate I'll be sure to try it out at some point and update this issue. If I can't make it should be verifiable with just the files provided in the description.

wolfcanli commented 1 year ago

Thanks for the update @marcusabate I'll be sure to try it out at some point and update this issue. If I can't make it should be verifiable with just the files provided in the description.

Hi, any good news for mono-imu mode? Thank you.

marcusabate commented 1 year ago

This should be resolved in the feature/prerelease branch, where we've included the necessary update. Let me know if this is still an issue. Closing for now because this is an old issue but feel free to reopen.