Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IMU samples using unite_imu_method are not suitable for visual slam to work well #2221

Open
amburkoff opened this issue Jan 14, 2022 · 7 comments

Comments

@amburkoff
Copy link

We encountered the problem of missing IMU frames and their unstable frequency with the option unite_imu_method:=linear_interpolation .
There is a ticket #898 which talks about this problem, but apparently it has not been resolved.

I will add more details to the purpose of using the IMU. We want to run visual SLAM algorithms on the D455. But we have encountered the fact that they generally do not work well or do not work at all on IMU data from the D455 camera. At the same time, we carried out tests on the ZED2 camera and all the SLAM algorithms work well on it, since there the IMU data arrives at a stable frequency of 400hz, the gyroscope and accelerometer data are synchronized or embedded (the manufacturer does not specify this or I did not figure it out), The IMU has low noise performance.

It is also desirable that the IMU data be synchronized with the images.

I looked at the update on orbslam3 there appeared an example using realsense d435i https://github.com/UZ-SLAMLab/ORB_SLAM3/blob/master/Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc and instructions for calibrating https://github.com/ UZ-SLAMLab/ORB_SLAM3/blob/master/Calibration_Tutorial.pdf Reading the source code, you can see that they read raw data from gyro and accel and then interpolate themselves.

We used this script to independently interpolate the d455 accelerometer and gyroscope data
https://drive.google.com/file/d/1PC43g8aFK7epY6PMj1HA3fQ6BjKYiKhg/view?usp=sharing

Linear interpolate of realsense: https://youtu.be/jBJGDNUjw1o
Offline interpolate scripts: https://youtu.be/3nH_XpLUstQ
We can see that add the end of corridor, when visual tracking, the "linear interp" IMU behavior badly same for later lost tracking, on the contrast, the IMU with "offiline interp", the tracking looks smoothly and give the reasonable trajectory when visual was lost.

It follows from this that we need the normal operation of the unite_imu_method:=linear_interpolation method for the visual slam to work

@makolele12
Copy link

@amburkoff I've got the same issue while using the D435i with ORB_SLAM3 as well. Which offline interpolation script did you use?

@amburkoff
Copy link
Author

@amburkoff I've got the same issue while using the D435i with ORB_SLAM3 as well. Which offline interpolation script did you use?
https://drive.google.com/file/d/1PC43g8aFK7epY6PMj1HA3fQ6BjKYiKhg/view?usp=sharing

@RealSenseCustomerSupport
Copy link
Collaborator


#898 (comment)
@amburkoff, would the IMU frame drop persist, or perhaps improved, when using a different host platform as @doronhi had suggested?
Thank you.

@amburkoff
Copy link
Author

amburkoff commented Jan 18, 2022

@amburkoff, would the IMU frame drop persist, or perhaps improved, when using a different host platform as @doronhi had suggested?
Thank you.
@RealSenseCustomerSupport
IMU frames drop persist on three types of PC:
zotac MAGNUS EN072080S, jetson xavier,
Notebook ASUS ROG STRIX
Intel Core i7-10875H
NVIDIA GeForce 2070 Super
16 Gb
Ubuntu 20.04
realsense-ros 2.3.2
librealsense v2.50.0

@RealSenseCustomerSupport
Copy link
Collaborator


@amburkoff, thank you for your input that the issue is shown on different host systems.
Could switching from linear_interpolation to "copy" method provide a workable and reliable way to mitigate imu frame drop issue?

@amburkoff
Copy link
Author

@RealSenseCustomerSupport
Yes, it improves getting IMU frames. But the copy method does not suit us, because it degrades the accuracy of the data, which impairs the performance of the SLAM algorithms.

@RealSenseCustomerSupport
Copy link
Collaborator


@amburkoff, thank you. I've tried and checked the performance of the D455 IMU frame drops on Intel NUC i7-7567U CPU @ 3.50GHz on our side.
Monitoring the the timestamps reported by the IMU, frame drops is about 1 event in ~15 seconds and 16 events in ~120 seconds. The rate of the frame drop is quite low in both cases.
The linear_interpolation is enabled and only one camera is running.

$ rs-enumerate-devices -s
Device Name                  Serial Number      Firmware Version
Intel RealSense D455          026222250227        05.13.00.50

Ubuntu/Kernel = Ubuntu 20.04.1 LTS / 5.4.0-42-generic
  <arg name="gyro_fps"            default="400"/>
  <arg name="accel_fps"          default="250"/>
  <arg name="enable_gyro"        default="true"/>
  <arg name="enable_accel"        default="true"/>
  <arg name="unite_imu_method"    default="linear_interpolation"/>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants