DEVELOPMENT NOTE / 2026.10.19
道路を作る。シナリオを流す。何度でも同じ結果で。
箱庭ラボでは、実在の都市の道路で、車の走行シナリオを試せる仕組み「箱庭シナリオPRO」を作っています。ここまでを、ほぼ4日で作りました。その記録を5回に分けて紹介します。第1回は、なぜ標準規格(OpenDRIVE、OpenSCENARIO)とオープンソースの上に組み立てたのか、です。
ここまで:試せる都市(オープンソース)
PLATEAU AWARDに向けて、Urban Mobilityを一般公開しました。PLATEAUの3D都市モデルとOpenStreetMap(OSM)の道路から実在の都市を作り、その中でドローン、車、人をシナリオで動かせます。ここまではオープンソースです。
次の壁:車が走る道路のシナリオ
車の走行を試そうとすると、2つの壁があります。
- 道路をどうするか。車線、標識、信号。「どこを、どちら向きに走れるか」が道路に書かれていないと、車線変更も右左折も表せません。
- シナリオの実行をどうするか。「前の車が車線変更して割り込む」「信号が赤になったら止まる」といった出来事を、決めた条件で起こす仕組みが要ります。
どちらも一から作ることはできますが、まず「標準規格で、オープンソースで、すでにあるものはないか」を調べました。
道路:OpenDRIVE
道路には、ASAMの標準規格 OpenDRIVE があります。車線、交差点のつながり、標識、信号を記述できます。そして、OSMの道路をOpenDRIVEに変換する道具(SUMOのnetconvert)が、すでにありました。
そこで、OpenDRIVEのデータをもとに、
- 車が実際に走る MuJoCoの路面(物理計算に使う道路)
- 見た目の 標識・信号(GLB)
を作る流れを組みました。PLATEAUのCityGMLから建物や地形を作ったのと同じ流れです(実在の街の道路の話は、第4回で)。
シナリオ:OpenSCENARIO と esmini
道路がOpenDRIVEなら、シナリオはセットで OpenSCENARIO(同じくASAMの標準規格)です。そのオープンソースの実行器を探すと、esmini がありました。esminiはOpenDRIVEとOpenSCENARIO XML 1.x系の規格の一部に対応しています。
esminiは、シミュレーションの中で使うことを想定した作りになっていて、外から決めた刻み(Δt)で1歩ずつ進められます。これが、箱庭のアセットの時刻同期と抜群に相性が良かった。箱庭の1刻みごとにesminiを1刻み進めれば、シナリオの出来事が箱庭の時刻にそろって起きます。
その結果、シナリオで動く車と、箱庭の他のアセット(ドローン、ロボット、人)とを、同じ時刻の上で協調して動かせるようになりました。
残る壁:何度回しても、同じ結果に
ただし、もう1つ壁が残っています。箱庭は、物理計算やシナリオを別々のプロセスで動かす分散シミュレーションです。検証に使うには、同じ条件なら何度回しても同じ結果になること(決定論)が要ります。この答えは、最終回で。
このシリーズ
- 道路とシナリオは、標準規格とOSSの上に(この回)
- 高速道路を走る車をつくった ― 箱庭カー2号機とトラック
- esminiの道路20本を、MuJoCoで走らせる ― 4つのレベル
- OpenStreetMapの道路に、PLATEAUの高さを足したら ― レインボーブリッジ
- CARLAと比べてみた ― 夜通しの計測と、決定論へのこだわり
次回は、この道路を走る車の話です。
※ 箱庭シナリオPROは開発中です。製品としての提供範囲・時期は未定です。シミュレーション結果は、実際の車両の走行性能・安全性を保証しません。
※ OpenDRIVE・OpenSCENARIOはASAM e.V.の標準規格です。esminiはオープンソース(MPL-2.0)です。地図データ © OpenStreetMap contributors(ODbL)。3D都市モデルはPLATEAUを使っています。
