Eugene Ku, Yiwei Lyu
IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2026
PC-Diffuser is a context-aware safeguarding mechanism that evaluates collision risk using a capsule-distance barrier function that better reflects vehicle geometry. Based on this collision risk score, a path-consistent safety filter is applied which prevents geometric distortion from the nominal trajectory, minmizing invasive distribution shift from the learned model. PC-diffuser injects these safety-consistent corrections at every denoising step, enabling iterative, context-aware safeguarding instead of post-hoc repair.
Sign up at https://www.nuscenes.org/nuplan and download nuPlan Val Split.
Then set the data path appropriately in run_all.sh and run_vis_examples.sh.
You may need to change the name of the data dir to trainval.
git clone --recursive https://github.com/Eugene29/PC-Diffuser.git
conda create -n pc-diffuser python=3.9 -y
conda activate pc-diffuser
# Install appropriate torch for your GPU
pip install torch==2.0.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
pip install torchvision==0.15.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
pip install "pip<24.1"
pip install --no-build-isolation grpcio==1.43.0
pip install -r requirements.txt
pip install -e nuplan-devkit
pip install -e diffusion-planner-cbf
# download weights
mkdir -p diffusion-planner-cbf/checkpoints
wget -P diffusion-planner-cbf/checkpoints https://huggingface.co/ZhengYinan2001/Diffusion-Planner/resolve/main/args.json
wget -P diffusion-planner-cbf/checkpoints https://huggingface.co/ZhengYinan2001/Diffusion-Planner/resolve/main/model.pth
bash scripts/run_all.sh
bash scripts/run_vis_examples.sh
Figure 1:
Check out the video demo for other two comparison scenarios.
- Bulk of the safety related code lives in Diffusion_Planner_CBF/diffusion_planner/safety and Diffusion_Planner_CBF/diffusion_planner/model/diffusion_utils/dpm_solver_pytorch.py
- For mpc-cbf and pc-diffuser, we implemented a custom action replay tracker so that CBF's action output is not overriden by nuplan's controller. Check out nuplan-devkit/nuplan/planning/simulation/controller/tracker/action_replay_tracker.py
If you find our paper and code useful, please cite our paper as:
@inproceedings{ku2026pc,
title={PC-Diffuser: Path-Consistent Capsule CBF Safety Filtering for Diffusion-Based Trajectory Planner},
author={Ku, Eugene and Lyu, Yiwei},
booktitle={2026 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year={2026}
}
PC-Diffuser is greatly inspired by the following outstanding contributions to the open-source community: nuplan-devkit, Diffusion-Planner, tuplan_garage, pluto, DiT, dpm-solver.
