Isaac ROS Common#
Overview#
The Isaac ROS Common repository contains a number of scripts and Dockerfiles to help streamline development and testing with the Isaac ROS suite.
Docker containers allow you to quickly set up a sensitive set of frameworks and dependencies to ensure a smooth experience with Isaac ROS packages. The Dockerfiles for x86_64 are based on the version 23.10 image from Deep Learning Frameworks Containers. On Jetson platforms, JetPack manages all of these dependencies for you.
Use of Docker images enables CI|CD systems to scale with DevOps work and run automated testing in cloud native platforms on Kubernetes.
For solutions to known issues, see the Troubleshooting section.
Isaac ROS Dev Scripts#
run_dev.py#
Builds and launches development environment Docker container with host ROS workspace files mounted, or attaches to an existing running container.
Arguments#
Arg |
Long argument |
Default |
Description |
|---|---|---|---|
|
|
|
Uses the cached build image if available. Useful for running offline after base image has been built once already. |
|
|
Auto-detected from script location or |
The location of the host directory to mount into the dev container as |
|
|
Environment layers to include in the image. Can be specified multiple times. Platform is automatically prepended. Defaults are read from the config file. |
|
|
|
Build the image remotely if it doesn’t exist locally or in registry. |
|
|
|
Build the image locally if it doesn’t exist. |
|
|
|
Do not use Docker layer cache when building. |
|
|
|
Name of the Docker container to create or attach to. |
|
|
Auto-detected ( |
Override the platform architecture. |
|
|
|
Echoes several key commands to the console for debugging. |
Docker Arguments File#
Additional Docker run arguments can be specified in a .isaac_ros_dev-dockerargs file. The script searches for this file in the following locations (in order):
Path specified by
DOCKER_ARGS_FILEenvironment variable.isaac_ros_dev-dockerargsin the current directory~/.isaac_ros_dev-dockerargsin your home directory
Each line in the file is treated as a separate Docker argument. A default file is provided in the Isaac ROS Common scripts directory with useful mounts.
To add a new argument without overwriting existing ones:
# Check if argument exists, append if not
grep -qxF -- '--pid=host' .isaac_ros_dev-dockerargs 2>/dev/null || echo "--pid=host" >> .isaac_ros_dev-dockerargs
Example file contents:
--pid=host
-v /path/to/data:/data
-e MY_ENV_VAR=value
Config Keys#
Values read from ~/.isaac_ros_common-config if it exists.
Key |
Type |
Examples |
Description |
|---|---|---|---|
|
List of string registry names |
|
Docker image names to search for tags for matching prebuilt images. |
|
List of period-delimited strings |
|
Default image key layers to use for building. |
build_image_layers.py#
Builds a Docker image by parsing an image key (period-delimited string of keys), matching local Dockerfiles corresponding to those keys, and building them in sequence, feeding the result of one as the base image of the next.
This script is called internally by run_dev.py when building images, but can also be run standalone.
Arguments#
Arg |
Long argument |
Default |
Description |
|---|---|---|---|
|
|
|
Image key to resolve. Can be specified multiple times to build multiple layers (for example, |
|
|
|
Additional build arguments as |
|
|
|
Set final image name for the built image. |
|
|
|
Config YAML file path for build configuration. |
|
|
|
Enable verbose mode for debugging. |
|
|
Do not use cached layers for image build. |
|
|
|
Auto-detected from image keys |
Target platform architecture (for example, |
|
|
Override base image for the first build layer. |
|
|
|
Override context directory for the final build target. Also added to docker search directories. |
|
|
|
Push an NVCR (NVIDIA Container Registry) image tag in addition to the standard tag. |
|
|
|
Skip checking remote registry for existing images. Useful for forcing rebuilds. |
|
|
|
Force local building instead of using remote builder. |
Config Keys#
Values read from ~/.isaac_ros_common-config (shell format) or .build_image_layers.yaml (YAML format).
Key |
Type |
Examples |
Description |
|---|---|---|---|
|
List of string registry names |
|
Docker image names to search for tags for matching prebuilt images. |
|
List of string registry names |
|
Docker registry names to push built images and cache layers to. |
|
List of period-delimited strings |
|
Default image key layers to use for building. Defines ordering priority. |
|
List of directory paths |
|
Directories to search for Dockerfiles matching image keys. |
|
Dictionary with platform keys |
|
Remote Docker builder endpoints by platform for distributed builds. |
docker_deploy.sh#
Packages prebuilt build artifacts from a ROS workspace and/or set of Debians into a runnable Docker image.
Arguments#
Arg |
Long argument |
Default |
Description |
|---|---|---|---|
|
|
|
Adds your own |
|
|
|
Image key to use as base image before layering on build products. |
|
|
|
Host directory path that will be layered in as a root overlay into the final Docker image. Repeated. |
|
|
|
Launch file name to run by default on container entrypoint. Must be specified with |
|
|
|
Comma-delimited string of Debians to installed with apt-get install on the base image. |
|
|
|
Name to use for the Docker image being built. |
|
|
|
ROS package name that hosts the target launch file. Must be specified with |
|
|
|
Image key to use as additional layers after the build products have been added. |
|
|
|
Tarball to be staged as a root overlay on top of the base image. Repeatable. |
|
|
|
Path to ROS workspace to layer in |
Config Keys#
Shell values read from ~/.isaac_ros_common-config if exists.
Key |
Type |
Examples |
Description |
|---|---|---|---|
|
Period-delimited string |
|
Base image to layer build products on top of. |
|
Array of string |
|
Custom |
|
string |
|
Name of Docker image built. |
|
Comma-delimited string |
|
List of Debians to install on top of base image. |
|
Array of directory absolute paths |
|
Host directories to include as a root overlay in final image. |
|
Array of directory absolute file paths |
|
Paths to |
|
String path |
|
Path to ROS workspace with built |
|
string |
|
ROS package name hosting the launch file to run by default in container. |
|
string |
|
Launch file to run by default in container. |
Supported Platforms#
This package is designed and tested to be compatible with ROS 2 Humble running on Jetson or an x86_64 system with an NVIDIA GPU.
Platform |
Hardware |
Software |
Storage |
Notes |
|---|---|---|---|---|
Jetson |
128+ GB NVMe SSD |
For best performance, ensure that power settings are configured appropriately. |
||
x86_64 |
|
32+ GB disk space available |
N/A |
Docker#
To simplify development, we strongly recommend leveraging the Isaac ROS Dev Docker images by following these steps. This streamlines your development environment setup with the correct versions of dependencies on both Jetson and x86_64 platforms.
Note
All Isaac ROS Quickstarts, tutorials, and examples have been designed with the Isaac ROS Docker images as a prerequisite.
Customize your Dev Environment#
To customize your development environment, reference this guide.
Updates#
Date |
Changes |
|---|---|
2024-12-10 |
Refactored Dockerfiles |
2024-09-26 |
Updated for Isaac ROS 3.1 |
2024-05-30 |
Update to be compatible with JetPack 6.0 |
2023-10-18 |
Updated for Isaac ROS 2.0.0 |
2023-05-25 |
Refreshed ROS 2 Humble |
2023-04-05 |
Experimental support for WSL2, merged image keys |
2022-10-19 |
Minor updates and bugfixes |
2022-08-31 |
Update to be compatible with JetPack 5.0.2 |
2022-06-30 |
Support ROS 2 Humble and miscellaneous bug fixes. |
2022-06-16 |
Update |
2021-10-20 |
Migrated to NVIDIA-ISAAC-ROS, added |
2021-08-11 |
Initial release to NVIDIA-AI-IOT |