MBD(モデルベース開発)とは?
これだけは知っておきたい3つのこと
MBD(モデルベース開発)は、もともとは制御ソフトウェアの開発手法として登場しました。制御開発の上流工程において、コントローラーに実装する制御モデルと、制御対象となるプラントモデルを組み合わせたシステムのふるまいを検証する手法です。
一方で、制御対象となるプラントそのもの、すなわちメカやエレキ領域のハードウェア設計開発にも、MBDの考え方を適用することができます。
従来は主に開発の上流工程でシステムシミュレーション(1D-CAE)を取り入れることを指していましたが、最近では完成品メーカー様の取り組みから、3D-CAEも含めて、シミュレーションを使った設計開発手法全般をMBDと称する場合もあります。
新しい開発手法であるMBDは、それを適用される企業様の試行錯誤によって、また周辺技術発展に伴って、ますます変化・発展を続けている領域です。
MBD(モデルベース開発) では、仮想モデルを中心に開発プロセスを進めることで、複雑なシステムの提供方法が改善されます。MBDを行う際に、 MATLAB® および Simulink® を用いることで開発サイクルを短縮し、開発時間を 50% 以上削減することができます。
- 新しいアイデアをモデルという形で表現し、高速にシミュレーションを行うことができます。
- レポート作成、コードの記述、検証などの重要であるが手間のかかるステップを自動化することで、作業時間を大幅に短縮し、ヒューマンエラーも削減できます。
- 要件やシステムアーキテクチャからコンポーネント設計やテストまで、開発のワークフロー全体のトレーサビリティを持たせることができます。
- モデルをデジタルツインとして使用し、予知保全、故障の検出、運用中のシステムの最適化を行うことができます
MBDを行ったことで、自動車、航空、建設、電機、通信業界をはじめ、多くのお客様が開発工数を削減することに成功しています。
村田製作所は、ソーラー パネル、電池、制御システムを組み合わせたエネルギー管理システム (EMS) を開発しました。その際に村田製作所の技術者たちは、制御ソフトウェア開発をスピードアップするために、MATLAB, Simulink によるMBDを行いました。
その他のユーザー事例
メリット1: 高コストな実機テストを、シミュレーションで低コスト化できる
MBDを行わない従来の開発では、まず実際に動作する実機を用意し、コントローラーに制御機能を実装し、その両者を接続して初めて実行(テスト)することができます。その場合、不具合が発生した時、システムが大きいとその原因の特定に時間がかかります。また、不具合を特定して修正し、再度テストしようとすると、実機とコントローラーを組み直す必要があり、とても手間がかかります。
そこで、実機とコントローラーをシミュレーションモデル化し、シミュレーション上でテストできる環境を整えれば、原因特定と組み直しの作業時間を大幅に削減することができます。
![コントローラーと実機をシミュレーションモデル化](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_copy_copy.adapt.full.medium.png/1705321935165.png)
コントローラーと実機をシミュレーションモデル化
メリット2: システムをシミュレーション上で表現し、早期に具体的な設計を行うことができる
MBDを行わない従来の開発では、詳細な設計を行う工程が、開発期間の後ろに集中します。この時、もし不具合が発生すると、それを修正してテストする時間が余分に必要になり、開発期間が計画よりも伸びてしまいます。
そこで、シミュレーションを用いて早期にテストを始めることで、不具合を早期に直し、開発を計画通りに進めることができるようになります。また、早期にテストできるため、実際の開発を始める前段階で、シミュレーションを用いた事前検討を行うこともできます。それにより、システムの実現可能性や、開発にかかる工数をより正確に見積もることができます。
![開発のフロントローディング](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_145027448_copy.adapt.full.medium.png/1705321935176.png)
開発のフロントローディング
しかし、実際の開発現場では、全てをシミュレーションで事前に検討できるわけではありません。既存の実機を使って検討しなければならない場合もあります。そのような場合に、制御モデルをすぐに実装でき、十分な計算速度でリアルタイム実行できるリアルタイムシミュレーターを活用することができます。このような開発フローをラピッド制御プロトタイピング(Rapid Control Prototyping, RCP)と呼びます。
MATLAB, Simulinkは、RCPを行うためのサポート機能がとても充実しています。また、リアルタイムシミュレーターとしてSpeedgoat®社のハードウェアを用いると、MATLABの最新バージョンの機能を常に使うことができ、コントローラーの操作や結果の可視化も全てMATLABで行うことができます。
![RCPのワークフロー](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_738424235_copy.adapt.full.medium.png/1705321935188.png)
RCPのワークフロー
メリット4: 必要な機能を抜け漏れなく設計できる
システムが複雑で大規模になると、そのシステムが実現しなければならない機能は何百、何千という規模で増大していきます。その全てを正しく実現できたかどうかを把握するためには、モデルを管理することがとても重要になります。もし機能が漏れていると、開発のやり直しや計画の遅れなどが発生してしまいます。必要なのは、開発のワークフローの中で要求(実現したいシステムの姿)に対して、どのように設計し、検証したかのトレーサビリティを持たせることです。
実現しなければならない機能は、「要求仕様書」という文書の形式で表現します。一方で、シミュレーション上ではモデルの形式で表現します。そして、そのモデルをテストするための設定や目標値をまとめた「テストケース」も必要になります。MBDを行うことで、この要求、モデル、テストの三つを関連付け、必要な機能を抜け漏れなく設計することができます。
![テストケースとモデルと要求の関連付け](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_2136897863_cop.adapt.full.medium.png/1705321935203.png)
テストケースとモデルと要求の関連付け
![自動コード生成のワークフロー](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_1271969180_cop.adapt.full.medium.png/1705321935214.png)
自動コード生成のワークフロー
MBD(モデルベース開発) のプロセス標準化
MBDを行うと、開発全体のワークフローを見直して無駄を省き、どの開発でも同じように行われる業務を標準化することができます。それにより、次に新しく開発を行う場合でも、過去のモデルやノウハウを共有することができ、開発効率を向上させることができます。
標準化を行うことは、「規格準拠」という点でも重要です。
ISO®26262やIEC61508など、製品の機能が本当に安全かどうか、望ましいプロセスで作られているかを評価するための規格があります。それらの規格に定義されたワークフローは、まさにMBDそのものです。MBDを行うことで、同時に機能安全規格に準拠したという認証も得ることができるのです。
![規格準拠されたMBDのワークフロー](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image.adapt.full.medium.png/1705321935224.png)
規格準拠されたMBDのワークフロー
MBD(モデルベース開発) x AI
近年の深層ネットワーク技術の発展により、複雑なタスクをこなすAIが次々と現れています。AIもシステムに実装する機能の一つです。従って、MBDと無関係ではありません。深層ネットワークをシステムに組み込むための開発、また深層ネットワークを用いた開発効率の向上などが盛んに研究されています。
深層ネットワークは複雑なタスクをこなすことができますが、一方でその内部構造の複雑さから、その機能が安全であるかどうかを確かめることが困難です。確かめるには、大量のテストパターンが必要になります。そこで、MBDによるテスト自動化を行うことで、その検証を短時間で行うことができます。
また、深層ネットワークは複雑な行列計算を浮動小数点数を用いて計算するため、数値計算の安定性の問題もあります。例えば、PC上のシミュレーションでは理想通り動作していた深層ネットワークが、マイコンに実装すると上手く動かない、という場合があります。
MATLAB, Simulinkを使うと、様々なマイコンと連携してプロセッサーインザループ(processor-in-the-loop, PIL)を行うことができます。PILを行うと、PC上で計算した結果とマイコン上で計算した結果を比較し、差分がどのくらいあるのかを自動的に評価できます。よって、実機でテストする前に不一致を検出し、早期に改善に取り組むことができます。また、その深層ネットワークのマイコンでの計算時間を測ることもできます。これにより、そのアルゴリズムをリアルタイムに実行可能かを早期に確認することができ、手戻りを減らすことができます。
![PILのシステム](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_1153117334_cop.adapt.full.medium.png/1705321935243.png)
PILのシステム
一方で、深層ネットワークは高い表現能力を持つため、実機の複雑な挙動を模擬することもできます。通常のプラントモデリング手法で構築した詳細なモデルよりも、実機の挙動を模擬した深層ネットワークの方が計算時間が短い場合があります。AIによって十分に精度が高く、また計算時間の短い物理モデルが作れれば、機能検証にかかる時間を削減することができます。
![実機の挙動を深層ネットワークで模擬](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_1153117334_cop_302887970.adapt.full.medium.jpg/1705321935253.jpg)
実機の挙動を深層ネットワークで模擬
もしモデルの計算時間が十分に短く、1秒のシミュレーションを実時間の1秒以内に計算できるようになると、そのモデルを使ってリアルタイムに物理システムのダイナミクスを再現することができます。よって、リアルタイムで動く実コントローラーをテストする際に、実機の代わりにコントローラーの制御対象になることができます。これをハードウェアインザループ(hardware-in-the-loop, HIL)と呼んでいます。
HILを行うと、通常であれば莫大なお金と時間がかかる試験を、低コストでできるようになります。例えば、自動運転の走行性能を検証する試験では、様々な地域の道路で、様々な天候条件で走行させなければなりません。また、試験中に事故が起きないように細心の注意が必要です。それらを全て実施するには、人も物も時間も必要です。HILを使えば、それらをシミュレーションで安全に低コストで再現できます。また、24時間自動的にテストし続けることもできます。実機試験のように事故が起こる可能性がありませんので、人間が監視し続ける必要もありません。
MATLAB, Simulinkは、HILをサポートする機能がとても充実しています。PCやリアルタイムシミュレーターにモデルを実装し、リアルタイム実行させるワークフローを自動化することができます。リアルタイムシミュレーターとしてSpeedgoat社のハードウェアを用いると、常にMATLABの最新バージョンを用いることができ、AIモデルの設計と実装を一気通貫で行うことができるようになります。
![HILのワークフロー](https://es.mathworks.com/discovery/mbd/_jcr_content/mainParsys3/discoverysubsection_672764175/mainParsys3/image_1659308653_cop.adapt.full.medium.png/1705321935264.png)
HILのワークフロー
全くMBDを行っていない状態から、すぐに完全なMBDを実現することはできません。まずは段階的にMBDを導入するをおすすめします。それによって、MBD導入のために時間が取られ、開発が遅延するようなリスクを軽減できます。まず 1 つのプロジェクトから始め、そこで得られた知見を基にモデルの使用とコード生成を拡張して導入を進めていきます。これにより、最初から確実に投資利益 (ROI) を回収できます。
ステップ1: ツールの効率的な使い方を学ぶ
MATLAB, Simulinkを用いてMBD行うためには、MBDに適したツールの使い方を習得することが近道になります。Projectという機能を使うと、プロジェクトで使う多数のファイルをまとめて管理することができます。また、MATLABの起動時、終了時に行う定型作業を自動化することもできます。Simulinkは自由度の高いモデリングツールですが、その反面、使い方を間違うと思った通りの結果が得られないこともよくあります。MBDを行うために、早い段階から効率の良いモデリングスタイルを覚えることをおすすめします。以下の動画で、MBDのためのモデリング手法について学ぶことができます。
ステップ2: 実際の業務に近い形でMBDを実践し、体感する
以下のように、MBDのワークフローを学ぶためのトレーニングを用意しています。これらを受講することで、短時間でMBDの開発手法を習得することができます。例えば、「MATLAB と Simulink によるモデルベース開発」では、実際の自律走行ロボットとマイコンを使ってMBDの開発フローを体験できます。より実践に近い業務を体験することで、従来型の開発課題は何か、MBDを行うと何が改善されるのか、を理解できるようになります。その他、「検証と妥当性の確認」、「モデル管理とアーキテクチャ」、「量産向けコード生成」について、重要なノウハウを深く学ぶことができるトレーニングも用意しています。
ステップ3: MBDを用いて先端技術の開発を行う方法について学ぶ
MBDの最先端「MBD x AI」に挑戦する方には、以下の動画が参考になります。例えば、深層ネットワークを用いて、従来の制御器では実現できない、高度な制御を実現したい場合があります。その際に、Simulinkモデルを用いて強化学習制御器をし、精度の高い物理モデルを設計し、そのモデルを用いて学習させることができます。学習した制御器はコード生成を行ってすぐにマイコンに実装することができます。
車両モデルは非常に複雑なシステムであり、物理モデルを詳細に再現したモデルを使うと、計算に非常に時間がかかってしまいます。そこで、深層ネットワークを用いて複雑なダイナミクスを模擬させると、短い計算時間で高い再現精度のモデルを作ることができます。以下の動画では、このような深層ネットワークの制御と物理モデリングについて詳しく解説しています。