Complete setup guide from cloning the repo to running your first evaluation with NavDP or a custom baseline.
git clone https://github.com/xoTEMPESTox/NavDP
cd NavDP
The benchmark requires Isaac Sim 4.2.0 and Isaac Lab 1.2.0.
conda create -n isaaclab python=3.10
conda activate isaaclab
pip install --upgrade pip
pip install isaacsim==4.2.0.2 \
isaacsim-extscache-physics==4.2.0.2 \
isaacsim-extscache-kit==4.2.0.2 \
isaacsim-extscache-kit-sdk==4.2.0.2 \
--extra-index-url https://pypi.nvidia.com
# Verify installation
isaacsim omni.isaac.sim.python.kit
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab/
git checkout tags/v1.2.0
./isaaclab.sh --install # ignore rsl-rl errors
cd ..
# From the NavDP root
pip install -r requirements.txt
requirements.txt includes: torch 2.2.2, open3d 0.19, casadi 3.7 (for MPC), osqp, imageio[ffmpeg], diffusers 0.33, and opencv-python. These are all pinned for reproducibility.
Scene assets are hosted on HuggingFace under the
InternRobotics/Scene-N1 dataset.
Download and extract to assets/scenes/:
| Scene Category | HuggingFace Link | Size (approx) |
|---|---|---|
| SkyTexture | SkyTexture.tar.gz | ~2 GB |
| Materials | Materials.tar.gz | ~3 GB |
| Cluttered Easy | cluttered_easy.tar.gz | ~5 GB |
| Cluttered Hard | cluttered_hard.tar.gz | ~5 GB |
| InternScenes Home | internscenes_home/ | ~20 GB |
| InternScenes Commercial | internscenes_commercial.tar.gz | ~20 GB |
# Example: download and extract cluttered_easy
cd assets/scenes/
wget https://huggingface.co/datasets/InternRobotics/Scene-N1/resolve/main/n1_eval_scenes/cluttered_easy.tar.gz
tar -xzf cluttered_easy.tar.gz
The episode .npy files are already included in this repository under assets/scenes/ and do not need to be downloaded separately.
Fill out the model access form on the official NavDP page to receive the checkpoint download link.
Save the checkpoint anywhere accessible, then reference it when starting the server:
export CHECKPOINT_PATH=/path/to/navdp_checkpoint.pth
cd baselines/navdp/
conda create -n navdp python=3.10
conda activate navdp
pip install -r requirements.txt
# Start the server (keep this terminal open)
python navdp_server.py --port 8888 --checkpoint $CHECKPOINT_PATH
The server will print Running on http://0.0.0.0:8888 when ready. Switch to your isaaclab conda environment in a new terminal for the next step.
From the isaaclab conda environment in the NavDP root:
conda activate isaaclab
python eval_nogoal_wheeled.py \
--port 8888 \
--scene_dir ./assets/scenes/cluttered_easy \
--scene_index 0 \
--num_envs 1 \
--num_episodes 5
python eval_pointgoal_wheeled.py \
--port 8888 \
--robot dingo \ # or: --robot lekiwi
--scene_dir ./assets/scenes/cluttered_easy \
--scene_index 0 \
--num_envs 1 \
--num_episodes 10 \
--stop_threshold -3.0
python eval_imagegoal_wheeled.py \
--port 8888 \
--scene_dir ./assets/scenes/internscenes_home \
--scene_index 0 \
--num_episodes 5
# Manually drive the robot for data collection or debugging
python teleop_pointgoal_wheeled.py \
--scene_dir ./assets/scenes/cluttered_easy \
--scene_index 0
cd baselines/logoplanner/
pip install -r depth_anything/requirements.txt
python logoplanner_server.py --port 8889 --checkpoint /path/to/logoplanner.pth
cd baselines/nomad/
# Configure in configs/nomad.yaml (model path, etc.)
python nomad_server.py --port 8890
cd baselines/vint/
python vint_server.py --port 8891 --checkpoint /path/to/vint.pth
cd baselines/viplanner/
python viplanner_server.py --port 8892 --config configs/viplanner.yaml
--port to point to whichever server is running. You can run multiple servers simultaneously for A/B comparisons.
After a successful evaluation run, you will find:
Video frames are written by imageio at the evaluation framerate. Each frame is a horizontal composite of the robot's RGB view and the BEV occupancy grid, with an optional trajectory heatmap panel below.
| Problem | Likely Cause | Fix |
|---|---|---|
| Robot spawns but doesn't move | Missing root_joint fix | Run research_tools/fix_lekiwi_usd.py |
| NaN errors at spawn | Self-collision or overlapping shapes | Check add_wheel_collisions.py output; disable self-collisions |
| Policy server connection refused | Server not started or wrong port | Start server in separate terminal, match --port |
rsl-rl install error | Upstream package conflict | Safe to ignore โ not required for evaluation |
| CUDA out of memory | Too many parallel envs | Reduce --num_envs to 1 |
| imageio ffmpeg error | Missing ffmpeg backend | pip install imageio-ffmpeg==0.6.0 |