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

DWA Implementation in ROS ?

asked 2020-05-25 03:02:29 -0600

Jerryt3204 gravatar image

hi, recently i'm using global planner(A*) and local planner(DWA). But there is one thing strange.

According to this official page:

global planner(A) send path to local planner(DWA), so can i say DWA is not implemented in its original way? In DWA's paper, DWA should calculate many path and give scores to these path then choose the highest one to go, but we just follow global planner(A)'s path?

I was confused by how they co-work in path-planning and obstacle avoidance. Could someone tell me? Thanks in advnce !

edit retag flag offensive close merge delete

4 Answers

Sort by ยป oldest newest most voted

answered 2021-07-25 12:28:09 -0600

fergs gravatar image

These two components do different things, and part of the confusion comes from the poor naming:

  1. The global_planner really is a planner. Inputs are a start pose and an end pose. The output is a path.
  2. The local_planner is really a controller (ROS2 actually properly renamed this!).The inputs are a path and the current robot pose. The output is base velocities (the controls for the base).
edit flag offensive delete link more

answered 2022-04-01 22:14:38 -0600

Yep, I do have same question. Due to the original dwa take the breaking distance into accout. But the ros dwa don`t have this function.

edit flag offensive delete link more

answered 2021-07-25 22:46:11 -0600

Better check out this page: And the source code for DWA: image description

A simple pipeline should be: A* send a path to DWA. DWA will generate a series of trajectories according to the params, velocities, vx, vy, vtheta samples, sim_time, etc.. then calculate the cost for each trajectory according to path_cost, goal_cost, occ_cost. In the end, find out the best trajectory.

DWA initializes with local costmap. local costmap contains map and sensor information.

edit flag offensive delete link more

answered 2021-07-18 05:49:21 -0600

Given the initial pose of the bot (say P1) and a goal pose (say P2), the global planner creates a path (global plan) from P1 to P2. This path is essentially an array (vector) of discrete points (poses) that can be followed by the bot to reach the goal (a.k.a P2).

The local planner computes the control inputs that need to be sent to the bot in order for it to keep tracking the global plan (provided by the global planner) while avoiding collisions with (dynamic) obstacles.

I hope that makes sense.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-05-25 03:02:29 -0600

Seen: 389 times

Last updated: Jul 25 '21