2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

nuPlanのチュートリアルを動かしてみる

Last updated at Posted at 2022-11-07

はじめに

本記事では、世界初の大規模な自動運転の運動計画ベンチマークnuPlanのチュートリアルをUbuntuで動かしてみました。いくつか解決する事項があったので、その動かし方について紹介します。

nuPlanについて

nuPlanは機械学習ベースの自動運転用の運動計画プランニングを閉ループで評価することのできる世界初のベンチマークです。nuPlanは機械学習ベースのプランナーを開発するため、モデルの訓練フレームワーク、軽量な閉ループシミュレーター、交通違反や快適性を評価するメトリック、結果を視覚的に表示するビジュアライゼーションで構成されます。nuPlanのコア部分であるシナリオシミュレーションはモジュール化されており、カスタマイズ可能なように設計されています。この設計と、USおよびアジアの様々な交通パターンを含む1500時間の運転データを使って効率的にプランナーを開発することできます。

さて、nuPlanのGet Startedにしたがってチュートリアルを実行します。

データセットのダウンロード

初めにデータセットアップに従ってダウンロードページからnuPlan v1.1 Datasetの次の2つのファイルをダウンロードします。

  • nuplan-maps-v1.0.zip
  • nuplan-v1.1_mini.zip

そして次のファイル構造になるように解凍したファイルを配置します。

├── exp
│   └── ${USER}
│       ├── cache
│       │   └── <cached_tokens>
│       └── exp
│           └── my_nuplan_experiment
└── dataset
    ├── maps
    │   ├── nuplan-maps-v1.0.json
    │   ├── sg-one-north
    │   │   └── 9.17.1964
    │   │       └── map.gpkg
    │   ├── us-ma-boston
    │   │   └── 9.12.1817
    │   │       └── map.gpkg
    │   ├── us-nv-las-vegas-strip
    │   │   └── 9.15.1915
    │   │       └── map.gpkg
    │   └── us-pa-pittsburgh-hazelwood
    │       └── 9.17.1937
    │           └── map.gpkg
    └── nuplan-v1.1
        ├── mini
        │   ├── 2021.05.12.22.00.38_veh-35_01008_01518.db
        │   ├── 2021.06.09.17.23.18_veh-38_00773_01140.db
        │   ├── ...
        │   └── 2021.10.11.08.31.07_veh-50_01750_01948.db
        └── trainval
            ├── 2021.05.12.22.00.38_veh-35_01008_01518.db
            ├── 2021.06.09.17.23.18_veh-38_00773_01140.db
            ├── ...
            └── 2021.10.11.08.31.07_veh-50_01750_01948.db

配置後、次の環境変数をexp, dataset, mapsのそれぞれのパスの環境変数を.bashrcに追加します。この環境変数が設定できてない場合、訓練や実験で失敗をします。

export NUPLAN_DATA_ROOT="${データを配置したディレクトリ}/dataset"
export NUPLAN_MAPS_ROOT="${データを配置したディレクトリ}/dataset/maps"
export NUPLAN_EXP_ROOT="${データを配置したディレクトリ}/exp"

仮想環境の作成

nuplan-devkitのドキュメントにしたがい、miniconda(もしくはanaconda)をインストールします。インストール後、リポジトリをクローンし、仮想環境を作成します。

git clone git@github.com:motional/nuplan-devkit.git
cd nuplan-devkit
conda env create --prefix .venv -f environment.yml 

注)2022年11月7日時点でmasterブランチで仮想環境を作成したところ、bokeh 3.0.1がインストールされました。bokeh3.0.1であるとチュートリアルを実行するときにエラーが出るようです。正しくはbokehのバージョン2.4.2にする必要があります。requirements.txtのbokehの行をbokeh==2.4.2に変更して仮想環境を作りました。

VS Codeの設定

チュートリアルはnuplan-devkitリポジトリ直下のtutorialsディレクトリに入っています。今回はnuplan_framework.ipynbを実行します。

.../nuplan-devkit
├── nuplan  <---------------------------------------------モジュール
├── tutorials
│   ├── media
│   │   ├── nuplan_flow.svg
│   │   └── planner_inputs_outputs_diagram.drawio.svg
│   ├── nuplan_advanced_model_training.ipynb
│   ├── nuplan_framework.ipynb  <-------------------------これ
│   ├── nuplan_planner_tutorial.ipynb
│   ├── nuplan_scenario_visualization.ipynb
│   ├── test

VS Codeでnuplan-devkitをワークスペースとして開いてそのままノートブックを実行すると、tutorialsがノートブックの実行場所となるため、パラメータ管理ライブラリであるHydranuplanのモジュールの場所を見つけることができません。この場合、ノートブックのPrepare the training configで次のようなWarningとExceptionが出力されます。

..../nuplan-devkit/.venv/lib/python3.9/site-packages/hydra/_internal/config_loader_impl.py:213: UserWarning: provider=hydra.searchpath in main, path=nuplan.planning.script.config.common is not available.
  warnings.warn(
..../nuplan-devkit/.venv/lib/python3.9/site-packages/hydra/_internal/config_loader_impl.py:213: UserWarning: provider=hydra.searchpath in main, path=nuplan.planning.script.experiments is not available.
  warnings.warn(
ConfigCompositionException: You must specify 'training_metric', e.g, training_metric=<OPTION>
Available options:
	agents_avg_displacement_error
	agents_avg_heading_error
	agents_final_displacement_error
	agents_final_heading_error
	avg_displacement_error
	avg_heading_error
	final_displacement_error
	final_heading_error

これを防ぐためにJupyterの実行場所をsettings.jsonに追加します。

"jupyter.notebookFileRoot": "${workspaceFolder}"

またnuplan_framework.ipynbをVS Codeで開いて、作成した仮想環境でノートブックを動かすように設定します。

チュートリアルの実行

Run All」を押してnuplan_framework.ipynbを実行します。実行すると機械学習モデルの訓練、シミュレーション、評価、そしてシミュレーション結果の可視化が行われます。ノートブックの最後まで実行が終わるとnuBoardがWebブラウザを通して立ち上がります。
nuBoard初期画面.png

nuplan_framework.ipynbSimulate a trained ML planner for comparisonのステップでは初期設定の場合、多くのRAMを消費します。これはRayを使って並列にシミュレーションを実行しているためです。私の環境だと使用量が90%を超えたため、以下の変更を行い、並列オプションをオフにしました。

# nuplan/planning/script/config/common/default_common.yaml
Old
  - worker: ray_distributed
New
  - worker: sequential

次にnuBoardの左パネルにある「Scenarios」をクリックします。そうすると次の画面が出力されます。
nuBoard初期画面.png

右上の歯車アイコンをクリックして、Scenario Tokenを選択します。
scenario token選択.png

そうすると選んだシナリオがロードされ、次のような画面に更新されるはずです。
Scenario選択後.png
シークバーを動かしたり、左側のアイテムをトグルすることでシミュレーションの様子を確認できます。

参考ページ

nuPlan

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?