All Projects → HiroIshida → Robust Tube Mpc

HiroIshida / Robust Tube Mpc

Licence: mit
Robust model predictive control using tube

Programming Languages

matlab
3953 projects

Labels

Projects that are alternatives of or similar to Robust Tube Mpc

stone paper scissor defeator using opencv keras
In this repository i tried to replicate a cool project by a japanese scientist who made a machine which had 100 % accuracy in defeating humans in the game of stone-paper and scissors
Stars: ✭ 22 (-73.49%)
Mutual labels:  robust
pheniqs
Fast and accurate sequence demultiplexing
Stars: ✭ 14 (-83.13%)
Mutual labels:  robust
Sdkhotfix
在用户规模千万级别的app中验证过,稳定无兼容问题,5分钟让你的SDK拥有热修复能力。A SDK hotfix library with stable verified in tens of millions of users can be accessed in only five minutes.
Stars: ✭ 585 (+604.82%)
Mutual labels:  robust
libdynamic
High performance utility library for C
Stars: ✭ 78 (-6.02%)
Mutual labels:  robust
noisy label understanding utilizing
ICML 2019: Understanding and Utilizing Deep Neural Networks Trained with Noisy Labels
Stars: ✭ 82 (-1.2%)
Mutual labels:  robust
Server Configs Apache
Apache HTTP server boilerplate configs
Stars: ✭ 2,916 (+3413.25%)
Mutual labels:  robust
pairwiseComparisons
Pairwise comparison tests for one-way designs 🔬📝
Stars: ✭ 46 (-44.58%)
Mutual labels:  robust
Altair
Lightweight and Robust API Gateway written in Go
Stars: ✭ 34 (-59.04%)
Mutual labels:  robust
Arisu
☔ Translation made with simplicity, yet robust. Made with ❤️ in TypeScript.
Stars: ✭ 15 (-81.93%)
Mutual labels:  robust
Browser
🌍 Take back your privacy with Dot Browser, the privacy-conscious web browser that protects you from being tracked and monitored online.
Stars: ✭ 475 (+472.29%)
Mutual labels:  robust
pySerialTransfer
Python package to transfer data in a fast, reliable, and packetized form
Stars: ✭ 78 (-6.02%)
Mutual labels:  robust
gmwm
Generalized Method of Wavelet Moments (GMWM) is an estimation technique for the parameters of time series models. It uses the wavelet variance in a moment matching approach that makes it particularly suitable for the estimation of certain state-space models.
Stars: ✭ 21 (-74.7%)
Mutual labels:  robust
React Bolt
⚡ The most simple & robust boilerplate for your React projects.
Stars: ✭ 298 (+259.04%)
Mutual labels:  robust
robust-kalman
Robust Kalman filter with adaptive noise statistics estimation.
Stars: ✭ 89 (+7.23%)
Mutual labels:  robust
Tinker Manager
微信tinker补丁管理,后端代码+客户端sdk
Stars: ✭ 670 (+707.23%)
Mutual labels:  robust
RobustGNSS
Robust GNSS Processing With Factor Graphs
Stars: ✭ 98 (+18.07%)
Mutual labels:  robust
micro-MVC
An agile, small, productive and robust MVC framework for PHP with high-quality JS extensions and integrated AJAX support.
Stars: ✭ 33 (-60.24%)
Mutual labels:  robust
Rhodium
Python Library for Robust Decision Making and Exploratory Modelling
Stars: ✭ 77 (-7.23%)
Mutual labels:  robust
Polysnap
A work in progress polygon operations library with integer snap-rounding
Stars: ✭ 14 (-83.13%)
Mutual labels:  robust
Robust
Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Stars: ✭ 4,125 (+4869.88%)
Mutual labels:  robust

Robust Model Predictive Control Using Tube

This repository includes examples for the tube model predictive control (tube-MPC)[1] as well as the generic model predictive control (MPC) written in MATLAB.

Requirement

  1. optimization_toolbox (matlab)
  2. control_toolbox (matlab)
  3. Multi-Parametric Toolbox 3 (open-source and freely available at http://people.ee.ethz.ch/~mpt/3/)

Feedback, bug reports, contributions

If you find this package helpful, giving a "star" to this repositry will be a happy feedback for me! If you find a bug, or have more broader kind of quession about tube MPC,please post that in the issue page. I will try hard to respond to questions via e-mail but, I strongly recommend do it in the issue page. It's much easier for me to keep myself on track.

Usage

See example/example_tubeMPC.m and example/example_MPC.m for the tube-MPC and generic MPC, respectively. Note that every inequality constraint here is expressed as a convex set. For example, the constraints on the state Xc is specified as a rectangular, which is constructed with 4 vertexes. When considering a 1-dim input Uc, Uc will be specified by min and max value (i.e. u∊[u_min, u_max]), so it will be constructed by 2 vertexes. For more detail, please see the example codes.

Short introduction to the tube MPC

After running example/example_tubeMPC.m, you will get the following figure sequence. the gif file

Now that you can see that the green nominal trajectory starting from the bottom left of the figure and surrounding a "tube". At each time step, the nominal trajectory (green line) is computed online.

Let me give some important details. The red region Xc that contains the pink region Xc-Z is the state constraint that we give first. However, considering the uncertainty, the tube-MPC designs the nominal trajectory to be located inside Xc-Z, which enables to put "tube" around the nominal trajectory such that the tube is also contained in Xc-Z. Of course, the input sequence associated with the nominal trajectory is inside of Uc-KZ.

Disturbance invariant set

I think one may get stuck at computation of what paper [1] called "disturbance invariant set". The disturbance invariant set is an infinite Minkowski addition Z = W ⨁ Ak*W ⨁ Ak^2*W..., where ⨁ denotes Minkowski addition. Because it's an infinite sum of Minkowski addition, computing Z analytically is intractable. In [2], Racovic proposed a method to efficiently compute an outer approximiation of Z, which seems to be heavily used in MPC community. In this repository, computation of Z takes place in the constructor of DisturbanceLinearSystem class. To understand how Z guarantee the robustness, running example/example_dist_inv_set.m may help you.

Maximum positively invariant set

I used the maximal positively invariant (MPI) set Xmpi as the terminal constraint set. (Terminal constraint is usually denoted as Xf in literature). Book [3] explains the concept of the MPI and algorithm well in section 2.4. Xmpi is computed in the constructor of OptimalControler.m. Note that the MPI set is computed with Xc and Uc in the normal MPC setting, but in the tube-MPC the MPI set is computed with Xc⊖Zand Uc⊖Z instead.

Reference

[1] Mayne, David Q., María M. Seron, and S. V. Raković. "Robust model predictive control of constrained linear systems with bounded disturbances." Automatica 41.2 (2005): 219-224. [2] Rakovic, Sasa V., et al. "Invariant approximations of the minimal robust positively invariant set." IEEE Transactions on Automatic Control 50.3 (2005): 406-410. [3] Kouvaritakis, Basil, and Mark Cannon. "Model predictive control." Switzerland: Springer International Publishing (2016).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].