ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Jackal odometry producing large covariances?

asked 2018-08-02 14:13:46 -0600

asabet gravatar image

updated 2018-08-02 14:54:23 -0600

I'm getting exploding covariance readings (along the diagonal) when echoing my /odometry/filtered topic on a jackal robot

header:    seq: 51936   stamp: 
    secs: 1533236107
    nsecs: 579915762   frame_id: "odom" child_frame_id: "base_link" pose:    pose: 
      x: -1.0615022635
      y: 0.781039664382
      z: 0.0574243827245
      x: -0.000565326105048
      y: 0.00129452020895
      z: -0.722981516966
      w: 0.690865928201   covariance: [52.22660058406395,
2.36797290728725e-06, 1.0344690435191654e-05, -1.412923508928883e-37, -5.323328075794997e-37, -3.0325742350059946e-33, 2.3679729072872455e-06, 52.226580153537775, 4.630394046333056e-06, 6.415510432550216e-39, -1.52209745995386e-35, 1.378174221195611e-34, 1.0344690435191593e-05, 4.630394046333093e-06, 62.66584761441557, 2.4284539729416056e-39, 6.071418793042712e-33, -5.009970111481826e-38, -1.4129235089288823e-37, 6.415510432550213e-39, 2.4284539729415573e-39, 9.999974359129776e-10, 3.7247437261868537e-28, -2.646392184397966e-26, -5.323328075794997e-37, -1.5220974599538599e-35, 6.071418793042711e-33, 3.7247437261815377e-28, 9.999974359129776e-10, -1.0056936786572167e-25, -3.0325742350059946e-33, 1.3781742211956115e-34, -5.009970111481829e-38, -2.6463921843979677e-26, -1.0056936786572173e-25, 9.999987179531678e-10] twist:    twist: 
      x: -1.36494277252e-16
      y: 0.0
      z: 0.0
      x: 0.00114722208953
      y: -0.000894948616335
      z: -0.000156898909114   covariance: [0.0015009578520837957,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0015009578520837957, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0020931884517782426, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.21732790378605e-07, 8.251167061986038e-27, -4.2753698250399015e-24, 0.0, 0.0, 0.0, 8.251167062032128e-27, 1.21732790378605e-07, -1.3789888806793583e-24, 0.0, 0.0, 0.0, -4.275369825039899e-24, -1.3789888806793574e-24, 1.2178973261379077e-07].

What are ways of mitigating this?

edit retag flag offensive close merge delete


Can you please repost the output using the 101010 button to enable formatting vs using the " button (which is meant for quoting things)? It's difficult to read the output as is.

jayess gravatar image jayess  ( 2018-08-02 14:31:53 -0600 )edit

Done. Thoughts?

asabet gravatar image asabet  ( 2018-08-02 14:54:34 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-08-02 15:31:21 -0600

stevejp gravatar image

updated 2018-08-02 15:32:19 -0600

So the /odometry/filtered topic is being published by an instance of robot_localization. It is likely set up to fuse wheel velocities and measurements from the internal IMU (orientation). This means the EKF has no absolute x/y/z measurements, so it is expected that the covariance would increase over time. You'd need to fuse absolute x/y/z measurements into the EKF if you didn't want the covariance to explode.

edit flag offensive delete link more


Okay, how do I do that? Are you saying to use wifi or GPS? Also, my covariances explodes with very little movement, especially for the angular measurements. It basically starts out extremely uncertain and remains that way.

asabet gravatar image asabet  ( 2018-08-02 15:36:36 -0600 )edit

You can also feed it a pose from some sort of localization node, e.g., amcl. You are integrating velocities, so you will integrate their errors, too.

When the robot rotates, the linear covariances will grow much faster once the robot starts translating again. This is normal.

Tom Moore gravatar image Tom Moore  ( 2018-08-03 04:07:52 -0600 )edit

If you don't like the growth rate in the covariance, you can (a) decrease the covariance coming from your wheel encoders, and/or (b) decrease the process_noise_covariance for the robot's pose and velocity variables.

Tom Moore gravatar image Tom Moore  ( 2018-08-03 04:13:17 -0600 )edit

Are you saying I can just arbitrarily set to the encoder covariances and process_noise-covariance to what whatever I want? How would this reflect the actual uncertainty from those nodes?

asabet gravatar image asabet  ( 2018-08-03 14:38:08 -0600 )edit

Yes, you can. And it depends on your robot and your application. I am not familiar with how the wheel odom covariance was generted for the Jackal, nor how they tuned the process noise, but I'd be willing to bet that you can adjust the latter until you feel the covariance growth is realistic.

Tom Moore gravatar image Tom Moore  ( 2018-08-05 10:13:33 -0600 )edit

Question Tools

1 follower


Asked: 2018-08-02 14:13:46 -0600

Seen: 754 times

Last updated: Aug 02 '18