ナレッジNEW

【連載】自動車開発におけるシミュレーションの基本(第3回)

【連載】自動車開発におけるシミュレーションの基本(第3回)

第3回:シミュレーションの考え方

前回 、シミュレーションで対象とする自動車システムの例としてACC(Adaptive Cruise Control)について工学的に観察しました。

今回は、対象とするシステムをシミュレーションするとはどういうことなのか、という考え方について解説します。

まず、シミュレーションの対象としてハードウェアとソフトウェアに分けたときの考え方の共通点や違いについて概観し、それぞれのシミュレーションの考え方や流れについて、具体例を挙げつつ説明する構成とします。

シミュレーション対象としてのハードウェアとソフトウェアの比較

●ハードウェアとソフトウェアの共通点

本連載の第1回で、シミュレーションとは端的には模倣であると説明しましたが、目的や制約に応じて、対象のある側面に注目して模倣することになります。

ハードウェアは、第2回で記述した通り、実際にはミクロに見ていけば原子(あるいはさらにそれを構成するミクロな構造)の集まりではあるものの、自動車や外界環境を構成する全ての原子の振る舞いをシミュレーションするようなことは現実的ではありません(自動車だけを考えても、ざっと10^28(=100兆の100兆倍)程度のオーダーの個数の原子で構成されています)。

ソフトウェアも、第2回 で記述した通り、ソースコードレベルで1億行にも及ぶ [1]といわれるほど複雑・大規模なプログラムの集合となっています。それら全てを忠実に再現するようなアプローチでシミュレーションしようとすると、シミュレーション対象のソフトウェアそのものの実装と等しくなっていくことになり、これも現実的ではありません。

従って、ハードウェアにせよソフトウェアにせよ、対象のある側面に限定して注目し、シミュレーションすることになります。

●ハードウェアとソフトウェアの違い

ソフトウェアの振る舞いは論理的な仕様に立脚しているのに対して、ハードウェアの振る舞いは物理法則に立脚しています。
ここで、論理的な仕様は人間が設計したものであるため、シミュレーションに当たってはその仕様をよりどころにすることになるでしょう。
一方で、物理法則(物理現象の仕様)は人間が設計したものではないため、「この世界の仕様書」のようなものが、この世のどこかにあるわけではない(はず)でしょう。それでも、自然界を観測し、仮説を立てて検証する営みの繰り返しにより、物理現象をよい精度で記述するいくつかの数式を人類は発見しています。従って、シミュレーションに当たってはそれらの数式をよりどころにします。

また、ソフトウェアは離散的ですが、ハードウェア(物理現象)は基本的に連続的です(量子力学などにおいて離散的な領域もあります。また、チップや計算回路のハードウェアはゲートレベルでは離散的なものとして扱われるでしょう)。シミュレーションはソフトウェアにより行うため、ハードウェアのシミュレーションをするには連続系→離散系の変換を行う必要があります。

※なお、ここで挙げた観点以外にもハードウェアとソフトウェアにはさまざまな違いがありますが(変更の容易さ、ノイズや外乱の影響、誤差やバラつき、劣化の有無、複製の容易さ、並列性、復元性、再現性、環境依存性など)、本章の記述に特に影響する部分に絞りました。

以下、ハードウェア(物理現象)とソフトウェアに分類し、それぞれのシミュレーションの考え方と注意点について記述します。

ハードウェア(物理現象)のシミュレーション

前提となる基本的な考え方:

物理現象のシミュレーションの前提として、「物理現象は物理法則に従っており、物理法則は数式によって記述可能である」という考え方が基礎にあります。

例えば、物体の運動は(古典力学の範囲では)図1に示す運動方程式で記述可能であることが知られています。ここで、この数式は質量を持つ物体の運動であれば、りんごや月、自動車であっても、さらに自動車が30km/hで走っていても300km/hで走っていても、右折する時も左折する時も、仕向け先が日本であっても北米であっても、その運動を記述可能です。図1は、物体の運動を対象とした方程式ですが、それ以外の各物理現象(構造、熱、流体、電磁気、量子など)を記述する方程式も存在します。

図1 ニュートンの運動方程式

