{"repo":"mgonzs13/yolo_ros","free":true,"listed":false,"github":"https://github.com/mgonzs13/yolo_ros","clone":"git clone https://github.com/mgonzs13/yolo_ros.git","description":"Ultralytics YOLOv8, YOLOv9, YOLOv10, YOLOv11, YOLOv12 for ROS 2","language":"Python","stars":1120,"topics":["3d-human-pose-estimation","3d-object-detection","human-pose-estimation","instance-segmentation","obb","object-detection","object-tracking","oriented-bounding-box","ros2","ultralytics","yolo","yolo-world","yolo26","yoloe","yolov10","yolov11","yolov12","yolov8","yolov9"],"license":"GPL-3.0","category":"robotics_perception","readme_excerpt":"# yolo_ros\n\nROS 2 wrap for YOLO models from [Ultralytics](https://github.com/ultralytics/ultralytics) to perform object detection and tracking, instance segmentation, human pose estimation and Oriented Bounding Box (OBB). There are also 3D versions of object detection, including instance segmentation, and human pose estimation based on depth images.\n\n<div align=\"center\">\n\n[![License: GPL](https://img.shields.io/badge/GitHub-GPL--3.0-informational)](https://opensource.org/license/gpl-3-0) [![GitHub release](https://img.shields.io/github/release/mgonzs13/yolo_ros.svg)](https://github.com/mgonzs13/yolo_ros/releases) [![Code Size](https://img.shields.io/github/languages/code-size/mgonzs13/yolo_ros.svg?branch=main)](https://github.com/mgonzs13/yolo_ros?branch=main) [![Dependencies](https://img.shields.io/librariesio/github/mgonzs13/yolo_ros?branch=main)](https://libraries.io/github/mgonzs13/yolo_ros?branch=main) [![Last Commit](https://img.shields.io/github/last-commit/mgonzs13/yolo_ros.svg)](https://github.com/mgonzs13/yolo_ros/commits/main) [![GitHub issues](https://img.shields.io/github/issues/mgonzs13/yolo_ros)](https://github.com/mgonzs13/yolo_ros/issues) [![GitHub pull requests](https://img.shields.io/github/issues-pr/mgonzs13/yolo_ros)](https://github.com/mgonzs13/yolo_ros/pulls) [![Contributors](https://img.shields.io/github/contributors/mgonzs13/yolo_ros.svg)](https://github.com/mgonzs13/yolo_ros/graphs/contributors) [![Python Formatter Check](https://github.com/mgonzs13/yolo_ros/actions/workflows/python-formatter.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/python-formatter.yml?branch=main) [![Doxygen Deployment](https://github.com/mgonzs13/yolo_ros/actions/workflows/doxygen-deployment.yml/badge.svg)](https://mgonzs13.github.io/yolo_ros/latest)\n\n| ROS 2 Distro |                          Branch                          |                                                                                                      Build status                                                                                                      |                                                               Docker Image                                                                |\n| :----------: | :------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: |\n|  **Humble**  | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) |  [![Humble Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/humble-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/humble-docker-build.yml?branch=main)   |  [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-humble-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=humble)  |\n|   **Iron**   | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) |     [![Iron Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/iron-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/iron-docker-build.yml?branch=main)      |    [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-iron-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=iron)    |\n|  **Jazzy**   | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) |    [![Jazzy Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/jazzy-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/jazzy-docker-build.yml?branch=main)    |   [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-jazzy-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=jazzy)   |\n|  **Kilted**  | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) |  [![Kilted Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/kilted-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/kilted-docker-build.yml?branch=main)   |  [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-kilted-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=kilted)  |\n| **Lyrical**  | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) | [![Lyrical Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/lyrical-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/lyrical-docker-build.yml?branch=main) | [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-lyrical-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=lyrical) |\n| **Rolling**  | [`main`](https://github.com/mgonzs13/yolo_ros/tree/main) | [![Rolling Build](https://github.com/mgonzs13/yolo_ros/actions/workflows/rolling-docker-build.yml/badge.svg?branch=main)](https://github.com/mgonzs13/yolo_ros/actions/workflows/rolling-docker-build.yml?branch=main) | [![Docker Image](https://img.shields.io/badge/Docker%20Image%20-rolling-blue)](https://hub.docker.com/r/mgons/yolo_ros/tags?name=rolling) |\n\n</div>\n\n## Table of Contents\n\n1. [Installation](#installation)\n2. [Docker](#docker)\n3. [Models](#models)\n4. [Usage](#usage)\n5. [Lifecycle Nodes](#lifecycle-nodes)\n6. [Demos](#demos)\n\n## Installation\n\n```shell\n# Clone this repo\ncd ~/ros2_ws/src\ngit clone https://github.com/mgonzs13/yolo_ros.git\n\n# Install uv and python dependencies\ncurl -LsSf https://astral.sh/uv/install.sh | sh\nsource ~/.bashrc\ncd ~/ros2_ws/src/yolo_ros\nuv sync\n\n# Install rosdep dependencies and build\ncd ~/ros2_ws\nrosdep install --from-paths src --ignore-src -r -y\ncolcon build && source install/setup.bash\n```\n\n## Docker\n\nBuild the yolo_ros docker.\n\n```shell\ndocker build -t yolo_ros .\n```\n\nRun the docker container. If you want to use CUDA, you have to install the [NVIDIA Container Tollkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) and add `--gpus all`.\n\n```shell\ndocker run -it --rm --gpus all yolo_ros\n```\n\n## Models\n\nThe compatible models for yolo_ros are the following:\n\n- [YOLOv3](https://docs.ultralytics.com/models/yolov3/)\n- [YOLOv4](https://docs.ultralytics.com/models/yolov4/)\n- [YOLOv5](https://docs.ultralytics.com/models/yolov5/)\n- [YOLOv6](https://docs.ultralytics.com/models/yolov6/)\n- [YOLOv7](https://docs.ultralytics.com/models/yolov7/)\n- [YOLOv8](https://docs.ultralytics.com/models/yolov8/)\n- [YOLOv9](https://docs.ultralytics.com/models/yolov9/)\n- [YOLOv10](https://docs.ultralytics.com/models/yolov10/)\n- [YOLOv11](https://docs.ultralytics.com/models/yolo11/)\n- [YOLOv12](https://docs.ultralytics.com/models/yolo12/)\n- [YOLO-World](https://docs.ultralytics.com/models/yolo-world/)\n- [YOLOE](https://docs.ultralytics.com/models/yoloe/)\n- [YOLOv26](https://docs.ultralytics.com/models/yolo26/)\n\n## Usage\n\n<details>\n<summary>Click to expand</summary>\n\n### YOLOv5\n\n```shell\nros2 launch yolo_bringup yolov5.launch.py\n```\n\n### YOLOv8\n\n```shell\nros2 launch yolo_bringup yolov8.launch.py\n```\n\n### YOLOv9\n\n```shell\nros2 launch yolo_bringup yolov9.launch.py\n```\n\n### YOLOv10\n\n```shell\nros2 launch yolo_bringup yolov10.launch.py\n```\n\n### YOLOv11\n\n```shell\nros2 launch yolo_bringup yolov11.launch.py\n```\n\n### YOLOv12\n\n```shell\nros2 launch yolo_bringup yolov12.launch.py\n```\n\n### YOLO-World\n\n```shell\nros2 launch yolo_bringup yolo-world.launch.py\n```\n\n### YOLOE\n\n```shell\nros2 launch yolo_bringup yoloe.launch.py\n```\n\n</details>\n\n<p align=\"center\">\n  <img src=\"./docs/rqt_graph_yolov8.png\" width=\"100%\" />\n</p>\n\n### Topics\n\n- **/yolo/detections**: Objects detected by YOLO using the RGB images. Each object contains a bounding box and a class name. It may also include a mark or a list of keypoints.\n- **/yolo/tracking**: Objects detected and tracked from YOLO results. Each object is assigned a tracking ID.\n- **/yolo/detections_3d**: 3D objects detected. YOLO results are used to crop the depth images to create the 3D bounding boxes and 3D keypoints.\n- **/yolo/debug_image**: Debug images showing the detected and tracked objects. They can be visualized with rviz2.\n\n### Services\n\n- **/yolo/enable**: Service to enable or disable the detection node. Accepts a boolean value (True/False).\n- **/yolo/set_classes** (YOLOWorld only): Service to dynamically set the detection classes. This service is only available when using the YOLO-World model and allows you to update the list of object classes the model should detect without restarting the node.\n\n### Parameters\n\nThese are the parameters from the [yolo.launch.py](./yolo_bringup/launch/yolo.launch.py), used to launch all models. Check out the [Ultralytics page](https://docs.ultralytics.com/modes/predict/#inference-arguments) for more details.\n\n- **model_type**: Ultralytics model type (default: YOLO)\n- **model**: YOLO model (default: yolov8m.pt)\n- **tracker**: Tracker file (default: bytetrack.yaml)\n- **device**: GPU/CUDA (default: cuda:0)\n- **fuse_model**: Whether to fuse the YOLO model for inference optimization (default: False)\n- **yolo_encoding**: Encoding to convert input image before using YOLO (default: bgr8)\n- **enable**: Whether to start YOLO enabled (default: True)\n- **threshold**: Detection threshold (default: 0.5)\n- **iou**: Intersection Over Union (IoU) threshold for Non-Maximum Suppression (NMS) (default: 0.7)\n- **imgsz_height**: Image height for inference (default: 480)\n- **imgsz_width**: Image width for inference (default: 640)\n- **half**: Whether to enable half-precision (FP16) inference speeding up model inference with minimal impact on accuracy (default: False)\n- **max_det**: Maximum number of detections allowed per image (default: 300)\n- **augment**: Whether to enable test-time augmentation (TTA) for predictions improving detection robustness at the cost of speed (default: False)\n- *","default_branch":"main","files":64,"tree":[".github/Doxyfile",".github/workflows/close-inactive-issues.yml",".github/workflows/create-release.yml",".github/workflows/doxygen-deployment.yml",".github/workflows/humble-docker-build.yml",".github/workflows/humble-docker-push.yml",".github/workflows/iron-docker-build.yml",".github/workflows/iron-docker-push.yml",".github/workflows/jazzy-docker-build.yml",".github/workflows/jazzy-docker-push.yml",".github/workflows/kilted-docker-build.yml",".github/workflows/kilted-docker-push.yml",".github/workflows/lyrical-docker-build.yml",".github/workflows/lyrical-docker-push.yml",".github/workflows/python-formatter.yml",".github/workflows/rolling-docker-build.yml",".github/workflows/rolling-docker-push.yml",".gitignore","CITATION.cff","Dockerfile","LICENSE","README.md","docs/rqt_graph_yolov8.png","docs/rqt_graph_yolov8_3d.png","pyproject.toml","yolo_bringup/CMakeLists.txt","yolo_bringup/launch/yolo-world.launch.py","yolo_bringup/launch/yolo.launch.py","yolo_bringup/launch/yoloe.launch.py","yolo_bringup/launch/yolov10.launch.py","yolo_bringup/launch/yolov11.launch.py","yolo_bringup/launch/yolov12.launch.py","yolo_bringup/launch/yolov26.launch.py","yolo_bringup/launch/yolov5.launch.py","yolo_bringup/launch/yolov8.launch.py","yolo_bringup/launch/yolov9.launch.py","yolo_bringup/package.xml","yolo_msgs/CMakeLists.txt","yolo_msgs/msg/BoundingBox2D.msg","yolo_msgs/msg/BoundingBox3D.msg","yolo_msgs/msg/Detection.msg","yolo_msgs/msg/DetectionArray.msg","yolo_msgs/msg/KeyPoint2D.msg","yolo_msgs/msg/KeyPoint2DArray.msg","yolo_msgs/msg/KeyPoint3D.msg","yolo_msgs/msg/KeyPoint3DArray.msg","yolo_msgs/msg/Mask.msg","yolo_msgs/msg/Point2D.msg","yolo_msgs/msg/Pose2D.msg","yolo_msgs/msg/Vector2.msg","yolo_msgs/package.xml","yolo_msgs/srv/SetClasses.srv","yolo_ros/package.xml","yolo_ros/resource/yolo_ros","yolo_ros/setup.cfg","yolo_ros/setup.py","yolo_ros/test/test_copyright.py","yolo_ros/test/test_flake8.py","yolo_ros/test/test_pep257.py","yolo_ros/yolo_ros/__init__.py","yolo_ros/yolo_ros/debug_node.py","yolo_ros/yolo_ros/detect_3d_node.py","yolo_ros/yolo_ros/tracking_node.py","yolo_ros/yolo_ros/yolo_node.py"],"storefront":"/r/mgonzs13","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mgonzs13/yolo_ros/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}