Robotics StackExchange | Archived questions

Covariance is growing unbounded in robot_localization

Hi, I'm building a custom robot (3 wheel, differential drive). It has an IMU, reporting acceleration, angular velocity and magnetic field; wheels encoders that reports wheels velocities; a GPS reporting position. I'm running two instance of RL, the first one for odm->base_link use imu and wheel encoders:

 odom0: /chori/odom
  odom0_config: [false, false, false,
                 false, false, false,
                 true,  true,  false,  #true,  true,  true,
                 false, false, false,
                 false, false, false]
  odom0_queue_size: 10
  odom0_nodelay: true
  odom0_differential: false
  odom0_relative: false

# imu configure:
  imu0: /imu/data
  imu0_config: [false, false, false,    # x, y, z,
                false, false,  true,    # roll, pitch, yaw
                false, false, false,    # vx, vy, vz
                false, false,  true,   # vroll, vpitch, vyaw
                true,  false,  false]    # ax, ay, az  
  imu0_nodelay: false
  imu0_differential: false
  imu0_relative: false
  imu0_queue_size: 10

I just trust on encoders velocities, the yaw (imufiltermadwick), the v_yaw (giroscope) and linear acceleration in X axis.

Then I have the second instance tha use the same sensors but adds the gps published by the navsta_transform node.

I have two main odometry messages, /odometry/filtered and /odometry/filteredmap . The second one reporting map->baselink odometry. I was expecting that map->base_link message have a bounded value in their covariance because of the GPS. But it's not. Position covariance slowly grow unbounded. I'm wondering why is that?

thank and best regards

Asked by elgarbe on 2022-09-14 12:59:20 UTC

Comments

Please include your full configuration for both EKFs and navsat_transform_node, as well as a sample message from each sensor input.

Asked by Tom Moore on 2023-03-09 09:45:27 UTC

Answers