|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file
CONTRIBUTING
|
yolo_ros repositoryyolo_bringup yolo_hfhub_vendor yolo_msgs yolo_onnxruntime_vendor yolo_ros |
ROS Distro
|
Repository Summary
| Description | |
| Checkout URI | https://github.com/mgonzs13/yolo_ros.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-10 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| yolo_bringup | 5.0.0 |
| yolo_hfhub_vendor | 5.0.0 |
| yolo_msgs | 5.0.0 |
| yolo_onnxruntime_vendor | 5.0.0 |
| yolo_ros | 5.0.0 |
README
yolo_ros
ROS 2 wrap for YOLO models from Ultralytics to perform object detection and tracking, instance segmentation, human pose estimation, Oriented Bounding Box (OBB) and image classification. There are also 3D versions of object detection, instance segmentation and human pose estimation based on depth images.
The pipeline is a pure C++ / ONNX Runtime implementation: there is no Python runtime and no ultralytics dependency at run time. It runs any Ultralytics-exported ONNX model (see Models), and the whole repository is licensed under MIT. Every stage runs inside a single yolo_node executable as a pluginlib plugin — detection, tracking, 3D lifting and debug rendering — exchanging data over an in-memory typed blackboard.
Table of Contents
Installation
The node builds as a standard ROS 2 colcon workspace. ONNX Runtime 1.20.0 is downloaded automatically by yolo_onnxruntime_vendor at configure time — the CPU tarball by default, the GPU tarball with -DONNX_GPU=ON — so the runtime is not something you install by hand.
Prerequisites and checkout, common to every backend:
# Clone this repo
cd ~/ros2_ws/src
git clone https://github.com/mgonzs13/yolo_ros.git
# Install rosdep dependencies
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
CPU (x64 and aarch64)
colcon build --symlink-install
source install/setup.bash
yolo_onnxruntime_vendor downloads the CPU ONNX Runtime for the host architecture (x86_64 or aarch64) and the node runs on the CPU execution provider — no CUDA or cuDNN required.
CUDA / TensorRT (x64)
The vendor package detects the CUDA major and downloads the matching ONNX Runtime GPU build, which needs the cuDNN major shown:
| CUDA | ONNX Runtime | cuDNN |
|---|---|---|
| 11 | 1.18.0 | 8 |
| 12 | 1.20.0 | 9 |
| 13 | 1.28.0 | 9 |
# Scripted: detects CUDA + Ubuntu, installs the matching cuDNN, runs ldconfig
# and verifies it (--tensorrt for the TensorRT EP, --ubuntu 2004|2204|2404 to
# override the detected release, --dry-run to preview).
sudo yolo_onnxruntime_vendor/scripts/install_gpu_deps.sh
colcon build --symlink-install --cmake-args -DONNX_GPU=ON
source install/setup.bash
Or manually (only add the keyring when apt does not know libcudnn9-*, e.g. systems set up from a local cuda-repo-* archive; use the URL matching your Ubuntu release — ubuntu2004 / ubuntu2204 / ubuntu2404):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# cuDNN matching the detected CUDA major. The -dev package is recommended:
# ONNX Runtime 1.18/1.20 link the versioned libcudnn soname directly, while
# 1.28 resolves it at run time (probing libcudnn.so.9, then libcudnn.so).
sudo apt-get install libcudnn9-dev-cuda-13 # CUDA 13; libcudnn9-dev-cuda-12 for CUDA 12; libcudnn8-dev for CUDA 11
sudo ldconfig
If startup reports Using execution provider: cpu, or the CUDA provider fails with cuDNN is unavailable or disabled ... dlopen failed for libcudnn.so, the runtime libraries are missing or the wrong major — install the cuDNN matching the table (cuDNN 8 for CUDA 11, cuDNN 9 for CUDA 12/13, with the CUDA-major-specific package).
For provider: tensorrt, the ONNX Runtime builds need the TensorRT 10 runtime (libnvinfer.so.10, libnvonnxparser.so.10): install libnvinfer10 and libnvonnxparsers10, or run the script with --tensorrt. The tensorrt meta package may point at a newer major (TensorRT 11) and will not satisfy it; in that case the provider logs Failed to load library .../libonnxruntime_providers_tensorrt.so ... libnvinfer.so.10: cannot open shared object file and provider: tensorrt falls back to CUDA.
-DONNX_GPU=ON detects the CUDA major (CUDA_VERSION env, $CUDA_HOME/version.json, /usr/local/cuda*/version.json, then nvcc) and downloads the matching ONNX Runtime GPU build with its cuDNN major; the host also needs an NVIDIA driver and the same CUDA series at run time. Override the selection with -DONNX_CUDA_MAJOR=11|12|13, -DONNXRUNTIME_VERSION=..., -DONNX_GPU_SUFFIX=... or a full -DONNXRUNTIME_URL=.... TensorRT is opt-in: the default provider: auto runs on the CUDA execution provider and falls back to CPU; set provider: tensorrt to prefer the TensorRT EP (TensorRT → CUDA → CPU) when it is installed. provider and device are chosen at runtime — see Parameters. The prebuilt GPU tarballs are x64-only and cover only the table above; on aarch64 or for any other CUDA/cuDNN combination build from source (see the build guide).
Launch from the workspace root so relative source paths resolve.
Docker
File truncated at 100 lines see the full file