このように、物理法則を記述する方程式は、実世界で観測されるさまざまな物理現象をよい精度で記述できている、という(観測的)事実が、シミュレーションの前提となる物理学の根幹となっています[2]。

これらの数式を用いて実世界の現象を記述し、プログラムとして実装して計算機で実行すればシミュレーションが可能である、というのが基本的な考え方です。

なお、まったく別のアプローチとして、物理法則を記述する数式をよりどころとせず、観測データなどを基に統計や機械学習などの手法を用いることで物理的振る舞いを計算する手法も存在しますが、本稿では割愛します。

物理現象をモデル化してシミュレーションする流れを、図2に示します。
まず、シミュレーションの対象とする物理現象を数理的にモデル化し、主に微分方程式により表現します。
微分方程式は連続系であるためコンピュータで計算するために離散化し、数値計算モデルとします。
それをプログラムとして実装し、実行します。

図2 物理現象のモデル化・シミュレーションの流れ(参考資料 [3]を参考に筆者作成)

一例として、前回 観察したACCシステムに関連する自動車の振る舞いのうち、自動車の進行方向の運動をシミュレーションする例を図3に示します。実際の自動車では前回 観察したようにさまざまな現象が起きているものの、車両全体を質点と見なす非常にシンプルな例となります。

ここでは、数理モデルは質点の運動方程式となります。次に、離散化の手法としてここでは陽的オイラー法と呼ばれる手法を用いて、Nステップ目の加速度と速度からN+1ステップ目の速度を求めるといった数値計算モデルとしています。そうして得られた数式をプログラムとして実装します。これを実行することで、指定した時間経過後(図3の例では10秒後)の座標や速度を求めることができます。

図3 物理現象のモデル化・シミュレーションの一連の流れのイメージ(一次元運動)

ここでは非常にシンプルな例を示しましたが、より複雑なシミュレーションであってもモデル化や離散化や実装の内容がそれに応じて変わるだけで、大まかな流れは共通です。

ここで、先述のようなステップを踏むことで実現されるシミュレーションは適切かという論点が生じますが、それを評価するためのV&V(Verification & Validation)の一般的な流れを図4に示します。数理モデルを正しく実装できているかという観点でのVerificationや、対象とする物理現象に対する妥当なシミュレーションができているかという観点でValidationを行う流れを示しています。

図4 シミュレーションのV&Vスキーム(参考資料 [3] [4]を参考に筆者作成)

物理現象のシミュレーションにおける注意点

図2に示したシミュレーションの各工程には、それぞれ注意すべき点があります。

●モデル化における注意点

物理現象をモデル化して数式として表現する際、以下の点に注意することが重要であると筆者は考えています。

① 何のためにシミュレーションするのか

シミュレーションでは対象のある側面に注目するため、どんなシミュレーションが必要かを決めるためには、その目的設定が最も重要です。

例えば、交通流シミュレーション(※)などで交通状態の評価や、ある車両からの他の車両のおおよその見え方の評価などを実施したい場合は、各自動車のおおよその走行位置や姿勢などが計算できればよく、車体骨格の精緻なモデル化などは不要でしょう。一方で、衝突時の安全性の予測や評価が目的なのであれば、そういったモデルの構築が必要となるでしょう。
また、図3で対象とした車両運動一つを取っても、前後方向の運動(走行距離や車速)にだけ着目したいのか、横方向の運動も考慮したいのか、その車両運動時の車体の姿勢変化を評価したいのか、車両運動の際に車体骨格のある部分にかかる力を予測したいのか、走行時の燃費を評価したいのか、ドライバーに伝わる振動を評価したいのかなど、さまざまな目的が考えられます。

目的設定は、何をモデル化するかに直結します。「あらゆる点で現実世界の代わりになるシミュレーション環境を構築する」のような壮大で漠然としたものではなく、なるべく具体的で明確なものにする必要があります。

※ 自動車や歩行者などの交通参加者の動きや交通状況のシミュレーションのこと。都市計画や渋滞対策、自動運転の研究などに利用される。

②何をどこまでモデル化するか

シミュレーションの目的が定まったら、何をどこまでモデル化するかを考えることになります。

例えば、自動車の運動を考える場合、図3で採用した質点モデル(図5)以外にも、剛体をばねで接続したものと見なすモデル(図6)、構造物の形状や変形などを考慮した有限要素モデル(図7)など、さまざまなモデル化が考えられます。

