IMU and Odometry fusing for Localisation

asked 2021-01-05 00:17:57 -0600

ihassnain gravatar image

updated 2022-07-02 08:18:23 -0600

lucasw gravatar image

Hi Everyone , I am very new to ROS , I am trying to fuse odometry and IMU data using robot localisation package , I am having errors in frames I think so follwoing is my yaml file parameters

map_frame: map              # Defaults to "map" if unspecified
odom_frame: calculated_odom # Defaults to "odom" if unspecified
base_link_frame: base_link  # Defaults to "base_link" if unspecified
world_frame: calculated_odom      # Defaults to the value of odom_frame if unspecified

odom0_config: [true,  true,  false,
               false, false, false,
               true, true , false,
               false, false, true,
               false, false, false]

imu0_config: [false, false, false,
              false , false, false,
              false , false , false,
              false , false , true,
              false , false , false ]

I have tested both odometry (encoder ) and fused odometry filtered ( IMU + encoder) data using square test and but there was only +-5 % error , which is acceptable

Problem : When skidding is happening filtering is not done with proper trust on correct data , is there any frame problem covariance problem ??

edit retag flag offensive close merge delete

Comments

1

The covariances would be interessting. I would use the imu vx, vy and yaw from odometry instead of vyaw, vx, vy. What kind of skidding are we talking about here. Like a car going sideways or just little slips, of single wheels now and then?

Dragonslayer gravatar image Dragonslayer  ( 2021-01-05 05:58:48 -0600 )edit

@ihassnain FYI do not have two different devices measure the same value. You have both your odom and IMU measuring the z rotation velocity. This is not suggested because when your filter receives conflicting measurements the filter will jitter. For any single state you should have only one measurement source.

JackB gravatar image JackB  ( 2021-01-06 09:21:32 -0600 )edit