コンテンツにスキップ

drawtonomy — 自動運転シナリオのためのホワイトボード

自動運転シナリオのための、無料・ブラウザベースのホワイトボード。論文、スライド、設計レビュー、シナリオ作成のためにレーンや交差点、交通シーンをスケッチできます。esmini-WASM を使ったブラウザ内シナリオ再生にも対応。インストール不要。アカウント不要。

drawtonomy は、自動運転 (AD) と ADAS のシナリオ作成のための、無料でブラウザベースのホワイトボードです。

レーン、交差点、車両、歩行者、信号機、道路標示をファーストクラスの図形として配置できます。インストール不要・アカウント不要・データのアップロードもなし。

しかし、描いたシーンはそこで終わりではありません。Scenario モードでは、同じキャンバスが OpenSCENARIO 作成ツールに変わります。アクターにフェーズ、イベント、トリガーを与え、再生ボタンを押すと、esmini を WebAssembly にコンパイルしたものがブラウザで実行されます。最後に PASS / FAIL 判定が表示されます。OpenSCENARIO の作成と実行は独立した柱であり、単なる橋渡しではありません。

真の橋渡しとは、シーンを隣のツールチェーンに横流しすることです。ASAM OpenDRIVE 1.8 へのエクスポートと Lanelet2 OSM マップ・ROS 占有格子のインポート機能がそれです(詳しくは以下のシミュレーション・地図スタックへの橋渡しを参照してください)。

シナリオがすでにある場所でも使えます。.xosc ファイルの多くは Git リポジトリに置かれているので、drawtonomy for GitHub Chrome 拡張機能を使えば、リポジトリをクローンしたりシミュレータを用意したりせずに、github.com 上でそのままシナリオを再生したり、フォルダごと閲覧したりできます。

シーンを描く。動きを付ける。

Section titled “シーンを描く。動きを付ける。”

この 2 つは別々の機能ではなく、ひとつの流れです。シーンで描いたレーン・アクター・ジオメトリが、そのままシナリオを再生するときの道路ネットワークとエンティティになります。間に書き出しの手間はなく、別のツールも要りません。

シーンは運転シーンの語彙を最初から持ったキャンバスです。一般的な作図ツールは「レーン」を知らないので、少し動かすたびに道路の形を作り直すことになりますが、drawtonomy はレーンや交差点を図形として理解しているため、何度描き直しても形が崩れません。論文の図も、設計レビューのスライドも、通話中に描くコーナーケースの説明図も、同じキャンバスで足ります。数式が要るときは Math (LaTeX) ツールでコスト関数やコントローラの式をその場に置けます。

シナリオは、そのシーンを動かす側です。アクターにフェーズ・イベント・トリガーを与えるか、AI シナリオ生成に任せます。レーンを 1 本描いて車を 2 台置き、「Vehicle2 cuts in front of Vehicle1.」と伝えるだけで、ストーリーボードが書き上がり、esmini で実際に実行され、検査を通ったものだけがキャンバスに載ります。生成後は普通のシナリオなので、シークも編集も書き出しもいつもどおりです。

書く前に、動くところを見てみてください。esmini リポジトリの実物のシナリオをこのまま再生できます — クリックすると GitHub から .xosc を取得して、そのままブラウザで走ります。詳しくは .xosc を開いて再生をご覧ください。

ego にプランナーを適用して、計画結果を再生することもできます。候補経路つきの reactive planner の cut-in 例をご覧ください。再生バーの Candidates をオンにすると、各再計画サイクルで評価した 20 本の実行可能候補と 10 本の却下候補が表示されます。プランナーが採用した軌跡が ego を走らせ、3D でも確認できます。公式 checker の判定を見る場合は、判定対象そのものを照合できる CommonRoad の solution と verdict の例を使用します。

3D 表示で見た cut-in シナリオ — 多車線道路を走る ego を後方から捉え、その前方にプランナーの軌跡が緑で描かれている。下部にはストーリーボードが開いている

詳しくは 3D 表示をご覧ください。

テストの結果もシナリオと同じ場所に置けます。要件、テストケース、実行結果をファイルとして置いておけば、drawtonomy で開いて、どのバージョンがどこで PASS / FAIL するかを確かめ、どの実行でもその場で再生できます。AEB のテストスイートのサンプルを開いてみてください。

