2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自動運転AIチャレンジ2026のMPC Trajectory をGUIで編集する「Kaleidoscope」

2
Last updated at Posted at 2026-07-23

はじめに

自動運転AIチャレンジ2026でMPC(Model Predictive Control)を調整していると、TrajectoryのCSVを直接編集したくなる場面があります。

しかし、数値だけを見ながらCSVを編集する方法には、次のような難しさがあります。

  • 修正した点がコース上のどこにあるのか分かりにくい
  • 点の重複や間隔のばらつきに気付きにくい
  • headingやcurvatureを手作業で整合させるのが難しい
  • 修正前後の差を確認しにくい
  • 車体が壁に近づきすぎていないかCSVだけでは判断できない
  • 元ファイルを誤って上書きするリスクがある

そこで、Lanelet2 map上でtrajectoryを確認・編集するオフラインGUIツール「Kaleidoscope」を作成しました。
名前は適当につけました。

GitHubリポジトリはこちらです。

Kaleidoscopeは大会運営の公式ツールではありません。本記事に記載する既定値や判定結果も、自動運転AIチャレンジ2026の公式確定仕様を意味しません。

Kaleidoscopeでできること

KaleidoscopeはPython/Tkで実装したオフラインtrajectory editorです。ROS topicやserviceへ接続するROS nodeではありません。

主な機能は次のとおりです。

  • trajectory CSVをLanelet2 OSM上へ表示
  • trajectory pointの選択と座標編集
  • 周回経路/非周回経路の明示
  • CSV schema、有限値、点間隔、heading、curvatureなどの検証
  • trajectory geometryの正規化
  • オフライン速度プロファイルの再生成
  • Original/Working/Candidateの比較表示
  • occupancy gridを使った壁とのclearance検証
  • 車体footprintを考慮した補正候補の生成
  • validation後の安全な別名保存

MPC用CSVは、次のcanonical 7列を扱います。

s_m,x_m,y_m,psi_rad,kappa_radpm,vx_mps,ax_mps2

既存のPure Pursuit用8列CSVも形式を分けて検証できますが、本記事ではMPC trajectoryの編集を対象にします。

対応環境

本記事では、自動運転AIチャレンジ2026のリポジトリと運営提供Dockerイメージを使用します。

Kaleidoscopeは、必ず次の位置へ配置してください。

aichallenge/workspace/src/aichallenge_submit/
├── aichallenge_submit_launch/
│   └── map/
│       └── lanelet2_map.osm
└── multi_purpose_mpc_ros/
    ├── env/
    │   └── final_ver3/
    │       ├── traj_mincurv.csv
    │       ├── occupancy_grid_map.yaml
    │       └── occupancy_grid_map.pgm
    └── tools/
        └── kaleidoscope/

Kaleidoscopeはこの配置を利用して、既定のtrajectory、Lanelet2 map、occupancy gridを探索します。以下の名前や配置を変更した環境は、現時点ではサポート対象外です。

  • multi_purpose_mpc_ros
  • multi_purpose_mpc_ros/env/
  • aichallenge_submit_launch
  • mapおよびtrajectoryファイル

インストール

AI Challengeリポジトリ内のmulti_purpose_mpc_ros/toolsへ移動し、Kaleidoscopeをcloneします。

cd aichallenge/workspace/src/aichallenge_submit/multi_purpose_mpc_ros
mkdir -p tools
cd tools
git clone https://github.com/MasanoriSuda/kaleidoscope.git

ホスト側でvenvを作成したり、pip installを実行したりする必要はありません。本記事ではホストPythonからの直接起動をサポートしません。

起動方法

最初に、ホスト側でAI Challengeリポジトリのルートへ移動します。

cd /path/to/aichallenge-2026

Autoware commandコンテナへ入ります。

make autoware-bash

ここから先はDockerコンテナ内で実行します。

cd /aichallenge/workspace/src/aichallenge_submit/multi_purpose_mpc_ros/tools/kaleidoscope
python3 -m kaleidoscope

引数を省略すると、リポジトリ内の既定MPC trajectoryとLanelet2 mapを自動検出し、周回経路として開きます。

任意のファイルを指定する場合は、次のように起動します。

python3 -m kaleidoscope \
  --trajectory ../../env/final_ver3/traj_mincurv.csv \
  --osm ../../../aichallenge_submit_launch/map/lanelet2_map.osm \
  --circular

使用できる主な引数は次のとおりです。

引数 内容
--trajectory <CSV> 編集するtrajectory CSV
--osm <OSM> 表示に使用するLanelet2 OSM
--circular 周回経路として開く
--open 非周回経路として開く
--preset mpc MPC用の既定ファイルを使用
--preset pure_pursuit Pure Pursuit用の既定ファイルを使用

基本的な編集手順

1. trajectoryを開く

