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

    ros2 yolov5实时获取坐标问题

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    yolov5 ros2 深度相机 抓取策略
    3
    3
    705
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 朝雨浥轻尘朝
      朝雨浥轻尘
      最后由 编辑

      小鱼老师,您好,复现了您发布的yolov5 ros2的代码,能够成功输出话题,但是我一直有个问题不明白。如果我的相机实时在获取图像,图像里边有多个目标,此时我rostopic echo /yolo result这个话题,终端里边也会按一定的发布频率持续输出图像里边所有目标的三维坐标信息,但我的抓取策略只是订阅/yolo result这个话题,并且每次只抓取这些所有目标三维坐标信息里边深度距离最短的那个,但此话题一直都在输出所有目标的三维坐标信息,请问我该怎么操作才能实现每次从该话题里边获取深度距离最短的这个唯一坐标用于我采摘目标点呢。
      也就是说当我相机实时获取图像,图像里边有三个目标,当我订阅yolo result话题的时候,话题只输出三个目标里边深度距离最短的这个,用于抓取,当我抓取完之后再回到抓取原点的时候,此时还有两个目标,此时yolo result话题继续输出两个目标里边深度距离最短的这个用于抓取,完事后再抓取最后一个。
      请问下小鱼老师怎么操作可以实现这样的效果呢,我目前的状态就是,如果有三个目标,当我订阅yolo result这个话题,并且要开始抓取时,当我运行抓取程序里边的回调函数时,此时话题里边输出的是那个目标的三维坐标时,机械臂就去抓那个,随机性很高,所以就想着能不能实现我上述说的那种每次只输出深度距离最短的,确定我每次的抓取目标。

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @朝雨浥轻尘
        最后由 编辑

        @朝雨浥轻尘 这个不难,你需要写个代码来订阅数据,数据是个数组,你把每个数据遍历一遍,计算每个中心点的欧式距离,选择最小的那个的id记录下来.具体编程操作像这样子:

        https://www.runoob.com/cprogramming/c-examples-smallest-array-element.html

        #include <stdio.h>
         
        int main() {
           int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
           int loop, smallest;
         
           smallest = array[0];
           
           for(loop = 1; loop < 10; loop++) {
              if( smallest > array[loop] ) 
                 smallest = array[loop];
           }
           
           printf("最小元素为 %d", smallest);   
           
           return 0;
        }
        

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

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

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