コンテンツにスキップ

検証 — 実行前に何をチェックしているか

drawtonomy はシナリオを esmini に渡す前に、ファイル内のカタログ参照と パラメータをすべて解決します。解決できないものがあれば、どのアクターのどの属性かを明示した うえで ▶ ボタンの隣に表示します。そのまま走らせて、原因の分からない結果を後から読み解く必要は ありません。

「Simulator init failed · car_does_not_exist_xyz is not in VehicleCatalog」と Details リンクが並ぶ LOGIC バー

ふだん見えているのは、この 1 行だけです。Details を開くと、直し方とシミュレータ自身のログが 読めます。

Details を開いたところ。直し方のヒント、esmini のエラー行、折りたたまれた「Show 5 engine notices」

意味再生
エラー(赤、▶ の隣)参照を解決できない。このまま実行すると、読み込みに失敗するか、意図と違う値で走る直すまで再生できない
警告(⚠ ボタン)再生はできるが、ファイルが書いたとおりではない。多くはカタログが読み込まれておらず、内蔵モデルで代用している状態再生できる

警告を ⚠ の中に隠しているのは、問題のないシナリオの画面を余計な情報で埋めないためです。 画面幅が狭いときは ⚠ 自体を出しません(インポート時のメッセージで一度は伝えています)。

entryName がカタログに存在しない

Section titled “entryName がカタログに存在しない”

Ego: CatalogReference@entryName “car_does_not_exist_xyz” is not in the loaded catalog — the simulator refuses to load this scenario.

何が起きているか。 <CatalogReference entryName="…"> が指す車両・歩行者・オブジェクトが、 一緒に開いたカタログファイルの中にありません。esmini はこの名前をそのまま探しにいき、 見つからなければ読み込みを中断します。

直し方。 カタログファイルに実在する名前を使ってください。大文字小文字だけの違いなら drawtonomy が候補を出します(Did you mean “car_white”?)。そうでなければカタログの .xosc を 開いて <Vehicle name="…"> の値をそのまま写します。

照合は完全一致で、大文字小文字も区別します。Car_Whitecar_white は別物として扱われます。

catalogName に対応するファイルがない

Section titled “catalogName に対応するファイルがない”

Ego: CatalogReference@catalogName “NoSuchCatalog” matches no catalog file name in <CatalogLocations> — the simulator looks for “NoSuchCatalog.xosc” and cannot locate it.

何が起きているか。 catalogName は表示用の名前ではなくファイル名です。esmini は <CatalogLocations> に指定されたディレクトリから <catalogName>.xosc を探します。

直し方。 実際に読み込まれているカタログファイルを指すように直すか、そのファイルを <CatalogLocations> のディレクトリに置いてシナリオと一緒に開いてください。

Ego: LanePosition@s references $EgoStartS, which is not declared in <ParameterDeclarations> — the value cannot be resolved.

何が起きているか。 属性が参照しているパラメータを、どの <ParameterDeclaration> も定義して いません。リネームのときに 1 箇所だけ直し忘れた、あるいはパラメータが別ファイル側で宣言されて いるシナリオ集から 1 本だけ持ち出した、というケースがほとんどです。

直し方。 <ParameterDeclarations> に宣言を足すか、参照をやめて直接値を書きます。既存の名前と よく似ていれば、drawtonomy が候補を出します。

未宣言パラメータの Details。宣言を促すヒントと esmini の「Failed to resolve parameter $EgoStartS」

宣言した型と値が合っていない

Section titled “宣言した型と値が合っていない”

Parameter “EgoStartS” is declared as double but its value “not_a_number” is not a valid double — every attribute that reads $EgoStartS becomes NaN.

何が起きているか。 parameterType="double"(あるいは integerboolean)なのに、値が その型として読めません。

直し方。 値を直すか、その値が本当に文字列なら parameterTypestring にします。

カタログファイルが読み込まれていない

Section titled “カタログファイルが読み込まれていない”

Ego: CatalogReference “$HostVehicle” plays as default_car (5.0 x 2.0 m).

何が起きているか。 カタログファイルを添えずに .xosc を開きました。再生を拒否する代わりに、 drawtonomy が内蔵モデルで代用しています。動きは確認できますが、車体寸法はファイルが指定した ものではありません。

直し方。 カタログファイルと一緒に開き直すか(.xosc を開いて再生するを 参照)、car_white のような内蔵の名前を使ってください。

「Before you play」の警告。代用された 2 つのアクターと、インポート時のメッセージ

Ego: CatalogReference@entryName “car_does_not_exist_xyz” is not a built-in entry — it will play as default_car (5.0 x 2.0 m).

同じ状況を逆から見たものです。カタログが読み込まれておらず、かつその名前を drawtonomy も 知らない場合に出ます。エラーではなく警告なのは、まだ手元にないカタログのエントリ名を先に 書いておく、という進め方も普通にあるからです。代用モデルのまま再生は続けられます。

ParameterAssignment が宣言されていないパラメータを指している

Section titled “ParameterAssignment が宣言されていないパラメータを指している”

Ego: ParameterAssignment@parameterRef “NotADeclaredParam” is not declared by catalog entry “car_white” — the assignment is ignored.

何が起きているか。 <ParameterAssignments> が、そのカタログエントリの宣言にないパラメータを 設定しています。値は無視されるだけで、何も起きません。ヒントにはそのエントリが宣言している パラメータ名が並びます。

直し方。 宣言済みの名前に直すか、その代入を削除します。

  • 車両・歩行者・オブジェクト以外のカタログ。 コントローラ、ルート、マニューバ、環境、 トラジェクトリのカタログはシミュレータ側が解決します。drawtonomy が見るのは catalogName までで、正しいエントリを誤って「無い」と報告しないためにそうしています。
  • シナリオが意図どおりかどうか。 ここでの検証は参照が解決できるかを見るものであって、 操作の中身が正しいかは別の話です。そちらは実際に走らせて 終了条件と失敗条件で判定してください。

AI 生成で作ったシナリオにも同じカタログ検査がかかります。実行する 段(Run)ではなく、その 1 つ手前のロジック段です。存在しない車両モデルを書いてしまった生成結果は、 代用モデルで再生されるのではなく、その場で差し戻されて作り直されます。