DriveWorks SDK Reference
5.8.83 Release
For Test and Development only

Getting Started Using the NVIDIA SDK Manager

Please see the "DRIVE Platform Installation Guide with NVIDIA SDK Manager" and "DRIVE OS 6.0 Linux Developer Guide" or "DRIVE OS 6.0 QNX Developer Guide" for complete host system requirements, to flash the NVIDIA DRIVE Orin™ system, setup minicom, tcu_muxer, and networking for secure shell (SSH) and network file system (NFS), and for other important installation information.

Note
You may to refer to the "DRIVE OS 6.0 Installation Guide for NVIDIA Developer" instead of the "DRIVE Platform Installation Guide with NVIDIA SDK Manager" if you obtained your documentation from the NVIDIA DRIVE Developer Program instead of NVONLINE.

Core Binaries Installation

We assume that you have downloaded and installed NVIDIA SDK Manager and used it to install the host components "DriveWorks x86," and "DriveWorks Cross-Compile for Linux" or "DriveWorks Cross-Compile for QNX," as well as flash the NVIDIA DRIVE OS including the NVIDIA DriveWorks SDK onto the target system. The NVIDIA DriveWorks SDK is precompiled and preinstalled for the Linux x86 and Linux or QNX aarch64 architectures under the path /usr/local/driveworks on the host system and for the Linux or QNX aarch64 architecture on the target system.

Host System x86

Samples Binaries Installation

This section describes running precompiled samples with no compilation required. As an alternative, to compile samples from source and run those samples, please see Samples Compilation From Source below.

The NVIDIA DriveWorks SDK is precompiled and preinstalled for the Linux x86 architecture on the host system under the path /usr/local/driveworks. The NVIDIA DriveWorks SDK samples are precompiled for the Linux x86 architecture and preinstalled under /usr/local/driveworks/bin.

To run the "Hello World" sample, use the following command on the host system:

% /usr/local/driveworks/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path /usr/local/driveworks/bin may be run on the host system in a similar way. For a full list of samples, please see Samples.

Samples Compilation From Source

This section describes compiling samples from source and running those samples. As an alternative, to install and run precompiled samples with no compilation required, please see Samples Binaries Installation above.

The NVIDIA DriveWorks SDK is precompiled and preinstalled for the Linux x86 architecture on the host system under the path /usr/local/driveworks to enable compiling samples and applications that leverage the NVIDIA DriveWorks SDK. Source code and CMake project and toolchain files for the NVIDIA DriveWorks SDK samples are located under the path /usr/local/driveworks/samples.

To compile the samples, first create the output directory and configure the project:

% mkdir -p $DRIVEWORKS_WORKSPACE/build-x86
% cmake -B $DRIVEWORKS_WORKSPACE/build-x86 -S /usr/local/driveworks/samples

The environment variable $DRIVEWORKS_WORKSPACE denotes the location on the host file system below which you would like the compiled samples to be built.

Console output:

-- The C compiler identification is GNU *
-- The CXX compiler identification is GNU *
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The CUDA compiler identification is NVIDIA *
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc -- works
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "*")
-- Found EGL: /usr/lib/x86_64-linux-gnu/libEGL.so
-- Found /usr/lib/x86_64-linux-gnu/libEGL.so:
-- - Includes: [/usr/include]
-- - Libraries: [/usr/lib/x86_64-linux-gnu/libEGL.so]
-- DW_EXPERIMENTAL_FORCE_EGL not set, EGL Support Disabled
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Default - Building with TRT version * and cudnn version *
-- Building GLFW for X11 (static)
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- **** Samples will be installed to `$DRIVEWORKS_WORKSPACE/build-x86/install/usr/local/driveworks/samples/bin' on the host filesystem. ****
-- Found CUDART: /usr/local/cuda/targets/x86_64-linux/include
-- Found cuBLAS: /usr/local/cuda/targets/x86_64-linux/include
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_base library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_base.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_calibration library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_calibration.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_egomotion library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_egomotion.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_imageprocessing library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_imageprocessing.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_pointcloudprocessing library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_pointcloudprocessing.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_sensors library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_sensors.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_vehicleio library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_vehicleio.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dw_dnn_base library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdw_dnn_base.so
-- Found 'dwvisualization/core/Visualization.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found driveworks_visualization library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdriveworks_visualization.so
-- Found 'dwvisualization/core/Visualization.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- optional driveworks_visualization_av library not found at /usr/local/driveworks/targets/x86_64-Linux/lib;/usr/local/driveworks/lib - ok
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dwshared library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdwshared.so
-- Found 'dw/core/DynamicMemory.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dwdynamicmemory library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdwdynamicmemory.so
-- Found cuDNN: /usr/include (found version "*")
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dwcgf library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdwcgf.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/x86_64-Linux/include
-- Found dwframework_dwnodes library in /usr/local/driveworks/targets/x86_64-Linux/lib/libdwframework_dwnodes.so
-- Found NvSCI: /usr/include found components: NvSciSync
-- Configuring done
-- Generating done
-- Build files have been written to: $DRIVEWORKS_WORKSPACE/build-x86

Build the project:

% cd $DRIVEWORKS_WORKSPACE/build-x86
% make

Partial console output:

Scanning dependencies of target sample_hello_world
Building CXX object src/hello_world/CMakeFiles/sample_hello_world.dir/main.cpp.o
Linking CXX executable sample_hello_world
Built target sample_hello_world

Install the project:

% make install

Partial console output:

Install the project...
-- Install configuration: "Release"
....
-- Installing: $DRIVEWORKS_WORKSPACE/build-x86/install/usr/local/driveworks/samples/bin/sample_hello_world
-- Set runtime path of "$DRIVEWORKS_WORKSPACE/build-x86/install/usr/local/driveworks/samples/bin/sample_hello_world" to ""

To run the "Hello World" sample, use the following command on the host system:

% $DRIVEWORKS_WORKSPACE/build-x86/install/usr/local/driveworks/samples/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path $DRIVEWORKS_WORKSPACE/build-x86/install/usr/local/driveworks/samples/bin may be run on the host system in a similar way. For a full list of samples, please see Samples.

Verification of the File System Layout

For instructions on verifying the file system layout on the host system, please see Verifying the NVIDIA DriveWorks SDK Installation.

NVIDIA DRIVE Orin Target System Linux aarch64

Samples Binaries Installation

This section describes installing and running precompiled samples with no cross-compilation required. As an alternative, to cross-compile samples from source and run those samples, please see Samples Cross-Compilation From Source below.

We assume that you have flashed your NVIDIA DRIVE Orin target system using the NVIDIA SDK Manager and finalized your target system setup following the procedures in the "DRIVE Platform Installation Guide with NVIDIA SDK Manager." The NVIDIA DriveWorks SDK will be precompiled for the Linux aarch64 architecture and preinstalled on the target system under the path /usr/local/driveworks.

To install the NVIDIA DriveWorks SDK samples precompiled for the Linux aarch64 architecture onto the target system, copy the following Debian packages located under the path $SDKM_DOWNLOADS on the host system to the target system using the NFS mount that you set up using the "DRIVE OS 6.0 Linux Developer Guide:"

  • driveworks-data_*~linux*_all.deb
  • driveworks-samples_*~linux*_arm64.deb
  • driveworks-stm-samples_*~linux*_arm64.deb
  • driveworks-cgf-samples_*~linux*_arm64.deb

The environment variable $SDKM_DOWNLOADS denotes the location for the downloads folder, as specified in the NVIDIA SDK Manager.

If you do not have an NFS mount setup, you may use rcp to copy the above Debian packages after connecting to the target system using minicom, tcu_muxer, or SSH. See the "DRIVE OS 6.0 Linux Developer Guide" for examples of copying files from the host system to the target system.

Warning
Enter all subsequent commands in this section at the target system command prompt $.

Connect to the target system using minicom, tcu_muxer, or SSH, and then use dpkg to install the Debian packages in the following order using the following commands on the target system.

Install the driveworks-data package:

$ sudo dpkg -i $TARGET_NFS_MOUNT_PATH/driveworks-data_*~linux*_all.deb

The environment variable $TARGET_NFS_MOUNT_PATH denotes the location on the target file system of the NFS mount.

Console output:

Selecting previously unselected package driveworks-data.
Preparing to unpack driveworks-data_*~linux*_all.deb ...
Unpacking driveworks-data ...
Setting up driveworks-data ...

Install the driveworks-samples package:

$ sudo dpkg -i $TARGET_NFS_MOUNT_PATH/driveworks-samples_*~linux*_arm64.deb

Console output:

Selecting previously unselected package driveworks-samples.
Preparing to unpack driveworks-samples_*~linux*_arm64.deb ...
Unpacking driveworks-samples ...
Setting up driveworks-samples ...

Install the driveworks-stm-samples package:

$ sudo dpkg -i $TARGET_NFS_MOUNT_PATH/driveworks-stm-samples_*~linux*_arm64.deb

Console output:

Selecting previously unselected package driveworks-stm-samples.
Preparing to unpack driveworks-stm-samples_*~linux*_arm64.deb ...
Unpacking driveworks-stm-samples ...
Setting up driveworks-stm-samples ...

Install the driveworks-cgf-samples package:

$ sudo dpkg -i $TARGET_NFS_MOUNT_PATH/driveworks-cgf-samples_*~linux*_arm64.deb

Console output:

Selecting previously unselected package driveworks-cgf-samples.
Preparing to unpack driveworks-cgf-samples_*~linux*_arm64.deb ...
Unpacking driveworks-cgf-samples ...
Setting up driveworks-cgf-samples ...

The NVIDIA DriveWorks SDK samples precompiled for the Linux aarch64 architecture are then installed under /usr/local/driveworks/bin on the target system.

To run the "Hello World" sample, use the following command on the target system:

$ /usr/local/driveworks/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path /usr/local/driveworks/bin may be run on the target system in a similar way. For a full list of samples, please see Samples.

Samples Cross-Compilation From Source

This section describes cross-compiling samples from source and running those samples. As an alternative, to install and run precompiled samples with no cross-compilation required, please see Samples Binaries Installation above.

The NVIDIA DriveWorks SDK is precompiled and preinstalled for the Linux aarch64 architecture on the host system under the path /usr/local/driveworks/targets/aarch64-Linux to enable cross-compiling samples and applications that leverage the NVIDIA DriveWorks SDK. Source code and CMake project and toolchain files for the NVIDIA DriveWorks SDK samples are located under the path /usr/local/driveworks/samples.

To cross-compile the samples, first create the output directory and configure the project:

% mkdir -p $DRIVEWORKS_WORKSPACE/build-linux-aarch64
% cmake -B $DRIVEWORKS_WORKSPACE/build-linux-aarch64 \
-DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples/cmake/Toolchain-V5L.cmake \
-DVIBRANTE_PDK=$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux \
-S /usr/local/driveworks/samples

The environment variable $DRIVEWORKS_WORKSPACE denotes the location on the host file system below which you would like the compiled samples to be built, and the environment variable $NVIDIA_SDK denotes the location on the host filesystem for the target hardware image folder, as specified in the NVIDIA SDK Manager.

Console output:

-- VIBRANTE_PDK = $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux
-- VIBRANTE_PDK_BRANCH = *
-- Vibrante version *
-- The C compiler identification is GNU *
-- The CXX compiler identification is GNU *
-- Check for working C compiler: /drive/toolchains/aarch64--glibc--stable-*/bin/aarch64-linux-gcc
-- Check for working C compiler: /drive/toolchains/aarch64--glibc--stable-*/bin/aarch64-linux-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /drive/toolchains/aarch64--glibc--stable-*/bin/aarch64-linux-g++
-- Check for working CXX compiler: /drive/toolchains/aarch64--glibc--stable-*/bin/aarch64-linux-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The CUDA compiler identification is NVIDIA *
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc -- works
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "*")
-- Found EGL: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libEGL.so
-- Found $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libEGL.so:
-- - Includes: [$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/include]
-- - Libraries: [$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libEGL.so]
-- Found: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libdrm.so
-- Header at: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/include
-- DW_EXPERIMENTAL_FORCE_EGL set and EGL Support Enabled
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Cross Compiling for Vibrante
-- Default - Building with TRT version * and cudnn version *
-- Building GLFW for X11 (static)
-- Found X11: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/include
-- Looking for XOpenDisplay in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libX11.so;$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libXext.so
-- Looking for XOpenDisplay in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libX11.so;$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/lib-target/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - not found
-- VIBRANTE_PDK_BRANCH = *
-- Found vibrante lib: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/samples/3rdparty/linux-aarch64/vibrante/lib/libudev.so
-- Found vibrante lib: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/samples/3rdparty/linux-aarch64/vibrante/lib/libusb-1.0.so
-- Found vibrante_Xlib: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/samples/3rdparty/linux-aarch64/vibrante_Xlibs/lib/libXcursor.so
-- **** Please copy the contents of `$DRIVEWORKS_WORKSPACE/build-linux-aarch64/install/usr/local/driveworks/samples/bin' on the host filesystem to `/usr/local/driveworks/samples/bin' on the target filesystem. ****
-- Found CUDART: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/cuda/targets/aarch64-linux/include
-- Found cuBLAS: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/cuda/targets/aarch64-linux/include
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_base library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_calibration library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_calibration.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_egomotion library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_egomotion.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_imageprocessing library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_imageprocessing.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_pointcloudprocessing library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_pointcloudprocessing.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_sensors library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_vehicleio library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_vehicleio.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dw_dnn_base library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdw_dnn_base.so
-- Found 'dwvisualization/core/Visualization.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found driveworks_visualization library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdriveworks_visualization.so
-- Found 'dwvisualization/core/Visualization.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- optional driveworks_visualization_av library not found at $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib;$NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/lib - ok
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dwshared library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdwshared.so
-- Found 'dw/core/DynamicMemory.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dwdynamicmemory library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdwdynamicmemory.so
-- Found cuDLA: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/cuda/targets/aarch64-linux/include
-- Found cuPVA: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include/cupva
-- Found cuDNN: /usr/include/aarch64-linux-gnu (found version "*")
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dwcgf library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdwcgf.so
-- Found 'dw/core/Version.h' in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/include
-- Found dwframework_dwnodes library in $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/filesystem/targetfs/usr/local/driveworks/targets/aarch64-Linux/lib/libdwframework_dwnodes.so
-- Found NvSCI: $NVIDIA_SDK/DRIVE_OS_*_SDK_Linux_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-linux/include found components: NvSciSync
-- Configuring done
-- Generating done
-- Build files have been written to: $DRIVEWORKS_WORKSPACE/build-linux-aarch64