車両のピッチ運動を評価したいという目的があるならば、図5のようなモデルではなく、少なくとも図6のようなモデルが必要になるでしょう(なぜなら、質点モデルではピッチ方向の運動を表現することが不可能なため)。同様に、車体の変形を評価したいという目的があるならば、図6のようなモデルではなく、少なくとも図7のようなモデルが必要になるでしょう(なぜなら、剛体とは力を受けても変形しない理想的な物体であり、変形を表現することが不可能なため)。

図5 自動車を質点としてモデル化するイメージ
図6 自動車をばねで接続した剛体としてモデル化するイメージ
図7 自動車の車体構造の形状や変形などを考慮する有限要素モデルのイメージ

このように、シミュレーションの目的を踏まえ、注目したい現象を少なくとも何らかの形で表現できるモデルが必要となります。これにより、必要なモデル化の詳細度の下限がおおよそ決まります。

モデル化の詳細度の下限は前述の考え方でおおよそ決まりますが、上限は事実上存在しないため、難しいのはどこまでモデル化するかという問題でしょう。例えば、自動車の直進方向の運動(位置や速度など)を評価するという目的に対して、質点モデルで十分なのかといった問題です。

前回 観察したように、実際のシステムは相互作用するさまざまな要素で構成されています。自動車を質点と見なす図3の例では、自動車を構成するたくさんの部品をまとめて質点と見なしており、かつ自動車が受ける外力の大きさは所与のものとしてモデル化しています。前回 観察したように、実際にはその力はアクチュエータの動作や車体が受ける空気力やその車体への伝達など、複雑な条件の下で決まるため、それらの影響を考慮したいのであれば、それに対応したモデルが必要です。

どの要素までモデル化すべきかは、シミュレーションの目的に照らし、その要素が考慮に値するほどの影響を持つかといった点に関する専門的なノウハウや、シミュレーションの精度要求や、種々の制約(コストや日程や環境など)などを踏まえて判断しなければなりません。そういった判断の下、いくつかの要素はモデル化の対象から除外されることになりますが、除外された要素の影響をそのシミュレーションで評価することは原理的に不可能となります。

 

③どの物理法則の数式をどう組み合わせてモデル化するか

目的や制約を踏まえてモデル化の対象範囲を決めたら、実際にモデル化していきます。

具体的には、物理現象の記述に用いる基本的な数式(基礎方程式と呼ばれることもあります)を使って、対象とする物理現象の振る舞いを記述する数式やモデルを組み立てます。実務的には、それらが大規模・複雑になるにつれて複雑な微分方程式や大規模な行列計算や種々の座標変換などが登場しますし、CAE(Computer Aided Engineering)ソフトウェアを活用する際もメッシュ形状やメッシュサイズの指定など、さまざまなノウハウが求められます。

ここではそういった個別のテクニックに関する説明は割愛し、起点とする方程式の適用範囲や前提条件といった、かなり基礎的な部分に絞った注意点を説明します。

まず、基礎方程式として何を用いるべきかという視点があります。図3の例ではニュートンの運動方程式(図1)を用いており、自動車の運動を記述する場合にはこの式は適用可能ですが限界もあります。例えば物体が光に近い速度で移動する場合には適用できなくなっていき(もっとも、自動車が地面に対してそのような速度で走行することはまずないでしょう)、そのような領域は相対性理論を用いないと現象を適切に記述できなくなっていくことが知られています。

このような基礎方程式の適用範囲の問題は他領域にも存在します。例えば光の振る舞いについて、「光は電磁波である」とする立場に立った時、その振る舞いを記述する基礎的な方程式はマクスウェルの方程式となります(図8)。このような立場に立つ考え方は波動光学と呼ばれます。

図8 マクスウェルの方程式(ここで、∇:ベクトル微分演算子、E:電場、H:磁場、D:電束密度、B:磁束密度、ρ:電荷密度、j:電流密度を表す)

