DWA Implementation in ROS ?
hi, recently i'm using global planner(A*) and local planner(DWA). But there is one thing strange.
According to this official page: http://wiki.ros.org/navigation/Tutorials/RobotSetup
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 !
Asked by Jerryt3204 on 2020-05-25 03:02:29 UTC
Answers
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.
Asked by skpro19 on 2021-07-18 05:49:21 UTC
Comments
These two components do different things, and part of the confusion comes from the poor naming:
- The global_planner really is a planner. Inputs are a start pose and an end pose. The output is a path.
- 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).
Asked by fergs on 2021-07-25 12:28:09 UTC
Comments
Better check out this page: http://wiki.ros.org/dwa_local_planner
And the source code for DWA: https://github.com/ros-planning/navigation/blob/noetic-devel/dwa_local_planner/src/dwa_planner.cpp
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.
Asked by tianb03 on 2021-07-25 22:46:11 UTC
Comments
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.
Asked by fatgenius on 2022-04-01 22:14:38 UTC
Comments