Rosanswers logo

I'm currently attempting to fine-tune an instance of (ekf) robot_localization using gps and single imu devices. In doing so, the diagnostic topic lists:

    level: 1
    name: ekf_localization: Filter diagnostic updater
    message: Potentially erroneous data or settings detected for a robot_localization state estimation node.
    hardware_id: none
        key: imu0_pose_covariance
        value: The covariance at position (35), which corresponds to YAW variance, was zero. This will be replaced with a small value to maintain filter stability, but should be corrected at the message origin node.

The location of “position (35)” YAW covariance eludes me in attempting to revise the value. I've searched all the code for robot_localization and the code for the Phidgets 1044 imu to no avail. The ekf_localization launch file initial covariance is set (currently at a non-zero value of 0.035). The "message origin node" is the elusive part.

Aside from the ekf_localization initial_estimate_covariance, is there anywhere left to look for modification?

Thanks in advance for any insight.


Originally posted by b2256 on ROS Answers with karma: 162 on 2016-05-08

Post score: 0


1 Answer 1


Rosanswers logo

It's complaining about your IMU messages, not your r_l configuration. Do a rostopic echo on your IMU data, and I'm guessing you'll find that the value in the last index of your orientation covariance is 0.

Originally posted by Tom Moore with karma: 13689 on 2016-05-08

This answer was ACCEPTED on the original site

Post score: 1

Original comments

Comment by b2256 on 2016-05-08:
Yes, it appears that you're correct as all the orientation_covariances are zero at this timestamp. It is still unclear where to modify this value? Any advice?

Comment by Tom Moore on 2016-05-08:
Which ROS package are you using for the IMU?

Comment by b2256 on 2016-05-09:
I'm using the ROS driver phidgets_imu by Ivan Dryanovski.

Comment by Tom Moore on 2016-05-09:
That driver doesn't appear to support orientation. I think it only gives angular velocity, linear acceleration, and raw mag data. You need to use another IMU filter like imu_filter_madgwick to get the orientation data, then feed that topic into r_l.

Comment by b2256 on 2016-05-11:
It turns out that I was using imu_filter _madgwick indirectly. An earlier answer by Tom mentioned using dynamic_reconfigure with this driver; that was successful. Thank you as always.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.