モデル予測制御 設計実装ワークフロー紹​介, MPC Implementation Example

当サンプルモデルは、モデル予測制御(MPC)の設計と実装のワークフローを分かりやすく紹介するための資料です。 設計後、コード生成を行い、マイクロコントローラに実装するまでの流れを詳しくまとめています。
804 download
Aggiornato 11 apr 2024

モデル予測制御 設計実装ワークフロー紹介

目的

当サンプルモデルは、モデル予測制御(MPC)の設計と実装のワークフローを分かりやすく紹介するための資料である。(サンプルモデルの使い方については、こちらを参照)

特にマイクロコントローラに実装するときの検討事項について詳しくまとめている。

必要なツールボックス

本モデルでは、以下のツールボックスを利用する。ただし、インストールしていなくても、モデルを実行せず閲覧するだけであれば可能である。また、例題によっては使わないツールボックスもある。

  • MATLAB®
  • Simulink®
  • Control System Toolbox™
  • Model Predictive Control Toolbox™
  • Simulink Control Design™
  • Simscape™, Simscape™ Multibody™
  • Symbolic Math Toolbox™
  • Navigation Toolbox™
  • Image Processing Toolbox™, Computer Vision Toolbox™
  • Automated Driving Toolbox™
  • MATLAB Coder™, Simulink Coder™, Embedded Coder®

目次

1.一般的な紹介資料

MPCについて初学者であり、以下の資料を見ていない場合は、本サンプルモデルより先に以下の資料に目を通しておくこと。

ビデオ

技術紹介記事

ホワイトペーパー

以下の資料はMPCの技術的な資料である。ある程度ツールの使い方を理解した後に読むこと。

2.線形MPC

最初に線形MPCを使った例を紹介する。プラントモデルとして、単純なSISOの不安定システムを用いる。以下のライブエディターを開いて作業を開始すること(以降、同様にライブエディターを開いて確認していく)。

線形MPCコントローラの設計と実装

3.陽的MPC

線形近似されたDCモーターモデルに対して陽的MPCを設計し、実装する。線形MPCと陽的MPCの比較を行う。

陽的MPCコントローラの設計と実装

4.適応MPC

適応MPCの設計と実装について、4輪走行車両の制御を例に紹介する。プラントモデルとしては、等価二輪モデルを用いる。

適応MPCコントローラの設計と実装

5.ゲインスケジュールMPC

適応MPCで用いたプラントモデルと設計手法を転用し、ゲインスケジュールMPCを設計、実装する。

ゲインスケジュールMPCコントローラの設計と実装

6.非線形MPC

非線形MPCの設計と実装について、シンプルな車両モデルの運転制御を例に紹介する。

非線形MPCコントローラの設計と実装

7.適応MPCに内点法ソルバー適用

適応MPCのソルバーとして、内点法を用いた場合の設計と実装について、4輪走行車両の制御を例に紹介する。プラントモデルとしては、等価二輪モデルを用いる。

適応MPCコントローラのQPソルバーの設定について検討

8.マルチステージの非線形MPC

マルチステージの非線形MPCは、コスト関数を予測ホライズンの各ステップごとに設定できる。それにより、通常の非線形MPCよりも高速に計算できる。

マルチステージ非線形MPCの設計と実装

Ex.1.適応モデル予測制御による倒立制御走行ロボットの倒立制御

適応MPCを用いて、倒立振子型の自律走行ロボットの制御を構築する。物理モデルをSimscape Multibodyで構築し、それを制御する。

適応モデル予測制御による倒立制御走行ロボットの倒立制御

Ex.2.モデル予測制御ならびにカメラ画像によるターゲット認識を利用した衝突回避

適応MPCを用いて、自律走行車両の制御を構築する。Automated Driving Toolboxを用いた走行環境から障害物を認識し、回避しながら走行制御を行う。

モデル予測制御ならびにカメラ画像によるターゲット認識を利用した衝突回避

過去バージョン

過去のバージョンのファイル一式は、以下から得ることができる。ただし、過去のモデルには、古い時期に作成したサンプルしか含まれていないことに注意すること。

GitHubからクローンしている場合には、以下の該当バージョンに戻すことで、過去バージョンファイルを得ることができる。

R2023b: v8.0.1

R2023a: v7.0

R2022b: v6.0

R2022a: v5.0

R2021b: v4.0.2

R2021a: v3.3.1

R2020b: v2.2

R2020a: v1.1.1

Cita come

Toshinobu Shintai (2024). モデル予測制御 設計実装ワークフロー紹介, MPC Implementation Example (https://github.com/mathworks/mpc_implementation_example/releases/tag/v9.0), GitHub. Recuperato .

Compatibilità della release di MATLAB
Creato con R2023a
Compatibile con R2020a fino a R2023a
Compatibilità della piattaforma
Windows macOS Linux
Tag Aggiungi tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

MPC_imple_PJ/Adaptive

MPC_imple_PJ/Explicit

MPC_imple_PJ/InvertedPendulumRobot

MPC_imple_PJ/Linear

MPC_imple_PJ/Multiple

MPC_imple_PJ/Nonlinear

MPC_imple_PJ/common

MPC_imple_PJ/obstacleAvoid

Versione Pubblicato Note della release
9.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v9.0

8.0.1.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v8.0.1

8.0.0.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v8.0

7.0.0.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v7.0

6.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v6.0

5.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v5.0

4.0.2

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v4.0.2

4.0.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v4.0.1

4.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v4.0

3.3.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.3.1

3.3

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.3

3.2.3

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.2.3

3.2.2

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.2.2

3.2.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.2.1

3.2

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.2

3.1.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.1.1

3.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.1

3.0.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.0.1

3.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v3.0

2.2

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v2.2

2.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v2.1

2.0

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v2.0

1.1.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v1.1.1

1.1

See release notes for this release on GitHub: https://github.com/mathworks/mpc_implementation_example/releases/tag/v1.1

1.0

Per visualizzare o segnalare problemi su questo componente aggiuntivo di GitHub, visita GitHub Repository.
Per visualizzare o segnalare problemi su questo componente aggiuntivo di GitHub, visita GitHub Repository.