Description
I’ve been working with ros2_control for my 4-wheel robot, and I love how easy it is to use controllers like DiffDriveController or MecanumDriveController. But I often get frustrated because their PID-based approach can’t handle things like velocity limits, complex dynamics, or balancing multiple goals—like following a path while avoiding obstacles. It feels limiting when I want more advanced control at the low level.
I’d love to see a new MPC Controller in ros2_controllers that works seamlessly with ros2_control. It would use Model Predictive Control (MPC) to predict the robot’s behavior, optimize control inputs, and respect constraints like velocity or acceleration limits. I imagine configuring it with a YAML file to set the robot model, constraints, and goals, using a library like CasADi to make it efficient for robots like mine.
I thought about using something like nav2_mppi_controller from Navigation2, which does MPC for high-level path following, but it still relies on PID for low-level control. I’d prefer having MPC directly at the actuator level in ros2_control to get more precise and predictive control.
This could really help users like me who need more advanced control for complex robots (think mecanum wheels or manipulators). It’d also fit nicely with existing MPC tools in ROS 2, like nav2_mppi_controller, but at a lower level. I’m happy to draft a design doc in ros2/design and would love feedback on whether this is doable, what libraries to use, and what use cases to focus on!