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

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

链接: 源码链接

一、启动darknet_ros物体识别

javascript 复制代码
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"。

javascript 复制代码
roslaunch object_darknet object_darknet.launch 

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

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

五、扩展

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

相关推荐
小慧102420 分钟前
2.1话题发布
linux·ros
davidson147118 小时前
gazebo仿真中对无人机集成的相机进行标定(VINS-Fusion)
ubuntu·无人机·slam·d435i·px4·gazebo·vins-fusion
lul~1 天前
[科研理论]无人机底层控制算法PID、LQR、MPC解析
c++·人工智能·无人机
放羊郎2 天前
机器人坐标变换TF(ROS Transform)示例解释
机器人·ros·transform·tf_echo·tf
从零开始学习人工智能2 天前
多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
人工智能·yolo·分类
强盛小灵通专卖员2 天前
基于YOLOv12的电力高空作业安全检测:为电力作业“保驾护航”,告别安全隐患!
人工智能·深度学习·安全·yolo·核心期刊·计算机期刊
飞翔的佩奇2 天前
【完整源码+数据集+部署教程】石材实例分割系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·毕业设计·数据集·yolo11·石材实例分割系统
飞翔的佩奇3 天前
【完整源码+数据集+部署教程】安检爆炸物检测系统源码和数据集:改进yolo11-REPVGGOREPA
python·yolo·计算机视觉·毕业设计·数据集·yolo11·安检爆炸物检测
音沐mu.3 天前
【20】番茄叶片病害数据集(有v5/v8模型)/YOLO番茄叶片病害检测
人工智能·yolo·目标检测·机器学习·计算机视觉·番茄叶片病害检测·番茄叶片病害数据集