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

2023-05-16

    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-b5506197d8.css">
            <div id="content_views" class="htmledit_views">
                <p><img alt="" class="has" src="https://img-blog.csdnimg.cn/20190124112919452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L214ZHNkbzA5,size_16,color_FFFFFF,t_70" width="343" height="670"></p> 

     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


 
 
  1. /*
  2. * yolo_obstacle_detector_node.cpp
  3. *
  4. * Created on: Dec 19, 2016
  5. * Author: Marko Bjelonic
  6. * Institute: ETH Zurich, Robotic Systems Lab
  7. */
  8. #include <darknet_ros/YoloObjectDetector.hpp>
  9. #include <ros/ros.h>
  10. int main(int argc, char** argv) {
  11. ros::init(argc, argv, "darknet_ros"); //初始化
  12. ros::NodeHandle nodeHandle("~"); //创建节点类
  13. darknet_ros::YoloObjectDetector yoloObjectDetector(nodeHandle); //创建yoloObjectDetector类
  14. ros::spin(); //ROS消息回调处理函数,相当于一个循环进入后就不会继续往下执行主函数了,而是一直将回调函数队列里的回调函数输出
  15. return 0;
  16. }

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

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

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

 

转载:https://blog.csdn.net/mxdsdo09/article/details/86623642
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

darknet_ros(yolo移植到ros系统)代码分析 的相关文章

  • ORB-SLAM2,ORB-SLAM3,ROS编译的Syntax check of ORB_SLAM2/manifest.xml failed解决

    OpenCV version 3 xEigen version 3 xUbuntu version 20 04ros version noeticpython V 2 7 18python3 V 3 8 10 build sh正常编译 xf
  • Hybrid A*论文,Practical Search Techniques in Path Planning for Autonomous Driving笔记

    Practical Search Techniques in Path Planning for Autonomous Driving Code reference here KTH GitHub repository based on R
  • 传统网格中心的A*算法回顾

    A 算法回顾
  • Hybrid A*示例代码KTH的path_planner分析

    Hybrid A star Algorithm Analysis updating 1 Data Flow in main cpp span class token comment init ros node span ros span c
  • 算法:如何对任务进行调度

    1 假设有一个中央调度机 xff0c 有n个相同的任务需要调度到m台服务器上去执行 xff0c 由于每台服务器配置不一样 xff0c 因此 xff0c 服务器执行一个任务所花费的时间也不同 xff0c 第i个服务器执行一个任务所花费的时间也
  • PELCO-D协议

    由于项目的需要 xff0c 近期对云台控制协议PELCO D进行了研究 xff0c 现对云台控制说明书中的信息进行笔记记录 PELCO D协议通过命令报文控制云台 xff0c 通过返回信息对云台位置进行实时监控 PELCO D控制命令格式如
  • URL读数据、Configuration类、HDFS 的API操作

    从Hadoop URL 读取数据 使用java net URL对象文件打开数据流 xff0c 从hadoop文件系统中读取文件 注意 xff1a 不支持通过URL方式进行写操作 让java程序能识别Hadoop中的hdfs URL方案还需要
  • iptables-ipset仅允许国内访问---端口白名单

    前言 xff1a 境外肉鸡攻击有点多 xff0c 并业务无境外访问需求 xff0c IDC机房网络防火墙无法实现8K多条的china大陆地址导入 xff1b 为实现仅china大陆地址访问 xff0c 在业务端口如这里的80 xff0c 使
  • 什么是任务栈?

    在一个裸机系统中 xff0c 如果有全局变量 xff0c 有子函数调用 xff0c 有中断发生 那么系统在运行的时候 xff0c 全局变量放在哪里 xff0c 子函数调用时 xff0c 局部变量放在哪里 xff0c 中断发生时 xff0c
  • Ubuntu vscode 配置c/c++环境 ---- 静态代码检查

    我曾一度因为vscode中c语言的静态代码检查问题而困扰 xff0c 想想还是太懒了 xff0c 不愿意折腾 xff0c 今天搞一下 首先在ubuntu中装vscode xff0c xff0c xff0c 然后装clang span cla
  • ubuntu22.04 运行qq音乐闪退

    修改 usr share applications中的qqmusic desktop xff0c 在Exec后加上 no sandbox 如下图所示 xff1a
  • PIXHawk用QGC刷Firmware

    1 准备版本 2 开始刷 确定后会出现弹窗 xff0c 再弹窗的文件名处粘贴
  • Xfce4快捷键个性化配置(个人向)

    将xfce4部分常用快捷键设置为Gnome下的快捷键 窗口操作 xff08 在 窗口管理器 gt 键盘 里 xff09 切换同一应用的窗口 xff1a Alt 43 96 最大化窗口 xff1a Super 43 上隐藏窗口 xff1a S
  • 树莓派安装Dronekit连接PIX读取基础数据

    本文主要参考于苍穹四轴DIY的公众号文章 xff1a http span class token operator span span class token operator span span class token operator
  • PX4调试起飞

    一 下载固件 在px4的git上找到相应对于硬件型号的固件 xff1b 二 烧录固件 在qgc上 xff0c 点击高级上的自定义 xff0c 即可烧录相应固件 xff1b 三 选择机架 校准传感器 设置遥控器 选择机架类型之后 xff0c
  • PX4编译——搭建你的第一个应用(Hello Shy)

    一 编译环境 1 ubuntu20 04 2 px4 V2 二 编写测试程序 下载好px4code之后 xff0c 在src examples px4 simple app里面有cmakelist txt和px4 sample app cp
  • PX4开发说明

    本栏文档主要参考PX4的用户指导 xff1b 记录在px4开发过程中的心得体会和备忘 xff1b PX4 User Guide https docs px4 io master en dev setup dev env html
  • prometheus学习

    记录一下在阿木实验室 学习开源项目prometheus的过程
  • Error: No valid host was found.

    使用openstack创建虚拟机经常会遇到以下的这个错误 Error No valid host was found There are not enough hosts available 从字面意思就可以看出是无法找到可用的host的资
  • debian sid 安装 sopcast

    刚刚装了sopcast 由于是编译的 xff0c 所以记录一下以便以后删除干净 http sopcast com download linux html 上有详细说明 1 xff09 下载 sp auth tgz xff0c 把sp sc

