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

robot_pose_ekf: combine amcl and visual landmarks

asked 2012-03-15 15:14:14 -0500

jorge gravatar image

updated 2012-03-18 13:52:59 -0500

Hello all,

I'm trying to use this package in our navigation system. We want to fuse odometry + amcl + visual landmarks for localization, but the current version of the package can only fuse two odometry sources. So here the first question:

a) Any clue on when will be ready the version that listen to 'n' sensor sources stated in the roadmap?

By now, I'm just fussing odometry and visual landmarks, and use the output as the odometry feed for amcl. The TF tree resulting is:

map ---> odom ---> footprint

 (amcl)   (ekf)

I find this solution quite ugly, as the ideal scenario would be robot_pose_ekf providing the only correction between map and odom.

But by now this is the only way I have found to fuse the three localization sources.

b) Any advice about how to do it better?

Thank you very much for your help.

edit retag flag offensive close merge delete


Did you find a solution for your problem? I'm trying to do similar task, fusing odometry data and landmark positions acquired by kinect.

maysamsh gravatar image maysamsh  ( 2013-11-05 23:20:45 -0500 )edit

yes, but I think your case is different. I did a module for fussing an arbitrary number of global localization sources, as amcl and landmarks. You ask for odom-landmarks fusion, but they provide complementary information, so navi stack combines, not fuse, them (amcl tf section explains this well)

jorge gravatar image jorge  ( 2013-11-06 03:29:43 -0500 )edit

Hi Jorge, how did you solve your problem? Is your code open? I also need to combine amcl and global localization markers.

Mehdi. gravatar image Mehdi.  ( 2015-08-06 04:25:53 -0500 )edit

Hi Mehdi, nop, unfortunatelly the code is not open. But it is not complicated, neither: just modify robot_pose_ekf to subscribe to global poses topics as the one published by amcl. Also, for the prediction step in the EKF filter, you should use the velocity measured by the odometry, but feel free

jorge gravatar image jorge  ( 2015-08-25 11:26:22 -0500 )edit

to explore different options.

jorge gravatar image jorge  ( 2015-08-25 11:27:05 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2012-03-16 08:06:15 -0500

Wim gravatar image

The robot pose ekf is meant to fuse continuous sources of odometry, where the assumption of Gaussian uncertainty is reasonable. The output of amcl does not fit this description: the output pose can arbitrary 'jump' to a new location when the localization module computes a new best guess for the robot pose. You should think through really well what you're actually trying to achieve when you merge all the sources you mention. Our approach has been to separate continuous odometry sources from discontinuous localization sources. You can read more about this in this REP.

edit flag offensive delete link more


Thank you for the answer (and the interesting REP). Looks like I'm forcing robot pose ekf to work in a different than designed situation. What I need is a different approach for fussing amcl and landmark localization independent of the odometry.

jorge gravatar image jorge  ( 2012-03-18 14:00:43 -0500 )edit

But even if it's not a neat solution, robot pose ekf seems to work as long as there are at least one continuous localization source, corrected only when visual landmarks are available. To make this work, I must set the sensor_timeout as low as possible, to minimize the time filter is waiting.

jorge gravatar image jorge  ( 2012-03-18 15:30:12 -0500 )edit

answered 2012-03-15 15:22:00 -0500

Kevin gravatar image

You have access to the source code, fork it and feel free to pitch in and develop that capability.

edit flag offensive delete link more


Dead Link.

Mehdi. gravatar image Mehdi.  ( 2015-08-06 04:05:09 -0500 )edit

Question Tools



Asked: 2012-03-15 15:14:14 -0500

Seen: 1,808 times

Last updated: Mar 18 '12