Ask Your Question
0

DWA local planner fails to produce path

asked 2017-11-22 09:02:44 -0600

Mobile_robot gravatar image

updated 2017-11-23 10:04:47 -0600

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,

RVIZ view

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
          robot_base_frame: base_link
          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  
                inflation_radius:     2.0  
                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
         robot_base_frame: base_link
         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
         inflation_radius: 0.5
         track_unknown_space: true
         combination_method: 1
         observation_sources: laser_scan_sensor
         laser_scan_sensor: {sensor_frame: laser ...
(more)
edit retag flag offensive close merge delete

Comments

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

Humpelstilzchen gravatar imageHumpelstilzchen ( 2017-11-23 02:15:54 -0600 )edit

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

Mobile_robot gravatar imageMobile_robot ( 2017-11-23 07:58:57 -0600 )edit

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

Humpelstilzchen gravatar imageHumpelstilzchen ( 2017-11-23 09:13:05 -0600 )edit

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

Mobile_robot gravatar imageMobile_robot ( 2017-11-23 10:05:54 -0600 )edit

Do you see anything on the cmd_vel topic?

Humpelstilzchen gravatar imageHumpelstilzchen ( 2017-11-24 02:16:48 -0600 )edit

3 Answers

Sort by ยป oldest newest most voted
1

answered 2017-11-23 10:53:17 -0600

rastaxe gravatar image

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.

edit flag offensive delete link more
1

answered 2017-11-23 09:51:34 -0600

IvanV gravatar image

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.

edit flag offensive delete link more

Comments

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

Mobile_robot gravatar imageMobile_robot ( 2017-11-23 10:07:30 -0600 )edit
1

answered 2017-11-28 09:35:11 -0600

mcarr gravatar image

updated 2017-11-28 09:35:26 -0600

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

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2017-11-22 09:02:44 -0600

Seen: 2,176 times

Last updated: Nov 28 '17