ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Hi all,
I am quite new to ROS but, as Lorenzo, I am interested in understanding a bit better how the AMCL localization algorithm works. I my case have some difficulties in ensuring that odometry integral will be with zero mean (on the position estimation).
When the robot motion properties change (cause of floor properties or payload change), it is common to register some a slips in the wheels that introduce a constant error on the subsequent odometry localization. These effects are unknown and cannot be compensated ahead.
Therefore, even if there will be an approximate zero mean error on the velocity estimation (differential cinematics), for me it is nearly impossible to warrant that the drift will be removed from the odometry integration.
In similar localization problems (e.g Extended Kalman filters), the filter is aware that odometry information is only providing differential motions information (+errors) and is robust enough to remove small drifts caused by the numerical integration.
I have tried to give a look to the AMCL source code. Probably I am wrong, but it seems to me that there are two differences with the estimation approach is used in other probabilistic estimators:
the error is propagated only on the absolute 'clean' position-odometry and not reiterated on previous position correction (therefore the algorithm assumes only small position drifts with no velocity drifts).
The posture compensation is only refined when the robot moves, thus not using regular laser information which are available also when the robot stand still.
Finally I tried to make some changes to the code for making some debug, but in my case (ROS-Diamond version, Ubuntu 11.10) the code does not compile from the sources (I got some syntax errors).
Thank you for your help C.Alberto