Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | lyrical |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange
Package Summary
| Version | 0.5.0 |
| 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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Juan S. Cely G.
Authors
easynav_mpc_controller
Description
A Model Predictive Controller (MPC) implementation for Easy Navigation.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Juan S. Cely G. juanscelyg@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_mpc_controller/MPCController -
Type:
easynav::MPCController -
Base Class:
easynav::ControllerMethodBase -
Library:
easynav_mpc_controller - Description: A Model Predictive Controller (MPC) implementation for Easy Navigation.
Parameters
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_mpc_controller/MPCController/....
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.horizon_steps |
int |
5 |
Number of time steps in the prediction horizon. |
<plugin>.dt |
double |
0.1 |
Integration time step (seconds). |
<plugin>.safety_radius |
double |
0.35 |
Safety radius to check possible collisions. |
| — | — | — | Velocity and acceleration limits are not this plugin’s: they are the robot limits of controller_node (robot_limits.max_linear_vel, min_linear_vel, max_angular_vel, max_linear_acc, max_linear_decel, max_angular_acc, max_angular_decel), queried with ControllerMethodBase::get_robot_limits() and also enforced by ControllerNode’s velocity smoother. |
<plugin>.verbose |
bool |
false |
Show data on terminal about Optimization. |
<plugin>.use_collision_checker |
bool |
false |
Enables the in-loop obstacle constraint (within safety_radius). |
<plugin>.min_height |
double |
0.1 |
Perceived points lower than this (m, map frame) are the floor, not obstacles to avoid. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Deprecated: this plugin’s former limit parameters (
max_linear_velocity,max_angular_velocity, under the plugin’s name) still apply, with a warning, wherecontroller_node.robot_limits.*does not set that limit. They will stop working soon: move them torobot_limits.
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|—|—|—|—|—|
| Publisher | /mpc/path | nav_msgs/msg/path | MPC trajectories generate by Predictive Component. | QoS depth=10 |
| Publisher | /mpc/detection | sensor_msgs::msg::PointCloud2 | Detections used by collision checker. | QoS depth=10 |
Services
This package does not create service servers or clients.
NavState Keys
| Key | Type | Access | Notes |
|—|—|—|—|
| path | nav_msgs::msg::Path | Read | Target path to track. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose/state. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Read | Last commanded velocity (if provided in state). |
| points | PointPerceptions | Read | Perception point cloud(s) used for costs. |
TF Frames
This controller does not explicitly publish or require TF frames in code.
License
Apache-2.0
Changelog for package easynav_mpc_controller
0.5.0 (2026-10-08)
- Velocity smoother support and runtime reconfiguration
- NLopt: its own copy (NLopt 2.11.0, static and private) when the system has none; no NLopt rosdep keys (none exist for RHEL)
- Configurable min_height (was a fixed 0.1 m)
- No conversion of an empty cloud (undefined behavior)
- The collision checker is no longer part of the controller
- Removed unused dependencies
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.4.2 (2026-07-26)
- Complete deps
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Collision checker scope was changed
- 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
- Collision avoidance was improved
- Final alignements
- Trim path for MPC
- Stop controllers at IDLE
- Obstacles are detected
- Methods were added to access to private attributes
- Optimizer header file was added
- Dependencies were fixed
- MPC with differential model is working
- MPC Controller minimizes path following
- Visualization Marker was added
- MPC was tunned
- MPC controller is working
- Optimizer was changed
- Dependecies were added
- MPC terminated
- MPC was added
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, José Miguel Guerrero, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |