Setup Guide

Installation

Complete setup guide from cloning the repo to running your first evaluation with NavDP or a custom baseline.

๐Ÿ–ฅ๏ธ
System Requirements Isaac Sim 4.2 requires an NVIDIA GPU with RTX capability (RTX 3080+ recommended), Ubuntu 20.04/22.04, and ~50 GB disk space for scene assets. Windows is not supported for the simulator โ€” use WSL2 with CUDA passthrough if on Windows.

Step 0: Clone the Repository

git clone https://github.com/xoTEMPESTox/NavDP
cd NavDP

Step 1: Isaac Sim Environment

The benchmark requires Isaac Sim 4.2.0 and Isaac Lab 1.2.0.

1a. Create conda environment

conda create -n isaaclab python=3.10
conda activate isaaclab
pip install --upgrade pip

1b. Install Isaac Sim 4.2

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

1c. Install Isaac Lab 1.2.0

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

1d. Install benchmark dependencies

# From the NavDP root
pip install -r requirements.txt
๐Ÿ“ฆ
Key Dependencies The 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.

Step 2: Download Scene Assets

Scene assets are hosted on HuggingFace under the InternRobotics/Scene-N1 dataset. Download and extract to assets/scenes/:

Scene CategoryHuggingFace LinkSize (approx)
SkyTextureSkyTexture.tar.gz~2 GB
MaterialsMaterials.tar.gz~3 GB
Cluttered Easycluttered_easy.tar.gz~5 GB
Cluttered Hardcluttered_hard.tar.gz~5 GB
InternScenes Homeinternscenes_home/~20 GB
InternScenes Commercialinternscenes_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.

Step 3: Download NavDP Model Checkpoint

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

Step 4: Set Up NavDP Policy Server

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.

Step 5: Run Evaluation

From the isaaclab conda environment in the NavDP root:

NoGoal Exploration

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

PointGoal Navigation

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

ImageGoal Navigation

python eval_imagegoal_wheeled.py \
  --port 8888 \
  --scene_dir ./assets/scenes/internscenes_home \
  --scene_index 0 \
  --num_episodes 5

Teleoperation (Manual Control)

# Manually drive the robot for data collection or debugging
python teleop_pointgoal_wheeled.py \
  --scene_dir ./assets/scenes/cluttered_easy \
  --scene_index 0

Setting Up Other Baselines

LoGoPlanner

cd baselines/logoplanner/
pip install -r depth_anything/requirements.txt
python logoplanner_server.py --port 8889 --checkpoint /path/to/logoplanner.pth

NoMAD

cd baselines/nomad/
# Configure in configs/nomad.yaml (model path, etc.)
python nomad_server.py --port 8890

ViNT

cd baselines/vint/
python vint_server.py --port 8891 --checkpoint /path/to/vint.pth

ViPlanner

cd baselines/viplanner/
python viplanner_server.py --port 8892 --config configs/viplanner.yaml
โœ…
All baselines use the same evaluation scripts. Just change --port to point to whichever server is running. You can run multiple servers simultaneously for A/B comparisons.

Output Files

After a successful evaluation run, you will find:

evaluation_outputs/ โ”œโ”€โ”€ benchmark_runs/ โ”‚ โ””โ”€โ”€ pointgoal_cluttered_easy_20240625.csv # Episode metrics CSV โ””โ”€โ”€ videos/ โ””โ”€โ”€ pointgoal_cluttered_easy_ep0.mp4 # RGB + BEV composite video

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.

Troubleshooting

ProblemLikely CauseFix
Robot spawns but doesn't moveMissing root_joint fixRun research_tools/fix_lekiwi_usd.py
NaN errors at spawnSelf-collision or overlapping shapesCheck add_wheel_collisions.py output; disable self-collisions
Policy server connection refusedServer not started or wrong portStart server in separate terminal, match --port
rsl-rl install errorUpstream package conflictSafe to ignore โ€” not required for evaluation
CUDA out of memoryToo many parallel envsReduce --num_envs to 1
imageio ffmpeg errorMissing ffmpeg backendpip install imageio-ffmpeg==0.6.0