【技術ブログ】M-SDL 20.10 リリース

2021.04.02

ブログ

M-SDL 20.10 リリース

by Sharon Rosenberg | 17 December, 2020

 

Foretellixは、Open M-SDLをOpenSCENARIO 2.0に統合することを目指し、業界のニーズを満たすべく、M-SDLを進化させ続けています。以前のバージョンと同様に、顧客のニーズやパートナーからのフィードバックに対応し、ASAMの OpenSCENARIO 2.0開発プロジェクトへの参加を通じて得られる情報を踏まえ、更新を実施しました。関係者の皆さま全員に感謝を申し上げます。 

Cut-in

これらのフィードバックにより、我々は言語を強化し、ユーザーの重要なニーズにタイムリーに対応することができます。M-SDLバージョン20.10には、過去数ヶ月間に導入された複数の重要な機能が含まれます。

  • 新しい道路要素を用い、ランダムに選択されたシナリオの場所に対する制御を改良
  • 任意に形成された動作を用いた、指示された明示的な動作の制御
  • シナリオ作成およびメンテナンス作業の重複を避けるため、左側と右側通行の両方に同じシナリオを使用することが可能

M-SDL開発に関する最新情報の取得、もしくは開発への寄与をご希望の場合は、ASAMおよび M-SDL communityにご参加ください。

道路要素

ADおよびADASの検証では、特定の道路タイプまたは固有の特性を持つ道路セグメントでの運転が必要になる場合があります。これは、基本的なOpenDriveマップで利用可能な場合と、独自開発の複雑なマップでのみ利用できる場合があります。 

一方、具体的に指示されたテストとは異なり、抽象的なシナリオ作成では、マップ上の関連するすべての場所をシナリオで使用できるよう、このような特性を抽象的な方法で記述できることが求められます。この要件を満たすため、M-SDL 20.10には新しい構造体タイプroad_elementが含まれます。

道路要素は、特定のパラメーターを持つ道路セグメントを表します。これらパラメーターは、道路自体の物理的特性(車線の数または車線の幅など)の場合もあれば、周囲の環境(例えば、崖上の道路または並木道)に関連する場合もあります。アクターの動作は、一連の道路要素上に発生します。

道路要素のM-SDLライブラリには、汎用的な道路、街中の交差点、高速道路などの複数の基本的要素を持たせることが可能です。ユーザーは、道路要素のライブラリセットを拡張し、独自の検証ニーズに固有な機能を持つ要素を含めることができます。

例えば、ライブラリに交差点を記述する要素がある場合、車両は交差点を通る特定の軌道を追従することができます。

scenario car.pass_thru:
    j: town_junction
    in_road: junction_entry with(junction: j)
    out_road: junction_exit with(junction: j)

do serial(duration: [1..10]second):
    enter: car1.drive() with:
        path(in_road) # approach the junction
    inside: car1.drive() with:
        path(j) # traverse the junction
    exit: car1.drive() with:
        path(out_road) # leave the junction

道路要素は、シナリオの記述を複数のマップや同じマップ内の異なる場所で流用できるようにします。

任意に形成された動作

開発プロセスの一環として、また、検証フロー全体を通して、ユーザーはアクターに明示的かつ完全に指定された操作を実行させたいと考えています。

このニーズは、NHTSAやNCAPのような安全性評価機関が公開したテストプロトコルにも示されています。このようなテストプロトコルでは、テストされた車両の軌道を正確な距離と角度で詳細に説明しています。新しいshapeモディファイアは、求める操作の側面を完全に制御することにより、この要件を満たします。

自動緊急ブレーキのテスト操作
Figure 1: NCAPのテストプロトコルに則った自動緊急ブレーキのテスト操作

渋滞運転支援機能のテスト操作
Figure 2: NHTSAの作業中ドキュメントに基づいた渋滞運転支援機能のテスト操作

これらの事例は、アクターの位置を制約するための差し迫ったニーズを示していますが、ユーザーは他の属性(例えば速度や加速度)を制約したい場合もあるでしょう。ユーザーは、M-SDLライブラリに追加された基本的な形状を基に、求めるバリエーションを作成することができます。

  • any_position_shapeは、アクターの位置を特定の軌道に制約します。
  • any_speed_shapeは、アクターの速度を特定の軌道に制約します。
  • any_acceleration_shapeは、アクターの加速度を特定の軌道に制約します。
  • any_direct_control_shapeは、アクターのアクセルとブレーキを特定の軌道に制約します。

例えば、ユーザーが円弧形状を作成する必要があるとします。円弧は、any_position_shapeオブジェクトを継承することもできます。この円弧形状を使用するには、ユーザーはまずシナリオ内にこの形状のインスタンスを作成し、shape()モディファイアを使用してアクターの動作シナリオをその形状に制約します。以下に示すシナリオのフェーズ1では、car1 は高速道路を10秒間走行します。フェーズ2では、car1は最長持続時間に達するまで、円弧形状に沿って走行します。

scenario car.drive_with_shape:
    arc1: arc_shape with (radius: 15m, angle: 10deg)
    hw: highway
    car1: car
    do serial:
        p1: car1.drive(duration: 10s) with: path(hw)
        p2: car1.drive() with: shape(arc1)

交通の流れ

大多数のOEMは、交通の流れが左側通行であれ、右側通行であれ、安全に機能する必要のある車両を販売しています。各シナリオを反対側の通行でも実行できるよう書き直さなければならないのは、煩雑でエラーが発生しやすく、多くのリソースを要する作業であり、また、シナリオのメンテナンスも倍になります。M-SDLは、いずれの側の通行でも実行できるシナリオ作成を可能にし、シナリオを複製する必要がなくなります。

例えば、テストパラメーターを使用して、右側通行(Figure 5)、または、左側通行(Figure 6)のいずれでもcut_in_and_slow()シナリオを実行することができます。

右側通行Figure 5: 右側通行の流れ

左側通行
Figure 6: 左側通行の流れ

最近のM-SDL 20.10リリースでは、その他にも複数の修正が実装されました。LRM(リファレンスマニュアル)全体を通して説明を追加し、記述を改善しました。追加の内容や説明の一覧を確認するには、LRMのセクション18.1のログを参照してください。

安全運転を!


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

Foretellix製品についてこちら

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


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

一覧へ戻る

ページトップへ