MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Model Based Development:MBD(モデルベース開発)とは?

はじめに

MATLABを使用していると、

Simulinkというソフトが付いてきて、

そのソフトを上手く使うと

Model Based Development:MBDという開発手法で

効率的に製品を作ることができるという話をよく聞きます。


ロボットを専門にしていると、

MATLABは便利なグラフ&動画作成ツールとして

使ってしまいがちですが、

自動車業界の友人に話を聞くと、

MATLAB=MBDツールといった認識のようです。


これまでMBDという名前は知っていましたが、

その内容はよくわかっていなかったので、

簡単に調べてみました。

MBDとは、

MBDとは、

『CAEツールを使って制御対象と制御装置をモデル化する制御システム開発手法』

のことです。

ここでCAEツールの代表として挙げられるのがMATLAB/Simulinkです。

制御対象(車だとエンジンとか、ワイパーとか)と、

制御装置(コントローラー、コンピュータ)を、

モデルという、コンピュータ上での共通表現で、記述し、

それらを用いて制御システムを開発します。


共通表現で記述されたモデルは、

CAEツール上でそのままシミュレーションが出来る状態になり、

随時シミュレーションを実施しながら、

試作を行う前に開発検討を行うことができます。

完成したモデルはそのまま仕様書となります。

(仕様書という書き方だとわかりにくいですが、

システムのあるべき姿を表したものを仕様書と言っています)


そして、完成したモデルは、再びCAEツールによって、

自動コード生成され、

実際のコントローラに乗るコードが自動で作成されます。


そして実際のコントローラと自動生成されたコードを

制御対象をシミュレーションする

Hardware-In-the-Loop Simulator:HILSというものに繋いで

テストを実施し、そこで問題が無かった場合に初めて、

制御対象の試作品と繋いでテストを実施するような開発プロセスを踏みます。


以上が大まかなMBDの開発プロセスです。


ちなみにMBDでは制御対象のことをPlant,

制御装置のことをController, ECUと呼ぶことが多いようです。

MBDの何がいいのか?

MBDの一番の目的は、

「複雑なシステムを効率的に開発すること」です。

この目的を達成するためにMBD開発プロセスを使用すると

下記のような利点があります。

1. 仕様書の明確化と再利用性の向上

一般的なシステムの仕様書は、

日本語などの自然言語で書かれていることが多いと思います。

しかし、このような仕様書は、

各人によって多少は書き方が変わってしまいます。

するとチームで開発を行う時に、

他の人がその仕様書を理解するのに時間がかかってしまいます。


加えて、ある製品の新規開発で、

昔の製品のコンポーネントを使用しようと思った時に、

そのコンポーネントの仕様書を再利用性しようと思っても、

その人によって仕様書の書き方は変化することが多いため、

同じコンポーネントであろうとも、

仕様書を再利用性するのは難しいという問題があります。


MBDでは、仕様書は共通のモデルという方法で記述します。

そのため、自ずと仕様書は明確になり、

作成した人による仕様書の差は生まれなくなります。


同様に、一度作成したモデルは

CAEツールを変更しない限りそのまま利用できるため、

仕様書の再利用性が向上します。


2. シミュレーションをしながら仕様を決定できる(MILS)

MBDではモデルはソフトウェア上で作成されるため、

そのモデルを使って即座にシミュレーションを実施することができます。

これをMBDではModel In the Loop Simulation:MILSといいます。

MILSでは、PlantとControllerの両方のモデルを使ってシミュレーションを実施し、

その挙動を簡単にチェックできるシステムです。


このようにSMLSを使いながら仕様(モデル)を決めることにより、

前工程で仕様の作り込みができ、

後工程での仕様の修正が少なくなり、効率的にシステムを開発できます。

この考え方はフロントローディングと呼ばれます。

情報マネジメント用語辞典:フロントローディング(ふろんとろーでぃんぐ) - ITmedia エンタープライズ

3. 仕様書から自動でコードが生成されるために、バグが入りにくい

MBDでは、モデルによる仕様書から自動的に

コントローラで仕様されるソースコードを生成します。(Auto Code)


通常の開発では、紙の仕様書に従って、

人がコードを生成します。

しかし、人がコードを生成すると、

バグが入ったり、納期がかかったりしますが、

自動コード生成を使うと、

バグが少ないコードを即座に生成することができます。


もし、仕様書(モデル)が変更になった時にも、

すぐにコードを生成し、テストを実施することができます。


MATLAB/SimulinkによるMBDでは、

Simulink Coderというソフトウェアを使って自動コード生成を実施します。

Automatic Code Generation - Simulink Coder - MathWorks 日本


また、このようにAutoコードによって作成されたコードを

元に実施するシミュレーションを

Software In the Loop Simulation SILSといい、

(SILSの例:GAIO VECU-G 自動車仮想ECU検証ソリューション | MILS SILS PILS HILS | MATLAB/Simulink連携シミュレータ)

加えて、そのコードを最終的なコントローラで使用する

CPU上で動かすシミュレーションを、

Processor In the Loop Simulation:PILSといいます。

4. PlantとControllerを同時に開発できる。

MBDで開発を進めると、

初めにPlantとControllerの仕様と

そのシミュレーションモデルができるため、

それらを使用して、

PlantとControllerを同時に開発することができます。


Plant開発の際には、

Controllerモデルを使用して、シミュレーションを実施し、

Plantの挙動などを確認しながら開発を実施します。

このプロセスをRapid Controll Prototyping:RCPといいます。


一方、Controllerの開発の際には、

Plantモデルを使用して、シミュレーションを実施し、

Controllerのロジックなどを確認しながら開発を実施します。

このプロセスをHardware In the Loop Simulations:HILSといいます。


参考資料

下記のサイトはMATLABを開発している

Mathworks社が公開しているMBDの説明サイトです。

初心者でもわかりやすく、おすすめです。

冒頭の書籍もMBDの概念を広く学ぶにはおすすめです。

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com