鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    [FishBotCamera]3.结合YOLO实现检测

    已定时 已固定 已锁定 已移动
    FishBot二驱机器人
    fishbotcamera yolo 检测
    17
    65
    14.4k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 28267785952
      无处在 ROS2开发者
      最后由 编辑

      @小鱼 大佬您好,我想订阅/yolo_result话题中的分类结果,
      c6671f00-1e02-4b10-91e4-3faa3955e4d2-图片.png
      例如:header.detections.id中的值person,但是仔细研究发现您是把Detection2D接口信息嵌入到了Detection2DArray的detections[ ]中,我不知道该如何获取嵌入到detections[ ]的id的值,能否给些提示,或者更新一个案例。
      😊 我这是属于喂到嘴边不知道怎么下口去吃,尴尬。

      28267785952 1 条回复 最后回复 回复 引用 0
      • 28267785952
        无处在 ROS2开发者 @2826778595
        最后由 编辑

        @2826778595 这里有一个递归读取的方式,读取header.detections.id中的值person。
        代码如下:
        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()
        我个人觉得比较呆,期待有更好的方法。

        28267785952 1 条回复 最后回复 回复 引用 0
        • 28267785952
          无处在 ROS2开发者 @2826778595
          最后由 编辑

          @2826778595

          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()
          
          
          小鱼小 1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @2826778595
            最后由 编辑

            @2826778595 既然是数组,遍历读取就好,这个做法没啥问题

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            28267785952 1 条回复 最后回复 回复 引用 0
            • 28267785952
              无处在 ROS2开发者 @小鱼
              最后由 编辑

              @小鱼 好嘞,谢谢。

              1 条回复 最后回复 回复 引用 0
              • 28267785952
                无处在 ROS2开发者
                最后由 编辑

                新问题:
                1、pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple yolov5 我把这行换成yolo8,代码里导入的包也是yolo8,可以运行yolo8的模型吗?
                2、同时安装yolo5和8在Linux会产生冲突吗?
                担心冲突,所以先问问。

                1 条回复 最后回复 回复 引用 2
                • 2
                  萌新
                  最后由 编辑

                  64e8b8ba-ea10-4dc3-b7e9-f6921b74cbe2-image.png
                  小鱼,我在这一节里启动yolov5的时候提示警告不匹配版本该怎么解决呀,这个不匹配了在rqt里也看不到图像

                  10044615811 1 条回复 最后回复 回复 引用 0
                  • 10044615811
                    班超 @2431039560
                    最后由 编辑

                    @2431039560 我也遇到这个问题 请问你是如何解决的呢

                    2 1 条回复 最后回复 回复 引用 0
                    • 2
                      萌新 @1004461581
                      最后由 编辑

                      @1004461581 摄像头和小车和电脑在同一个子网下就可以了,改一下IP最后面的那个数字

                      10044615811 1 条回复 最后回复 回复 引用 0
                      • 10044615811
                        班超 @2431039560
                        最后由 编辑

                        @2431039560是udpserver_ip吗,改了这个还是不行哎

                        小鱼小 2 2 条回复 最后回复 回复 引用 0
                        • 小鱼小
                          小鱼 技术大佬 @1004461581
                          最后由 编辑

                          @1004461581 发一下网络结构看看

                          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                          10044615811 1 条回复 最后回复 回复 引用 0
                          • 10044615811
                            班超 @小鱼
                            最后由 编辑

                            @小鱼 感谢已经解决

                            小鱼小 1 条回复 最后回复 回复 引用 0
                            • 小鱼小
                              小鱼 技术大佬 @1004461581
                              最后由 编辑

                              @1004461581 👍

                              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                              1 条回复 最后回复 回复 引用 0
                              • P
                                pengzhju
                                最后由 编辑

                                sudo apt update
                                sudo apt install python3-pip ros-$ROS_DISTRO-vision-msgs
                                pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple yolov5
                                为什么运行上面指令之后,我所有曾经成功编译过的代码现在colcon build 之后都会出错了,以前面FishBotCamera为例,我可以成功运行了,但是按照 “3.结合YOLO实现检测”内容操作之后,再运行前面的FishBotCamera,就会出现colcon build 错误,错误指示如下:
                                tarting >>> fishbot_camera
                                /home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py:261: UserWarning: Unknown distribution option: 'tests_require'
                                warnings.warn(msg)
                                --- stderr: fishbot_camera
                                /home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py:261: UserWarning: Unknown distribution option: 'tests_require'
                                warnings.warn(msg)
                                Traceback (most recent call last):
                                File "/home/hance/fishbot_ws/src/fishbot_camera/setup.py", line 5, in <module>
                                setup(
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/init.py", line 117, in setup
                                return distutils.core.setup(**attrs)
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 183, in setup
                                return run_commands(dist)
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 199, in run_commands
                                dist.run_commands()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 954, in run_commands
                                self.run_command(cmd)
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/dist.py", line 999, in run_command
                                super().run_command(command)
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 973, in run_command
                                cmd_obj.run()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 312, in run
                                self.find_sources()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 320, in find_sources
                                mm.run()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 546, in run
                                self.prune_file_list()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/command/sdist.py", line 162, in prune_file_list
                                super().prune_file_list()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 380, in prune_file_list
                                base_dir = self.distribution.get_fullname()
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 267, in get_fullname
                                return _distribution_fullname(self.get_name(), self.get_version())
                                File "/home/hance/.local/lib/python3.10/site-packages/setuptools/_core_metadata.py", line 285, in _distribution_fullname
                                canonicalize_version(version, strip_trailing_zero=False),
                                TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'

                                Failed <<< fishbot_camera [4.58s, exited with code 1]

                                Summary: 0 packages finished [5.19s]
                                1 package failed: fishbot_camera
                                1 package had stderr output: fishbot_camera

                                小鱼小 1 2 条回复 最后回复 回复 引用 0
                                • 小鱼小
                                  小鱼 技术大佬 @pengzhju
                                  最后由 编辑

                                  @pengzhju 在 [FishBotCamera]3.结合YOLO实现检测 中说:

                                  setuptools

                                  什么系统版本,是不是操作后不小心更新了 setuptools 版本

                                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                                  P 2 条回复 最后回复 回复 引用 0
                                  • P
                                    pengzhju @小鱼
                                    最后由 编辑

                                    @小鱼 对的小鱼,应该问题出在了setuptools上,这个需要怎么解决呀?

                                    小鱼小 1 条回复 最后回复 回复 引用 0
                                    • 小鱼小
                                      小鱼 技术大佬 @pengzhju
                                      最后由 编辑

                                      @pengzhju 搜搜默认版本和怎么回退,我帮你看下我的

                                      fishros$ pip list| grep setuptools
                                      ---
                                      setuptools                           59.6.0
                                      

                                      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                                      1 1 条回复 最后回复 回复 引用 0
                                      • P
                                        pengzhju @小鱼
                                        最后由 编辑

                                        @小鱼 我的是Ubuntu22.04 humble,是按照图片这个步骤来的,可能我哪里出错了。好的小鱼,我先试一下,谢谢呀
                                        2fa7c120-3e1e-47d4-be2d-730669c40d35-{BB963533-8B6C-4D35-B35A-029FA1776B98}.png

                                        1 条回复 最后回复 回复 引用 0
                                        • 2
                                          2290305520 @1004461581
                                          最后由 编辑

                                          @1004461581 请问一下是怎么解决的

                                          1 条回复 最后回复 回复 引用 0
                                          • 2
                                            2290305520
                                            最后由 编辑

                                            @小鱼 请问我运行这段命令后就这样不动了是什么原因?
                                            ros2 run yolov5_ros2 yolo_detect_2d --ros-args -p device:=cpu -p image_topic:=/fishbot_camera_raw
                                            /usr/lib/python3/dist-packages/requests/init.py:87: RequestsDependencyWarning: urllib3 (2.2.3) or chardet (4.0.0) doesn't match a supported version!
                                            warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
                                            [INFO] [1732460432.020769982] [yolov5_ros2]: Current ROS 2 distribution: humble
                                            [INFO] [1732460432.127483045] [yolov5_ros2]: default_camera_info: [476.7030836014194, 0.0, 400.5, 0.0, 476.7030836014194, 400.5, 0.0, 0.0, 1.0]
                                            [0.0, 0.0, 0.0, 0.0, 0.0]

                                            小鱼小 1 条回复 最后回复 回复 引用 0
                                            • 第一个帖子
                                              最后一个帖子
                                            皖ICP备16016415号-7
                                            Powered by NodeBB | 鱼香ROS