Ask Your Question
0

robot_localization odom and map drifts

asked 2017-07-14 07:16:26 -0500

Ubicray gravatar image

updated 2017-07-14 07:17:09 -0500

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/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

edit retag flag offensive close merge delete

Comments

1

Can you try without fusing acceleration data? Edit: Does your robot have no wheel odometry?

Humpelstilzchen gravatar imageHumpelstilzchen ( 2017-07-16 12:32:34 -0500 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2017-07-14 08:32:23 -0500

orko gravatar image

I guess you should fuse all the in one robot_localization node although it is hard to understand from the video. Next time, you may paste warnings from terminal or log file.

The problem can be related with your param files when you declare world_frame different. I think setting world_frame as "odom" solves it. Additionally, trying to fuse more variables if applicable.

edit flag offensive delete link more

Comments

I'm getting the same problem when I fuse it all in the same node Tried with the world frame set to odom as well, doesn't change it

Ubicray gravatar imageUbicray ( 2017-07-18 01:57:40 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2017-07-14 07:16:26 -0500

Seen: 508 times

Last updated: Jul 14 '17