drawtonomy のテスト管理の画面 — 左に要件の木、中央にパラメータのヒートマップ付きの cut-in のテストケース、右に FAIL の実行を再生して衝突の位置に印が付いている

詳しくはテスト管理をご覧ください。

レーン・車両・交差点という語彙は応用が利くので、教習所の教材や交通工学の概念図にも使えます。用途の一覧はユースケースのページにまとめています。

ホワイトボードが主な機能ですが、隣接する作業の軽量ブラウザフロントエンドとしても機能します。

来訪の目的に合わせて入り口を選んでください。

論文・学位論文の図

LaTeX、スライド、Markdown にきれいに埋め込める、シャープなベクター形式の AD / ADAS シナリオ図。 .drawtonomy.svg(drawtonomy 独自の再編集可能な SVG 形式)、PDF、EPS でエクスポートできます。

設計議論の図

車線変更マニューバ、非保護左折、オクルージョンケースなどを数秒でスケッチ。 結果を共有し、翌日に同じキャンバスで議論を続けられます。

シナリオ作成前のスケッチ

OpenSCENARIO XML を書く前にシーンを描き、スケッチが固まったら .xosc / .xodr にエクスポートできます。

地図・ROS のアノテーション

衛星画像背景の上にレーンをトレースしたり、Lanelet2 OSM 地図を編集したり、 ROS 占有格子地図にパスや障害物を書き込んだりできます。

一般的な作図ツールより速い理由

Section titled “一般的な作図ツールより速い理由”

運転ドメインの図形

レーン、交差点、横断歩道、信号機、道路標示、車両、歩行者をビルトインで提供。 独自の SVG テンプレートを追加し、PR で貢献することもできます。

トポロジーを意識したレーン

各レーンは Next / Previous / Left / Right の接続情報を持ちます。 境界を共有する 2 本のレーンは同じ境界点を共有するため、ドラッグ 1 回で両方が動きます。

無限キャンバスと衛星画像背景

任意の大きさのレイアウトを自由にパン・ズーム。 衛星地図やロードマップ背景を配置して実在の場所からトレースできます。 スナップと共有点機能で、手作業の修正なしにジオメトリの整合性を保てます。

無料・ブラウザだけで動作

インストール、アカウント、アップロード不要。保存した drawtonomy.svg を後から開けば、 接続関係や重なりを含めて元のシーンがそのまま復元されます。

シミュレーション・地図スタックへの橋渡し

Section titled “シミュレーション・地図スタックへの橋渡し”

ホワイトボードが主な機能ですが、描いたシーンをワークフロー内に流すための橋渡し機能を用意しています。

論文・スライド向けの再編集可能な SVG

.drawtonomy.svg 形式は通常の SVG としてブラウザ・GitHub・スライドでプレビュー可能で、 さらに drawtonomy で再度開くとすべての接続情報が保持されたまま編集できます。 後で編集する可能性のある図(論文、スライド、ドキュメント、ブログ記事)には、まずこの形式を選びます。

Lanelet2 のラウンドトリップ

Lanelet2 の OSM マップを開いて編集し、OSM に書き戻せます — Autoware のサンプル地図とその規制要素も含みます。 既存の HD マップへの変更をスケッチするときに便利です。

ASAM OpenDRIVE のラウンドトリップ

OpenDRIVE の .xodr マップを開いてレーンや接続をビジュアルに編集し、 OpenDRIVE 1.8 + OpenSCENARIO 1.2 としてエクスポートできます — esmini 対応 zip にまとめることも可能です。 触れていない道路はキャリースルーでそのまま出力されます。

OpenDRIVE ⇄ Lanelet2 ブリッジ

両フォーマットは同じ内部レーンモデルに変換されるため、 drawtonomy は OpenDRIVE と Lanelet2 のブラウザ上変換ブリッジとして機能します。 片方をインポートしてビジュアル編集し、もう片方でエクスポート可能。 レーン、交差点、規制要素(信号・標識・優先権)を双方向に変換します。

実際に描き始めるときは、目的別に整理された 4 つの入り口から選んでください。

drawtonomy を使うだけでなく上に何かを構築したい場合は、drawtonomy を拡張するを参照してください。SDK のソースコード、サンプル、リファレンスはこのサイトと同じく github.com/kosuke55/drawtonomy にあります。