This package is providing an object oriented real-time nonlinear model predictive control (NMPC) framework which developed at the Automation & Robotics Research Group http://wwwde.uni.lu/snt/research/automation_robotics_research_group at the University of Luxembourg. It features a modularization for multi-agent systems which allows the on-line change of agents, control objectives, constraints and couplings, triggered by ROS-messages.
The GPLv3 licenced source code is available under https://github.com/snt-robotics/denmpc and https://github.com/DentOpt/denmpc . Proprietary licences are available under request.
It is based on following contributions:
J. Dentler, S. Kannan, M. A. O. Mendez and H. Voos,
"A modularization approach for nonlinear model predictive control of distributed fast systems",
24th Mediterranean Conference on Control and Automation (MED), Athens, Greece, 2016, pp. 292-297.
doi: 10.1109/MED.2016.7535973Jan Dentler and Somasundar Kannan and Miguel Angel Olivares Mendez and Holger Voos,
"A real-time model predictive position control with collision avoidance for commercial low-cost quadrotors",
Proceedings of 2016 IEEE Multi-Conference on Systems and Control (MSC 2016), Argentina, Buenos Aires, 2016
The used kernel solver is a "Condensed Multiple Shooting Generalized Minimal Residuum Method (CMSCGMRES)" developed by Prof. Dr. Toshiyuki OHTSUKA:
Ohtsuka, T.,
“A Continuation/GMRES Method for Fast Computation of Nonlinear Receding Horizon Control,”
Automatica, Vol. 40, No. 4, Apr. 2004, pp. 563-574.Seguchi, H., and Ohtsuka, T.,
“Nonlinear Receding Horizon Control of an Underactuated Hovercraft,”
International Journal of Robust and Nonlinear Control, Vol. 13, Nos. 3-4, Mar.-Apr. 2003, pp. 381-398.
Its features include:
- Nonlinear model predictive control (e.g. a quadrotor with nonlinear system dynamics)
- Central control of single agent systems (e.g. a single robot)
- Central control of multi-agent systems (e.g. multiple robots that are interacting)
- Object oriented code to easily adapt it:
- Controller: Interface class for implementations of controllers, e.g.CMSCGMRES
- Agent: Interface class for implementations of agents, respective system or robot types, e.g. Quadrotor
- Constraint: Interface class for implementations of single agent constraints
- Coupling: Interface class for implementations for coupling agents
- Open-source code
/************************************************************************************************************************************
A tutorial and application examples are currently under construction
************************************************************************************************************************************/