ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

GradStudent's profile - activity

2017-11-02 10:14:35 -0500 received badge  Famous Question (source)
2017-05-08 12:08:12 -0500 received badge  Notable Question (source)
2017-04-11 04:09:39 -0500 received badge  Popular Question (source)
2017-04-04 23:46:14 -0500 asked a question Robot localization Package parameters

Hello all, I am pretty new to ROS and working on a two wheeled differential drive self balancing robot. The drivers seem to be working alright. I have an issue syncing the external IMU heading with the Odometry topic heading. So I am using the ekf_filter in robot localization to fuse them to create a new topic which I want to use as the odometry topic for navigation purposes.

This is the configuration of the ekf:

#frequency at which a position estimate is output to ros. Defaults to 30 Hz if not specified frequency: 50.0

the minimum time at which the robot has to receive messages

sensor_timeout: 1 # default 1 second

If set to true, two_d_mode will only take x and y readings from the laser point cloud to estimate position,

that is z readings are disregarded. Roll and yaw are disregarded as well. If set to false, all points from

the laser point cloud are used to estimate position. 3D is more useful to detect different levels of position

in the ground, while 2d while only create a planar x and y view.

two_d_mode: true

Frames in which the robot operate. You do not want to change any of these at all!

odom_frame: odom base_link_frame: segway/base_link world_frame: odom

Assign ros topics for the odometry and imu

odom0: /segway/feedback/wheel_odometry imu0: /segway/feedback/ext_imu

The config matrices define which components are used to estimate the robot's position in the map. the matrices

components are in the order of x,y,z,roll,pitch,way,vel x, vel y, vel z, vel roll, vel pitch, vel yaw, acc x,

acc y, acc z. Keep X and Y in the odom_config matrix set to true at all times, otherwise, robot localization will

fail misserably. IMU_config does not need any changes.

odom0_config: [true, true, false, false, false, false, true, true, true, false, false, true, false, false, false] # originally x,y,z,yaw=true

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

set IMU to differential mode. Set this to true if different components (IMU, odometry, gps) are integrated

to estimate position. Set to false if navsat is used.

imu0_differential: true

Queue size when information is retrieved at the frequency rate set before

odom0_queue_size: 10 imu0_queue_size: 10

Again, the issue is there is an offset between the IMU's heading and the Odometry Heading. I want to know if there is a parameter that I can use to say that I want the heading from the filter to be more related to the IMU which has a magnetic truth.

I have seen material on how there is a parameter for "relative". Already tried using that and didnt work. Looking for input. ideas. literature on correcting imu and odometry heading offsets etc.

@Tom Moore