Alpaca-zip / ultralytics_ros

ROS/ROS 2 package for Ultralytics YOLOv8 real-time object detection and segmentation. https://github.com/ultralytics/ultralytics
GNU Affero General Public License v3.0
185 stars 36 forks source link
object-detection object-segmentation ros ros2 ultralytics yolo yolov3 yolov5 yolov8

ultralytics_ros

Introduction

ROS/ROS 2 package for real-time object detection and segmentation using the Ultralytics YOLO, enabling flexible integration with various robotics applications.

tracker_node tracker_with_cloud_node

Status

ROS distro Industrial CI Docker
ROS Melodic ROS-melodic Industrial CI ROS-melodic Docker Build Check
ROS Noetic ROS-noetic Industrial CI ROS-noetic Docker Build Check
ROS 2 Humble ROS2-humble Industrial CI ROS2-humble Docker Build Check

Setup ⚙

ROS Melodic

$ cd ~/{ROS_WORKSPACE}/src
$ GIT_LFS_SKIP_SMUDGE=1 git clone -b melodic-devel https://github.com/Alpaca-zip/ultralytics_ros.git
$ rosdep install -r -y -i --from-paths .
$ pip install pipenv
$ cd ultralytics_ros
$ pipenv install
$ pipenv shell
$ cd ~/{ROS_WORKSPACE} && catkin build

ROS Noetic

$ cd ~/{ROS_WORKSPACE}/src
$ GIT_LFS_SKIP_SMUDGE=1 git clone -b noetic-devel https://github.com/Alpaca-zip/ultralytics_ros.git
$ rosdep install -r -y -i --from-paths .
$ python3 -m pip install -r ultralytics_ros/requirements.txt
$ cd ~/{ROS_WORKSPACE} && catkin build

ROS 2 Humble

$ cd ~/{ROS2_WORKSPACE}/src
$ GIT_LFS_SKIP_SMUDGE=1 git clone -b humble-devel https://github.com/Alpaca-zip/ultralytics_ros.git
$ rosdep install -r -y -i --from-paths .
$ python3 -m pip install -r ultralytics_ros/requirements.txt
$ cd ~/{ROS2_WORKSPACE} && $ colcon build

NOTE: If you want to download KITTI datasets, remove GIT_LFS_SKIP_SMUDGE=1 from the command line.

Run 🚀

ROS Melodic & ROS Noetic

tracker_node

$ roslaunch ultralytics_ros tracker.launch debug:=true

tracker_node & tracker_with_cloud_node

$ roslaunch ultralytics_ros tracker_with_cloud.launch debug:=true

ROS 2 Humble

tracker_node

$ ros2 launch ultralytics_ros tracker.launch.xml debug:=true

tracker_node & tracker_with_cloud_node

$ ros2 launch ultralytics_ros tracker_with_cloud.launch.xml debug:=true

NOTE: If the 3D bounding box is not displayed correctly, please consider using a lighter yolo model(yolov8n.pt) or increasing the voxel_leaf_size.

tracker_node

Params

tracker_with_cloud_node

Params

Docker with KITTI datasets 🐳

dockeri.co

Docker Pull & Run

ROS Melodic

$ docker pull alpacazip/ultralytics_ros:melodic
$ docker run -p 6080:80 --shm-size=512m alpacazip/ultralytics_ros:melodic

ROS Noetic

$ docker pull alpacazip/ultralytics_ros:noetic
$ docker run -p 6080:80 --shm-size=512m alpacazip/ultralytics_ros:noetic

ROS 2 Humble

$ docker pull alpacazip/ultralytics_ros:humble
$ docker run -p 6080:80 --shm-size=512m alpacazip/ultralytics_ros:humble

Run tracker_node & tracker_with_cloud_node

ROS Melodic

$ roscd ultralytics_ros && pipenv shell
$ roslaunch ultralytics_ros kitti_predict_with_cloud.launch
$ cd ~/catkin_ws/src/ultralytics_ros/rosbag && rosbag play kitti_2011_09_26_drive_0106_synced.bag --clock --loop

ROS Noetic

$ roslaunch ultralytics_ros kitti_tracker_with_cloud.launch
$ cd ~/catkin_ws/src/ultralytics_ros/rosbag && rosbag play kitti_2011_09_26_drive_0106_synced.bag --clock --loop

ROS 2 Humble

$ ros2 launch ultralytics_ros kitti_tracker_with_cloud.launch.xml
$ cd ~/colcon_ws/src/ultralytics_ros/ros2bag && ros2 bag play kitti_2011_09_26_drive_0106_synced --clock --loop