Build the project:

% cd $DRIVEWORKS_WORKSPACE/build-linux-aarch64
% make

Partial console output:

Scanning dependencies of target sample_hello_world
Building CXX object src/hello_world/CMakeFiles/sample_hello_world.dir/main.cpp.o
Linking CXX executable sample_hello_world
Built target sample_hello_world

You may ignore warnings about missing library dependencies during linking, since those dependencies will be available on the target system.

Install the project:

% make install

Partial console output:

Install the project...
-- Install configuration: "Release"
....
-- Installing: $DRIVEWORKS_WORKSPACE/build-linux-aarch64/install/usr/local/driveworks/samples/bin/sample_hello_world
-- Set runtime path of "$DRIVEWORKS_WORKSPACE/build-linux-aarch64/install/usr/local/driveworks/samples/bin/sample_hello_world" to ""

Copy the contents of $DRIVEWORKS_WORKSPACE/build-linux-aarch64/install/usr/local/driveworks/samples/bin on the host system to /usr/local/driveworks/samples/bin on the NVIDIA DRIVE Orin target system using the NFS mount that you set up using the "DRIVE OS 6.0 Linux Developer Guide." The path to the cross-compiled samples binaries on the target system must be exactly /usr/local/driveworks/samples/bin otherwise the samples will not be able to find dependent libraries or data.

