【Ubuntu系统18.04虚拟机ros下实现darknet_ros(YOLO V3)检测问题解析最全】

原本打算在搭载Ubuntu18.04的智能小车上面运行使用darknet_ros
包来进行yolov3的检测,但是运行过程中遇到了不少问题,从头到尾部的运行包括遇到的解决方法以及对应的文章一并列出,免得到处查找。

首先是在ROS下实现darknet_ros(YOLO V3)检测
参考文章

https://blog.csdn.net/qq_42145185/article/details/105730256

一. 代码下载
代码Github主页:https://github.com/leggedrobotics/darknet_ros
下载命令:

mkdir -p catkin_workspace/src
cd catkin_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../

下载时间可能比较长,请耐心等待…
如果下载的Ubuntu系统不支持从gitthub上面直接爬取代码,可以转换下载方式来进行下载。点击GitHub里的clone,下拉可以选择ssh以及https两种模式加载。这个时候只需要转换git clone代码即可。
通过ssh

git clone --recursive git@gitcode.net:mirrors/leggedrobotics/darknet_ros.git

通过https

git clone --recursive https://gitcode.net/mirrors/leggedrobotics/darknet_ros.git

在这里插入图片描述
下载可能遇到的其他问题可以参考这篇文章中下载darknet_ros包的章节

http://t.csdn.cn/hPQyd

其中,因为是移动到搭载Ubuntu的小车上面,所以直接通过win11下载,然后通过u盘移动到小车内部Ubuntu系统,这种移动过程中文件可能会有缺少损坏导致后期运行报错,所以不建议。最好是直接通过上述方法直接下载,不能通过下载GitHub的zip等各种压缩包来使用。
比如说
启动yolo3检测摄像头看到的物体

roslaunch darknet_ros darknet_ros.launch

报错
在这里插入图片描述
这个错误大概率是因为将这个包从windows移动到ubuntu上过后,有些cfg文件识别不到。
回到/home/xx/catkin_ws/src/darknet_ros目录下,打开终端,执行
git stash在这里插入图片描述
再重新运行一次即可。

二. 编译
在ROS工作空间目录下,执行命令:

catkin_make -DCMAKE_BUILD_TYPE=Release

此时会开始编译整个项目,编译完成后会检查{catkin_ws}/darknet_ros/darknet_ros/yolo_network_config/weights文件下有没有yolov2-tiny.weights和yolov3.weights两个模型文件,默认下载好的代码里面为了节省体积是不带这两个模型文件的。因此编译之后会自动开始下载模型文件,此时又是一段漫长的等待时间。
如果刚好你之前已经下载好了模型文件,那就好了,在开始编译之前就把模型文件拷贝到上述文件夹下,就不会再次下载了。
在这里插入图片描述
下载链接:

https://pjreddie.com/media/files/yolov2.weights
https://pjreddie.com/media/files/yolov2-tiny.weights
https://pjreddie.com/media/files/yolov3.weights
https://pjreddie.com/media/files/yolov3-tiny.weights

将下载文件放入/darknet_ros/darknet_ros/yolo_network_config/weights文件中
继续

catkin_make -DCMAKE_BUILD_TYPE=Release

3.图像话题发布
因为darknet_ros会直接订阅指定的图像话题名,然后对图像进行检测,绘制检测框,并发布相应的检测话题,因此首先需要找一个能够发布图像话题的ROS包,这里推荐使用ROS官方提供的usb_cam驱动包,可以直接将电脑自带摄像头或连接电脑的USB摄像头采集的图像发布为ROS图像话题。
下载摄像头驱动:

sudo apt-get install ros-kinetic-usb-cam

下载摄像头驱动,有的时候自己的操作系统未必是kinetic的版本,所以需要通过终端命令查询自己的ros版本。

 rosversion -d

如果是melodic版本就使用:

sudo apt-get install ros-kinetic-usb-cam

在这里插入图片描述
然后发布摄像头图像话题:

roslaunch usb_cam usb_cam-test.launch

如果顺利的话应该可以看到实际的图像显示界面。

3.启动摄像头测试节点
报错1
在输入以下测试启动命令后,出现了报错。
在这里插入图片描述
解决方法
1.摄像头接口插入USB3.0试试。
USB3.0,USB3.0又称为SuperSpeed USB总线,与高速(High Speed)USB2.0总线相比,其传输速度更快。
2.其次如下图所示一定要有勾选上才行,不然说明未连接相机。
在这里插入图片描述
报错2
在这里插入图片描述
解决办法:

