0
$\begingroup$

Rosanswers logo

I'm fusing the wheel odom and imu on the Husky, with robot_localization's UKF. What I'm wondering is the following:

I don't really want to rely on the magnetometer output for bounding yaw from the IMU, but I also don't want to orient my yaw around my wheel encoder yaw. So, I'd like to just fuse both as angular velocities, and let it slowly drift with gyro bias.

However, when I do this (fuse YawRate from odom, YawRate from IMU) the covariance for YawYaw (/odometry/filtered/pose/covariance[35]) grows slowly. After a few hours, it will be very large.

Is this a significant issue? I assume the filter will become unstable (I'm using the UKF currently). Thus, do I have to fuse an absolute yaw from somewhere in order to keep the filter stable?

As a side note, the covariance for ZZ is also growing (/odometry/filtered/pose/covariance[14]), but I don't think that matters as much.


Originally posted by zlacelle on ROS Answers with karma: 30 on 2018-04-17

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

It’s not really an issue, unless you suddenly give the filter an absolute yaw measurement after the covariance grows. But it’s the intended/expected behavior. If you are just fusing velocities, you are integrating those velocities over time. Likewise, you will integrate their errors.

As you said, you will experience drift. That drift is represented by the ever-increasing covariance.

If the Z variance is also growing without bound, then you must be fusing Z velocity from a data source. You can always set two_d_mode to true, which will fix all 3D variables to 0.


Originally posted by Tom Moore with karma: 13689 on 2018-04-19

This answer was ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

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