If you do not have an NFS mount setup, you may use rcp to copy the contents of $DRIVEWORKS_WORKSPACE/build-linux-aarch64/install/usr/local/driveworks/samples/bin to /usr/local/driveworks/samples/bin after connecting to the target system using minicom, tcu_muxer, or SSH. See the "DRIVE OS 6.0 Linux Developer Guide" for examples of copying files from the host system to the target system.

Warning
Enter all subsequent commands in this section at the target system command prompt $.

To run the "Hello World" sample, use the following command on the target system:

$ /usr/local/driveworks/samples/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path /usr/local/driveworks/samples/bin may be run on the target system in a similar way. For a full list of samples, please see Samples.

Verification of the File System Layout

For instructions on verifying the file system layout on the NVIDIA DRIVE Orin target system, please see Verifying the NVIDIA DriveWorks SDK Installation.

NVIDIA DRIVE Orin Target System QNX aarch64

Samples Binaries Installation

This section describes installing and running precompiled samples with no cross-compilation required. As an alternative, to cross-compile samples from source and run those samples, please see Samples Cross-Compilation From Source below.

We assume that you have flashed your NVIDIA DRIVE Orin target system using the NVIDIA SDK Manager and finalized your target system setup following the procedures in the "DRIVE Platform Installation Guide with NVIDIA SDK Manager." The NVIDIA DriveWorks SDK will be precompiled for the aarch64 architecture and preinstalled on the target system under the path /usr/local/driveworks.

