|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged prox_mpc_core at Robotics Stack Exchange
|
prox_mpc_core package from prox_mpc repoprox_mpc_benchmark prox_mpc_controller prox_mpc_core prox_mpc_demo prox_mpc_msgs prox_mpc_obstacle_tracker prox_mpc_test_models |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/simone-contorno/prox_mpc.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Simone Contorno
Authors
prox_mpc_core
The ProxMPC math core: a C++17, library-only nonlinear Model Predictive Control.
The controller solves the nonlinear optimal-control problem with a Sequential Quadratic Programming (SQP) scheme that repeatedly builds and solves a Quadratic Program with the ProxQP solver, using Eigen for linear algebra. The same engine handles linear models for free: with linear dynamics the SQP converges in a single QP solve.
This package contains no ROS node: it is the reusable library that prox_mpc_controller (a Nav2 plugin) and prox_mpc_demo (a self-contained simulation) build on.
Table of Contents
- Overview
- Public API
- Models
- Prerequisites
- Build
- Architecture
- Project Structure
- Testing
- Troubleshooting
- License
Overview
The core owns the SQP/QP assembly, the tracking cost, the state/control/rate constraints, the disc-based obstacle math, and the prox_mpc::Model vehicle interface.
It never needs editing to gain a new vehicle model: a model is a pluginlib plugin loaded by name.
See doc/architecture.md for the design overview, doc/nmpc.md for the NMPC/SQP/QP math, and doc/obstacle-avoidance.md for the obstacle constraints.
Public API
Everything lives in the prox_mpc C++ namespace.
| Header | Contents |
|---|---|
prox_mpc/structs.hpp |
ProbDim, MPCParams, ModelInfo, Constraints (plain data) |
prox_mpc/model.hpp |
Model: vehicle interface (kinematics + constraints) |
prox_mpc/proxqp.hpp |
ProxQP: QP assembly and solve wrapper |
prox_mpc/mpc.hpp |
MPC: SQP driver and configuration |
prox_mpc/utils.hpp |
free functions (normalizeAngle, optimPath), Eigen/ROS aliases |
prox_mpc/models/bicycle.hpp, prox_mpc/models/unicycle.hpp
|
reference kinematic models |
Models
A model derives from Model and implements three pure virtual hooks that supply the Euler linearization (updateA, updateB, updatec).
Two optional hooks make it loadable and usable generically: configure(params) sets its constants by name after construction, and toTwist(u) maps a control vector to a geometry_msgs/msg/Twist.
Model is a pluginlib base type, and the bundled models are registered as prox_mpc_core/Bicycle and prox_mpc_core/Unicycle.
A consumer can load a model by name with a pluginlib::ClassLoader<prox_mpc::Model> and pass it to MPC::init, so adding a model requires no change to this library.
| Plugin name | Class | State | Control |
|---|---|---|---|
prox_mpc_core/Bicycle |
prox_mpc::Bicycle |
[x, y, theta, delta] (n=4) |
[v, delta_dot] (m=2) |
prox_mpc_core/Unicycle |
prox_mpc::Unicycle |
[x, y, theta] (n=3) |
[v, omega] (m=2) |
Both models enable obstacle avoidance; they differ in their toTwist mapping, because the bicycle’s second control is a steering rate and derives the yaw rate from the current steering state as omega = v*sin(delta)/L, while the unicycle’s control is already a body twist and uses the base identity mapping.
Both are exported to pluginlib via prox_mpc_core_plugins.xml.
Prerequisites
- ROS 2 Jazzy on Ubuntu 24.04 (the code uses only standard ROS 2 APIs).
- Eigen 3:
sudo apt install libeigen3-dev. - ProxQP / proxsuite: the canonical reproducible provisioning is the apt package
ros-jazzy-proxsuite(version>= 0.6.5); the proxsuite install guide is the upstream alternative. -
pluginlib,geometry_msgs,nav_msgs,rclcpp, resolved byrosdep.
ROS dependencies mirror the <depend> entries in package.xml and are resolved automatically by rosdep install.
Build
Build in a dedicated overlay workspace, never inside the package source tree.
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --packages-select prox_mpc_core
source install/setup.bash
The core builds Release by default to keep the SQP/QP hot path optimized, and defines EIGEN_NO_DEBUG to drop Eigen’s internal assertions.
Discover the bundled model plugins
After building and sourcing the overlay, list the models this package registers for `pluginlib`: ```bash ros2 plugin list --package prox_mpc_core ``` This reports `prox_mpc_core/Bicycle` and `prox_mpc_core/Unicycle` under the `prox_mpc::Model` base.Architecture
Model, MPC, and ProxQP compose the plain-data structs by inheritance.
Model describes one vehicle; MPC owns the SQP loop and a ProxQP; ProxQP assembles and solves a single QP sub-problem.
File truncated at 100 lines see the full file
Changelog for package prox_mpc_core
1.0.0 (2026-07-28)
- Initial release: NMPC core solved by a Sequential Quadratic
Programming scheme over the ProxQP solver, with a pluginlib
prox_mpc::Modelbase and bundled Bicycle / Unicycle models. - Linearized signed-distance obstacle half-planes with a discrete-time CBF coupling and bounded per-node slot capacity.
- Optional wall-clock budget for the SQP loop (fail-safe on overrun).
- Contributors: Simone Contorno
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| geometry_msgs | |
| nav_msgs | |
| pluginlib | |
| proxsuite | |
| rclcpp |
System Dependencies
| Name |
|---|
| eigen |