M-SDL 21.05.0.1 をリリース

Foretify

2021.10.20

左側通行と右側通行

Foretellixにとって慌ただしい時間となりました。最近の一連の動向の中で、業界の多くが、抽象的シナリオ、
自動化、カバレッジ測定が、生産性と安全性のための正しい道であることに気づいたようです。

by Sharon Rosenberg | 26 May, 2021

この3年の間、論理シナリオや具体的シナリオよりも抽象的シナリオの方が生産性が高いことや、予測不可能なリスクに対して確率的なアプローチが有効であることなどをユーザーに説明する必要がありました。現在ではこれらのことを、PegasusファミリーのVVM(Verification & Validation Methods)に関する論文で読んだり、ASAMの標準化会議で定期的に知ることができます。ところで、ASAMでは、OpenSCENARIO2.0規格のクローズに向けて最後の追い込みに入っています。この取り組みに参加して影響を与えることを、いつものように私たちは強くお勧めします。

とはいえ、まだまだやらなければならないことはたくさんあり、私たちは常に「活動」しています。ここでは、21.05.0.1 M-SDLに追加された数多くの機能のうち、いくつかを簡単にご紹介します。

  • 同じシナリオ記述から左側通行と右側通行をサポート
  • 実際の分布を利用したシナリオ作成
  • 複数のクルマの属性や行動を連携
  • rise/fallイベント、OSC1.0からM-SDLへの変換を簡略化  

左側通行

左側/右側通行
Figure 1:左側通行と右側通行

世界人口の約30%が左側通行で、ドライバー(例えば筆者 )にとっては、(特に混沌としたラウンドアバウトでは)いつも慣れるまでが大変です。ほとんどのOEMは、両側走行可能な車両を提供することを計画していますが、そのために開発テストとV&Vの取り組みを複製する必要があるということでしょうか?M-SDLでは違います。M-SDLでは、同じシナリオを左側通行と右側通行の両方で活用することができます。Foretifyユーザーにとって、これらは素晴らしいニュースです。ユーザー側のパラメータ化されたシナリオで変更を加える必要はありません。例えば、カットインシナリオで左側通行にするには以下のようにします。

左側/右側通行

一度のリクエストで、すべてのシナリオが左側通行の要件に適応します。さらに、ADAS&Highwayパッケージのユーザーにも朗報です。すべてのout-of-the-boxコンテンツは、希望するどちら側の通行にも対応しています。また、必要に応じて左側通行のマップも用意しています。

道路の中央や縁石の方向への移動をハードコーディングしたい場合は、いくつかのシンプルなAPIを追加しました。

実際の分布を利用したシナリオ作成

3Dグラフ
Figure 2:速度と密度の関係を3次元で表現 (Wang et al. 2009)

シナリオ作成を分布機能だけに頼っていては、十分ではないし、効率的でもありません。哲学的な話ではありませんが、人生は、何か面白いことが起こる前に、同じ状況を何度も経験するような、反復的で退屈なものになりがちです。M-SDLがないと、ユーザーはテストの有効性を評価できず、自分の懸念がすべて検証されたかどうかを判断できないため、不満を感じることが多いのです。カバレッジドリブンアプローチによって、V&Vの目標を効果的に設定し、達成する方法については、こちらをご覧ください。  それと同時に、エッジケースが得られるよういくつかの属性を変える場合、同時に他の属性については現実の分布を利用したいと考えるでしょう。これにより、より代表的なシナリオが得られます。例えば、あるシナリオでは、歩行者が不意に車の前に飛び出してくることを要求するかもしれません。他車両や歩行者などは、典型的な自然行動を示すはずです。M-SDLでは、あらかじめ定義された正規分布と一様分布が提供されます。

extend top parameter

最初の例では、10kphから120kphの間の数値が返され、平均値は55.5kph、標準偏差は7kphとなっています。2つ目の例では、要求された範囲で一様(フラット)な分布を持つ数値を返します。なお、分布関数はsoft制約で使用されており、生成された値を非典型的なエッジケースに誘導したい場合には無視されます。

より多くの分布関数のユースモデルが用意されていますので、M-SDLでは独自の関数を定義することができます。詳細は、Language Reference Manual (LRM)をご覧ください。(ランゲージリファレンスマニュアルをご希望の方は、お問い合わせ内容欄に「リファレンスマニュアル希望」と記載の上、こちらからお問い合わせください)

複数のアクターの挙動の制御および調整

複数アクターを管理
Figure 3:複数のアクターを制御

複数の車両を使ったシナリオを使用しているForetellixのお客様の中には、1つの制約を利用してグループ内のそれぞれの車両を設定する機能を要望される方もいました。その要望に応えて、車両グループを含むあらゆるリストに適用できる制約イテレータを追加しました。

次の例では、色に関する1つの制約が車両グループ全体に適用されていることを示しています。

色に関する制約

上の例では、forループが車両グループを反復し、シンボル名cを使って個々の車両を指定し、40%が緑、60%が青になるように制約をかけています。

rise, fallイベント、OSC1.0からM-SDLへの変換の簡略化

車両のTTC(衝突までの時間)が初めて1秒を切った時の情報をモニターしたいと仮定します。次のコードでは、目的のイベントを達成しますが、以降のシミュレーションクロックでも複数回イベントが発生します。

rise_fallイベント

rise()とfall()がM-SDLに追加され、イベント要素を細かくコントロールできるようになりました。イベント定義内の rise(Boolean-expression) は、Boolean-expression がtrueになったときにイベントを発生させます(しかし、それ以降のクロックでは発生しません)。fall()は同様のもので、式がfalseになったときのためのものです。次の例では、必要なイベントをとらえています。

イベントパラメータ

このイベントは、衝突までの時間が1秒よりも短くなったときに発せられますが、その後はサイクルごとに繰り返されるわけではありません。

この追加機能は、それ自体が有用であると同時に、OSC1.0のシナリオを変換するためにも重要です。M-SDL(現在)とOSC2.0(将来)では、抽象的シナリオだけでなく、具体的シナリオや論理シナリオ(範囲のみ)の作成も可能です。そのため、OSC1.0の上位集合となっています。新規に作成するシナリオには、抽象的シナリオを使用することを強くお勧めしますが、すでに持っているレガシーシナリオを変換して、抽象的シナリオにし、宣言的な言語の読みやすさを享受したいと思うかもしれません。OSC1.0データベースをM-SDLに移行しているときに、他の信号のrise/fallでイベントを評価するという時間的な機能が欠けていることに気づきました。

M-SDLの抽象的シナリオ
Figure 4:具体的または論理的なOSC1.0を抽象的なM-SDLシナリオに移行するための自動化されたフロー

もしOSC1.0のシナリオを多数お持ちで、これらを移行できるかどうかを確認したい場合は、自動移行のデモンストレーションを行い、期待される生産性の向上について喜んでお話しいたします。

最新のオープンM-SDL言語リファレンスマニュアルをご希望の方や、ご質問のある方は、遠慮なくお問い合わせください。  お客様とM-SDLパートナープログラムのメンバーの皆様には、自動車業界全体の利益のためにM-SDLを前進させる、絶え間ないフィードバックに感謝したいと思います。

安全にお過ごしください。

M-SDLについてのページもあわせてお読みください。



この記事は、Foretellixによるブログ記事を、株式会社バーチャルメカニクスにて翻訳加筆修正したものです。原文はこちら

Foretellix製品について詳しくはこちら

デモやお見積もりのご依頼はこちらから


※ 記載された会社名・商品名・製品名は、各社の登録商標または商標です

この記事のシェアはこちらから