To install the NVIDIA DriveWorks SDK samples precompiled for the QNX aarch64 architecture onto the target system, unpack the following archives located under the path $SDKM_DOWNLOADS on the host system to the target system using the NFS mount that you set up using the "DRIVE OS 6.0 QNX Developer Guide:"

  • driveworks-data_*~qnx*_all.tar.gz
  • driveworks-samples_*~qnx*_all.tar.gz
  • driveworks-stm-samples_*~qnx*_all.tar.gz
  • driveworks-cgf-samples_*~qnx*_all.tar.gz

The environment variable $SDKM_DOWNLOADS denotes the location for the downloads folder, as specified in the NVIDIA SDK Manager.

Unpack these archives into the mount location on the host:

% sudo tar -xzf driveworks-data_*~qnx*_all.tar.gz -C $HOST_NFS_MOUNT_PATH
% sudo tar -xzf driveworks-samples_*~qnx*_all.tar.gz -C $HOST_NFS_MOUNT_PATH
% sudo tar -xzf driveworks-stm-samples_*~qnx*_all.tar.gz -C $HOST_NFS_MOUNT_PATH
% sudo tar -xzf driveworks-cgf-samples_*~qnx*_all.tar.gz -C $HOST_NFS_MOUNT_PATH

The environment variable $HOST_NFS_MOUNT_PATH is the host path that you have exported via NFS and mounted on the target for providing target access the unpacked samples.

The NVIDIA DriveWorks SDK samples precompiled for the QNX arch64 architecture will be available under $TARGET_NFS_MOUNT_PATH/usr/local/driveworks-*/bin on the target system, where $TARGET_NFS_MOUNT_PATH is the path on the target file system to the NFS mounted location where you unpacked the samples.

