こんにちは!
今日は自動運転分野の規格などの文書をSysMLで読み解いてみます。対象とするのは、一般に “SaFAD” と呼ばれている自動運転分野の文書であるSafety First For Automated Drivingです。この文書は、安全な自動運転車を開発するための原理原則から、必要な概念、汎用的なアーキテクチャなどを含んでいます。また付録には、この文書に沿って、「高速道路上の自動運転車」のアーキテクチャはどう記述できるのか、といった例が提供されています。SaFADの解説は例えばこの資料が便利です。その他詳しい説明やISO化などの経緯などが書いてあります。
今回具体的には、この文書の中身をSysMLで記述しながら読み解いていくことにより、一般的な文書から記述したSysMLモデルが、個別の自動運転車のアーキテクチャの記述の際にどのように役立つかを紹介していきます。また、SysMLによって記述するだけでも、関係者間で規格に対する理解の齟齬が減ったりすることも期待できます。
まず、「SysML」というだけでは、モデリング言語しか規定されていないため、アーキテクチャを記述する際の概念などは改めて作らないといけないのですが、そのためのフレームワークも用意されているので、今回はそれを利用します。
フレームワークはいくつかありますが、ここではUMLやSysMLと同じくOMGが提供している、統一アーキテクチャフレームワーク(Unified Architecture Framework, UAF)を用いることにします。
SaFADでは、まず安全な自動運転車を開発する上での12の原理原則を挙げています。例えば、次のようなものです。
- Safe operation(安全運行)
- Operational Design Domain(運行設計領域)

例えば、安全運行には、基本的なフェールセーフや、さらには、故障しても機能をデグレードしたモードで継続して運行するなどのフェールデグレードなどの考え方が示されています。運行設計領域は、自動運転分野では一般的な概念ですが、それを基準に、もし逸脱したら、ドライバーに権限委譲するなどの基本的な考え方が記されています。これらは、ここではUAFで提供されている概念であるOpportunity(機会)によってモデル化してみます。Opportunityは、UAFのViewpointでいうと、戦略ビューポイント(Strategic viewpoint)及び動機ビューポイント(Motivation Viewpoint)の両方に関係するものになります。UAFグリッドでは、そのSt-Mvというセル内で定義されるものです。

実際には、«Opportunity»ステレオタイプを持つブロックとして定義しています。
次に、SaFADでは自動運転車に必要となる能力(Capability)が13個規定されています。
- FS_1 Determine location(位置決定能力)
- ・・・
- FS_7 Determine if specified nominal performance is not achieved(識別された通常性能を達成しているか否かの決定能力)

これは、ちょうどUAFにもCapabilityという概念が提供されているので、それでモデル化してみます。

SaFADでは能力は大きくフェールセーフ能力(Fail-safe capabilities, FS) とフェールデグレーデッド能力(Fail-degraded capabilities, FD)に分かれていますので、ブロックの構造として記述しました。さらに、能力と原理原則との対応関係が規定されていますので、その関係もモデル化してみます。

次に、SaFADでは能力を実現するための要素(element)が定義されます。これらは、後に自動運転車の機能汎用アーキテクチャ(functional generic architecture)の構成要素になるもので、各能力ごとの、その能力を実現するための要素群の構成も提供されています。ここでの要素は、その実装を特定しているものではなく、例えば、要素の一つである環境認識センサー(Environment perception sensors)は、その具体的な実装の例として以下のようなものが挙げられています。
- カメラ(Camera)
- LIDER
- RADAR
このように、実装に依存しないアーキテクチャの構成要素は、ちょうどUAFでいうと、OperationalPerformerという概念に相当します。以下のようにモデル化しました。

これらの要素を使って、個別の能力の実現方法を記述していきます。例えば、SaFADでは位置決定能力(FS_1 Determine location)は次のように特徴付けされています。

上の図を、下記のようにSysMLで記述してみました。

ここでは、内部ブロック図を使って要素間の関係を記述しています。内部ブロック図ですので、この内部を記述しているブロック自体の定義は別のブロック定義図で定義しています。