Open Trajから編集対象のCSVを開きます。周回コースの場合はCircularが有効になっていることを確認します。

周回であることと、CSVの始点・終点が重複していることは別の状態です。経路の用途に合わせて明示してください。

2. 編集前にValidateする

Validateを実行すると、例えば次のような問題を確認できます。

  • schemaや列数の不一致
  • 空行や不正値
  • NaN/Inf
  • 重複点や極端に短いsegment
  • 不正なarc length
  • headingやcurvatureの不整合
  • 速度、加速度、横加速度の範囲

問題を選択すると、該当するCSV行やtrajectory上の位置を確認できます。

3. trajectory pointを編集する

点を選択して座標を調整します。MPC用trajectoryのXYを変更すると、次のmetadataは古い状態になります。

  • s_m
  • psi_rad
  • kappa_radpm
  • vx_mps
  • ax_mps2

XYだけ変更してそのまま保存するのではなく、後述するgeometryと速度情報の再生成を行います。

4. geometryを正規化する

Normalize Geometryでは、重複終端や退化点の処理、再サンプリング、s_m、heading、curvatureの再生成を行います。

処理結果はすぐに編集中データへ反映されず、Candidateとして表示されます。Original/Working/Candidateを比較してから、Apply CandidateまたはDiscardを選択できます。

5. 速度情報を再生成する

Recompute Speedでは、最大速度、前後加速度、最大横加速度などを指定し、curvatureを考慮したオフライン速度プロファイルを生成します。

ただし、ここで生成するvx_mpsax_mps2はCSV metadataです。現行MPCでは実行時の速度上限処理が優先されるため、CSVを保存しただけで実車・シミュレータの走行速度がそのまま変わるとは限りません。

6. clearanceを確認する

壁との距離を確認する場合は、Vehicle / Margin Settingsでoccupancy-grid YAML、車体寸法、margin、unknown cellの扱いを確認します。

Validate Clearanceを実行すると、trajectory上の車体矩形とpoint間のswept footprintを使って静的なclearanceを検証します。

必要に応じてAdjust Clearanceから補正候補を生成できます。補正後はgeometryと速度metadataの状態を確認し、再度Validateしてから保存します。

ClearanceのSAFEは、AWSIMや実車での非接触を保証するものではありません。occupancy grid、車体基準点、collider、離散化などの差があるため、最終確認はシミュレータで行ってください。

7. 別名で保存する

最初はSave Asを使用し、元CSVを残してください。

例えば次のような名前にします。

traj_mincurv_edited.csv
traj_mincurv_normalized.csv
traj_mincurv_speed_profiled.csv

保存前には再度Validateを実行します。Kaleidoscopeはvalidation errorやstaleなmetadataが残る場合、保存を停止します。

実際の使用例

ファイル読み込み結果
image.png

拡大してみます
image.png

Trajectoryを若干外回りにしてみます、元データ(真ん中)との比較ができます
image.png

Trajectoryを細かくしてみます
image.png

などなど

GUIが表示されない場合

python3 -m kaleidoscopeはDockerコンテナ内で実行します。ホスト上で実行すると、Python依存関係が不足して次のようなエラーになることがあります。

ModuleNotFoundError: No module named 'defusedxml'

この場合、ホストへパッケージを追加するのではなく、make autoware-bashでコンテナへ入っているか確認してください。

コンテナ内で実行してもGUIが表示されない場合は、ホスト側で次を確認します。

export XAUTHORITY=~/.Xauthority
./setup.bash doctor

DISPLAYまたはXAUTHORITYに警告が出る場合は、doctorの案内に従ってX11設定を修正し、もう一度コンテナへ入ります。

安全に使うための注意

  • 元CSVを最初から上書きせず、別名で保存する
  • Validateのerrorを残したまま保存しない
  • clearanceの結果だけで壁接触しないと判断しない
  • 生成したtrajectoryはC++ validatorでも確認する
  • AWSIMで最初のヘアピンと1周を確認する
  • 実車へ適用する前にシミュレータで検証する
  • 2026公式仕様として未確認の値を確定値として扱わない

Kaleidoscopeはtrajectory編集時の見落としを減らすための補助ツールです。最終的な走行安全性や評価互換性を保証するものではありません。

まとめ

Kaleidoscopeを使うと、MPC trajectoryをCSVの数値だけで編集する場合と比べて、次の作業を一つのGUIで進められます。

  • Lanelet2 map上でのtrajectory確認
  • geometryの編集と正規化
  • 修正前後の比較
  • 速度metadataの生成
  • occupancy gridによるclearance確認
  • validation付きの安全な保存

起動手順は次の2段階です。

# ホスト
make autoware-bash
# Dockerコンテナ内
cd /aichallenge/workspace/src/aichallenge_submit/multi_purpose_mpc_ros/tools/kaleidoscope
python3 -m kaleidoscope

それではいい夏を!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?