Due to QNX file system limitations you should not attempt to copy the contents of $HOST_NFS_MOUNT_PATH/usr/local/driveworks-*/bin or $HOST_NFS_MOUNT_PATH/usr/local/driveworks-*/bin onto the target system instead of using the NFS mount.

Warning
Enter all subsequent commands in this section at the target system command prompt $.

To run the "Hello World" sample, use the following command on the target system:

$ $TARGET_NFS_MOUNT_PATH/usr/local/driveworks-*/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path $TARGET_NFS_MOUNT_PATH/usr/local/driveworks-*/bin may be run on the target system in a similar way. For a full list of samples, please see Samples.

Samples Cross-Compilation From Source

This section describes cross-compiling samples from source and running those samples. As an alternative, to install and run precompiled samples with no cross-compilation required, please see Samples Binaries Installation above.

The NVIDIA DriveWorks SDK is precompiled and preinstalled for the QNX aarch64 architecture on the host system under the path /usr/local/driveworks/targets/aarch64-QNX to enable cross-compiling samples and applications that leverage the NVIDIA DriveWorks SDK. Source code and CMake project and toolchain files for the NVIDIA DriveWorks SDK samples are located under the path /usr/local/driveworks/samples.

To cross-compile the samples, first create the output directory and configure the project:

% mkdir -p $DRIVEWORKS_WORKSPACE/build-qnx-aarch64
% cmake -B $DRIVEWORKS_WORKSPACE/build-qnx-aarch64 \
-DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples/cmake/Toolchain-V5Q.cmake \
-DCUDA_DIR=/usr/local/cuda-safe-11.4 \
-DVIBRANTE_PDK=$NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx \
-S /usr/local/driveworks/samples

The environment variable $DRIVEWORKS_WORKSPACE denotes the location on the host file system below which you would like the compiled samples to be built, and the environment variable $NVIDIA_SDK denotes the location for the target hardware image folder, as specified in the NVIDIA SDK Manager.

Console output:

-- VIBRANTE_PDK = $NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx
-- VIBRANTE_PDK_BRANCH = *
-- Vibrante version *
-- Enabling QNX QOS Compiler (qcc/q++)
-- Enabling QNX QOS Compiler (qcc/q++)
-- The C compiler identification is QCC *
-- The CXX compiler identification is QCC *
-- Check for working C compiler: /sdp/host/linux/x86_64/usr/bin/qcc
-- Check for working C compiler: /sdp/host/linux/x86_64/usr/bin/qcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /sdp/host/linux/x86_64/usr/bin/q++
-- Check for working CXX compiler: /sdp/host/linux/x86_64/usr/bin/q++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The CUDA compiler identification is NVIDIA *
-- Check for working CUDA compiler: /usr/local/cuda-safe-*/bin/nvcc
-- Check for working CUDA compiler: /usr/local/cuda-safe-*/bin/nvcc -- works
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "*")
-- Found EGL: $NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/lib-target/libEGL.so
-- Found $NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/lib-target/libEGL.so:
-- - Includes: [$NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/include]
-- - Libraries: [$NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/lib-target/libEGL.so]
-- Header at: $NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/include
-- DW_EXPERIMENTAL_FORCE_EGL set and EGL Support Enabled
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Cross Compiling for Vibrante
-- Default - Building with TRT version * and cudnn version *
-- Building GLFW for Screen
-- VIBRANTE_PDK_BRANCH = *
-- **** Please mount `$DRIVEWORKS_WORKSPACE/build-qnx-aarch64/install/usr/local/driveworks/samples/bin' on the host filesystem onto `/usr/local/driveworks/samples/bin' on the target filesystem using NFS. ****
-- Found CUDART: /usr/local/cuda-safe-*/targets/aarch64-qnx/include
-- Found cuBLAS: /usr/local/cuda-safe-*/targets/aarch64-qnx/include
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_base library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_base.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_calibration library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_calibration.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_egomotion library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_egomotion.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_imageprocessing library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_imageprocessing.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_pointcloudprocessing library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_pointcloudprocessing.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_sensors library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_sensors.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_vehicleio library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_vehicleio.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dw_dnn_base library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdw_dnn_base.so
-- Found 'dwvisualization/core/Visualization.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found driveworks_visualization library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdriveworks_visualization.so
-- Found 'dwvisualization/core/Visualization.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- optional driveworks_visualization_av library not found at /usr/local/driveworks/targets/aarch64-QNX/lib;/usr/local/driveworks/lib - ok
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dwshared library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdwshared.so
-- Found 'dw/core/DynamicMemory.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dwdynamicmemory library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdwdynamicmemory.so
-- Found cuDLA: /usr/local/cuda-safe-*/targets/aarch64-qnx/include
-- Found cuPVA: /usr/local/driveworks/targets/aarch64-QNX/include/cupva
-- Found cuDNN: /usr/include/aarch64-unknown-nto-qnx (found version "*")
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dwcgf library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdwcgf.so
-- Found 'dw/core/Version.h' in /usr/local/driveworks/targets/aarch64-QNX/include
-- Found dwframework_dwnodes library in /usr/local/driveworks/targets/aarch64-QNX/lib/libdwframework_dwnodes.so
-- Found NvSCI: $NVIDIA_SDK/DRIVE_OS_*_SDK_QNX_DRIVE_AGX_ORIN_DEVKITS/DRIVEOS/drive-qnx/include found components: NvSciSync
-- Configuring done
-- Generating done
-- Build files have been written to: $DRIVEWORKS_WORKSPACE/build-qnx-aarch64

