Describe the bug
When the IMU gets a hard(er) hit (e.g. slapping it against a table), orientation accumulates some error which is then very slowly converging to the correct values. The convergence time is on the order of 30 seconds, and all the time in between, the reported orientation is wrong.
This was tested with a 3DM-CV7-AHRS running this ROS 2 driver (ROS Kilted). I tested it on two independent units, one table-top, and one integrated inside a robot.
To Reproduce
Steps to reproduce the behavior:
- Launch the node, i.e. in launch file with
<include file="$(find-pkg-share microstrain_inertial_driver)/launch/microstrain_launch.py"><arg name="params_file" value="...imu.yaml" /></include>
- The config file is listed below.
- Make slow changes of orientation -> everything is okay
- Make fast changes of orientation -> everything is okay
- Slap the IMU against a table several times in succession - there is some error accumulated in both roll and pitch, and this error shows extremely slow convergence.
Expected behavior
Hard hits should only have very time-limited effect on the absolute orientation.
Environment (please complete the following information):
- OS: Ubuntu 24.04
- Architecture: amd64
- ROS Version: kilted
- Version: 4.8.1
- Sensor(s): 3DM-CV7-AHRS
Modifications
No
Launch Parameters
imu.yaml
Additional context
A normal imu_filter_madgwick shows a much saner solution.
I've recorded a video of the problem and also a bag file, both are available at https://drive.google.com/drive/folders/1XHkVMp7_PIkJYf4jnwnpnZ8hjyirxryN?usp=drive_link . The video shows plotjuggler with 3 rows of roll/pitch angles: top row is /imu/data, medium us /ekf/imu/data, the bottom one is /imu/data_madg (i.e. the madgwick filter).
Describe the bug
When the IMU gets a hard(er) hit (e.g. slapping it against a table), orientation accumulates some error which is then very slowly converging to the correct values. The convergence time is on the order of 30 seconds, and all the time in between, the reported orientation is wrong.
This was tested with a 3DM-CV7-AHRS running this ROS 2 driver (ROS Kilted). I tested it on two independent units, one table-top, and one integrated inside a robot.
To Reproduce
Steps to reproduce the behavior:
<include file="$(find-pkg-share microstrain_inertial_driver)/launch/microstrain_launch.py"><arg name="params_file" value="...imu.yaml" /></include>Expected behavior
Hard hits should only have very time-limited effect on the absolute orientation.
Environment (please complete the following information):
Modifications
No
Launch Parameters
imu.yaml
Additional context
A normal imu_filter_madgwick shows a much saner solution.
I've recorded a video of the problem and also a bag file, both are available at https://drive.google.com/drive/folders/1XHkVMp7_PIkJYf4jnwnpnZ8hjyirxryN?usp=drive_link . The video shows plotjuggler with 3 rows of roll/pitch angles: top row is /imu/data, medium us /ekf/imu/data, the bottom one is /imu/data_madg (i.e. the madgwick filter).