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

How to tune dwa_local_planner parameters

asked 2020-08-12 13:55:35 -0500

tbondar gravatar image

Hi, just wondering if anyone has a good method to tune the parameters of dwa_local_planner? My system basically works but many times motion is too slow and the robot seems to get stuck without any obvious reason. I would love to find out what the algorithm is doing when this is happening to be able to optimise its parameters. But I don't know how to peek inside to collect more information. Any ideas?

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2020-08-12 15:42:25 -0500

achille gravatar image

In no particular order:

  • test in simulation (even without physics, just in RViz). If you are observing similar behaviors in simulation, you know that the issue doesn't have to do with slip or other hardware related issues. It will also make it more repeatable and you can tune faster. This way you can start with the most simple scenario (straight line paths with no obstacles) and work your way up to see what is making it misbehave. Are narrow pathways getting in the way? Or does it work perfectly in simulation? If so, what is different with the real robot?
  • look at the code and wiki page and make sure you mostly understand how it works, or at least what all parameters do. Once you understand that, tuning becomes a bit easier, or you'll realize that dwa doesn't fit your situation and you want to switch to something like TEB (which has a LOT more tuning parameters)
  • visualize visualize visualize. Make sure you can see the paths it generates and how it compares to the global navFn paths. Visualize all costmaps and sensor data to see if it's seeing noisy data that aren't obstacles
  • Turn things on and off one by one: If you make values extreme, does it affect the specific behavior you're trying to solve? Use your intuition from 2) to do this. Use dynamic reconfigure for this rosrun rqt_reconfigure rqt_reconfigure
  • Turn off recovery behavior during debugging so the only behavior you're seeing comes from the controller.
  • Double check the physical values of your robot. How fast can it actually move, how much error is introduced when it does so?
  • Make sure your odometry is as good as it can be. This is often overlooked. I wrote an in-depth blog about that here
edit flag offensive delete link more

answered 2020-08-13 03:00:08 -0500

Thazz gravatar image

Take a look at Navigation Tuning Guide.

edit flag offensive delete link more

answered 2020-08-13 11:28:17 -0500

parzival gravatar image

First, read the wiki page for base local planner which is the dwa planner. If you want a deeper understanding, read Dynamic Window Approach by Fox et al.

Read Navigation tuning guide by Kaizhu Zheng as pointed by @Thazz

rosrun rqt_reconfigure rqt_reconfigure and start playing with the parameters and observing the behaviour of your robot.

This should do majority of the job.

If you face any problem search for related questions. You'll find a lot of pre-existing help with the topic

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-08-12 13:55:35 -0500

Seen: 569 times

Last updated: Aug 13 '20