sudo apt-get install ros-melodic-image-view

报错3
在这里插入图片描述

设置usb设备勾选上ubs3即可
在这里插入图片描述
然后就是运行darknet_ros
然后执行darknet_ros进行检测,在运行检测之前需要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。
打开darknet_ros/config/ros.yaml文件,找到:
在这里插入图片描述
将camera_reading中的topic修改为上图所示,即:

subscribers:camera_reading:topic: /usb_cam/image_rawqueue_size: 1

然后回到darknet的工作空间根目录,执行:

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

我们只需要把预训练集换成YOLO v3的来检测就可以了,更换如下:找到config文件可以看到如下的训练集
在这里插入图片描述
打开launch文件
在这里插入图片描述
修改 darknet_ros.launch

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/改为arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/
如下:

然后重新启动:

roslaunch darknet_ros darknet_ros.launch

差不多就可以实现了,然后基本上上述错误都是从以下这些参考文章找到的解决办法。

ROS下实现darknet_ros(YOLO V3)检测

https://blog.csdn.net/qq_42145185/article/details/105730256

小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

https://blog.csdn.net/WhiffeYF/article/details/109187804

ROS学习(三)调用笔记本和usb外接摄像头

https://blog.csdn.net/m0_56451176/article/details/126174060?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169020102516800227494294%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169020102516800227494294&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-126174060-null-null.142^v91^insert_down1,239^v3^control&utm_term=sudo%20apt-get%20install%20ros-melodic-usb-cam&spm=1018.2226.3001.4187

ROS下使用摄像头

https://blog.csdn.net/wilylcyu/article/details/51732710

在ROS中开启摄像头_详细步骤

https://blog.csdn.net/weixin_41074793/article/details/83474501?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-0&spm=1001.2101.3001.4242

ROS学习笔记-在ROS中连接USB摄像头

https://blog.csdn.net/weixin_51244852/article/details/116169460?ops_request_misc=&request_id=&biz_id=102&utm_term=sudo%20apt-get%20install%20ros-melod&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-116169460.142^v91^insert_down1,239^v3^control&spm=1018.2226.3001.4187

ROS下使用usb_cam驱动读取摄像头数据

https://blog.csdn.net/Yangxiaoaijiejie/article/details/127061479?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169020121616800227474354%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169020121616800227474354&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-127061479-null-null.142^v91^insert_down1,239^v3^control&utm_term=%E5%AE%89%E8%A3%85ROS_USB%E9%A9%B1%E5%8A%A8%E6%8A%A5%E9%94%99&spm=1018.2226.3001.4187

这里给一个使用yolov3的报错解释,因为darknet_ros.launch文件里面有不同的launch文件,如果使用以下命令。

roslaunch darknet_ros yolov3.launch

在这里插入图片描述
可能会报错缺少yolov3-tiny.cfg文件,找不到这个文件,就需要手动新建一个.cfg的文件粘贴。
这个文件连接有中文注释可能报错,以下是整理好的代码,自行参考。

