Research Sandbox ยท Academic Fork

NavDP Research Sandbox

Exploring Diffusion Policies for omni-directional robotics navigation. Built on NavDP ยท Runs on Isaac Sim 4.2 + Isaac Lab 1.2

3 Nav. Tasks
2 Robot Models
4 Baselines
5 Research Tools
Scroll to explore
Research Contributions

What This Fork Adds

Three primary areas of extension beyond the official NavDP framework

Supported Tasks

Navigation Benchmarks

Three evaluation modes from the official NavDP benchmark, now runnable on both Dingo and LeKiwi

NoGoal Exploration

The robot explores freely with no explicit target. Tests general spatial reasoning and obstacle avoidance under the diffusion policy.

python eval_nogoal_wheeled.py --robot lekiwi --port 8888

PointGoal Navigation

Navigate to a given (x, y) coordinate in the world frame. Evaluates metric localization and trajectory planning accuracy.

python eval_pointgoal_wheeled.py --robot lekiwi --scene_dir [PATH]

ImageGoal Navigation

Navigate to a location depicted in a reference image. Tests visual goal-conditioning and semantic understanding of the policy.

python eval_imagegoal_wheeled.py --robot lekiwi --port 8888
System Design

Decoupled Architecture

The evaluation framework is cleanly separated into three independent layers

Navigation Policy Server
NavDP Model
LoGoPlanner
NoMAD / ViNT
HTTP API ยท Port-based ยท Runs independently
HTTP Requests
MPC Trajectory Controller
Async Planning Thread
MPC Controller
Visualization Manager
Asynchronous ยท Real-time tracking ยท Thread-safe
IsaacLab API
Isaac Sim Environment
Dingo / LeKiwi Robot
Scene Assets
Sensors (RGB, Depth)
IsaacSim 4.2 ยท IsaacLab 1.2 ยท Physics simulation
Included Baselines

Evaluated Methods

Four navigation approaches integrated as plug-and-play HTTP servers

01

NavDP

The primary method. End-to-end diffusion policy for mapless navigation trained entirely in simulation with privileged information guidance.

baselines/navdp/navdp_server.py baselines/navdp/policy_network.py
02

LoGoPlanner

Language-guided planner with depth estimation via Depth Anything V2. Extended with a real-world LeKiwi host client for sim-to-real transfer.

baselines/logoplanner/logoplanner_server.py baselines/logoplanner/lekiwi_logoplanner_host.py
03

NoMAD

Goal-conditioned diffusion model for topological navigation with sub-goal prediction. Uses YAML-based configuration for easy parameter sweeps.

baselines/nomad/nomad_server.py baselines/nomad/configs/nomad.yaml
04

ViNT

Visual Navigation Transformer. A foundation model for mobile robotics navigation using a transformer backbone for visual goal conditioning.

baselines/vint/vint_server.py baselines/vint/vint_network.py
Get Started

Quick Start

Get up and running in minutes

1

Clone the Repository

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

Set Up IsaacSim Environment

conda create -n isaaclab python=3.10
conda activate isaaclab
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
3

Start the NavDP Policy Server

cd baselines/navdp/
pip install -r requirements.txt
python navdp_server.py --port 8888 --checkpoint /path/to/checkpoint.pth
4

Run Evaluation

# PointGoal with Dingo (default)
python eval_pointgoal_wheeled.py --port 8888 --scene_dir ./assets/scenes/cluttered_easy

# PointGoal with LeKiwi
python eval_pointgoal_wheeled.py --port 8888 --robot lekiwi --scene_dir ./assets/scenes/cluttered_easy
Research Journal

Development Log Highlights

Key engineering discoveries documented during the LeKiwi integration

Ch. 1

The Immovable Object

The robot spawned but refused to move โ€” caused by a fixed root_joint in the USD that treats it as a static prop, not a mobile agent. Fix: fix_lekiwi_usd.py deactivates the joint and applies ArticulationRootAPI.

Ch. 2

The Ghost in the Machine

Wheels spinning at 20 rad/s, robot not moving an inch. The collision meshes were missing โ€” the physics engine saw an empty ghost. Fix: add_wheel_collisions.py procedurally injects cylinder/box geometry.

Ch. 3

The Exploding Robot (NaNs)

Simulation flooded with NaN errors. Self-collisions between overlapping shapes + high actuator gains caused infinite force vectors. Fix: Disabled self-collisions, used torch.linalg.pinv instead of torch.inverse.

Ch. 4

The Anchor

Robot dragging like a weight โ€” cylinder collision on the caster wheel resisted lateral sliding. Fix: Front wheels โ†’ Cylinder (traction). Back wheel โ†’ Sphere (zero friction, free sliding).