NOTE: This repo is focused on the Trisect underwater trifocal sensor. The primary branch is
jetpack-4.5.1
to match the current distribution on the Xavier-NX-based Trisect. It's strongly tied to the Visionworks and VPI APIs installed by that version of Jetpack.
The jetpack-5.1.2
is our current "next development" branch for that version of Jetpack on the new Orin-NX-based development system.
This package provides the baseline stereo capabilities on our Trisect underwater trifocal sensor. Given that focus, our primary development environment is the Jetson NX running Jetpack 4.4.x. with assumes the Trisect's customized OpenCV and ROS1 builds.
It includes ROS nodelets for CUDA implementations of the following Semi-Global (Block) Matching (i.e. SGM or SGBM) algorithms:
- NVIDIA VisionWorks
- NVIDIA VPI
With stubs for a pure-OpenCV version in progress. Each algorithm is in its own ROS package, compilation of individual packages can be disabled by adding them to the Catkin skiplist:
catkin config --skiplist gpu_stereo_image_proc_opencv
It also includes Fixstars libSGM, however this ROS package is disabled by default. It can be enabled by setting the CMake variable BUILD_GPU_STEREO_IMAGE_PROC_LIBSGM
:
catkin config --cmake-args -DBUILD_GPU_STEREO_IMAGE_PROC_LIBSGM=True
In summary:
Package | Current Status on Trisect |
---|---|
gpu_stereo_image_proc_visionworks | Preferred version on Trisect. Expect to be phased out in later version of Jetpack |
gpu_stereo_image_proc_vpi | Almost complete on Trisect, with limited functionality due to early version of VPI. Expect this to be main focus of development going forward. |
gpu_stereo_image_proc_opencv | Not complete. |
gpu_stereo_image_proc_libsgm | Deprecated. Can be manually enabled. |
Pull this repo into a catkin workspace and build
cd <path-to-your-catkin-workspace>/src
git clone https://github.com/apl-ocean-engineering/gpu_stereo_image_proc.git
cd ..
catkin build
Note that since we are tuning for our Jetson-based Trisect platform, it assumes you have a fairly current, CUDA-enabled OpenCV and NVidia's Visionworks and VPI libraries.
This version is based on whill-lab's upstream package, but has diverged significantly in structure.
This software maintain's the upstream package's 3-Clause BSD License.
The underlying code of this package is forked from ros-perception/image_pipeline/stereo_image_proc which is distibuted under the 3-Clause BSD License.
This package includes libSGM which is distributed under the Apache License 2.0.
This package depends on VisionWorks which NVIDIA reserves all the copyrights of.