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

State Estimation and Localization in Robot Navigation

asked 2014-09-04 20:00:25 -0600

ROSCMBOT gravatar image

updated 2014-09-04 20:15:17 -0600


I would like to ask the difference between a state estimator like robot_localization, or robot_pose_ekf and a localization package like amcl.

Can we say, a state estimator estimating (x, y, z, roll, pitch, yaw, and their respective velocities) is more general than a localization module which only estimates (x, y, z, roll, pitch, yaw)

Other than the fact that, robot_localization, or robot_pose_ekf are fusing odometry data from different sensors and amcl is using this data plus laser/camera data to localize the robot, and (x, y, z) in state estimators are relative to the initial position and global (relative to the map) in amcl


edit retag flag offensive close merge delete


I guess that the main difference would be a state estimator provides localization of the robot on a frame local to the robot (the origin of the odometry frame will depend on where the robot woke up) and a localization package such as amcl provides localization on a global frame.

Martin Peris gravatar image Martin Peris  ( 2014-09-04 20:50:59 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2014-09-05 09:58:46 -0600

Tom Moore gravatar image

I've always considered localization to be a special case of state estimation, but the state being estimated is the robot's pose and velocity.

As far as how each can be used, it's really up to you. Both robot_localization and robot_pose_ekf can fuse global position information, such as from a GPS or by using landmarks (providing you have a node that can generate a position estimate based on landmarks). They can also both fuse odometry data as estimated from a LIDAR, but again, you'd need a node that performs something like ICP on point cloud data and generates an odometry message. The main differences between the packages are that robot_localization can take in an arbitrary number of input sources and that it can integrate velocity data. The added flexibility does result in some extra legwork to set it up, however.

I should also point out that while robot_localization currently contains only one state estimation node (ekf_localization_node), the goal of the package is to eventually provide multiple state estimation nodes that vary in their approach (unscented Kalman filters, particle filters, graph-base techniques, etc.)

I am less familiar with amcl, but reading the wiki page, it looks likes it's using LIDAR to localize the robot in 2D against a map that is known a priori (someone correct me if this is wrong).

edit flag offensive delete link more


Thanks. regarding amcl, as I know it uses LIDAR data and odometry data published by robot_pose_ekf or robot_localization on /odom_combined to localize the robot on a given map.

ROSCMBOT gravatar image ROSCMBOT  ( 2014-09-05 13:04:56 -0600 )edit

answered 2014-09-05 04:15:49 -0600

bvbdort gravatar image

updated 2014-09-05 04:16:34 -0600

In ROS these 3 are different implementations. Main difference is methods based on EKF need initial guess and are unimodal but particle filter doesnt need initial guess and are multimodal

robot_localization -> 3D tacking based on Extended Kalman filter with mulitple sensors (multiple odom and multiple IMU..)and provide more functionality (i didnt use it)

robot_pose_ekf -> 3D tacking based on Extended Kalman filter fusing wheel odometry, IMU sensor and visual odometry. For tracking pose.

amcl -> 2D localization based on particle filter uses odometry and laser.

edit flag offensive delete link more


Thanks. Is there a difference between tracking and localizing a robot in the environment?

ROSCMBOT gravatar image ROSCMBOT  ( 2014-09-05 13:09:34 -0600 )edit

In localization you have to localize without initial guess and solving kidnapping problem (i.e in case if you lift the robot and place in other place it should recover). But in case of tracking, you need initial guess and need continuous tracking. In summary once you localize, you are just tracking

bvbdort gravatar image bvbdort  ( 2014-09-05 14:22:52 -0600 )edit

Question Tools



Asked: 2014-09-04 20:00:25 -0600

Seen: 4,138 times

Last updated: Sep 05 '14