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

news/2024/7/11 1:54:37 标签: 无人机, YOLO, ROS, 物体识别

引言:用于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、识别到键盘,日志输出如下:发布键盘相对与摄像头的位置信息,包含深度信息

在这里插入图片描述

五、扩展

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


http://www.niftyadmin.cn/n/5312405.html

相关文章

RabbitMQ(十一)队列的扩展属性(Arguments)

目录 一、简介二、队列扩展属性清单三、代码示例3.1 实现方式一:channel.queueDeclare()3.2 实现方式二:QueueBuilder.build() 一、简介 RabbitMQ 允许用户在声明队列、交换机或绑定时设置 扩展属性(Arguments),这些扩…

C语言PDF编程书籍下载

[C.Primer.Plus(第6版)中文版].(美)普拉达.扫描版.pdf 链接: https://pan.baidu.com/s/1difCyykkBdLqgLu32PgYLw 密码: tv05 C语言程序设计教程_基于Visual.Cpp.6.0环境.pdf 链接: https://pan.baidu.com/s/1q3nRrRJyUd4H3Yp_PgA…

【数据库系统概念】第三章 SQL语句(上)~重要!!!

文章目录 3.1 SQL查询语言概览3.2 SQL数据定义3.2.1 基本类型3.2.2 基本模式定义(完整性约束)a. 创建表 create tablecreate table 表名 (列名称 列类型……)实例 b. 插入数据insert into student (name,age,gender) values (‘李四’,19,‘男’); c. 查看表中的全部信息select…

第四站:指针的进阶-(二级指针,函数指针)

目录 二级指针 二级指针的用途 多级指针的定义和使用 指针和数组之间的关系 存储指针的数组(指针数组:保存地址值) 指向数组的指针(数组指针) 传参的形式(指针) 数组传参时会退化为指针 void类型的指针 函数指针 定义: 调用:两种方式:(*指针名)(参数地址) 或者 指针…

flutter 项目安卓开启混淆防止渗透

android/app/build.gradle 配置如下 plugins {id "com.android.application"id "kotlin-android"id "dev.flutter.flutter-gradle-plugin" }def keystorePropertiesFile rootProject.file("key.properties") def keystoreProperties…

【Python】dbf批量转为excel(非arcpy和arcpy转法)

现在我有一些dbf文件,需要将其转为excel格式,利用python进行处理,主要有两类方法,python 3.x环境下转,或是在python 2.7环境下转。在gdf库中的dbf貌似只能用arcpy转法。 一、非arcpy转法 多个dbf合并到一个excel不同…

Mac robotframework+pycharm运行suite报错情况:ImportError: No module named request

报错实例: 当前Preferences–>Tool–>External Tools Suite配置,显示使用的python为2.7版本,robotframework安装在当前版本的python中: 但是我pycharm现在的环境配置的python为3.11,当前使用的RF与当前使用的py…

C++ STL中vector的模拟实现

目录 1.四个默认函数 2.迭代器 3.访问 4.插入删除 4.空间扩容 5.访问数据个数&#xff0c;空间大小 6.交换 1.四个默认函数 //4个默然函数//vecotr<int> vvector():_start(nullptr),_finish(nullptr),_endofstorage(nullptr){}template <class InputIterator &…