Ask Your Question

Revision history [back]

Very cool video. Thank you for sharing all the pertinent information.

Here is a link of Navigation Guide, please read when you have a chance as it explains steps to solve navigation problems in the future: https://kaiyuzheng.me/documents/navguide.pdf

From the video, it looks the obstacle is detected but the path generated is too close to the obstacle, so it ends up hitting the obstacle so I'd start by taking a look at your cost function.

The cost function used to score each trajectory is in the following form:

cost = path_distance_bias * (distance to path from the endpoint of the trajectory in meters) + goal_distance_bias * (distance to local goal from the endpoint of the trajectory in meters) + occdist_scale * (maximum obstacle cost along the trajectory in obstacle cost (0-254))

/path_distance_bias (double, default: 32.0)
The weighting for how much the controller should stay close to the path it was given

/goal_distance_bias (double, default: 24.0)
The weighting for how much the controller should attempt to reach its local goal, also controls speed

/occdist_scale (double, default: 0.01)
    The weighting for how much the controller should attempt to avoid obstacles

/forward_point_distance (double, default: 0.325)
    The distance from the center point of the robot to place an additional scoring point, in meters

/stop_time_buffer (double, default: 0.2)
    The amount of time that the robot must stop before a collision in order for a trajectory to be considered valid in seconds

/scaling_speed (double, default: 0.25)
    The absolute value of the velocity at which to start scaling the robot's footprint, in m/s

/max_scaling_factor (double, default: 0.2)
    The maximum factor to scale the robot's footprint by

/publish_cost_grid (bool, default: false)
        Whether or not to publish the cost grid that the planner will use when planning. When true, a sensor_msgs/PointCloud2 will be available on the

Source: http://wiki.ros.org/dwa_local_planner

In this case your occdist_scale is 0.00 so basically you are not adding weight to avoid obstacles.

Very cool video. Thank you for sharing all the pertinent information.

Here is a link of Navigation Guide, please read when you have a chance as it explains steps to solve navigation problems in the future: https://kaiyuzheng.me/documents/navguide.pdf

From the video, it looks the obstacle is detected but the path generated is too close to the obstacle, so it ends up hitting the obstacle so I'd start by taking a look at your cost function.

The cost function used to score each trajectory is in the following form:

cost = path_distance_bias * (distance to path from the endpoint of the trajectory in meters) + goal_distance_bias * (distance to local goal from the endpoint of the trajectory in meters) + occdist_scale * (maximum obstacle cost along the trajectory in obstacle cost (0-254))

/path_distance_bias (double, default: 32.0)
The weighting for how much the controller should stay close to the path it was given

/goal_distance_bias (double, default: 24.0)
The weighting for how much the controller should attempt to reach its local goal, also controls speed

/occdist_scale (double, default: 0.01)
    The weighting for how much the controller should attempt to avoid obstacles

/forward_point_distance (double, default: 0.325)
    The distance from the center point of the robot to place an additional scoring point, in meters

/stop_time_buffer (double, default: 0.2)
    The amount of time that the robot must stop before a collision in order for a trajectory to be considered valid in seconds

/scaling_speed (double, default: 0.25)
    The absolute value of the velocity at which to start scaling the robot's footprint, in m/s

/max_scaling_factor (double, default: 0.2)
    The maximum factor to scale the robot's footprint by

/publish_cost_grid (bool, default: false)
        Whether or not to publish the cost grid that the planner will use when planning. When true, a sensor_msgs/PointCloud2 will be available on the

Source: http://wiki.ros.org/dwa_local_planner

In this case your occdist_scale is 0.00 so basically you are not adding weight to avoid obstacles.