MBD(モデルベース開発)とは?
これだけは知っておきたい3つのこと
これだけは知っておきたい3つのこと
MBD(モデルベース開発)は、もともとは制御ソフトウェアの開発手法として登場しました。制御開発の上流工程において、コントローラーに実装する制御モデルと、制御対象となるプラントモデルを組み合わせたシステムのふるまいを検証する手法です。
一方で、制御対象となるプラントそのもの、すなわちメカやエレキ領域のハードウェア設計開発にも、MBDの考え方を適用することができます。
従来は主に開発の上流工程でシステムシミュレーション(1D-CAE)を取り入れることを指していましたが、最近では完成品メーカー様の取り組みから、3D-CAEも含めて、シミュレーションを使った設計開発手法全般をMBDと称する場合もあります。
新しい開発手法であるMBDは、それを適用される企業様の試行錯誤によって、また周辺技術発展に伴って、ますます変化・発展を続けている領域です。
MBD(モデルベース開発) では、仮想モデルを中心に開発プロセスを進めることで、複雑なシステムの提供方法が改善されます。MBDを行う際に、 MATLAB® および Simulink® を用いることで開発サイクルを短縮し、開発時間を 50% 以上削減することができます。
MBDを行ったことで、自動車、航空、建設、電機、通信業界をはじめ、多くのお客様が開発工数を削減することに成功しています。
村田製作所は、ソーラー パネル、電池、制御システムを組み合わせたエネルギー管理システム (EMS) を開発しました。その際に村田製作所の技術者たちは、制御ソフトウェア開発をスピードアップするために、MATLAB, Simulink によるMBDを行いました。
MBDを行わない従来の開発では、まず実際に動作する実機を用意し、コントローラーに制御機能を実装し、その両者を接続して初めて実行(テスト)することができます。その場合、不具合が発生した時、システムが大きいとその原因の特定に時間がかかります。また、不具合を特定して修正し、再度テストしようとすると、実機とコントローラーを組み直す必要があり、とても手間がかかります。
そこで、実機とコントローラーをシミュレーションモデル化し、シミュレーション上でテストできる環境を整えれば、原因特定と組み直しの作業時間を大幅に削減することができます。
コントローラーと実機をシミュレーションモデル化
MBDを行わない従来の開発では、詳細な設計を行う工程が、開発期間の後ろに集中します。この時、もし不具合が発生すると、それを修正してテストする時間が余分に必要になり、開発期間が計画よりも伸びてしまいます。
そこで、シミュレーションを用いて早期にテストを始めることで、不具合を早期に直し、開発を計画通りに進めることができるようになります。また、早期にテストできるため、実際の開発を始める前段階で、シミュレーションを用いた事前検討を行うこともできます。それにより、システムの実現可能性や、開発にかかる工数をより正確に見積もることができます。
開発のフロントローディング
しかし、実際の開発現場では、全てをシミュレーションで事前に検討できるわけではありません。既存の実機を使って検討しなければならない場合もあります。そのような場合に、制御モデルをすぐに実装でき、十分な計算速度でリアルタイム実行できるリアルタイムシミュレーターを活用することができます。このような開発フローをラピッド制御プロトタイピング(Rapid Control Prototyping, RCP)と呼びます。
MATLAB, Simulinkは、RCPを行うためのサポート機能がとても充実しています。また、リアルタイムシミュレーターとしてSpeedgoat®社のハードウェアを用いると、MATLABの最新バージョンの機能を常に使うことができ、コントローラーの操作や結果の可視化も全てMATLABで行うことができます。
RCPのワークフロー
シミュレーションで機能を検証できれば、その検証を自動化することができます。開発したシステムが要求を満たしているかどうかを確認するには、そのシステムの各機能を様々な条件下でテストし、その結果を評価しなければいけません。システムが複雑で大規模であれば、その作業工数は莫大なものになります。
もしシミュレーション上でシステムをモデル化しているのであれば、そのモデルに対するテスト、及び評価を自動化でき、工数を大幅に削減することができます。
システムが複雑で大規模になると、そのシステムが実現しなければならない機能は何百、何千という規模で増大していきます。その全てを正しく実現できたかどうかを把握するためには、モデルを管理することがとても重要になります。もし機能が漏れていると、開発のやり直しや計画の遅れなどが発生してしまいます。必要なのは、開発のワークフローの中で要求(実現したいシステムの姿)に対して、どのように設計し、検証したかのトレーサビリティを持たせることです。
実現しなければならない機能は、「要求仕様書」という文書の形式で表現します。一方で、シミュレーション上ではモデルの形式で表現します。そして、そのモデルをテストするための設定や目標値をまとめた「テストケース」も必要になります。MBDを行うことで、この要求、モデル、テストの三つを関連付け、必要な機能を抜け漏れなく設計することができます。
テストケースとモデルと要求の関連付け
モデルで設計した制御機能は、自動コード生成をしてマイクロコントローラーなどに実装することができます。これにより、モデルと同じふるまいをするコードを手書きする必要がなくなり、開発効率を向上させることができます。
C言語を始めとしたプログラミング言語は、プログラマーの能力によってコードの品質が異なります。場合によっては、潜在的なエラーを含んでいたり、メモリや計算の効率が悪いコードであったりします。そこで、自動コード生成機能を用いることで、コードの品質を一律に高い水準に保つことができ、コードの見直しにかかる工数を削減することができます。
自動コード生成のワークフロー
MBDを行うと、開発全体のワークフローを見直して無駄を省き、どの開発でも同じように行われる業務を標準化することができます。それにより、次に新しく開発を行う場合でも、過去のモデルやノウハウを共有することができ、開発効率を向上させることができます。
標準化を行うことは、「規格準拠」という点でも重要です。
ISO®26262やIEC61508など、製品の機能が本当に安全かどうか、望ましいプロセスで作られているかを評価するための規格があります。それらの規格に定義されたワークフローは、まさにMBDそのものです。MBDを行うことで、同時に機能安全規格に準拠したという認証も得ることができるのです。
規格準拠されたMBDのワークフロー
近年の深層ネットワーク技術の発展により、複雑なタスクをこなすAIが次々と現れています。AIもシステムに実装する機能の一つです。従って、MBDと無関係ではありません。深層ネットワークをシステムに組み込むための開発、また深層ネットワークを用いた開発効率の向上などが盛んに研究されています。
深層ネットワークは複雑なタスクをこなすことができますが、一方でその内部構造の複雑さから、その機能が安全であるかどうかを確かめることが困難です。確かめるには、大量のテストパターンが必要になります。そこで、MBDによるテスト自動化を行うことで、その検証を短時間で行うことができます。
また、深層ネットワークは複雑な行列計算を浮動小数点数を用いて計算するため、数値計算の安定性の問題もあります。例えば、PC上のシミュレーションでは理想通り動作していた深層ネットワークが、マイコンに実装すると上手く動かない、という場合があります。
MATLAB, Simulinkを使うと、様々なマイコンと連携してプロセッサーインザループ(processor-in-the-loop, PIL)を行うことができます。PILを行うと、PC上で計算した結果とマイコン上で計算した結果を比較し、差分がどのくらいあるのかを自動的に評価できます。よって、実機でテストする前に不一致を検出し、早期に改善に取り組むことができます。また、その深層ネットワークのマイコンでの計算時間を測ることもできます。これにより、そのアルゴリズムをリアルタイムに実行可能かを早期に確認することができ、手戻りを減らすことができます。
PILのシステム
一方で、深層ネットワークは高い表現能力を持つため、実機の複雑な挙動を模擬することもできます。通常のプラントモデリング手法で構築した詳細なモデルよりも、実機の挙動を模擬した深層ネットワークの方が計算時間が短い場合があります。AIによって十分に精度が高く、また計算時間の短い物理モデルが作れれば、機能検証にかかる時間を削減することができます。
実機の挙動を深層ネットワークで模擬
もしモデルの計算時間が十分に短く、1秒のシミュレーションを実時間の1秒以内に計算できるようになると、そのモデルを使ってリアルタイムに物理システムのダイナミクスを再現することができます。よって、リアルタイムで動く実コントローラーをテストする際に、実機の代わりにコントローラーの制御対象になることができます。これをハードウェアインザループ(hardware-in-the-loop, HIL)と呼んでいます。
HILを行うと、通常であれば莫大なお金と時間がかかる試験を、低コストでできるようになります。例えば、自動運転の走行性能を検証する試験では、様々な地域の道路で、様々な天候条件で走行させなければなりません。また、試験中に事故が起きないように細心の注意が必要です。それらを全て実施するには、人も物も時間も必要です。HILを使えば、それらをシミュレーションで安全に低コストで再現できます。また、24時間自動的にテストし続けることもできます。実機試験のように事故が起こる可能性がありませんので、人間が監視し続ける必要もありません。
MATLAB, Simulinkは、HILをサポートする機能がとても充実しています。PCやリアルタイムシミュレーターにモデルを実装し、リアルタイム実行させるワークフローを自動化することができます。リアルタイムシミュレーターとしてSpeedgoat社のハードウェアを用いると、常にMATLABの最新バージョンを用いることができ、AIモデルの設計と実装を一気通貫で行うことができるようになります。
HILのワークフロー
MATLAB, Simulinkを用いてMBD行うためには、MBDに適したツールの使い方を習得することが近道になります。Projectという機能を使うと、プロジェクトで使う多数のファイルをまとめて管理することができます。また、MATLABの起動時、終了時に行う定型作業を自動化することもできます。Simulinkは自由度の高いモデリングツールですが、その反面、使い方を間違うと思った通りの結果が得られないこともよくあります。MBDを行うために、早い段階から効率の良いモデリングスタイルを覚えることをおすすめします。以下の動画で、MBDのためのモデリング手法について学ぶことができます。
以下のように、MBDのワークフローを学ぶためのトレーニングを用意しています。これらを受講することで、短時間でMBDの開発手法を習得することができます。例えば、「MATLAB と Simulink によるモデルベース開発」では、実際の自律走行ロボットとマイコンを使ってMBDの開発フローを体験できます。より実践に近い業務を体験することで、従来型の開発課題は何か、MBDを行うと何が改善されるのか、を理解できるようになります。その他、「検証と妥当性の確認」、「モデル管理とアーキテクチャ」、「量産向けコード生成」について、重要なノウハウを深く学ぶことができるトレーニングも用意しています。
MBDの最先端「MBD x AI」に挑戦する方には、以下の動画が参考になります。例えば、深層ネットワークを用いて、従来の制御器では実現できない、高度な制御を実現したい場合があります。その際に、Simulinkモデルを用いて強化学習制御器をし、精度の高い物理モデルを設計し、そのモデルを用いて学習させることができます。学習した制御器はコード生成を行ってすぐにマイコンに実装することができます。
車両モデルは非常に複雑なシステムであり、物理モデルを詳細に再現したモデルを使うと、計算に非常に時間がかかってしまいます。そこで、深層ネットワークを用いて複雑なダイナミクスを模擬させると、短い計算時間で高い再現精度のモデルを作ることができます。以下の動画では、このような深層ネットワークの制御と物理モデリングについて詳しく解説しています。
ドキュメンテーション、例、ビデオなどを通じて知識を広げましょう。
MATLAB および Simulink 製品がよく使用される類似分野のトピックを見る。
無料評価版を試す
今すぐ始めるSelect a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
Europe