robot_localization odom and map drifts
Currently, I’m trying to fuse simulated gazebo GPS and IMU data to get localization to use with navigation stack I've tested the move_base with perfect odometry given by Gazebo skid steering plugin and there's no problem with that But when I'm using the fused data from robot_localization my odom and map frame drifts constantly when the robot moves, making it impossible for the planner to make decisions.
Here's a short video with the demonstration:
Here's the launch file used for localization:
<launch>
<rosparam command="load" file="$(find my_robot_localization)/params/my_localization_params.yaml" />
<node pkg="robot_localization" type="ukf_localization_node" name="ukf_se_odom" clear_params="true"/>
<node pkg="robot_localization" type="ukf_localization_node" name="ukf_se_map" clear_params="true">
<remap from="odometry/filtered" to="odometry/filtered_map"/>
</node>
<node pkg="robot_localization" type="navsat_transform_node" name="navsat_transform" clear_params="true">
<remap from="odometry/filtered" to="odometry/filtered_map"/>
</node>
</launch>
And the parameters for them:
ukf_se_odom:
publish_tf: true
frequency: 30
sensor_timeout: 0.1
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom
imu0: imu/data
imu0_config: [false, false, false,
false, false, true,
false, false, false,
true, true, true,
true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: false
imu0_queue_size: 10
imu0_remove_gravitational_acceleration: true
ukf_se_map:
frequency: 30
sensor_timeout: 0.1
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
publish_tf: true
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: map
odom0: odometry/gps
odom0_config: [true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom0_queue_size: 10
odom0_nodelay: true
odom0_differential: false
odom0_relative: false
imu0: imu/data
imu0_config: [false, false, false,
false, false, true,
false, false, false,
true, true, true,
true, true, true]
imu0_nodelay: true
imu0_differential: false
imu0_relative: false
imu0_queue_size: 10
imu0_remove_gravitational_acceleration: true
twist0: gps/vel/converted
twist0_config: [false, false, false,
false, false, false,
true, true, false,
false, false, false,
false, false, false]
twist0_nodelay: false
twist0_differential: false
twist0_relative: false
twist0_queue_size: 10
twist0_remove_gravitational_acceleration: true
use_control: false
navsat_transform:
frequency: 30
delay: 3.0
magnetic_declination_radians: 0.0429351 # For lat/long 55.944831, -3.186998
yaw_offset: 0.0 # IMU reads 0 facing magnetic north, not east 1.570796327
zero_altitude: false
broadcast_utm_transform: true
publish_filtered_gps: true
use_odometry_yaw: true
wait_for_datum: true
Let me know about any other data you might need and I'll be happy to provide. Thanks in advance
Can you try without fusing acceleration data? Edit: Does your robot have no wheel odometry?