darknet_ros(yolo移植到ros系统)代码分析

本文解析了Darknet_ROS的架构与实现,它是Darknet在ROS操作系统下的目标检测版本,详细介绍了节点设置、参数配置及核心代码YoloObjectDetector的作用。
部署运行你感兴趣的模型镜像

     darknet_ros就是darknet在ros操作系统下的版本,即在ros下使用yolo进行目标检测。

首先对其文件分类:.launch文件是ros格式的roslaunch文件;src文件夹下的就是它的主要代码,把ros和darknet结合起来的部分;cfg文件是放各种yolo网络的配置,weights文件夹是放置网络权重。

这些yaml文件是设置ros参数以及决定在ros下调用darknet的哪些配置文件和权重。ros.yaml如下

定义了接受图片的订阅者话题名称/avt_camera,和发送出去的发布者话题名称,包括物体类别和物体框(中心坐标和长宽)两个话题。

在ros中是以节点为单位进行基本功能的,这个代码相当于把整个darknet定义为一个节点,然后给这个节点输入图片,节点能输出相应的检测出的目标类别和位置信息,现在看到源码yolo_object_detector_node.cpp

/*
 * yolo_obstacle_detector_node.cpp
 *
 *  Created on: Dec 19, 2016
 *      Author: Marko Bjelonic
 *   Institute: ETH Zurich, Robotic Systems Lab
 */

#include <darknet_ros/YoloObjectDetector.hpp>
#include <ros/ros.h>

int main(int argc, char** argv) {
  ros::init(argc, argv, "darknet_ros");//初始化
  ros::NodeHandle nodeHandle("~");//创建节点类
  darknet_ros::YoloObjectDetector yoloObjectDetector(nodeHandle);//创建yoloObjectDetector类

  ros::spin();//ROS消息回调处理函数,相当于一个循环进入后就不会继续往下执行主函数了,而是一直将回调函数队列里的回调函数输出
  return 0;
}

代码很短,主要就是定义了一个ros节点,并在这个节点中创建一个YoloObjectDetector的类,所以关键就是这个类是干什么的。

而这个类的创建在YoloObjectDetector.cpp中,代码很长,是把darknet移植到ros的核心部分,大概600行,里面基本都是函数,比较乱,花了一两天时间才理清楚直接的关系并画了一个流程图来梳理其结构。

其中主要功能在YoloObjectDetector::yolo中。

 

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文锦渡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值