小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
[FishBotCamera]3.结合YOLO实现检测
-
@小鱼
我在编译的时候发生了这样的警告Starting >>> yolov5_ros2 [0.309s] 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) Finished <<< yolov5_ros2 [0.66s] Summary: 1 package finished [0.75s]
-
@lingzhiying 可以忽略,直接测试看看能不能用。
-
此回复已被删除! -
-
小鱼,我想用自己训练的模型。将模型放入config文件夹,在程序中修改选取的模型名字,可以运行我自己的模型吗?有哪些要注意的?
-
@2826778595 可以的,没什么要注意的,注意版本即可
-
@小鱼 自己训练的yolo5模型确实可以。之前测试不知道用的是yolo8模型,发现不行,才有此一问。
-
@小鱼 大佬您好,我想订阅/yolo_result话题中的分类结果,
例如:header.detections.id中的值person,但是仔细研究发现您是把Detection2D接口信息嵌入到了Detection2DArray的detections[ ]中,我不知道该如何获取嵌入到detections[ ]的id的值,能否给些提示,或者更新一个案例。
我这是属于喂到嘴边不知道怎么下口去吃,尴尬。 -
@2826778595 这里有一个递归读取的方式,读取header.detections.id中的值person。
代码如下:
import rclpy
from rclpy.node import Node
from vision_msgs.msg import Detection2DArrayclass DetectionSubscriber(Node):
def init(self):
super().init('detection_subscriber')
self.subscription = self.create_subscription(
Detection2DArray, # 消息类型
'yolo_result', # 订阅的话题名称
self.listener_callback, # 回调函数
10 # 队列大小
)
self.subscription # prevent unused variable warningdef listener_callback(self, msg: Detection2DArray): self.get_logger().info('Received a Detection2DArray message') for detection in msg.detections: # 打印出每个检测到的对象的ID self.get_logger().info(f"Detected object ID: {detection.id}")
def main(args=None):
rclpy.init(args=args)
detection_subscriber = DetectionSubscriber()
rclpy.spin(detection_subscriber)
# 关闭和清理ROS 2节点
detection_subscriber.destroy_node()
rclpy.shutdown()if name == 'main':
main()
我个人觉得比较呆,期待有更好的方法。 -
import rclpy from rclpy.node import Node from vision_msgs.msg import Detection2DArray class DetectionSubscriber(Node): def __init__(self): super().__init__('detection_subscriber') self.subscription = self.create_subscription( Detection2DArray, # 消息类型 'yolo_result', # 订阅的话题名称 self.listener_callback, # 回调函数 10 # 队列大小 ) self.subscription # prevent unused variable warning def listener_callback(self, msg: Detection2DArray): self.get_logger().info('Received a Detection2DArray message') for detection in msg.detections: # 打印出每个检测到的对象的ID self.get_logger().info(f"Detected object ID: {detection.id}") def main(args=None): rclpy.init(args=args) detection_subscriber = DetectionSubscriber() rclpy.spin(detection_subscriber) # 关闭和清理ROS 2节点 detection_subscriber.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()
-
@2826778595 既然是数组,遍历读取就好,这个做法没啥问题
-
@小鱼 好嘞,谢谢。
-
新问题:
1、pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple yolov5 我把这行换成yolo8,代码里导入的包也是yolo8,可以运行yolo8的模型吗?
2、同时安装yolo5和8在Linux会产生冲突吗?
担心冲突,所以先问问。 -
小鱼,我在这一节里启动yolov5的时候提示警告不匹配版本该怎么解决呀,这个不匹配了在rqt里也看不到图像 -
@2431039560 我也遇到这个问题 请问你是如何解决的呢
-
@1004461581 摄像头和小车和电脑在同一个子网下就可以了,改一下IP最后面的那个数字
-
@2431039560是udpserver_ip吗,改了这个还是不行哎
-
@1004461581 发一下网络结构看看
-
@小鱼 感谢已经解决
-