当前位置: 首页 > news >正文

超维空间M1无人机使用说明书——41、ROS无人机使用yolo进行物体识别

引言:用于M1无人机使用的18.04系统,采用的opencv3.4.5版本,因此M1无人机只提供了基于yolov3和yolov4版本的darknet_ros功能包进行物体识别,识别效果足够满足日常的物体识别使用,如果需要更高版本的yolov7或者yolov8,可以参考博客的yolov7和yolov8的使用。

链接: 源码链接

一、启动darknet_ros物体识别

roslaunch robot_bringup bringup_darknet.launch

在这里插入图片描述在这里插入图片描述

当终端无报错出现以上界面,表示物体识别正常运行

launch文件详解

1、bringup_darknet.launch文件分别启动了USB摄像头和darknet_ros节点,其中摄像头节点主要是发布图像话题,提供给darknet_ros节点订阅,相反,darknet_ros订阅图像话题,根据订阅到的图像数据进行识别处理在这里插入图片描述

2、文件嵌套打开了darknet_ros.launch文件节点,这里需要注意,参数image是订阅的图像话题数据,一定要和摄像头发布的话题完全对应才可,否则darknet_ros节点会一直处在等待图像的状态

在这里插入图片描述

二、识别的物体模型

在例程中,我们加载了通用的物体模型,如下图所示,参数文件在路径
/home/cwkj/cwkj_ws/src/darknet_ros/darknet_ros/config下
在这里插入图片描述

默认选择使用yolov4-tiny.yaml参数文件,如下所示,可以识别人、自行车、汽车等

在这里插入图片描述

如果需要更改识别模型,只需要在启动文件中更换参数文件即可,我们只需要打开darknet_ros.launch文件,更换其中的参数文件即可

在这里插入图片描述

三、实例应用

步骤1、为了节约系统资源,可视化弹窗默认是关闭的,如果需要观看图片信息,可以使用rqt工具打开,如下:rqt_image_view

优先考虑在远程端使用rqt可视化工具

在这里插入图片描述

步骤2、识别到键盘,并且对键盘进行框选,需要按照如下话题选择

在这里插入图片描述

以下部分主要是针对深度摄像头,如D435,如果是USB摄像头,坐标转换节点是没法给出实际的坐标位置的,缺少深度信息,但是程序会给出识别道德目标物在摄像头画面中的相对位置信息

四、启动坐标转换节点,发布物体相对于摄像头的空间位置信息

只需要把其中的参数object_name改成参数文件中的物体名称即可识别指定物体并发布位置信息,例如键盘”keyboard”。

在这里插入图片描述

roslaunch object_darknet object_darknet.launch 

步骤1、未检测到键盘的时候,日志输出如下:

在这里插入图片描述

步骤2、识别到键盘,日志输出如下:发布键盘相对与摄像头的位置信息,包含深度信息

在这里插入图片描述

五、扩展

同样的,通过选择不同的参数文件,可以实现行人检测、人脸检测、以及其他的物体识别。

相关文章:

  • 【JAVA基础】JVM之类加载--双亲委派机制
  • C语言——结构体类型(二)【结构体内存对齐,结构体数组】
  • 美客多本土店与跨境店有何区别?本土店如何入驻运营?
  • IPv6邻居发现协议(NDP)---路由发现
  • Web缓存代理
  • 【算法】七夕祭
  • What does `$?` do?
  • C# 语法进阶 委托
  • 基于web的电影院购票系统
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • vue项目使用typescript创建抽象类及其使用
  • 全链路压力测试有哪些主要作用
  • 虽然是个去年的旧新闻,但这透露了IBM的新去向
  • docker/华为云cce 部署nacos 2.3.0 集群模式
  • sqlilabs第四十九五十关
  • 深入了解以太坊
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • angular学习第一篇-----环境搭建
  • Cookie 在前端中的实践
  • javascript 哈希表
  • Kibana配置logstash,报表一体化
  • Object.assign方法不能实现深复制
  • Service Worker
  • VUE es6技巧写法(持续更新中~~~)
  • 创建一个Struts2项目maven 方式
  • 聊聊flink的BlobWriter
  • 前端
  • 删除表内多余的重复数据
  • 深度学习入门:10门免费线上课程推荐
  • 1.Ext JS 建立web开发工程
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (7)STL算法之交换赋值
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (ZT)出版业改革:该死的死,该生的生
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三) diretfbrc详解
  • (十六)串口UART
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转载)OpenStack Hacker养成指南
  • .net core 控制台应用程序读取配置文件app.config
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET关于 跳过SSL中遇到的问题
  • .net开发时的诡异问题,button的onclick事件无效
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /var/spool/postfix/maildrop 下有大量文件
  • :O)修改linux硬件时间
  • @31省区市高考时间表来了,祝考试成功
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [C++]模板与STL简介
  • [C++]拼图游戏