一方で、考えている問題のスケールに対して光の波長が十分に短いと見なせる場合、「光とは最小時間で進むことができる軌道に沿って進む光線である」あるいは「与えられた2点間をとおる光線は、その光路長が停留値となる経路をとる」 [5](フェルマーの原理)と見なして現象を記述することができるとされ、幾何光学と呼ばれます。幾何光学に基づけば、ざっくり言えば「光とは直進・反射・屈折するもの」(図9)ということになり、媒質(波動などの物理的作用が伝達されるための媒介となる物質)間の光の入射角や反射角、屈折角を、媒質中の光速や屈折率によって記述できることになります(中学校や高校の理科でなじみのあるものかと思います)。一方、幾何光学の立場に立つ限り、回折・干渉・偏光といった光学的現象は十分に記述することはできません。

図9 光の直進・反射・屈折(ここで、θ:光の入射角・反射角・屈折角、v:媒質中の光速、n:媒質の絶対屈折率)

昨今、フォトリアリスティックなシミュレーションの事例が増えており、実写さながらの映像が生成できることから注目されていますが、現状では、基本的にはレイトレーシングと呼ばれるレンダリング手法が使われています [6]。レイトレーシングは日本語訳すると光線追跡であり、光を光線として扱う幾何光学に立脚しています(図10)。筆者は光学を専門としていませんが、レイトレーシングベースでアルゴリズムの改良が重ねられていっても全ての光学的現象が表現できるわけではないでしょうから、その利用や解釈に気を付けるべきケースもあるだろうと推察します。

図 10 レイトレーシングの処理方式(参考資料 [7]を参考に筆者作成)

なお、ニュートンの運動方程式と相対性理論や、幾何光学と波動光学は独立した別々のものなのかというとそういうわけではなく、前者を後者で拡張している関係にあります。つまり、相対性理論をある前提の下で近似すればニュートンの運動方程式を導くことができ、マクスウェルの方程式もある前提の下で近似することで幾何光学の方程式(アイコナール方程式やフェルマーの原理)を導くことができるとのことです[5][8][9]。さらに補足になりますが、結局光は電磁波なのかというと、物理学の知見はさらに進んでおり、光とは光子であるとして量子論の方程式で記述する理論が存在し、量子光学と呼ばれます。

自動車の運動を考えるに当たってニュートンの運動方程式を適用可能かといった論点はかなり極端な例ではありますが、そのレベルでなくても各分野で出発点としている数式には何らかの近似を前提としている場合が多々あります(例えば「~は微小とする」「~は線形とする」「~は等質とする」などの前提です)。数理モデルを、その前提を理解せずに使い回していると、知らず知らずのうちにその前提や近似が成り立っていないことがあるため、注意が必要です。

●離散化~実装~実行における注意点

図3では陽的オイラー法を用いた離散化や実装の例を挙げましたが、他にもさまざまな手法が存在します。離散化の手法として何の手法を用いるかは、シミュレーション計算の速度や安定性や精度に影響するため、その点を踏まえた手法選定が必要です。
実務的にはシミュレーションプログラムを一から実装することは稀で、何らかのツールを使う場合が多いと思いますが、たいていのツールでは設定で離散化手法の選択が可能になっています(「ソルバ」などの設定画面があると思います)ので、確認が必要です。

●全般的な注意点

本連載の第一回 で、シミュレーションの活用のためにはまずシミュレーション対象について理解を深めることが重要であると記述しました。シミュレーション対象について知れば知るほど、さまざまなモデル詳細化のアプローチが思い浮かぶようになると思いますが、だからと言って必ずしも詳細化するほど良いわけではない、というのが筆者の意見です。

まず、さまざまな物理現象の基礎的な方程式が存在するとは言っても、現実世界の条件は極めて複雑であり、どの要素に注目してどのようにモデル化するのが妥当であるか、研究開発が必要な領域も多く存在します。そのため、「詳細化する」と言っても未知の領域も多くあり、簡単に詳細化できるものでもありません。

また、あらゆる要素を反映した非常に大規模・複雑なシミュレーション環境のようなものを作ろうとすると、さまざまな側面でシミュレーションのコストが跳ね上がり、リスクも増大することになります。具体的には、ツールやコンピュータのコストも増加しますし、モデル化をはじめとする作業の工数も増加します。時にはシミュレーション計算の不安定化の原因にもなって日程面でのリスク要因ともなります。また、結果の解釈も大抵難しくなっていく上、単純にオペレーションミスなどの要因にもなります。

