一、环境介绍
本人使用的是双系统Ubuntu20.04,ROS版本对于为Noetic,Python版本为3.8,在初步测试中发现此功能包默认使用了cuda,这也意味着它的初始配置需要使用GPU,所以若直接将此功能包搬运到虚拟机下直接执行是跑不通的(亲测在Virtual Box下无法运行)。本人菜鸡不敢断言,但猜测如果修改一下配置将默认调用GPU开启Pytorch接口改为使用CPU,那在虚拟机下应该也能跑通。下面是VB下运行时的报错提示:
二、实现流程
项目地址:https://github.com/mats-robotics/yolov5_ros
1.新建工作空间 新建一个工作空间 yolo_ros(名字可自定义),在 yolo_ros 下新建文件夹 src 并catkin_make进行编译
2. 安装相机驱动,可以选用较为主流的 usb_cam 或者 UVC_Camera,这里以 usb_cam 为例:在yolo_ros/src目录下打开终端执行:sudo apt install ros-noetic-usb-cam 这里的noetic对应于自己的ros版本号。安装完成后执行: roslaunch usb_cam usb_cam-test.launch 进行测试。如果碰到问题可以搜索定位到 usb_cam-test.launch 文件进行修改后再次测试。这里主要需要注意两点:
首先是第三行的 dev/video0 代表默认使用 0 号设备,需要使用外接摄像头的可以尝试将 0 改成 1,2,3等再次进行测试
然后是第六行的yuyv是视频的输入/出格式,这里根据摄像头能支持的参数修改即可,yuyv不行的可以改为mjpeg试一下。
3.下载yolov5_ros功能包到本地:在yolo_ros/src下打开终端执行以下两句命令下载功能包:
git clone https://github.com/mats-robotics/detection_msgs.git
git clone --recurse-submodules https://github.com/mats-robotics/yolov5_ros.git
4.安装依赖 :进入到 yolo_ros/src/yolov5_ros/src/yolov5 下打开终端执行:
pip install -r requirements.txt 安装yolov5运行依赖
5.修改本地配置:
定位到 yolo_ros/src/yolov5_ros/launch 目录下打开 yolov5.launch 修改输入话题,定位到 <arg name="input_image_topic" default="/usb_cam/image_raw"/> 一行将default后的话题修改为刚才安装的 usb_cam 图像发布话题 :/usb_cam/image_raw
将yolov5.launch文件中的第三行即<arg name="weights" default=" W/yolovs.pt" /> 一行中 W(W代指前路径)中的内容修改为本地的weights文件夹的路径,weights文件夹在ros_yolo/src/yolov5_ros/src/yolov5文件夹下,找不到可以直接搜索定位,最终default内需要填的是你的yolov5s.pt文件的路径。
最后一步,在yolov5.launch文件第二行添加一行命令将usb_cam功能包包含进来以一键执行,需要添加的语句为:<include file="$(find usb_cam)/launch/usb_cam-test.launch"/>
OK,配置到到了这里就可以再次执行 catkin_make 编译然后执行launch命令来查看结果了。
roslaunch yolov5_ros yolov5.launch
实际上配置的过程会有各式各样的坑,碰到问题可以先上百度或者问问万能的chatgpt。笔者一开始也是摸着石头过河。最后再附上一个我录制大体实现流程的视频:
Github开源项目 yolov5_ros 本地部署_哔哩哔哩_bilibili