Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.3.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | kilted |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| 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)
NavState
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 for package easynav_simple_controller
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_simple_controller at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
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 | |
| jazzy | |
| kilted | |
| rolling | |
| 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)
NavState
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 for package easynav_simple_controller
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