机器人操作系统ROS(16) ROS目标检测-转载

本文源于ROS下实现darknet_ros(YOLO V3)检测
上文转载于:ROS下实现darknet_ros(YOLO V3)检测 - 尚码园


本文主要:在ROS系统上实现目标检测(跑通YOLOV3的代码)
环境:Ubuntu16.04的虚拟机,已经安装ROS系统,之前的教程参考: [专栏],确保可以正常使用ROS


代码下载与部署

代码下载

代码Github主页:GitHub - leggedrobotics/darknet_ros: YOLO ROS: Real-Time Object Detection for ROS
下载命令:

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

下载时间可能比较长,请耐心等待…github
如果不能用就先下载再使用xftp上传

编译

在ROS工做空间目录下,执行命令:

catkin_make -DCMAKE_BUILD_TYPE=Release

此时会开始编译整个项目,编译完成后会检查{catkin\_ws}/darknet\_ros/darknet\_ros/yolo\_network\_config/weights文件下有没有yolov2-tiny.weightsyolov3.weights两个模型文件,默认下载好的代码里面为了节省体积是不带这两个模型文件的。所以编译以后会自动开始下载模型文件,此时又是一段漫长的等待时间
建议!:在该路径下面又有一个txt文档,里面说明了下载权重的地址,自己先去下载,放到该文件夹下,再去编译。

本地运行

本次运动未调用机器人的摄像头或者仿真机器人的摄像头,而是使用本地摄像头进行测试运行,如果不想实验可以跳过,如果测试继续看,但是前提是你的本地摄像头虚拟机可以访问!如果不可以,在启动摄像头话题服务时会报错,参考下面的问题解决

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

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

而后发布摄像头图像话题:3d

roslaunch usb_cam usb_cam-test.launch
# 如果报错,往下看解决办法!

若是顺利的话应该能够看到实际的图像显示界面。
图来源转载,侵权可以删除

3.2 运行darknet_ros
而后执行darknet_ros进行检测,在运行检测以前须要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。
打开darknet\_ros/config/ros.yaml文件,修改:

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_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

检测结果以下:

仿真gazebo运行

之前已经完成仿真摄像头的机器人的搭建,参考机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真)
或者按照这位作者重新写一个也可以,
下面这些步骤都是在启动小车 打开gazebo之后进行

1运行gazboe【以之前的方法为例】

roslaunch mbot_description view_mbot_with_camera_gazebo1.launch 

2用rqt工具查看摄像头当前画面

rqt_image_view

3小车摄像头与yolo对接方法
有个地方需要注意,rqt工具中,我们可以看到
在这里插入图片描述
上图有个camera/image_raw,这个就是小车身上摄像头的topic,在接下来的darknet_ros中,我们就要将darknet\_ros/config/ros.yaml中的:
改为:

subscribers:
  camera_reading:
    topic: /camera/image_raw  # 订阅的话题 更改为小车的摄像头话题服务
    queue_size: 1

4加载YOLO,让小车通过darknet_ros识别检测标记物体

启动yolo:[如果这个命令不生效,可能需要返回工作空间执行source devel/setup.bash]

roslaunch darknet_ros darknet_ros.launch

检测小车摄像头看到的物体是什么
在这里插入图片描述
检测结果:
在这里插入图片描述

5 键盘控制小车的移动

小车模型中已经加入了`libgazebo\_ros\_diff\_drive.so`插件,可以使用差速控制器实现机器人运动。查看系统当前的话题列表  

在这里插入图片描述
在这里插入图片描述
可以看到,Gazebo仿真中已经开始订阅cmd_vel话题了。接下来可以运行键盘控制节点,发布该话题的速度控制消息,小车就会在Gazebo中开始运动了。

roslaunch mrobot_teleop mrobot_teleop.launch

第一次执行一般会遇到这样的问题:
在这里插入图片描述
ROS_MASTER_URI=http://localhost:11311

ERROR: cannot launch node of type [mrobot_teleop/mrobot_teleop.py]: can’t locate node [mrobot_teleop.py] in package [mrobot_teleop]
No processes to monitor
shutting down processing monitor…
… shutting down processing monitor complete

问题原因

mrobot_teleop/mrobot_teleop.py文件没有执行权限

解决方法:
chmod +x mrobot_teleop.py
在这里插入图片描述

重新运行:

roslaunch mrobot_teleop mrobot_teleop.launch

在这里插入图片描述

问题解决

虚拟机调用摄像头设备显示

  • 1 、首先确保虚拟机已经连接到摄像头,默认外接设备会连接到主机,需要在虚拟机右下角图标手动确认。
    在这里插入图片描述
  • 2、可能是虚拟机兼容性问题,编辑Vmware虚拟机的硬件设备,选者usb3.0或者usb2.0即可
    在这里插入图片描述
    3、如果报错:
ERROR: cannot launch node of type [image_view/image_view]: image_view

解决办法:sudo apt-get install ros-kinetic-image-view
注意:kinetic那个地方为ROS版本号,需要替换为自己的。后面的image-view来源于自己的报错信息,注意查看,如果出现无法定位软件包,改连接符"-“为”_"试试。

  • 4、也可能是摄像头分辨率相关的问题, 注释其中设置分辨率相关代码即可

参考

1 ROS下实现darknet_ros(YOLO V3)检测
2 虚拟机调用摄像头设备显示 select timeout
3 小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值