neo_local_planner2

Summary

The neo_local_planner2 package provides a simple but effective local planner for navigation.

It supports both differential type and holonomic type platforms.

Location: https://github.com/neobotix/neo_local_planner2

Working

The neo_local_planner2 controller uses a pure-pursuit-inspired control strategy to follow the global path. At each control cycle, it generates velocity commands based on lookahead_dist, lookahead_time, and the robot’s current position and velocity. The lookahead point is also used to determine the target path orientation.

Holonomic robots also have a limited capability to navigate laterally in the Y direction. To enable sideways motion, set differential_drive to false. The lateral response is controlled by pos_y_gain, while min_vel_y, max_vel_y, and acc_lim_y constrain the commanded Y velocity and acceleration.

The lateral target depends on max_goal_dist, which determines when the controller uses the goal pose as its final reference pose. This behavior is particularly useful for applications that require short-distance goals.

Warning

The allow_reversing feature is experimental. Enable it only when the robot has sufficient rear-facing obstacle detection and reversing can be performed safely.

Parameters

acc_lim_x:
Type Default
double 0.2
Description

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

acc_lim_y:
Type Default
double 0.2
Description

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

acc_lim_theta:
Type Default
double 0.2
Description

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

max_vel_x:
Type Default
double 0.2
Description

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

min_vel_x:
Type Default
double 0.2
Description

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

max_vel_y:
Type Default
double 0.2
Description

The maximum y velocity for a holonomic robot in m/s.

min_vel_y:
Type Default
double 0.2
Description

The minimum y velocity for a holonomic robot in m/s.

max_rot_vel:
Type Default
double 0.2
Description

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

min_rot_vel:
Type Default
double 0.2
Description

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

max_vel_trans:
Type Default
double 0.2
Description

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

min_vel_trans:
Type Default
double 0.2
Description

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

xy_goal_tolerance:
 
Type Default
double 0.2
Description

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

lookahead_time:
Type Default
double 0.2
Description

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

lookahead_dist:
Type Default
double 0.2
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 0.2
Description

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

pos_y_gain:
Type Default
double 0.2
Description

Gain when adjusting the y position of a holonomic robot [1/s]

pos_y_yaw_gain:
Type Default
double 0.2
Description

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

yaw_gain:
Type Default
double 0.2
Description

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

static_yaw_gain:
 
Type Default
double 0.2
Description

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

cost_x_gain:
Type Default
double 0.2
Description

Gain for x-direction cost avoidance (holonomic only)

cost_y_gain:
Type Default
double 0.2
Description

Gain for y-direction cost avoidance (holonomic only)

cost_y_yaw_gain:
 
Type Default
double 0.2
Description

Gain for y cost avoidance (differential only)

cost_y_lookahead_dist:
 
Type Default
double 0.2
Description

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

cost_y_lookahead_time:
 
Type Default
double 0.2
Description

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

cost_yaw_gain:
Type Default
double 0.2
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.2
Description

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

max_curve_vel:
Type Default
double 0.2
Description

Max velocity based on curvature [rad/s]

max_goal_dist:
Type Default
double 0.2
Description

Remaining path length at which the controller switches from the closest global-plan pose to the final goal pose [m]

max_backup_dist:
 
Type Default
double 0.2
Description

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

min_stop_dist:
Type Default
double 0.2
Description

Minimal distance for stopping [m]

emergency_acc_lim_x:
 
Type Default
double 0.2
Description

Deceleration limit used for emergency braking in meters/sec^2

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

local_frame:
Type Default
string odom
Description

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

base_frame:
Type Default
string 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
string /odom
Description

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

local_plan_topic:
 
Type Default
string /local_plan
Description

Topic on which the local planner publishes its local path

See differential example .

See holonomic example .

Video Demo