https://blog.csdn.net/weixin_44152895/article/details/106570976?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169027884416800222821030%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169027884416800222821030&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-26-106570976-null-null.142^v91^insert_down1,239^v3^control&utm_term=yolov3-tiny.cfg%E4%B8%8B%E8%BD%BD&spm=1018.2226.3001.4187
[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=2
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1[convolutional]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=1[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky###########[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear[yolo]
mask = 3,4,5
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1[route]
layers = -4[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky[upsample]
stride=2[route]
layers = -1, 8[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear[yolo]
mask = 0,1,2
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈自动化测试

谈谈那些实习测试工程师应该掌握的基础知识(一)_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131839453谈谈那些实习测试工程师应该掌握的基础知识(二)_什么时候才能变强的博客-CSDN博客h…

使用克拉默法则进行三点定圆(二维)

目录 1.二维圆2.python代码3.计算结果 本文由CSDN点云侠原创,爬虫网站请自重。 1.二维圆 已知不共线的三个点,设其坐标为 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​)、 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​)、 ( x 3 , y 3 ) (x_3,y_3) (x3​,y3​)&#xf…

FSM:Full Surround Monodepth from Multiple Cameras

参考代码:None 介绍 深度估计任务作为基础环境感知任务,在基础上构建的3D感知才能更加准确,并且泛化能力更强。单目的自监督深度估计已经有MonoDepth、ManyDepth这些经典深度估计模型了,而这篇文章是对多目自监督深度估计进行探…

使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透

目录 一. 背景1.1 内网穿透1.2 Frp介绍1.3 Frp配置流程 二. 云服务器配置2.1 配置安全组2.2 编写frps.ini 三. 内网主机配置3.1 编辑frpc.ini文件3.2 启动服务并配置开机自启动 四. 参考文献 一. 背景 现在有一台ubuntu云服务器,我想通过内网穿透将一台内网的主机当…

python多线程

目录 一.多线程的定义 A.什么是多线程? B.多线程如今遇到的挑战 C.总结 二.python中的多线程 A.python中的多线程底层原理: B.全局解释器锁导致python多线程不能实现真正的并行执行! C.总结应用场景 三.java多线程,以及…

【Matlab】判断点和多面体位置关系的两种方法实现

我的主页: 技术邻:小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩:小铭的ABAQUS学习的个人空间csdn:qgm1702 博客园文章链接: https://www.cnblogs.com/aksoam/p/17590039.html 分别是向量判别法&…

Ubuntu 22.04下对无线网络作静态ip设置

内容如题所示,最近本人安全毕业,参加工作了,此处应有鲜花和掌声,哈哈哈。但新的生活总是有很多的小问题,坎坎坷坷,所以,我继续记录工作和学习生活中遇到的问题。 今天带我的云哥给了我一个ip&am…

Python入门【变量的作用域(全局变量和局部变量)、参数的传递、浅拷贝和深拷贝、参数的几种类型 】(十一)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

51单片机:数码管和矩阵按键

目录 一:动态数码管模块 1:介绍 2:共阴极和共阳极 A:共阴极 B:共阳极 C:转化表 3:74HC138译码器 4:74HC138译码器控制动态数码管 5:数码管显示完整代码 二:矩阵按键模块 1:介绍 2:原理图 3:矩阵按键代码 一:动态数码管模块 1:介绍 LED数码管:数码管是一种…

Verilog语法学习——LV10_使用函数实现数据大小端转换

LV10_使用函数实现数据大小端转换 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 描述 在数字芯片设计中,经常把实现特定功能的模块编写成函数&…

一.安装k8s环境

1.初始操作 默认3台服务器都执行 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap swapoff -a # 临时 sed -ri s/.*swap.*/#&/ /etc/fstab…

QT--day3(定时器事件、对话框)

头文件代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理时间头文件 #include <QTime> //时间类 #include <QtTextToSpeech> #include <QPushButton> #include <QLabel&g…

【数据结构】实验六:队列

实验六 队列 一、实验目的与要求 1&#xff09;熟悉C/C语言&#xff08;或其他编程语言&#xff09;的集成开发环境&#xff1b; 2&#xff09;通过本实验加深对队列的理解&#xff0c;熟悉基本操作&#xff1b; 3&#xff09; 结合具体的问题分析算法时间复杂度。 二、…

ubuntu23.04 flush DNS caches

如何在Ubuntu 23.04中刷新DNS缓存 现在&#xff0c;如果你运行的是Ubuntu 23.04&#xff0c;"系统解决 "的方法将不再适用于你。让我们检查一下你目前的缓存大小。打开你的Ubuntu终端&#xff0c;运行以下command&#xff1a; resolvectl statistics现在&#xff0c…

mysql主从同步怎么跳过错误

今天介绍两种mysql主从同步跳过错误的方法&#xff1a; 一、两种方法介绍 1、跳过指定数量的事务&#xff1a; mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务 mysql>slave start2、修改mysql的配置文件&#xff0c;通过slav…

【QT 网络云盘客户端】——实现文件属性窗口

目录 文件属性对话框 设置字体样式 获取文件的信息 显示文件属性对话框 当我们点击文件中的属性&#xff0c;则会弹出一个属性对话框&#xff1a; 实现过程&#xff1a; 0.设置 属性 菜单项的槽函数。 1.鼠获取鼠标选中的QListWidgetItem,它包含 图标和文件名 2.根据文件…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩和打包处理与数据更新

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

十一、数据结构——树(Tree)的基本概念

数据结构之树(Tree) 目录 树的基本概念树的分类树的基本操作树的应用结语 树的基本概念 树是一种重要的数据结构&#xff0c;它在计算机科学中被广泛应用。树的特点是以分层的方式存储数据&#xff0c;具有层次结构&#xff0c;类似于现实生活中的树状结构。在树中&#xff…

python与深度学习(十):CNN和cifar10二

目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…

【Vuvuzela 声音去噪算法】基于流行的频谱减法技术的声音去噪算法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…