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.