Install curobo_ros¶
This guide takes you from a fresh machine to a running GPU-accelerated trajectory in RViz. Everything runs inside a Docker image so your host stays clean.
Choose Your Workflow¶
Workflow |
Best For |
Image Size |
curobo_ros |
|---|---|---|---|
DEV Mode |
Modifying curobo_ros internals |
~25-30 GB |
Mounted from host (live editing) |
PROD Mode |
Using curobo_ros in your projects |
~15-20 GB |
Pre-installed in container |
Choose DEV if you want to contribute to or modify curobo_ros source code. Choose PROD if you want to use curobo_ros as a dependency in your robot project.
Prerequisites¶
Requirement |
Notes |
|---|---|
Ubuntu 20.04 / 22.04 (or Windows 11 + WSL 2) |
Host system tested in CI. |
NVIDIA GPU with recent drivers |
CUDA 12 is used in the container. Check with |
~30 GB free disk space |
Docker image and dependencies are large. |
Docker ≥ 24 & NVIDIA Container Toolkit |
Follow nvidia.github.io/nvidia-docker. |
# Verify prerequisites
nvidia-smi
docker --version
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
PROD Mode Setup¶
1. Clone & Build Image¶
cd ~
git clone https://github.com/Lab-CORO/curobo_ros.git --recurse-submodules
cd curobo_ros/docker
bash build_docker.sh # GPU → PROD (mode 2)
Result: curobo_ros:ampere-prod — smaller image with curobo_ros pre-installed.
2. Create Your Workspace¶
Create your workspace on the host machine, not inside the container. Docker containers are ephemeral: if you delete or recreate a container, everything stored inside that is not in a mounted volume is lost. By keeping your workspace on the host, your code and built packages are safe regardless of what happens to the container.
# On the host machine
mkdir -p ~/my_robot_ws/src
# Place your packages in ~/my_robot_ws/src/
This path will be requested when you run start_docker_x86.sh (Step 3/3 prompt: Workspace path:).
The script mounts it into the container at /home/ros2_ws, so any file you edit on the host
is immediately visible inside the container, and vice versa.
3. Start the Container¶
bash start_docker_x86.sh # GPU → PROD → enter your workspace path
Your workspace is mounted at /home/ros2_ws. curobo_ros is pre-installed in /home/curobo_ws and auto-sourced on startup.
Daily Workflow¶
Opening Additional Terminals¶
Option 1 — VSCode (recommended):
Install the “Dev Containers” extension
Click
><in the bottom-left → “Attach to Running Container…”Open terminals with Terminal → New Terminal (all run inside the container)
Option 2 — docker exec:
# On your host
docker exec -it curobo_ampere_dev bash
source /home/ros2_ws/install/setup.bash
Starting a Stopped Container¶
After the first run, never use the start script again — use:
docker start curobo_ampere_dev
docker exec -it curobo_ampere_dev bash
DEV Mode Setup¶
1. Clone the Repository¶
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/Lab-CORO/curobo_ros.git --recurse-submodules
2. Import Dependencies¶
cd ~/ros2_ws/src
sudo apt install python3-vcstool
vcs import < curobo_ros/my.repos
This imports curobo_msgs (custom messages) and curobo_rviz (RViz plugin).
Resulting workspace:
~/ros2_ws/
└── src/
├── curobo_ros/
├── curobo_msgs/
└── curobo_rviz/
3. Build the Docker Image¶
⚠️ Takes 20-30 minutes and requires ~30 GB disk space.
cd ~/ros2_ws/src/curobo_ros/docker
bash build_docker.sh
Interactive prompts:
GPU architecture — Ampere (RTX 30XX) / Ada Lovelace (RTX 40XX) / Turing (RTX 20XX) / Volta
Mode — select
1for DEV
Result: image named curobo_ros:ampere-dev (or your GPU + mode).
4. Start the Container¶
⚠️ Run this script once to create the container. Afterward use
docker start+docker exec.
bash start_docker_x86.sh
Prompts: same GPU → DEV mode → confirm mount.
What gets mounted:
~/ros2_ws/src/curobo_ros→/home/ros2_ws/src/curobo_ros~/ros2_ws/src/curobo_rviz→/home/ros2_ws/src/curobo_rviz~/ros2_ws/src/curobo_msgs→/home/ros2_ws/src/curobo_msgs
GPU access and X11 forwarding (RViz) are enabled automatically.
5. Build the Workspace¶
All commands below run inside the container.
cd /home/ros2_ws
colcon build
Build time: ~2-5 minutes on first build.
6. Source the Environment¶
source /opt/ros/humble/setup.bash
source /home/ros2_ws/install/setup.bash
7. Launch the System¶
ros2 launch curobo_ros gen_traj.launch.py
First launch warmup (~30-60 s): the node compiles GPU kernels. RViz then opens showing the default robot (Doosan M1013).
⚠️ RViz doesn’t appear? See Troubleshooting.