/yolo_semantic_obstacle_tracking

ROS2 Yolov5 node for multiple camera streams

Primary LanguagePython

YOLO detection of objects for semantic obstacle tracking

Description: Detects the class of objects from all the cameras of the robot (FLIR & Kinect). The semantic_obstacle_tracking node combines these YOLO detections with the obstacles detected from LIDAR by moving_obstacle_tracking.

Container: base container. Ubuntu 22.04 - ROS Humble.

Installation

Clone this repo and download the required submodules:

git clone git@github.com:harmony-eu/yolo_eth.git yolo_eth -b humble-devel
cd yolo_eth && git submodule update -i

Run the setup script, which sets up the required virtual environment:

cd yolo_eth/yolo_eth_ros && bash setup.sh

Run colcon build in your workspace.

Usage

Place your .pt and .yaml model files in the yolo_eth_ros/models folder. To launch the yolo_ros node:

ros2 launch yolo_eth_ros detector.launch.py

Launch arguments:

  • weights: path to the model.pt file relative to the yolo_eth_ros folder
  • data_yaml: path to the dataset.yaml file relative to the yolo_eth_ros folder
  • input_topics: list of image topics the node should listen to (the node can use both compressed and raw image topics)

Example:

ros2 launch yolo_eth_ros detector.launch.py weights:=models/ABB.pt data_yaml:=models/abb_model.yaml input_topics:="['/multicam/back/image_color/compressed', '/multicam/back/image_color/compressed', '/multicam/back/image_color/compressed']"

Other launch arguments:

  • name: node namespace (node name will be name/yolo_eth_ros) (default is yolov5_eth)
  • publish_images: whether to publish annotated images, in addition to the detections topic (default is true)
  • device: cpu or cuda (default is cpu)
  • inference_size_w: width of yolo inference size (default is 640)
  • inference_size_h: height of yolo inference size (default is 480)
  • confidence_threshold (default is 0.75)
  • iou_threshold (default is 0.45)
  • agnostic_nms (default is true)

Notes

This node sources its virtual environment (and yolo dependency) dynamically at startup. It's a bit of an ugly hack, but it allows using ros launch files with a virtual environment. As a consequence, the yolo_eth_ros/setup.sh script should be run again if the code is moved.

Sources

Repository: https://github.com/CaioRovetta15/yolov5_ros
Commit: 050c1bfe9091fbbc8af97dfb2eabeae2406fa625
Clone with submodules

Repository: https://github.com/mats-robotics/detection_msgs
Commit: 6c251ef4eaf4d712722b72923c96a96f1cbea6e8