Skip to content

ROS 2 interface to darknet, an open source neural network library.

License

Notifications You must be signed in to change notification settings

bracoe/openrobotics_darknet_ros

This branch is 3 commits ahead of, 1 commit behind ros2/openrobotics_darknet_ros:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2364356 · Mar 23, 2024

History

8 Commits
Dec 15, 2023
Oct 4, 2019
Dec 15, 2023
Dec 15, 2023
Mar 23, 2024
Oct 4, 2019
Dec 15, 2023
Mar 16, 2024
Oct 4, 2019
Mar 16, 2024
Oct 4, 2019
Mar 16, 2024
Dec 15, 2023

Repository files navigation

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

  • ~/images (type sensor_msgs/msg/Image) - Input mages to feed to the detector

Publishers

  • ~/detections (type vision_msgs/msg/Detection2DArray) - Objects detected in an image (if any)

Parameters

  • network.config - a path to a file describing a darknet detector network
  • network.weights - a path to a file with weights for the given network
  • network.class_names - a path to a file with names of classes the network can detect (1 per line)
  • detection.threshold - Minimum probability of a detection to be published
  • detection.nms_threshold - Non-maximal Suppression threshold - controls filtering of overlapping boxes

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'

About

ROS 2 interface to darknet, an open source neural network library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 79.2%
  • CMake 16.1%
  • Python 4.7%