Build the project:

% cd $DRIVEWORKS_WORKSPACE/build-qnx-aarch64
% make

Partial console output:

Scanning dependencies of target sample_hello_world
Building CXX object src/hello_world/CMakeFiles/sample_hello_world.dir/main.cpp.o
Linking CXX executable sample_hello_world
Built target sample_hello_world

You may ignore warnings about missing library dependencies during linking, since those dependencies will be available on the target system.

Install the project:

% make install

Partial console output:

Install the project...
-- Install configuration: "Release"
....
-- Installing: $DRIVEWORKS_WORKSPACE/build-qnx-aarch64/install/usr/local/driveworks/samples/bin/sample_hello_world
-- Set runtime path of "$DRIVEWORKS_WORKSPACE/build-qnx-aarch64/install/usr/local/driveworks/samples/bin/sample_hello_world" to ""

Mount the folder $DRIVEWORKS_WORKSPACE/build-qnx-aarch64/install/usr/local/driveworks/samples/bin on the host system onto /usr/local/driveworks/samples/bin on the NVIDIA DRIVE Orin target system using NFS following the procedures in the "DRIVE OS 6.0 QNX Developer Guide." The path to the cross-compiled samples binaries on the target system must be exactly /usr/local/driveworks/samples/bin otherwise the samples will not be able to find dependent libraries or data.

Due to QNX file system limitations you should not attempt to copy the contents of $DRIVEWORKS_WORKSPACE/build-qnx-aarch64/install/usr/local/driveworks/samples/bin onto the target system instead of using the NFS mount.

Warning
Enter all subsequent commands in this section at the target system command prompt $.

To run the "Hello World" sample, use the following command on the target system:

$ /usr/local/driveworks/samples/bin/sample_hello_world

Partial console output:

*************************************************
Welcome to Driveworks SDK
....
Happy autonomous driving!

Other samples from within the path /usr/local/driveworks/samples/bin may be run on the target system in a similar way. For a full list of samples, please see Samples.

Verification of the File System Layout

For instructions on verifying the file system layout on the NVIDIA DRIVE Orin target system, please see Verifying the NVIDIA DriveWorks SDK Installation.