ros2 / openrobotics_darknet_ros

ROS 2 interface to darknet, an open source neural network library.
Apache License 2.0
21 stars 16 forks source link

Open Robotics Darknet ROS

This is a ROS 2 wrapper around darknet, an open source neural network framework.

Example image with bounding boxes created using darknet and the yolov3-tiny network

DetectorNode

This node can run object detectors like YOLO v3 or YOLO v7 on images and video streams.

Subscribers

Publishers

Parameters

Dependencies

This package depends on darknet. If you can't use CUDA but want to use your CPU instead make sure to build it with the flag -DENABLE_CUDA=OFF and potentially also disabling multi-threading with -DCMAKE_DISABLE_FIND_PACKAGE_OpenMP=TRUE.

Launching

Compiling this package with

$ colcon build --cmake-args -DDOWNLOAD_YOLO_CONFIG=ON

will automatically download the pretrained YOLO v3, v4 and v7 configuration files.

You can then launch the detector node with

$ ros2 launch openrobotics_darknet_ros detector_launch.py rgb_image:=/topic

optionally supplying a desired parameter file detector_parameters:=path/to/detector_node_params.yaml.

You can also train YOLO to detect custom objects like described here and create the following as detector_node_params.yaml:

/**:
  ros__parameters:
    network:
      config: "./your-yolo-config.cfg"
      weights: "./your-yolo-weights.weights"
      class_names: "./your-cocos.names"
    detection:
      threshold: 0.25
      nms_threshold: 0.45

Finally you can run the detector node with

$ ros2 run openrobotics_darknet_ros detector_node --ros-args --params-file path/to/detector_node_params.yaml

and publish images on ~/images to get the node to detect objects. You can also manually remap an external topic to the ~/images topic with:

$ ros2 run openrobotics_darknet_ros detector_node --ros-args --params-file path/to/detector_node_params.yaml -r '~/images:=/your/camera/topic'