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

how to use robot_pose_ekf module to improve odom data and use that to produce better maps.

asked 2016-07-27 22:58:04 -0600

krishna43 gravatar image

updated 2016-07-27 23:00:33 -0600


I am working on building maps of my office ( which is think is around 100 * 100 mts) . I using this tutorial for gmapping. This is the procedure i follow to create the map.

1) I run the robot in a loop ( around a huge rectangular cubical). I wrote a simple obstacle avoidance code in python for this. I am not teleoperating it.

2) i save /tf and Laserscan data in a bag file.

3) Once i collect the data, i follow above tutorial to build the map from logged data.

This is the map i got: C:\fakepath\1.png

Which you can see is a very bad map.

I can visualize in Rviz that the odometry drifts the more the run the robot around.

So i thought of using robot_pose_ekf tutorial to improve odometry. I include the follow command in my launch file:

<include file="$(find robot_pose_ekf)/robot_pose_ekf.launch"/>

To check whether it's working correctly or not, i run the following command:

rosservice call robot_pose_ekf/get_status

which gives me the following output:

status: Input:

  • Odometry sensor
    • is active
    • received 5678 messages
    • listens to topic /odom
  • IMU sensor
    • is active
    • received 4567 messages
    • listens to topic /mobile_base/sensors/imu_data
  • Visual Odometry sensor
    • is NOT active
    • received 0 messages
    • listens to topic /vo Output:
  • Robot pose ekf filter
    • is active
    • sent 4675 messages
    • pulishes on topics /robot_pose_ekf/odom_combined and /tf

I changed the odom and imu data topics it is listening to after follwoing some tutorials. It seems like it is getting imu data and odom data.

while i am running the robot around i also save /robot_pose_ekf/odom_combined data. And i plotted both odom and odom_combined data, which you can see below. As you can see their is no difference in both, blue is odom and red is odom_combined.


Also in robot_pose_ekf tutorials it is said that it will provide a tf between odom_combined → base_footprint, but when i run the following command and see the tf tree i cannot find any tf between odom_combined → base_footprint

rosrun tf view frames

C:\fakepath\Screenshot from 2016-07-27 20:54:35.png

These are my question:

1) how can i correctly use robot_pose_ekf module to improve odom data?

2) and how can i get the tf between odom_combined → base_footprint?

3) How can i use this information to improve results of gmapping?

Can anyone please help me?

Thanks a ton

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2016-08-24 13:56:16 -0600

krishna43 gravatar image

I was able to use the robot_pose_ekf package by following these two questions:



edit flag offensive delete link more

Question Tools

1 follower


Asked: 2016-07-27 22:58:04 -0600

Seen: 3,000 times

Last updated: Aug 24 '16