Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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:

https://youtu.be/EZv2GhAg0SU

Here's the launch file used for localization:

<launch>

  <rosparam command="load" file="$(find my_robot_localization)/params/themis_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

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:

https://youtu.be/EZv2GhAg0SU

Here's the launch file used for localization:

<launch>

  <rosparam command="load" file="$(find my_robot_localization)/params/themis_localization_params.yaml" 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