UZ-SLAMLab / ORB_SLAM3

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
GNU General Public License v3.0
6.67k stars 2.57k forks source link

IMU data type and reference frame: free or apparent acceleration? #948

Open elisaaferraraa opened 3 days ago

elisaaferraraa commented 3 days ago

IMU Data Interpretation and ORB-SLAM3 Initialization Issue

Hello,

I am struggling to understand what the algorithm (and the calibration tool Kalibr) expects as "IMU data."

I am using ORB-SLAM3 with a monocular camera and an IMU. However, I am having trouble passing the IMU initialization stage. I have already tried many suggestions, such as checking/aligning timestamp synchronization, initializing the IMU with large movements and rotations, ...but without success.

My concern now is whether the IMU data (i.e., orientation, angular_velocity, linear_acceleration, and their respective covariances) are being correctly interpreted. Specifically, I am using:
Pixhawk 6X which in my Rev has ICM-20649, ICM-42688-P, ICM-42670-P IMUs

I obtain the following data when transfered to ROS (which uses NED FRD to ENU FLU):

  1. Orientation: Provided as a quaternion in the ENU (East-North-Up) coordinate frame.
  2. Angular velocity: Provided in the FLU (Front-Left-Up) coordinate frame.
  3. Linear acceleration: Represents the real acceleration of the drone (not apparent acceleration), and includes gravity as an apparent acceleration. It is again FLU.

Observed Behavior of Linear Acceleration

The behavior of the linear acceleration concerns me the most. Here are some key values I observe:

My Interpretation

To me, this behavior suggests that the linear acceleration reflects the movement of the internal IMU mass, inverted. This means the acceleration is reported in the opposite direction to the actual movement. It seems there is already some compensation applied to extract the real acceleration, not the apparent one.

However, gravity is included as an apparent acceleration in this data, which confuses me. While the acceleration due to motion is apparent and should be inverted to obtain the real acceleration of the object, gravity is not apparent. Apart from the interpretation, what truly matters to me are the following practical questions:

Questions

  1. Is this behavior the standard way IMUs output their data?
  2. Is this the format that ORB-SLAM3 and Kalibr expect for IMU input?