つまり、ブロック「FS_1 Determine location」の内部構造として、位置決定能力の実現方法を記述していました。この実現方法が位置決定能力の実現方法を表していることをモデル上でも表現するため、次のようなトレーサビリティ関係も記述しておきます。

次は同様に、SaFADで定義されてる、意図した機能の機能汎用アーキテクチャ(Functional Generic Architecture of the Intended Functionality)を内部ブロック図によって記述してみます。ここでの「意図した機能(Intended Functionality)」という用語は少し分かりにくいかもしれませんが、ISO21448:2022Road vehicles — Safety of the intended functionalityでは、「specified functionality」と定義されているものです。

SaFADでは、自動運転車で重要な概念となる最小リスク状態(minimal risk condition,MRC)及び最小リスク制御(minimal risk maneuver,MRM)についてもいくつか規定があります。それらはUAFでは対応する概念はないため、新たに«MRC»及び«MRM»というステレオタイプを導入して以下のようにモデル化しました。
まず、最小リスク状態を特徴付けるためのステートマシン図を書いてみます。

各最小リスク状態については、ステートマシン図では状態としてモデル化していますが、さらに、ブロックで別に定義しておき、そこへのハイパーリンクを張っています。

また、最小リスク制御は、最小リスク状態への遷移として規定されているため、モデル上でも、ステートマシン図の遷移としてモデル化します。astah*では遷移に対してハイパーリンクは張れないため、ノートを関連付けそこに下記のように記述したブロックによって定義した最小リスク制御へのハイパーリンクを張っています。

ここで定義した最小リスク状態及び最小リスク制御は汎用的なものであり、後述する特定の開発例において、その開発事例における最小リスク状態及び最小リスク制御を記述する際に参照されています。
以上のように文書に提供されているアーキテクチャをモデル化したものの活用法を次に見ていきます。
SaFADの付録には、「高速道路上のL3レベルの自動運転」の場合の最小リスク状態や最小リスク制御、さらには、機能汎用アーキテクチャに基づくアーキテクチャが示されています。最小リスク状態や最小リスク制御は、前述した汎用的な定義を参照する形で記述されています。まずは、最小リスク状態は次のように与えられています。ここでは一部のみ示しています。

最小リスク制御についても一部をモデル化下ものを示しておきます。

本来であれば、これらについても前述したようなステートマシン図によって特徴付けしておく必要がありますが、汎用的な最小リスク状態や最小リスク制御などの特殊な場合として定義することにより、結果的にこれらの要素も、前述したステートマシン図と関連付けられます。そのような意図に基づく汎化関係を以下のように記述しました。はじめに「高速道路上のL3レベルの自動運転」の最小リスク状態です。

次に、最小リスク制御です。

また、「高速道路上のL3レベルの自動運転」についても、前述したような汎用アーキテクチャが提示されています。

これは、前述した機能汎用アーキテクチャにもどづいて定義されているため、モデル上でもそれを再利用して記述してみます。まずは、機能汎用アーキテクチャを複製します。複製は内部ブロック図ではなく、それを持つブロックそのものの複製から始めます。汎用アーキテクチャに基づいているとはいえ、いくつか冗長性のために追加された要素があるからです。そのように複製して作成されたモデルの記述は以下の通りです。まず、ブロック定義図は結果的に以下のようにけっこうな数の要素数が追加されたものになりました。

要素間の関係に関する情報を含む内部ブロック図の方は次のようになりました。

公開されている文書だけでは、それぞれの要素や要素間のつながりの意味が不明な部分があったので、いくつか仮定を含んだモデルの記述になっていることはご了承ください。
いかがでしたでしょうか。モデルで規格などの文書を記述しておくことにより、その内容の理解を促進したり、個別のプロジェクトに適用する際にそのモデルが活用できたりする可能性を感じていただけたらと思います。
本記事ではastah* System Safety(astah* SysMLでも大丈夫です)及びUAF入力支援プラグインを使用してモデルを記述しました。
謝辞:本記事はSTリサーチ高橋精一様のご協力のもと執筆致しました。ここにお礼申し上げます。