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.sh
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 |
---|---|---|---|
|
|
|
Adds arguments to the |
|
|
|
Avoids building the base image to reuse the existing image if one exists. Useful for running offline after base image has been built once already. |
|
|
The first directory that exists in order: |
The location of the host directory to mount into the dev container as /workspaces/isaac_ros-dev |
|
|
|
Image key suffix to be used for preparing base image. Platform |
|
|
|
Echoes several key commands to the console for debugging. |
Config Keys
Shell values read from ~/.isaac_ros_common-config
if exists.
Key |
Type |
Example(s) |
Description |
---|---|---|---|
|
Array of string registry names |
|
Docker image names to search for tags for matching prebuilt images. |
|
string |
|
Suffix to append for container name launched by script. |
|
Period-delimited string for base image key |
|
Equivalent of |
|
Array of directory paths |
|
Array of directories to search for Dockerfiles matches for image keys. |
build_image_layers.sh
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.
Arguments
Arg |
Long argument |
Default |
Description |
---|---|---|---|
|
|
|
Adds arguments to the |
|
|
|
Base image name to use as the root, usually not needed. If not specified, the first Dockerfile must have a default |
|
|
|
Directory to use for docker context for the final layer and included as a docker search directory for matching Dockerfiles. |
|
|
|
The image key to build. Platform key ( |
|
|
|
Disables BuildKit when invoking |
|
|
Derived from image key replacing periods with dashes and appending |
Name to use for the Docker image being built. |
|
|
|
If |
|
|
|
If |
Config Keys
Shell values read from ~/.isaac_ros_common-config
if exists.
Key |
Type |
Example(s) |
Description |
---|---|---|---|
|
Array of strings |
|
Build arguments to pass to |
|
Array of string registry names |
|
Docker image names to search for tags for matching prebuilt images. |
|
Array of directory paths |
|
Array of directories to search for Dockerfiles matches for image keys. |
|
integer boolean |
|
Enables or disables Docker BuildKit environment. |
|
integer boolean |
|
Enables or disables matching Dockerfiles with composite keys, such as Dockerfile.key1.key2. |
|
integer boolean |
|
Enables or disables checking remote registries for prebuilt images. |
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 |
Example(s) |
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.
Note
Versions of ROS 2 other than Humble are not supported. This package depends on specific ROS 2 implementation features that were introduced beginning with the Humble release. ROS 2 versions after Humble have not yet been tested.
Platform |
Hardware |
Software |
Notes |
---|---|---|---|
Jetson |
For best performance, ensure that power settings are configured appropriately. Jetson Orin Nano 4GB may not have enough memory to run many of the Isaac ROS packages and is not recommended. |
||
x86_64 |
|
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.
Packages
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 |