それらを踏まえると、シミュレーションで検討したいことや目的を明確にして、目的を達成するための軽量・シンプルなシミュレーションを構築する方がよい場合が多いのではないかというのが、筆者の考えです。

ソフトウェアのシミュレーション

ハードウェアとの対比をする構成上、「ソフトウェアのシミュレーション」という見出しとしましたが、通常このような表現はあまり使われません。一方、ソフトウェアの振る舞いを模倣するという意味では、一例としてスタブやモックなどと呼ばれるソフトウェアが存在します。これらは、「あるソフトウェアの代わり」として機能し、ソフトウェアのテストにおいてテスト対象が依存する他のソフトウェアコンポーネントの代替として用いられます。
なお、こういったソフトウェアはテストダブルと総称され、前述のスタブやモックといったものが有名ですが、他にもダミーやスパイやフェイクと呼ばれるものが存在します。

以下、これらのソフトウェアに関する基本的な考え方を解説した後、具体例を見ていきます。

前提となる基本的な考え方:

ソフトウェアやシステムは、他者から観測できる外部と、観測できない内部に分けることができ、利用する側のユーザーやシステムに関わってくるのは、外部から観測できる振る舞いである、という視点が前提として重要と考えられます。

そして、他者からみた外部の振る舞いが模倣されていれば、内部は忠実に再現する必要がない、というのが基本的なアイデアとなります。

具体例を挙げてみます。

例えば、第2回 で観察したACCでは、ADAS(Advanced Driver-Assistance Systems)コントローラがブレーキユニットに対して制御指令を送る構成となっていましたが、それに先立ってブレーキユニット側から許可を得るための手続きが必要だと仮定します(実際にそのような仕様が存在するとは限りませんが、以降の説明のために仮定します)。

図11に許可シーケンスのイメージを示します。なお、ここで図示しているのはソフトウェア的なシーケンス処理であり、ハードウェア的な接続(CANなど)を表現しているわけではないことにご注意ください。

図11 制御許可の流れのイメージ

ブレーキユニットの内部では、ADASコントローラからの許可依頼を受けて、許可を出すためにさまざまな処理を行うことになるかもしれません。一方で、ADASコントローラにとってみれば、ブレーキユニットの内部で何が起きているかは知る由もなく、ブレーキユニットからやってくるメッセージのみが観測可能です。

ここで、このシーケンスにおけるADASコントローラの振る舞いをテストしたいとします。その場合、ブレーキユニット(もしくは、その代替品)が必要になるでしょう。もしそういったものがなければ、シーケンス処理が始められません(図12)。こういった情報をやりとりする相手のことは、しばしば対向装置と呼ばれます。

図12 対向装置がないとテストができないケースがある

対向装置として本物のブレーキユニットが調達できればそれを接続するのも手です。しかし、プロジェクトの状況によってはそれがかなわない場合があります。その場合、代替品を作ることになりますが、ADASコントローラのテストという用途に用いる上では、外部から観測できる振る舞いのみが模倣できれば事足りるという考え方が成り立ちます。

そのような考え方を適用したものが図13です。内部的には実際のブレーキユニット(図11)よりもシンプルな処理で、ADASコントローラのテストが可能となります。ECUのテスト環境などで「仮想ECU」などと呼ばれているものは、こういった考え方の下で構築されたものを指す場合も多いです(ただし、SDVの文脈などで登場する「ECUの仮想化」といったものは、ハイパーバイザなどを用いたコンピューティングリソースの仮想化や低レイヤのエミュレーションなどを指すことも多く、これはテストダブルの技術とは異なります)。

図13 テストダブルを対向装置として用いるイメージ

ここでは非常にシンプルなシーケンスを例に示しましたが、「あらゆる入力パターンに対するあらゆる振る舞いを模倣する」といった方向性でテストダブルを作り込んでいくと、徐々に本物のブレーキユニットのソフトウェアを丸ごと忠実に再現する状態に近づいていく(極端な場合、二重開発しているような状態になる)ので、目的を明確にした上で観点やパターンを整理しつつ、なるべくシンプルな設計で対応することが重要です。

