neo_local_planner

Summary

The neo_local_planner package provides a simple but effective local planner plugin for move_base.

It supports both differential type and holonomic type platforms.

It is installed and used by Neobotix platforms as of February 2020 by default.

Working

The neo_local_planner employs a pure-pursuit control technique to follow the give global path. Based upon the look-ahead distance and look-ahead time, the velocity commands are generated.

Based upon the look-ahead distance, the local path is updated for each and every control step.

In ROS 2, this planner is named as neo_local_planner2

Warning

Currently the allow_reversing parameter will allow the robot to drive in the reverse direction. This feature is experimental. Also note that our differential robots does not have laser scanners by default and hence we do not recommend that behavior and it should be done at your own risk.

Parameters

acc_lim_x:
Type Default
double 0.25
Description

The x acceleration limit of the robot in meters/sec^2

acc_lim_theta:
Type Default
double 0.8
Description

The rotational acceleration limit of the robot in radians/sec^2

max_vel_x:
Type Default
double 0.8
Description

The maximum x velocity for the robot in m/s.

min_vel_x:
Type Default
double -0.1
Description

The minimum x velocity for the robot in m/s, negative for backwards motion.

max_rot_vel:
Type Default
double 0.8
Description

The absolute value of the maximum rotational velocity for the robot in rad/s

min_rot_vel:
Type Default
double 0.8
Description

The absolute value of the minimum rotational velocity for the robot in rad/s

max_trans_vel:
Type Default
double 0.8
Description

The absolute value of the maximum translational velocity for the robot in m/s

min_trans_vel:
Type Default
double 0.1
Description

The absolute value of the minimum translational velocity for the robot in m/s

yaw_goal_tolerance:
 
Type Default
double 0.01
Description

The tolerance in radians for the controller in yaw/rotation when achieving its goal

xy_goal_tolerance:
 
Type Default
double 0.1
Description

The tolerance in meters for the controller in the x & y distance when achieving a goal

goal_tune_time:
Type Default
double 3.0
Description

How long to fine tune for goal position after reaching tolerance limits [s]

lookahead_time:
Type Default
double 0.3
Description

How far to predict control pose into the future based on latest odometry [s]

lookahead_dist:
Type Default
double 0.5
Description

How far to look ahead when computing path orientation [m]

start_yaw_error:
 
Type Default
double 0.2
Description

Threshold yaw error below which we consider to start moving [rad]

pos_x_gain:
Type Default
double 1.0
Description

Gain when adjusting final x position for goal [1/s]

pos_y_yaw_gain:
Type Default
double 1.0
Description

Gain for lane keeping based on y error (differential only) [rad/s^2]

yaw_gain:
Type Default
double 2.0
Description

Gain for lane keeping based on yaw error (differential only) [1/s]

static_yaw_gain:
 
Type Default
double 3.0
Description

Gain for adjusting yaw when not translating, or in case of holonomic drive [1/s]

cost_y_yaw_gain:
 
Type Default
double 3.0
Description

Gain for y cost avoidance (differential only)

cost_y_lookahead_dist:
 
Type Default
double 0.3
Description

How far ahead to compute y cost gradient (constant offset) [m]

cost_y_lookahead_time:
 
Type Default
double 0.3
Description

How far ahead to compute y cost gradient (dynamic offset) [s]

cost_yaw_gain:
Type Default
double 0.3
Description

Gain for yaw cost avoidance

low_pass_gain:
Type Default
double 0.2
Description

Gain for final control low pass filter

max_cost:
Type Default
double 0.95
Description

Max cost to allow, above we slow down to min_trans_vel or even stop

max_curve_vel:
Type Default
double 0.3
Description

Max velocity based on curvature [rad/s]

max_goal_dist:
Type Default
double 0.3
Description

Max distance to goal when looking for it [m]

max_backup_dist:
 
Type Default
double 0.1
Description

Max distance allowable for backing up (zero = unlimited) [m]

min_stop_dist:
Type Default
double 0.3
Description

Minimal distance for stopping [m]

differential_drive:
 
Type Default
bool true
Description

If robot has differential drive, holonomic otherwise

allow_reversing:
 
Type Default
bool false
Description

robot with safety sensors in the rear can be set to reverse

Additional Parameters for ROS 2

local_frame:
Type Default
local_frame odom
Description

Default local frame id of the robot. For namespace setup, set the frame id with “/” at the beginning

base_frame:
Type Default
base_frame base_link
Description

Default base frame id of the robot. For namespace setup, set the frame id with “/” at the beginning

odom_topic:
Type Default
odom_topic /odom
Description

Default odom topic set to the local planner. For namespace setup, use the topic without “/” at the beginning

See differential example .

See holonomic example .

Video Demo