小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
在使用小鱼的yolov5_ros2功能包时,编译环节出现问题
-
@小鱼 不好意思,我是小白,刚接触ros,让您费心了
-
@LeeSonFirm 输入这个命令只是安装yolov5的python库而已,当然找不到功能包,按照这个步骤来:
YOLO_ROS2
基于YOLOV5 的ROS2封装,允许用户使用给定的模型文件和相机参数进行三维空间物体检测和抓取操作。
1. 安装依赖
首先,确保您已经更新了系统并且安装了必要的依赖。以下是一些安装步骤,其中
$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
2. 下载编译和运行
下载开源库
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
3. 订阅结果
Yolo_ROS2将检测结果发布到
/yolo_result
话题中,包括原始像素坐标以及归一化后的相机坐标系下的x和y坐标。您可以使用以下命令查看检测结果:ros2 topic echo /yolo_result
4. 更进一步使用
4.1 参数设置
在运行Yolo_ROS2节点时,您可以使用
-p name:=value
的方式来修改参数值。4.1.1 图像话题
您可以通过指定以下参数来更改图像话题:
image_topic:=/image
4.1.2 计算设备设置
如果您有CUDA支持的显卡,可以选择以下参数来配置计算设备:
device:=cpu
4.1.3 是否实时显示结果
您可以使用以下参数来控制是否实时显示检测结果。设置为
True
将实时显示结果,设置为False
则不会显示:show_result:=False
请注意,实时显示中的
cv2.imshow
可能会卡住。如果只需要验证结果,可以将此参数设置为False
。4.1.4 切换不同Yolov5模型
默认情况下,Yolo_ROS2使用
yolov5s
模型。您可以通过以下参数来更改模型:model:=yolov5m
4.1.5 是否发布结果图像
如果您希望Yolo_ROS2发布检测结果的图像,请使用以下参数:
pub_result_img:=True
这将允许您通过
/result_img
话题查看检测结果的图像。4.1.5 相机参数文件
功能包默认从 /camera/camera_info 话题获取相机参数,在获取成功前,相机参数文件路径可以通过参数进行设置,参数为:camera_info_file,通过该参数可以设置文件路径,注意需要使用绝对目录:
camera_info_file:=/home/fishros/chapt9/src/yolov5_ros2/config/camera_info.yaml
-
@小鱼 好的,感谢您,您就是我的god
-
@小鱼 在 在使用小鱼的yolov5_ros2功能包时,编译环节出现问题 中说:
colcon build
lizijian@lizijian-virtual-machine:~$ cd yolov5_ws
lizijian@lizijian-virtual-machine:~/yolov5_ws$ colcon build
Starting >>> yolov5_ros2
[0.711s] WARNING:colcon.colcon_ros.task.ament_python.build:Package 'yolov5_ros2' doesn't explicitly install a marker in the package index (colcon-ros currently does it implicitly but that fallback will be removed in the future)
--- stderr: yolov5_ros2
Traceback (most recent call last):
File "setup.py", line 7, in <module>
setup(
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/init.py", line 108, in setup
return distutils.core.setup(**attrs)
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 184, in setup
return run_commands(dist)
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
dist.run_commands()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 970, in run_commands
self.run_command(cmd)
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/dist.py", line 974, in run_command
super().run_command(command)
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
cmd_obj.run()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/command/egg_info.py", line 321, in run
self.find_sources()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/command/egg_info.py", line 329, in find_sources
mm.run()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/command/egg_info.py", line 555, in run
self.prune_file_list()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/command/egg_info.py", line 621, in prune_file_list
base_dir = self.distribution.get_fullname()
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_core_metadata.py", line 266, in get_fullname
return _distribution_fullname(self.get_name(), self.get_version())
File "/home/lizijian/.local/lib/python3.8/site-packages/setuptools/_core_metadata.py", line 284, in _distribution_fullname
canonicalize_version(version, strip_trailing_zero=False),
TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'Failed <<< yolov5_ros2 [1.45s, exited with code 1]
Summary: 0 packages finished [1.63s]
1 package failed: yolov5_ros2
1 package had stderr output: yolov5_ros2
lizijian@lizijian-virtual-machine:~/yolov5_ws$这是啥情况啊,鱼神
-
@LeeSonFirm 是setuptools版本问题吗