1.安装ultralytics
在非conda的已安装ros2环境中安装ultralytics:
pip3 install ultralytics
如果有报错,多次重新输入指令安装。
2.在非 conda 环境中检验 predict.py 是否正常运行
predict.py这是用自己训练好的做预测的程序
以 单张图片检测为例,predict.py 程序简化为下:
运行:
python3 predict.py
可以正常运行。
3.创建 YOLOV4DM ros2 工作空间及功能包
为了方便以后调试,直接在 ORB_SLAM3_Grid_Mapping/Examples 中创建 YOLOV4DM
文件夹,并在 YOLOV4DM 文件夹中创建 src 文件夹。(也可以在其他位置创建)
从 YOLOV4DM/src 中进入终端,创建 yolov4_dm ros2 功能包。
这里为了方便调试,直接使用 ros2 现有的话题消息格式模块 geometry_msg,所以依赖
项要有 rclpy、geometry_msgs:
ros2 pkg create --build-type ament_python yolov4_dm --dependencies rclpy geometry_msgs
注意:因为检测模型及 predict.py 使用的是 python 语言,所以在创建功能包时不能
使用 ament_cmake 而要使用 ament_python,否则编译无法识别,且无法生成 setup.py
文件。
4.复制相关文件
将相关文件复制到 YOLOV4DM/src/yolov4dm/yolov4dm 中
5.修改 predict.py
在 ros2 中引用相关 python 文件有几种方法,这里使用如下直观的方法:
import sys
sys.path.append('/home/stk/ros2work/ORB_SLAM3_Grid_Mapping/Examples/
YOLOV4DM/src/yolov4dm/yolov4dm')
创建 geometry_msgs 话题类型,并发布模型检测结果,整体文件如下:
6.修改 setup.py
在 YOLOV4DM/src/yolov4dm/setup.py 文件中添加入口点,如下内容:
'predict = yolov4dm.predict:main'
7.修改 yolo.py 相关路径
因为 predict.py 中主要引用 yolo.py(自己修改的),所以需要修改 yolo.py 相关路径:
8.编译运行
YOLOV4DM/src/yolov4dm 进入终端:colcon build
运行第一个终端:
. install/setup.bash
ros2 run yolov4dm predict
运行第二个终端,查看话题消息:
ros2 topic echo /point_topic
在第一个终端输入一张图片位置:/home/stk/yolov4_dm/img/00011.jpg
此时第二个终端话题就有消息发出:
再来一个出图的,在predict.py中def publish_point(self)末尾加上:
plt.imshow(r_image)
plt.show()
编译好后,在第一个终端输入一张图片位置:/home/stk/yolov4_dm/img/00018.jpg