git clone https://github.com/autonomousvision/navsim.git
cd navsim
cd download && ./download_maps.sh
./download_mini
./download_trainval
./download_test
./download_private_test_e2e
# "navtrain" training split에 필요한 -> trainval의 일부를 다운 받고 싶으면, 아래를 이용해라.
./download_navtrain
train_test_split=navtest 로 설정하면 된다.~/navsim_workspace
├── navsim (containing the devkit)
├── exp
└── dataset
├── maps
├── navsim_logs
| ├── test
| ├── trainval
| ├── private_test_e2e
│ └── mini
└── sensor_blobs
├── test
├── trainval
├── private_test_e2e
└── mini
~/.bashrc 에 아래를 추가하여, 필요로 하는 환경 변수를 세팅해라. (위 structure 구조 기반)export NUPLAN_MAP_VERSION="nuplan-maps-v1.0"
export NUPLAN_MAPS_ROOT="$HOME/PycharmProjects/dataset/maps"
export NAVSIM_EXP_ROOT="$HOME/PycharmProjects/exp"
export NAVSIM_DEVKIT_ROOT="$HOME/PycharmProjects/navsim"
export OPENSCENE_DATA_ROOT="$HOME/PycharmProjects/dataset"
export CKPT="$HOME/PycharmProjects/DiffusionDrive/ckpt/diffusiondrive_navsim_88p1_PDMS"
export NUPLAN_MAP_VERSION="nuplan-maps-v1.0"
export NUPLAN_MAPS_ROOT="$HOME/PycharmProjects/dataset/maps"
export NAVSIM_EXP_ROOT="$HOME/PycharmProjects/exp"
export NAVSIM_DEVKIT_ROOT="$HOME/PycharmProjects/DiffusionDrive"
export OPENSCENE_DATA_ROOT="$HOME/PycharmProjects/dataset"
export CKPT="$HOME/PycharmProjects/DiffusionDrive/ckpt/diffusiondrive_navsim_88p1_PDMS"
conda env create --name navsim -f environment.yml
conda activate navsim
pip install -e .
navsim.common.dataclasses.Scene 객체로 구성Scene은 학습을 위한 주행 계획 Agent의 입력과 주석을 포함하는 각 Frame 객체들의 리스트Frame에서 전역 지도를 접근하고 이를 지역 좌표계로 변환하는 등, 원시 주석 데이터를 대대적으로 전처리하는 과정이 포함cd $NAVSIM_DEVKIT_ROOT/scripts/
./run_metric_caching.sh
$NAVSIM_EXP_ROOT 아래에 metric cache를 생성플래너 출력의 4초간 비반응 시뮬레이션 후에 계산 ego 차량은 LQR 컨트롤러에 따라 이동 | 메트릭 | 가중치 | 범위 |
|---|---|---|
| 무과실 충돌 (NC) | multiplier | {0, 1/2, 1} |
| 주행 가능 영역 준수 (DAC) | multiplier | {0, 1} |
| Time to Collision (TTC) 제한 내 | 5 | {0, 1} |
| Ego Progress (EP) | 5 | [0, 1] |
| Comfort (C) | 2 | {0, 1} |
| Driving Direction Compliance (DDC) | 0 | {0, 1/2, 1} |
참고: Driving Direction Compliance (DDC) 메트릭은 PDMS에서 가중치가 0이므로 무시됩니다.
즉,
PDMS = NC * DAC * (5*TTC + 5*EP + 2*C + 0*DDC) / 12
cd $NAVSIM_DEVKIT_ROOT/scripts/
./run_cv_pdm_score_evaluation.sh
$NAVSIM_DEVKIT_ROOT/navsim/navsim/planning/script/config/pdm_scoring/agent/my_new_agent.yaml 아래에 여러분의 에이전트를 위한 새로운 구성을 추가할 수 있습니다. agent=my_new_agent를 추가하는 것만으로 여러분의 에이전트를 실행할 수 있습니다. run_human_agent_pdm_score_evaluation.sh에서 확인할 수 있습니다.cd /path/to/DiffusionDrive/download
bash super_download.sh
OpenScene 메타데이터와 navtrain 데이터(split별 현재 및 히스토리 파일)를 자동으로 처리하는 역할conda env create --name navsim2 -f environment.yml
conda activate navsim2
python setup.py build develop
pip install -e .
pip install diffusers einops
# 학습을 위한 데이터셋 캐싱
python navsim/planning/script/run_dataset_caching.py agent=diffusiondrive_agent experiment_name=training_diffusiondrive_agent train_test_split=navtrain
# 평가를 위한 데이터셋 캐싱
python navsim/planning/script/run_metric_caching.py train_test_split=navtest cache.cache_path=$NAVSIM_EXP_ROOT/metric_cache
bkb_path에 올바르게 설정했는지 확인하십시오. /path/to/DiffusionDrive/navsim/agents/diffusiondrive/transfuser_config.py 파일 내에서 다운로드한 클러스터링된 앵커의 경로를 plan_anchor_path에 설정하십시오.python $NAVSIM_DEVKIT_ROOT/navsim/planning/script/run_training.py \
agent=diffusiondrive_agent \
experiment_name=training_diffusiondrive_agent \
train_test_split=navtrain \
split=trainval \
trainer.params.max_epochs=100 \
cache_path="${NAVSIM_EXP_ROOT}/training_cache/" \
use_cache_without_dataset=True \
force_cache_computation=False
CKPT=/path/to/downloaded/huggingface_diffusiondrive_agent_ckpt/diffusiondrive_navsim_88p1_PDMS.pth로 설정할 수 있습니다.python $NAVSIM_DEVKIT_ROOT/navsim/planning/script/run_pdm_score.py \
train_test_split=navtest \
agent=diffusiondrive_agent \
worker=ray_distributed \
agent.checkpoint_path=$CKPT \
experiment_name=diffusiondrive_agent_eval