ここでは分かりやすさのためにADASコントローラとブレーキユニットという、物理的に分かれているユニット間のシーケンス処理を例に挙げましたが、そうでなくとも、プログラムがある一定の単位でモジュール化できていて、モジュール間のインターフェイス仕様が明確であれば、物理的に分かれていない単一ユニット内のプログラムに対しても同様の考え方が適用できます。

このことは、ソフトウェアのテスト容易性という側面を示唆しています。昨今はソフトウェアが急速に大規模、複雑化していますが、再利用性や保守性だけでなくテスト容易性といった観点からも、ソフトウェアアーキテクチャをきちんと設計して運用することや、ソフトウェアのモジュール化を進めることの重要性がますます高まっていると言えるでしょう。

シミュレーションの活用形態:自動車制御システムのシミュレーションに向けて

本稿では、ハードウェアとソフトウェアのシミュレーションの考え方や注意点について説明しました。

シミュレーションの活用形態としては、ハードウェア(物理現象)の振る舞いの計算や、あるソフトウェアコンポーネントの代替(対向装置の模倣)に用いる例を示しました。これらのシミュレーション技術を組み合わせることで、前回 観察したようなADASシステムのシミュレーション環境や、特定のECU(例えばADASコントローラ)の評価環境を構築することができます。次回は、そういったシミュレーション環境の考え方について解説します。

参考文献

[1]経済産業省 製造産業局 自動車課, “IT利活用分野について(自動車分野),” [オンライン]. Available: https://www.meti.go.jp/shingikai/economy/daiyoji_sangyo_skill/pdf/002_06_00.pdf. [アクセス日: 16 5 2025].

[2]須藤靖, “物理学は世界をどのように記述するのか,” 東京大学大学院理学系研究科 物理学専攻, 12 4 2022. [オンライン]. Available: https://www-utap.phys.s.u-tokyo.ac.jp/~suto/myresearch/KUT-2022April.pdf. [アクセス日: 16 5 2025].

[3]山田貴博, “ASME V&V 40の概要,” 横浜国立大学大学院環境情報研究院, 16 12 2019. [オンライン]. Available: https://www.pmda.go.jp/files/000234288.pdf. [アクセス日: 16 5 2025].

[4]L. E. Schwer, “An Overview of the ASME V&V-10 Guide for Verification and Validation in Computational Solid Mechanics,” 20th International Conference on Structural Mechanics in Reactor Technology (SMiRT 20) , [オンライン]. Available: https://repository.lib.ncsu.edu/server/api/core/bitstreams/a45e16f4-5cce-44f4-b2bd-fa760019c8aa/content. [アクセス日: 16 5 2025].

[5]山本義隆, 幾何光学の正準理論, 数学書房, 2014.

[6]Epic Games, Inc., “リアルタイムの基礎知識 リアルタイム レイ トレーシングとは?なぜこれを気にする必要があるのか?,” [オンライン]. Available: https://www.unrealengine.com/ja/explainers/ray-tracing/what-is-real-time-ray-tracing. [アクセス日: 16 5 2025].

[7]東京電機大学 工学部第二部情報通信工学実験 グラフィックス応用テキスト, “The Textbook of RayTracing @TDU Chapter1. レイトレーシング法とは何か,” [オンライン]. Available: https://knzw.tech/raytracing/?page_id=1154. [アクセス日: 16 5 2025].

[8]京都大学大学院理学研究科物理学・宇宙物理学専攻 光物性研究室, “9. 幾何光学,” [オンライン]. Available: http://www.hikari.scphys.kyoto-u.ac.jp/jp/index.php?plugin=attach&refer=%E9%9B%BB%E7%A3%81%E6%B0%97%E5%AD%A64%202009%E8%AC%9B%E7%BE%A9%E3%83%8E%E3%83%BC%E3%83%88&openfile=lecture1222ver1.pdf. [アクセス日: 16 5 2025].

[9]MochiMochi 3D, “光は本当に光線(Ray)として使っていいのか ~幾何光学近似~,” 11 6 2023. [オンライン]. Available: https://kinakomoti321.hatenablog.com/entry/2023/06/11/235624. [アクセス日: 16 5 2025].

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Search Articles By The Cast出演者/執筆者から記事を探す

Search Articless By The Categoryカテゴリから記事を探す

Ranking

ランキング

もっと見る