No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

Package Summary

Version 0.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version kilted
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.1 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely, Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

Package Summary

Version 0.4.2
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version lyrical
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.2 (2026-07-26)

  • Complete deps
  • GPLv3 -> Apache 2.0
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Merge branch 'EasyNavigation:rolling' into rolling Navmap obstacle layer
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/EasyNavigation/easynav_plugins.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-26
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple Controller package.

Maintainers

  • Francisco Martín Rico

Authors

No additional authors.

easynav_simple_controller

ROS 2: kilted ROS 2: rolling ROS 2: jazzy

Description

Simple path-following controller that uses PID controllers and a look-ahead reference pose to follow a planned path. It produces velocity commands (cmd_vel) based on the reference pose sampled at a look-ahead distance and limits linear/angular speeds and accelerations.

Authors and Maintainers

  • Authors: Intelligent Robotics Lab
  • Maintainers: Francisco Martín Rico fmrico@gmail.com

Supported ROS 2 Distributions

Distribution Status
humble kilted
jazzy kilted
kilted kilted
rolling rolling
jazzy jazzy

Plugin (pluginlib)

  • Plugin Name: easynav_simple_controller/SimpleController
  • Type: easynav::SimpleController
  • Base Class: easynav::ControllerMethodBase
  • Library: easynav_simple_controller
  • Description: Path-following controller using PID (linear and angular) and a look-ahead strategy.

Parameters

All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_simple_controller/SimpleController/....

This plugin derives from easynav::ControllerMethodBase.
See that section for shared collision-checking parameters and debug markers common to all controllers.

Name Type Default Description
max_linear_speed double 1.0 Maximum linear speed (m/s).
max_angular_speed double 1.0 Maximum angular speed (rad/s).
max_linear_acc double 0.3 Maximum linear acceleration (m/s²).
max_angular_acc double 0.3 Maximum angular acceleration (rad/s²).
look_ahead_dist double 1.0 Look-ahead distance to sample the reference pose on the path (m).
tolerance_dist double 0.05 Distance threshold to switch to pure orientation tracking (m).
final_goal_angle_tolerance double 0.1 Angular tolerance (rad) used to decide final-goal arrival.
k_rot double 0.5 Gain used to reduce linear speed based on angular velocity (higher: stronger reduction while turning).
linear_kp double 0.95 Proportional gain for the linear PID controller.
linear_ki double 0.03 Integral gain for the linear PID controller.
linear_kd double 0.08 Derivative gain for the linear PID controller.
angular_kp double 1.5 Proportional gain for the angular PID controller.
angular_ki double 0.03 Integral gain for the angular PID controller.
angular_kd double 0.08 Derivative gain for the angular PID controller.

Interfaces (NavState, Topics and Services)

This controller uses the shared NavState bag provided by the easynav_core framework. The following keys are used at runtime by SimpleController:

Key Type Access Notes
robot_pose nav_msgs::msg::Odometry Read Current robot odometry used to compute the robot pose and yaw.
path nav_msgs::msg::Path Read Planned path to follow. The controller samples a reference pose at look_ahead_dist along this path.
cmd_vel geometry_msgs::msg::TwistStamped Write Output velocity command. Header.frame_id is set to path.header.frame_id when available and stamp to the controller node clock.

Topics / Services

The controller itself does not create ROS publishers/subscribers or service servers. It interacts via the NavState abstraction; how NavState is exposed (topics or other IPC mechanisms) depends on the integrating node.

TF Frames

This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.

License

Apache-2.0

CHANGELOG

Changelog for package easynav_simple_controller

0.4.0 (2026-07-26)

  • Add missing easynav_sensors deps
  • Fix segfault in some cases and reduce extrapolation to the future
  • GPLv3 -> Apache 2.0
  • Contributors: Francisco Martín Rico, Juan S. Cely G., Miguel, migueldm

0.2.1 (2026-02-27)

  • 0.2.0
  • GPLv3 -> Apache 2.0
  • Documentation was corrected
  • Add a base_footprint frame in TFInfo
  • Remove C++20/C++23 features and update to new MethodBase interface
  • TFInfo in RTTFBuffer
  • Refactor to use TFInfo
  • Referencing base class if ot void
  • Optimize execution
  • Cleanup unused headers
  • Update sheets
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel, estherag

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_simple_controller at Robotics Stack Exchange