基于YOLOV5 的ROS2封装,允许用户使用给定的模型文件和相机参数进行三维空间物体检测和抓取操作。
首先,确保您已经更新了系统并且安装了必要的依赖。以下是一些安装步骤,其中$ROS_DISTRO
是您的ROS2发行版(例如:foxy
、galactic
):
sudo apt update
sudo apt install python3-pip ros-$ROS_DISTRO-vision-msgs
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple yolov5
下载开源库
mkdir -p yolov5_ws/src
cd yolov5_ws/src
git clone https://github.com/fishros/yolov5_ros2.git
编译项目并设置环境变量
cd yolov5_ws
colcon build
source install/setup.bash
现在,您可以运行Yolo_ROS2节点。默认情况下,它将使用CPU来进行检测,使用名为/image
的图像话题。您可以根据需要更改这些参数:
ros2 run yolov5_ros2 yolo_detect_2d --ros-args -p device:=cpu -p image_topic:=/image
如果您要使用真实相机,请修改默认的图像话题(image_topic:=/image
),然后在另一个终端中运行以下命令来将相机图像转化为ROS话题:
ros2 run image_tools cam2image --ros-args -p width:=640 -p height:=480 -p frequency:=30.0 -p device_id:=-1
您也可以使用其他相机,例如usb_cam
。在这种情况下,安装相应的包并运行usb_cam
节点:
sudo apt-get install ros-<ros2-distro>-usb-cam # 安装
ros2 run usb_cam usb_cam_node_exe
Yolo_ROS2将检测结果发布到/yolo_result
话题中,包括原始像素坐标以及归一化后的相机坐标系下的x和y坐标。您可以使用以下命令查看检测结果:
ros2 topic echo /yolo_result
在运行Yolo_ROS2节点时,您可以使用 -p name:=value
的方式来修改参数值。
您可以通过指定以下参数来更改图像话题:
image_topic:=/image
如果您有CUDA支持的显卡,可以选择以下参数来配置计算设备:
device:=cpu
您可以使用以下参数来控制是否实时显示检测结果。设置为True
将实时显示结果,设置为False
则不会显示:
show_result:=False
请注意,实时显示中的cv2.imshow
可能会卡住。如果只需要验证结果,可以将此参数设置为False
。
默认情况下,Yolo_ROS2使用yolov5s
模型。您可以通过以下参数来更改模型:
model:=yolov5m
如果您希望Yolo_ROS2发布检测结果的图像,请使用以下参数:
pub_result_img:=True
这将允许您通过/result_img
话题查看检测结果的图像。
功能包默认从 /camera/camera_info 话题获取相机参数,在获取成功前,相机参数文件路径可以通过参数进行设置,参数为:camera_info_file,通过该参数可以设置文件路径,注意需要使用绝对目录:
camera_info_file:=/home/fishros/chapt9/src/yolov5_ros2/config/camera_info.yaml