Goal
This guide builds the Jetson AGX Orin 64GB runtime environment. The current cuRobo documentation recommends Ubuntu Linux, an NVIDIA GPU newer than Turing, Python 3.10 or newer while avoiding unvalidated versions above 3.13, a driver that supports CUDA 12+, and installation through uv. On Jetson, the driver and CUDA stack come from JetPack, so the real task is pinning JetPack before installing PyTorch and cuRobo.
1. Inspect the Jetson
sudo nvpmodel -q
tegrastats
nvcc --version
python3 --version
df -h /
If your root filesystem is on eMMC, move the workspace and caches to NVMe. cuRobo pulls PyTorch, Warp, and CUDA build caches; small eMMC storage makes builds slow and fragile.
mkdir -p /mnt/nvme/robotics/{src,venvs,cache}
export UV_CACHE_DIR=/mnt/nvme/robotics/cache/uv
export TORCH_HOME=/mnt/nvme/robotics/cache/torch
2. Clone and create a venv
cd /mnt/nvme/robotics/src
git clone https://github.com/NVlabs/curobo
cd curobo
uv venv --python 3.11
source .venv/bin/activate
python -V
The official CUDA 12 fresh-install command is:
uv pip install .[cu12-torch]
If your Jetson already has a PyTorch wheel that matches its JetPack/CUDA version, prefer:
uv pip install .[cu12]
On Jetson this is often safer because aarch64 PyTorch wheels must match the L4T stack. Do not force x86_64 wheels from PyPI onto Jetson.
3. Minimal smoke test
python - <<'PY'
import torch
import curobo
print("torch", torch.__version__)
print("cuda", torch.version.cuda)
print("cuda available", torch.cuda.is_available())
print("device", torch.cuda.get_device_name(0))
print("curobo", curobo.__version__)
PY
Then run package tests if time allows:
pytest --pyargs curobo.tests
If the full test suite is too expensive, at least run the getting-started examples that do not require real robot hardware.
4. Containerize the environment
A minimal shape:
FROM nvcr.io/nvidia/l4t-pytorch:r36.4.0-pth2.4-py3
RUN apt-get update && apt-get install -y git curl build-essential && rm -rf /var/lib/apt/lists/*
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:${PATH}"
WORKDIR /opt/curobo
COPY . /opt/curobo
RUN uv venv --python 3.11 /opt/curobo/.venv
RUN . /opt/curobo/.venv/bin/activate && uv pip install .[cu12]
Do not treat this Dockerfile as universal. Match the base image to the actual JetPack release, keep PyTorch compatible, then install cuRobo.
5. Common failures
| Symptom | Likely cause | Fix |
|---|---|---|
torch.cuda.is_available() == False |
Wrong PyTorch wheel for JetPack/CUDA | Reinstall the correct aarch64 PyTorch wheel |
| Build runs out of disk | Cache on eMMC | Move UV_CACHE_DIR, TORCH_HOME, and workspace to NVMe |
| Import works but examples crash | CUDA/Warp/PyTorch ABI mismatch | Rebuild in a clean pinned environment |
| First planning call is slow | CUDA graph/kernel warmup | Call warmup() during startup |
6. Checklist
python -c "import curobo"succeeds.torch.cuda.is_available()isTrue.nvidia-smiis not expected on Jetson; usetegrastats.- Repo and venv are on NVMe.
- You logged JetPack, Python, PyTorch, CUDA, and cuRobo commit versions.
Conclusion
The hard part is not the install command; it is pinning the version matrix. Once the environment is reproducible, move to robot model generation: URDF, meshes, collision spheres, and the self-collision matrix.