IMU data type and reference frame: free or apparent acceleration?
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):
- Orientation: Provided as a quaternion in the ENU (East-North-Up) coordinate frame.
- Angular velocity: Provided in the FLU (Front-Left-Up) coordinate frame.
- 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:
-
Flat IMU:
(x, y, z) = (0, 0, 9.81)m/s² -
Flat IMU accelerating forward:
Thexcomponent becomes positive; accelerating backward makes it negative. -
Flat IMU accelerating left:
Theycomponent becomes positive; accelerating right makes it negative. -
Steady IMU rolled positively (rotating about the x-axis):
Theyacceleration increases positively, and thezcomponent decreases. -
Steady IMU pitched positively (rotating about the y-axis):
Thexacceleration becomes negative, and thezcomponent decreases.
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
- Is this behavior the standard way IMUs output their data?
- Is this the format that ORB-SLAM3 and Kalibr expect for IMU input?
@elisaaferraraa are you solve?