Ask Your Question

Navigation Stack, AMCL or EKF

asked 2014-08-22 17:09:31 -0500

ROSCMBOT gravatar image

According to ROS wiki:

"amcl takes in a laser-based map, laser scans, and transform messages, and outputs pose estimates."

"The Robot Pose EKF package is used to estimate the 3D pose of a robot, based on (partial) pose measurements coming from different sources. It uses an extended Kalman filter with a 6D model (3D position and 3D orientation) to combine measurements from wheel odometry, IMU sensor and visual odometry."

What I understand from the descriptions of these two localization algorithms is that amcl only works with laser data and ekf works only with odometry sources (wheel encoder, IMU, visual odometry). Is this a correct interpretation?

and how can I switch between amcl and ekf in the navigation stack?


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-08-22 17:21:28 -0500

paulbovbel gravatar image

You would use ekf_robot_pose (or the newer more flexible robot_localization) package to fuse together odometry data such as with wheel odometry, imu, gps, etc

Then you would use amcl to compensate for drift in the odometry by estimating pose in relation to your static map (/odom->/map tf).

edit flag offensive delete link more


Thanks. So can we say ekf_robot_pose localizes the robot using odomtery sources, and amcl complements it using laser/camera data? and in the navigation stack, is amcl using ekf_robot_pose automatically?

ROSCMBOT gravatar image ROSCMBOT  ( 2014-08-22 17:44:58 -0500 )edit

ekf_robot_pose fuses the sensor data using an extended kalman filter. this result is then used as a better-than-just-wheel-odometry data source to aid in localization.

paulbovbel gravatar image paulbovbel  ( 2014-08-22 18:39:55 -0500 )edit

@paulbovel, what to do in the case I only use visual odometry and need amcl to output odom->map/world

creative_cimmons gravatar image creative_cimmons  ( 2015-07-01 17:19:00 -0500 )edit

@paulbovbel, What If I used ekf_localization_node + amcl? Wouldnt it do the same thing? Fuse data in EKF node and then provide it to AMCL one?

murdock gravatar image murdock  ( 2016-05-15 10:54:52 -0500 )edit

@murdock, that's exactly what I outlined above.

paulbovbel gravatar image paulbovbel  ( 2016-05-16 17:39:06 -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



Asked: 2014-08-22 17:09:31 -0500

Seen: 2,548 times

Last updated: Aug 22 '14