Preventing large jumps in AMCL

asked 2018-09-25 23:10:06 -0500

Omegastick gravatar image

updated 2018-09-26 01:08:41 -0500

mgruhler gravatar image

When using AMCL, if some large obstacle (e.g. a trolley) passes close to my robot, interfering with the sensor data, AMCL tries to localise the robot and places it in vastly different location (often inside a wall). It also does this when first starting AMCL, before the robot's initial pose has been set, making specifying a pose difficult.

Is there any way to tell AMCL that the robot's odometry is more-or-less accurate, and to only make small (less than 1m) adjustments to the robot's position?

edit retag flag offensive close merge delete


You must go deep by changing the source code of AMCL

achmad_fathoni gravatar image achmad_fathoni  ( 2018-09-26 00:45:17 -0500 )edit

Please don't do that. Go to the amcl wiki page instead to see all the paramaters available and try to set them according to your needs.

Delb gravatar image Delb  ( 2018-09-26 01:06:59 -0500 )edit

Your issue probably comes from a misconfiguration of AMCL. I guess that you set the AMCL initial pose params to a different value than the actual one. Can you describe what nodes are you launching exactly and what is your current amcl configuration ?

Delb gravatar image Delb  ( 2018-09-26 01:10:23 -0500 )edit

I've looked at the parameters but I don't see any that look like they'll help with this problem. Currently, I don't know the robot's starting position until after I've loaded the map in Rviz, so I'm leaving the AMCL intial_pose parameters at 0 and using Rviz to set the intial pose.

Omegastick gravatar image Omegastick  ( 2018-09-26 04:21:15 -0500 )edit

Nodes I'm running: robot's base controller, amcl, map_server, move_base (and move_base's required pathing nodes).

I guess what I'm trying to tell AMCL is that sometimes the laser scan's are going to be very wrong for a long period of time, and to ignore them if they imply a very large jump.

Omegastick gravatar image Omegastick  ( 2018-09-26 04:23:53 -0500 )edit