随机推荐

  • 2.1 mavros发布位置指令控制px4

    1 说明 写一个节点给px4发送位置控制指令 xff0c 比如我想让飞机飞到10 xff0c 10 xff0c 10这个坐标 xff1b 2 发布和订阅的mavros主题 发布的主题 xff1a mavros setpoint positi
  • 2.2 mavros发布姿指令控制PX4

    说明 使用遥控飞行 px4在stablize模式下 xff0c 我们使用遥控器去控制px4飞行 xff1b 在飞行过程中 xff0c 通常我们用4个通道就可以控制飞机飞行 xff1b 其中roll pitch yaw打杆的量就是我们期望无人
  • 关于PX4上PID调参

    使用PX4 log view 工具 地址 setp response for roll rate 找到setp response for roll rate这个图片 从图片中可以看到 xff0c roll方向的角速度响应时间不够快 xff1
  • 【record】1、Prometheus-V2 初体验

    一 环境搭建 平时习惯使用虚拟机 xff0c 刚好阿木的公众号里面有送镜像 xff0c 于是在V1的时候就用这个镜像在run了 xff0c 这次V2出来 xff0c 直接pull就可以开始起飞了 xff1b xff08 感觉用虚拟机加镜像是
  • 【record】2、使用非官方遥控器适配prometheus的驱动修改

    0 前言 xff1a prometheus V2推荐使用阿木的遥控器 但是家里遥控器实在太多了 xff0c 所以就尝试修改一下prometheus里关于joystick的驱动 xff0c 使其适配prometheus的控制 xff1b 本篇
  • 【recode】3、地面站使用步骤与体验

    一 前言 从Prometheus的V1到V2 xff0c 无人机的状态显示是在终端中 xff0c 在一堆字符中寻找想要关注的信息 xff0c 确实硬核 xff1b 而今 xff0c 随着社会与科技的发展 xff0c Prometheus也开
  • 【recode】4、二维码自主降落与重复测试code修改

    0 前言 使用二维码辅助无人机降落 xff0c 模拟飞机先飞到二维码上空一定的高度 xff0c 然后切换到command control模式 xff1b 飞机会自动识别二维码的位置然后调整自身的X和Y位置信息 xff0c 同时控制高度进行下
  • 【code review】2、关于高度的估计过程

    0 前言 在定高模式中 xff0c 飞控需要有当前高度的信息 xff0c 也就是z的position信息 xff0c 进行Z轴的位置环控制 xff1b 那么这个Z轴的位置信息是怎么来的呢 xff1f 本文为在解读wukong FPV源码中Z
  • (开源)正点原子飞控+北醒tof+优象光流——室内定点(一)

    1 说明 xff1a 前几篇文章讲述了如何使用tof的数据实现飞机的定高 xff1b 接下来分享的是如何使用光流来定点 xff1b 主要分为以下几个步骤 xff1a 1 xff09 添加光流驱动 xff0c 获得x y轴方向的观测速度 xf
  • STM32的三种更新固件的方式

    说明 xff1a stm32有三种更新固件的方式 xff0c 分别为 xff08 1 xff09 DFU模式 xff08 Development Firmware Upgrade 即 开发固件升级 xff09 xff1b xff08 2 x
  • 有哪些比较好用的安卓模拟器(电脑端)

    模拟器帮助我们实现在电脑上玩手游的下载 目前市面上安卓模拟器软件看着种类繁多 xff0c 哪些模拟器比较好用呢 xff1f 但其实只有两大技术流派 xff1a Bluestacks和Virutalbox Bluestacks的历史可以追溯到
  • [icm42688]_readme

    记录一个使用icm42688的坑 xff1b 上图为42688的引脚连接图 xff1b 引脚说明处标注如果FSYNC不使用需要接地 xff1b 在实际测试驱动的过程中 xff0c 由于没有将该pin接地 xff0c 所以无法读取id 从机没
  • atbetaflight——指定commit号编译固件

    一 说明 在开发过程中 xff0c 比如成员A上传了一次code 而成员B需要测试本次提交的code xff0c 但是由于没有搭建ci 成员B就需要自己拉code编译 xff0c 本文将详细说明编译步骤 xff1b 二 步骤 1 使用vsc
  • atbf中imu数据的读取与处理方式

    一 说明 本文为作者在阅读atbf源码的过程中 xff0c 对atbf中imu数据的读取和处理方式的个人理解 xff0c 可能存在不对之处 xff0c 意在抛砖引玉 xff0c 请各位老师多多指正 xff1b 二 数据读取流程图 1 tar
  • atbf中imu数据读取逻辑分析仪抓取

    一 说明 使用逻辑分析仪抓区imu的spi和中断io的信号 xff0c 从而侧面描述atbf在imu上的数据读取方式 xff1b 二 硬件说明 1 硬件材料 1 mcu at32F437开发板 2 imu icm42688p 3 逻辑分析仪
  • cmake-自动识别新增子模块

    实际的项目中可能会有这种需求 xff0c 随着项目的进行 xff0c 会有新增的子模块 xff0c 如果每新增一个子模块 xff0c 顶层CMakeLists txt都要同步修改一次 xff0c 一般工程代码加入了版本控制 xff0c 那么
  • CSDN每日一练c++难题-大数加法 C语言

    题目名称 xff1a c 43 43 难题 大数加法 时间限制 xff1a 1000ms内存限制 xff1a 256M 题目描述 大数一直是一个c语言的一个难题 现在我们需要你手动模拟出大数加法过程 请你给出两个大整数加法结果 输入描述 x
  • Ubuntu软件包资源官网下载教程(包含所有下载源)

    官网地址 国外 xff1a Ubuntu Ubuntu Packages Search https packages ubuntu com 国内 xff1a Ubuntu Ubuntu Packages Search https packa
  • 基于ROS的YOLOV3实现目标检测项目过程记录

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view
  • darknet_ros(yolo移植到ros系统)代码分析

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view