Another view on MPC

What is MPC?

Model predictive control (MPC) refers to a class of control algorithms that compute a sequence of control moves based on an explicit prediction of outputs within some future horizon. The computed control moves are typically implemented in a receding horizon fashion, meaning only the moves for the current time are implemented and the whole calculation is repeated at the next sample time. In essence, MPC is a feedback control strategy based on repeated calculation of open-loop control trajectories.

In the process industries, serious applications and research on the subject began in the late 1970 for providing effective solutions to difficult process control problems. Owing to its unique ability to handle process interactions and constraints in a unified manner MPC become popular.

So why is MPC popular? MPC has some advantages:
+Straightforward formulation, based on well understood
+ Explicitly handles constraints
+ Explicit use of a model
+ Well understood tuning parameters; Prediction horizon and Optimization problem setup
+ Development time much shorter than for competing advanced control methods
+ Easier to maintain: changing model or specs does not require complete redesign, sometimes can be done on the fly.

One example

There are differences between e.g. LQG and MPC. The latter could handle process interactions and constraints within it’s framework. One interesting feature is ”funneling technique”. Industrial MPC controllers use four basic options to
specify future CV behavior; a set-point, zone, reference trajectory or funnel. In the latter the reference trajectory is optimized, see here.

What is explicit MPC?

A traditional model predictive controller solves a quadratic program (QP) at each control interval to determine the optimal manipulated variable (MV) adjustments. These adjustments are the solution of the implicit nonlinear function u=f(x).

Explicit model predictive control address the problem of removing the main drawbacks of MPC, namely the need to solve the mathematical program on line to compute the control action. The consequence of the computational constraint in MPC results in expensive hardware or limited bandwidth in the control loop.
Explicit model predictive control allows one to solve the optimization problem off-line for a given range of operating conditions of interest. In practice the control function are table lookups of linear gains.

This is a good overview of the field and a course is available here  




Academic Collaboration

As most of you probably know, Combine has hosted several master thesis works during the last few years, e.g. the hexacopter and hexapod in Lund, the balancing cube in Gothenburg and the ROV in Linköping. For more info on these, and other, thesis works, go to For the students, this is a great opportunity to use what they have learned during their studies  to complete a highly challenging project, with the assistance of some of the best engineers in the field, while getting an insight into the working experience at Combine. For Combine, this is a chance to interact with talented students, and to test and introduce new concepts which our clients may benefit from. A real win-win situation! However, not only do we host master thesis works, we also collaborate with students in other projects. One such project is currently being conducted in Lund with students from the department for automatic control at LTH.

The project uses the hexapoddsc00466 as one of two independent robot systems. The other system is a small quadcopter, Parrot BEBOP2, equipped with a full hd camera. The main objective is to enable the quadcopter to land in uneven terrain. To achieve this, the quadcopter act as master, sending a landing position to the hexapod. The hexapod should move to the landing position and switch to balancing mode, making sure that the quadcopter has a horizontal platform when landing. This is a small-scale, but complex, parrot-3495jpgproject with many possible applications. If, for example, the hexapod was equipped with an inductive charging station, the robots could comprise a fully autonomous high range unit. The balancing of a landing platform could also be applied when landing a helicopter in rough conditions, or as a part of a reusable launch system, such as the SpaceX Falcon.

Within this project, the students face several challenges. For the quadcopter, these include position control and position estimation. The position control must take into account both altitude, to maintain a set altitude while flying and to land on the hexapod, and positioning in the horizontal plane, i.e. to reach the landing site where the hexapod is positioned. The position estimation algorithms must estimate the quadcopter position using only the onboard camera, in combination with reference markers in the room and on the hexapod, since no external measurement system is available (as is often the case). A simple pinhole camera model is straightforward enough to solve but since the quadcopter is free to rotate in yaw, pitch and roll directions, the complexity increases.quadcopter_axis When adding image noise and other disturbances to this, as well as timing requirements, it is evident that it will take much effort to develop efficient algorithms for the position estimation. For the hexapod, the main challenges are controlling the velocity, including direction, to reach the target position and efficient handling of the balancing mode once the target position has been reached. Finally, the communication between the robots must be solved in an efficient way.

The students are adopting the model based design (MBD) workflow, which I am sure will help them immensely.positioning_quadcopter Despite initial delivery problems with the hardware, they are still making progress since they have been able to develop algorithms and testing them in MATLAB/Simulink, applying noise and filters to achieve good performance. Even when the hardware is available, the development will benefit from MBD. For example, testing experimental positioning algorithms in the quadcopter for the first time may prove to be an expensive and physically painful experience. Of course, the code is automatically generated, to reduce development time and to ensure code quality.

The project is not due until January next year and the plan is to revisit the project in another post. I for one am very excited to see the results!