Ask Your Question

Robot_localization with simulated imu only

asked 2018-06-09 22:31:26 -0600

babazaroni gravatar image

updated 2018-06-10 09:53:07 -0600

As part of getting to know the robot_localization package, I sent simulated imu data of an object going around in a circle. The only values that were non-zero were the linear acceleration x and y, and the timestamp. The frame_id was set to "odom". All other values, including the covariance matrix were zero. However, no output was detected on /odometry/filtered. I expected the package would do the double integration to get a position. Is this the expected behavior?

The configureation for the ekf node follows:

frequency: 30
sensor_timeout: .5
two_d_mode: false
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
debug_out_file: /path/to/debug/file.txt
publish_tf: true
publish_acceleration: false

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

#odom0: example/odom
#odom1: example/another_odom
#pose0: example/pose
#twist0: example/twist

imu0: /imu/data
imu0_config: [false, false, false,
              true,  true,  true,
              false, false, false,
              true,  true,  true,
              true,  true,  true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: true
imu0_queue_size: 5
#imu0_pose_rejection_threshold: 0.8                 # Note the difference in parameter names
#imu0_twist_rejection_threshold: 0.8                #
#imu0_linear_acceleration_rejection_threshold: 0.8  #
imu0_remove_gravitational_acceleration: false
stamped_control: false
control_timeout: 0.2
control_config: [true, false, false, false, false, true]
acceleration_limits: [1.3, 0.0, 0.0, 0.0, 0.0, 3.4]
deceleration_limits: [1.3, 0.0, 0.0, 0.0, 0.0, 4.5]
acceleration_gains: [0.8, 0.0, 0.0, 0.0, 0.0, 0.9]
deceleration_gains: [1.0, 0.0, 0.0, 0.0, 0.0, 1.0]

#diagonal only values shown.  All others are zeros.
process_noise_covariance: [0.05, 0.05, 0.06, 0.03, 0.03, 0.06, 0.025, 0.025, 0.04, 0.01, 0.01, 0.02, 0.01, 0.01, 0.015]

#diagonal only values shown.  All others are zeros.
initial_estimate_covariance: [1e-9,  1e-9, 1e-9, 1e-9, 1e-9, 1e-9,1e-9, 1e-9, 1e-9, 1e-9,1e-9, 1e-9,  1e-9, 1e-9,  1e-9]
edit retag flag offensive close merge delete



The robot_localization package has several nodes, and they're all very configurable. Which nodes are you using, and how are they configured?

ahendrix gravatar image ahendrix  ( 2018-06-09 23:19:21 -0600 )edit

@ahendrix, I am using the EKF node. I have edited in the parameter file in the op.

babazaroni gravatar image babazaroni  ( 2018-06-10 09:53:09 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-06-10 11:17:39 -0600

babazaroni gravatar image

There was no output because a transform between "odom" and "base_link" was not specified. Setting the imu message frame_id to "base_link" fixed this issue.

edit flag offensive delete link more



Unless your IMU is really at the base_link of your robot, I would recommend to use a different value for frame_id of your IMU messages.

gvdhoorn gravatar image gvdhoorn  ( 2018-06-10 11:19:02 -0600 )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



Asked: 2018-06-09 22:31:26 -0600

Seen: 347 times

Last updated: Jun 10 '18