DWA Local Planner - FontysAtWork/ESA-PROJ GitHub Wiki

We currently use the dwa_local_planner used in combination with the ROS navigation stack.

We’ve chosen to use the dwa_local_planner, there are several reasons for this. It is fairly well supported and kept up-to- date, is has support for holonomic type drives and in comparison to the trajectory_planner that was originally being used, it allows for more freedom of movement. This makes it possible to take full advantage of the omniwheels by driving backwards and sideways. From what we’ve read on the accuracy of this planner, it exceeds the trajectory_planner ROS Navigation Tuning Guide, 2016 and our own testing confirms this. See the movement research for this.

Configuration

Parameters

The following parameters differ from their defaults.

Robot Configuration Parameters

We changed acceleration and velocity limits because the KUKA robot overcurrents, when these were set to the defaults. We lowered these in an attempt to reduced this. If you're using a different robot you should try to change these to match the limits of your robot, however be keep in mind the fact that the values can't be too high, as the robot could be accelerating too fast to get accurate sensor data.

~<name>/acc_lim_x (double, 1.0)
The x acceleration limit of the robot in meters/sec^2

~<name>/acc_lim_y (double, 1.0)
The y acceleration limit of the robot in meters/sec^2

~<name>/acc_lim_th (double, 1.0)
The rotational acceleration limit of the robot in radians/sec^2

~<name>/max_vel_x (double, +0.4)
The maximum forward velocity allowed for the base in meters/sec

~<name>/min_vel_x (double, -0.4)
The minimum forward velocity allowed for the base in meters/sec. It is useful to specify this to guarantee that velocity commands sent to a mobile base are high enough to allow the base to overcome friction.

~<name>/max_vel_y (double, +0.4)
The maximum forward velocity allowed for the base in meters/sec

~<name>/min_vel_y (double, -0.4)
The minimum forward velocity allowed for the base in meters/sec. It is useful to specify this to guarantee that velocity commands sent to a mobile base are high enough to allow the base to overcome friction.

~TrajectoryPlannerROS/max_rot_vel (double, default: 1.0)
The maximum rotational velocity allowed for the base in radians/sec

~TrajectoryPlannerROS/min_rot_vel (double, 0.4)
The minimum rotational velocity allowed for the base while performing in-place rotations in radians/sec

~<name>/holonomic_robot (bool, default: true)
Determines whether velocity commands are generated for a holonomic or non-holonomic robot. For holonomic robots, strafing velocity commands may be issued to the base. For non-holonomic robots, no strafing velocity commands will be issued.

Goal Tolerance Parameters

~<name>/yaw_goal_tolerance (double, default: 0.05)
The tolerance in radians for the controller in yaw/rotation when achieving its goal

~<name>/xy_goal_tolerance (double, default: 0.10)
The tolerance in meters for the controller in the x & y distance when achieving a goal

Forward Simulation Parameters

We upped the sim_time slightly to give the robot slightly more time when computing trajectories ~<name>/sim_time (double, 1.7)
The amount of time to forward-simulate trajectories in seconds

~<name>/sim_granularity (double, default: 0.025)
The step size, in meters, to take between points on a given trajectory

~<name>/angular_sim_granularity(double, 0.10)
The step size, in meters, to take between points on a given trajectory

~<name>/vx_samples (integer, default: 3)
The number of samples to use when exploring the x velocity space

~<name>/vy_samples (integer, 10)
The number of samples to use when exploring the y velocity space

~<name>/vth_samples (integer, 20)
The number of samples to use when exploring the theta velocity space

Trajectory Scoring Parameters

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

~<name>/goal_distance_bias(double, 1.0) The weighting for how much the controller should attempt to reach its local goal, also controls speed

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

~<name>/heading_lookahead (double, default: 0.325)
How far to look ahead in meters when scoring different in-place-rotation trajectories

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

~<name>/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

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

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

Oscillation Prevention Parameters

~<name>/oscillation_reset_dist (double, default: 0.05)
How far the robot must travel in meters before oscillation flags are reset

~<name>/prune_plan (bool, default: true) Defines whether or not to eat up the plan as the robot moves along the path. If set to true, points will fall off the end of the plan once the robot moves 1 meter past them.

⚠️ **GitHub.com Fallback** ⚠️