How to Install ZED SDK with Docker on NVIDIA® Jetson

Setting Up Docker #

On NVIDIA® Jetson, the Container Runtime for Docker lets you build and run GPU-accelerated containers with Docker. It is included as part of NVIDIA® JetPack.

Check that it has been correctly installed by the NVIDIA® SDK Manager using the following command:

sudo dpkg --get-selections | grep nvidia
#libnvidia-container-tools       install
#libnvidia-container0:arm64      install
#nvidia-container-runtime        install
#nvidia-container-runtime-hook   install
#nvidia-docker2                  install

sudo docker info | grep nvidia
#+ Runtimes: nvidia runc

Download a ZED SDK Docker Image #

To build and run an application using the ZED SDK, you need to pull a ZED SDK Docker image first.

The official ZED SDK Docker images for Jetson are located in Stereolabs DockerHub repository. The releases are tagged using ZED SDK and JetPack versions. These images are based on the NVIDIA® l4t-base container, adding the ZED SDK library and dependencies.

An example:

docker pull stereolabs/zed:3.0-devel-jetson-jp4.2   # devel release 3.0 for JetPack 4.2

Please ensure that the L4T (Linux for Tegra) version of your host system matches the L4T version of the container you are using.

Start a Docker Container #

To run a Docker container using a ZED SDK image, use the following command:

docker run --gpus all -it --privileged stereolabs/zed:<container_tag>

The --gpus all command adds all available GPUs to the container, and --privileged grants permission to the container to access the camera connected on USB.

For example:

docker run --gpus all -it --privileged stereolabs/zed:3.0-devel-jetson-jp4.2

Congratulations, the ZED SDK is now available in your container!

Run ZED Explorer Tool #

To verify our installation, we are going to run the ZED Explorer tool. By default, a Docker container can only be used to run command-line applications. On NVIDIA® Jetson, however, OpenGL, CUDA and TensorRT are ready to use within the l4t-base container.

To enable display output, we simply need to grant access to the X server when running the container:

xhost +si:localuser:root  # allow containers to communicate with X server
docker run -it --runtime nvidia --privileged -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix stereolabs/zed:<container_tag>
  • --runtime nvidia will use the NVIDIA® container runtime.
  • -v /tmp/.X11-unix:/tmp/.X11-unix is required for the container to access the display.
  • -e DISPLAY makes your DISPLAY environment variable available in the container.
  • <container_tag> must be replaced with the tag of the container to be used.

Now you can run any GUI application in the container. Let’s run ZED Explorer:

/usr/local/zed/tools/ZED_Explorer

You should now be looking at the Explorer GUI application running on your display from a Docker container!

Run a Sample Application #

In this example, we will run a simple Depth Sensing sample application available in the ZED SDK sample folder.

apt update && apt install cmake -y
cp -r /usr/local/zed/samples/depth\ sensing/ /tmp/depth-sensing
cd /tmp/depth-sensing ; mkdir build ; cd build
cmake .. && make
./ZED_Depth_Sensing

Next Steps #

Read the next section to learn how to create your own Docker image for your application.