Why so much spinning in place with move_base?
Hello,
I'm trying to tune move_base under fairly ideal circumstances so I did not think it would be this hard. I am using the arbotix_python base controller in "fake" mode which basically just moves the simulated robot exactly as it's told on /cmd_vel. So I am treating it as an "ideal" test case with no physics.
I then have a Python script that moves a simulated TurtleBot to the four corners of a 1 meter square on a blank map using the simple move_base action server.
I've run through the Navigation Tuning Guide and spent many hours of trial and error tweaking the various parameters using dynamic_reconfigure but I still can't figure out why the robot has such a tendency to spin in place before it gets to a goal even when there are no obstacles and I have the recovery and clearing behaviors disabled. The problem gets worse as I make the goal tolerances smaller--for example, setting the xy_goal_tolerance to 0.05 tends to guarantee spinning and often timing out before getting to the goal.
I'm wondering if others have figured out any secrets behind this spinning behavior. I'm also wondering if not having any real or simulated observation sources could be causing it?
I get the same results whether I use the latest Electric or Fuerte debian install under Ubuntu 11.10.
EDIT 1:
My navigation config files can be found here.
And the script that moves the robot in a square can be found here.
Thanks!
patrick
Could you post the navigation configs you are using?
@Eric Perko: Here is a link to all four config files:http://code.google.com/p/ros-by-example/source/browse/#svn%2Ftrunk%2Frbx_vol_1%2Frbx1_nav%2Fconfig%2Ffake
Also note that you should state in your config files which local planner to use explicitly. By default move_base will use trajectory_planner_ros, which is tweaked for the PR2 and has "hidden" recovery behaviors. Prefer to use the dwa_planner_ros.
Thanks @KruseT. I just now tried using dwa_planner_ros explicitly and got some crazy results--robot going all over the place instead of just hitting the corners of the square. However, using trajectory_planner_ros with parameter dwa set to True gives really nice results.
The parameters may be a bit different between trajecotry_planner_ros and dwa_planner_ros. Else both local planners are very similar (dwa_planner is something like trajectory_planner_ros 2.0).
I thought I had set the parameters correctly based on the Wiki page but I'll try again when I get a chance. In the meantime, does setting the dwa parameter to True do a similar job as using the dwa_planner directly?