---
library_name: pytorch
tags:
- robotics
- navigation
- diffusion-policy
- reinforcement-learning
- embodied-ai
- isaaclab
---
X-NavDP
Generalizing Navigation Diffusion Policy to Novel Behavior and Embodiments with Group Q-score Reweighted Matching
Tianyu Yang1,2*
Yiming Zeng3,2*
Wenzhe Cai2*
Yuqiang Yang2
Jiaqi Peng4,2
Hui Cheng3
Jiangmiao Pang2
Tai Wang2†
1Fudan University
2Shanghai AI Laboratory
3Sun Yat-sen University
4Tsinghua University
[](https://yty-sky.github.io/x-navdp-project-page/)
[](https://yty-sky.github.io/x-navdp-project-page/#bibtex)
[](https://yty-sky.github.io/x-navdp-project-page/#video)
[](../../README.md#-internvla-n1-system-1-benchmark)
[](https://huggingface.co/datasets/InternRobotics/Scene-N1/tree/main/n1_eval_scenes)
[](https://github.com/InternRobotics/NavDP)
Installation |
Assets |
Training |
Evaluation |
Results |
Citation
## Introduction
X-NavDP post-trains a pretrained RGBD camera-based navigation diffusion policy via online reinforcement learning across heterogeneous embodiments. Beyond improving general navigation and obstacle avoidance performance, it gains new capabilities for backing out of traps, long-obstacle detours, and embodiment-aware behavior adaptation. Our contributions to navigation diffusion policy are threefold:
- ⚡ **Data-efficient RL post-training.** X-NavDP enhances pretrained diffusion policies through efficient large-scale, multi-scene online post-training for stronger general navigation ability.
- ⚒ **Structured exploration and stable training.** Goal-agnostic diffusion trajectories and **Group Q-score Reweighted Matching** enable structured exploration, improve training stability, and handle hard cases.
- 🤝 **Cross-robot generalization and temporal consistency.** Lightweight embodiment modulation and RTC guidance improve cross-robot generalization and temporal consistency, leading to superior post-trained navigation performance.
## Installation
Clone NavDP and enter the self-contained X-NavDP baseline:
```bash
git clone https://github.com/InternRobotics/NavDP.git
cd NavDP/baselines/x-navdp
```
Create a Python environment and install the dependencies:
```bash
conda create -n navrl python=3.11
conda activate navrl
pip install -r requirements.txt
```
Install [Isaac Sim 5.0.0](https://docs.isaacsim.omniverse.nvidia.com/5.0.0/installation/index.html), [Isaac Lab 0.46.2](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html), and `isaaclab-rl==0.4.0` following their official instructions. Then install acados following the [acados installation guide](https://docs.acados.org/installation/index.html) and [Python interface guide](https://docs.acados.org/python_interface/index.html). The acados setup is lightweight and mainly requires a CMake build plus the Python interface. Before running training or evaluation, expose the acados libraries and accept the Omniverse EULA:
```bash
export ACADOS_SOURCE_DIR=/path/to/acados
export LD_LIBRARY_PATH="${ACADOS_SOURCE_DIR}/lib:${LD_LIBRARY_PATH:-}"
export OMNI_KIT_ACCEPT_EULA=YES
export OMNI_KIT_ALLOW_ROOT=1
```
## Assets
Large assets, datasets, robot USDs, low-level controller checkpoints, and pretrained policy checkpoints are not included in this repository. You need to download these assets manually before running training or evaluation.
The **GRScenes100 / N1 evaluation scenes** are available from [InternRobotics/Scene-N1](https://huggingface.co/datasets/InternRobotics/Scene-N1/tree/main/n1_eval_scenes). This dataset contains sky textures, materials, cluttered easy/hard scenes, InternScenes home scenes, and InternScenes commercial scenes.
The **X-NavDP assets** are available from [InternRobotics/X-NavDP](https://huggingface.co/InternRobotics/X-NavDP/tree/main). This repository provides `navigation_metadata`, robot assets, low-level controller checkpoints, `scene_split.json`, the NavDP pretrained checkpoint, and the X-NavDP post-trained checkpoint.
After downloading, place or symlink the scene data, metadata, robot assets, and checkpoints in the following layout. The scene root can also be kept elsewhere and passed with `SCENE_DIR`.
|
**Scene data and navigation metadata**
```text
x-navdp/
+-- data/scenes/
+-- scene_split.json
+-- SkyTexture/
+-- Materials/
+-- cluttered_easy/
+-- cluttered_hard/
+-- internscenes_commercial/
| +-- models/
| +-- Materials/
| +-- scenes_commercial/
+-- internscenes_home/
| +-- models/
| +-- Materials/
| +-- scenes_home/
+-- navigation_metadata/
+-- internscenes_commercial/
+-- internscenes_home/
+-- cluttered_easy/
+-- cluttered_hard/
```
|
**Code, robot assets, and checkpoints**
```text
x-navdp/
+-- train.py
+-- config/
+-- scripts/
+-- src/
| +-- environment/
| | +-- controllers/checkpoints/
| | +-- humanoid_g1/policy.pt
| | +-- quadruped_go2/policy.pt
| +-- x_navdp/
| +-- training/
| +-- utils/
+-- eval/
+-- data/robots/
| +-- dingo.usd
| +-- unitreeg1.usd
+-- pretrain_model/
| +-- navdp_pretrained.ckpt
+-- checkpoints/
+-- x-navdp_posttrain.ckpt
```
|
Training and evaluation expect `SCENE_DIR` to point to the scene root. The training config initializes from `pretrain_model/navdp_pretrained.ckpt`; evaluation examples use the released post-trained checkpoint under `checkpoints/`. Dingo and G1 load robot USDs from `data/robots/`, while Unitree Go2 uses the Isaac Lab asset path by default.
## Training
The released [post-trained model](https://huggingface.co/InternRobotics/X-NavDP/blob/main/x-navdp_posttrain.ckpt) was trained for 24,000 steps on 72 scenes, including 16 clutter scenes and 56 home/commercial scenes.
Single-node 8-GPU distributed training can be launched with:
```bash
export SCENE_DIR=/path/to/NavDP/baselines/x-navdp/data/scenes
export NPROC_PER_NODE=8
bash scripts/run_ddp_train.sh \
--config_file config/x-navdp_config.yaml
```
For a smaller debug run, reduce the number of processes and environments:
```bash
export NPROC_PER_NODE=1
bash scripts/run_ddp_train.sh \
--num_envs 1 \
--embodiments dingo \
--max_steps 100
```
Training writes periodic evaluation records to the directory passed through
`--txt_dir`. Aggregate these logs into global, per-embodiment, and per-scene
success-rate CSV files and plots with:
```bash
python scripts/aggregate_success.py ./txt/x-navdp
```
By default, outputs are written to `./result//`; for the
command above, the output directory is `./result/x-navdp/`.
Each log row has the form
`rank,step,episode,success,trainer_success_rate`. Home/commercial and clutter
results are reported separately. Use `--output-dir` to override the result
directory, or `--no-plots` to generate CSV files only; run
`python scripts/aggregate_success.py --help` for EMA and milestone options.
## Evaluation
Evaluation uses a policy server and an Isaac Lab client.
Start the policy server:
```bash
bash eval/scripts/start_policy_server.sh \
--checkpoint checkpoints/x-navdp_posttrain.ckpt \
--embodiment quadruped
```
Run point-goal evaluation:
```bash
bash eval/scripts/run_evaluation.sh \
--config_file eval/config/eval_pointgoal/quadruped_internscene_commercial.yaml
```
By default, evaluation runs all start-goal samples in the selected scene. Use `--num_episodes` to evaluate a subset and `--max_steps` to cap the total simulation steps for smoke tests or debugging.
Evaluation configs are provided under `eval/config/eval_pointgoal/`, and outputs are written under `outputs/evaluation/_/`. Each scene directory contains a `metric.csv` file whose first two columns are success and SPL. To print per-USD scene SR and SPL, run:
```bash
python eval/scripts/stat_eval_metrics.py outputs/evaluation/quadruped_commercial
```
## Results
On the project benchmark, X-NavDP improves the overall simulation success rate from 61.20% to 84.28% and improves real-world hard-case success rate from 10% to 65%. See the [project results](https://yty-sky.github.io/x-navdp-project-page/#results) for simulation and real-world comparisons across wheeled Dingo, quadruped Unitree Go2, and humanoid Unitree G1 embodiments.
## Citation
```bibtex
@misc{yang2026xnavdp,
title = {X-NavDP: Generalizing Navigation Diffusion Policy to Novel Behavior and Embodiments with Group Q-score Reweighted Matching},
author = {Tianyu Yang and Yiming Zeng and Wenzhe Cai and Yuqiang Yang and Jiaqi Peng and Hui Cheng and Jiangmiao Pang and Tai Wang},
year = {2026}
}
```
## License
Original X-NavDP code is released under the [MIT License](LICENSE). Vendored and external dependencies retain their upstream terms; see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
## Acknowledgement
This project builds on Isaac Sim, Isaac Lab, acados, and NavDP. X-NavDP is distributed as a self-contained baseline in the [InternRobotics/NavDP](https://github.com/InternRobotics/NavDP) repository.