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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange

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

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

Easy Navigation: MPC Controller package.

Maintainers

  • Juan S. Cely G.

Authors

No additional authors.

easynav_mpc_controller

ROS 2: rolling

Description

A Model Predictive Controller (MPC) implementation for Easy Navigation.

Authors and Maintainers

Supported ROS 2 Distributions

Distribution Status
humble humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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, where controller_node.robot_limits.* does not set that limit. They will stop working soon: move them to robot_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.

| 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

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)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_mpc_controller at Robotics Stack Exchange