How to detect amcl localization mistake
Hi, I want to localize my robot without the initial position is unknown. When I use amcl/global_localization service, the location found is usually incorrect. I want to detect this error and spread the points again until I found the correct spot. How can I do this?
Edit: To show what I am talking about; consider this image:
It is obvious that none of the rotation and position estimations matches with the laser scan. Estimation was good at first but it evolved to this (maybe i steer robot too fast). One possible solution came to my mind is to check this mismatch. I may take the PointCloud data from laser scan and do some image processing to match this data to map OccupancyGrid but I don't know how to do it (yet). I am also thinking to use this method to localize robot deterministically (then maybe publish under amcl initialpose topic).
Hi, I try to solve the same problem and this link seems interesting : https://github.com/dejanpan/snap_map_icp. The guy use a technique called ICP (Iterative Closest Point) to get a corrected pose and reset amcl particule distribution (I haven't tested)