# DWA local planner fails to produce path

Hi everybody,

As nobody answered to my last question, I re-ask this question cause I am completely blocked!

currently, I'm working on 2D navigation with ROS nav_stack and for this reason I'm using DWAL_local_planner. The DWA_local_planner works well but I'm facing an issue when I put an obstacle in its way (the obstacle is put in its global path before it starts to move). As you see in the following picture,

When the robot recognizes the obstacle, the DWA_local_planner is not able to produce a path as the following error and it stuck.

[ WARN] [1510564078.318379963, 78.707000000]: DWA planner failed to produce path.
[ INFO]  [1510564078.615916578,78.890000000]: Got new plan
[ WARN] [1510564078.683191056, 78.923000000]: DWA planner failed to produce path.
[ INFO] [1510564079.038445171, 79.090000000]: Got new plan
[ WARN] [1510564079.051915033, 79.128000000]: DWA planner failed to produce path.

I have already tried to solve this issue by changing the DWA_local_planner parameters like path_distance_bias, goal_distance_bias, forward_point_distance, sim_time etc. but still I the local planner does not avoid the obstacle.

Do you have any idea why it behaves like this? I would appreciate if you look at this @David Lu. Thanks in advance,

You can find below the navigation parameters

Launch file:

<launch> <master auto="start"/>

<node pkg="topic_tools" type="relay" name="cmd_vel_to_nav_vel_relay" args="/cmd_vel /navigation/velocity" />

<!--- Run move_base -->
<node respawn="false" pkg="move_base" type="move_base" name="move_base" output="screen">
<rosparam file="$(find mule)/conf/costmap_common_params.yaml" command="load" ns="global_costmap" /> <rosparam file="$(find mule)/conf/costmap_common_params.yaml" command="load" ns="local_costmap" />

<rosparam file="$(find mule)/conf/local_costmap_params.yaml" command="load" /> <rosparam file="$(find mule)/conf/global_costmap_params.yaml" command="load" />
<rosparam file="$(find mule)/conf/base_local_planner_params_simulation.yaml" command="load" /> <!--Default local planner --> <!--<param name="base_local_planner" value="base_local_planner/TrajectoryPlannerROS" /> --> <!--<param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /> --> <param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" /> <!--<param name="base_local_planner" value="eband_local_planner/EBandPlannerROS" /> --> <param name="controller_frequency" value="5.0" /> <!--<param name="base_global_planner" value="karto_global_planner/KartoGlobalPathPlanner"/>--> <param name="base_global_planner" value="global_planner/GlobalPlanner"/> <!--<param name="base_global_planner" value="sbpl_lattice_planner/SBPLLatticePlanner"/> --> <param name="SBPLLatticePlanner/primitive_filename" value="$(find mule)/conf/4mob_16.mprim" />
<param name="recovery_behavior_enabled" value="false"/>
<!--<rosparam param="recovery_behaviors"> [ { name: "backup_recovery", type: "backup_recovery_dwa/BackupRecovery" } ] </rosparam> -->
<!--<param name="recovery_behaviors" value="[]"/>-->
<param name="planner_patience" value="5.0"/>
<param name="controller_patience" value="15.0"/>
<param name="shutdown_costmaps" value="true"/>
<param name="oscillation_timeout" value="30.0"/>
<param name="oscillation_distance" value="0.4"/>
<param name="planner_frequency" value="0.0"/>
<param name="max_planning_retries" value="-1"/>
</node>

</launch>

global_costmap:

global_costmap:
global_frame: map
update_frequency: 1.0
track_unknown_space: true
static_map: true

transform_tolerance: 0.5

static_layer:
track_unknown_space: true
enabled:              true
map_topic:            "/map"

inflation_layer:
enabled:              true
cost_scaling_factor:  10
track_unknown_space: true

plugins:
- {name: static_layer,        type: "costmap_2d::StaticLayer"}
- {name: inflation_layer,     type: "costmap_2d::InflationLayer"}

Local_cost_map:

local_costmap:
global_frame: map
update_frequency: 5.0
publish_frequency: 1.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.02
transform_tolerance: 0.5 #0.5

obstacle_layer:
enabled: true
obstacle_range: 5.0
raytrace_range: 4.5
track_unknown_space: true
combination_method: 1
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: laser ...
edit retag close merge delete

Did you tried that with a smaller obstacle? Or by moving the obstacle more to the site?

( 2017-11-23 02:15:54 -0500 )edit

Thank you for your comment. Yes, I have tried different obstacle size with different position but nothing has been changed.

( 2017-11-23 07:58:57 -0500 )edit

Can you include a picture with both costmaps? (local & global)

( 2017-11-23 09:13:05 -0500 )edit

I have changed the figure by the one including the global_costmap.

( 2017-11-23 10:05:54 -0500 )edit

Do you see anything on the cmd_vel topic?

( 2017-11-24 02:16:48 -0500 )edit

Sort by » oldest newest most voted

I suggest to restart the navigation stack with default parameters first, and see what happens. Then, change only one param at time. For instance, try to reduce only the inflation radius with something very small (e.g. 0.2) just to see the behavior. I suggest also to use the Trajectory Rollout instead DWA, which was more suitable for me in certain situations.

more

I agree with rastaxe below. This stuff can be tricky to troubleshoot and the only way to do it is one parameter at a time.

From my brief look, your footprint looks pretty big - 1.45m x 0.8 m? Other things that come to mind are acceleration limits as mentioned above and inflation radius.

Good luck

more

Have you tried using different dynamic parameters? I'm thinking that acc_lim_th: 0.05 is just a too low angular acceleration to make hard turnings like the one required to avoid that obstacle.

more

Thanks a lot for your answer. Yes, actually I just tried with acc_lim_th: 0.4 but still I have the same problem.

( 2017-11-23 10:07:30 -0500 )edit