紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ros2 yolov5实时获取坐标问题
-
小鱼老师,您好,复现了您发布的yolov5 ros2的代码,能够成功输出话题,但是我一直有个问题不明白。如果我的相机实时在获取图像,图像里边有多个目标,此时我rostopic echo /yolo result这个话题,终端里边也会按一定的发布频率持续输出图像里边所有目标的三维坐标信息,但我的抓取策略只是订阅/yolo result这个话题,并且每次只抓取这些所有目标三维坐标信息里边深度距离最短的那个,但此话题一直都在输出所有目标的三维坐标信息,请问我该怎么操作才能实现每次从该话题里边获取深度距离最短的这个唯一坐标用于我采摘目标点呢。
也就是说当我相机实时获取图像,图像里边有三个目标,当我订阅yolo result话题的时候,话题只输出三个目标里边深度距离最短的这个,用于抓取,当我抓取完之后再回到抓取原点的时候,此时还有两个目标,此时yolo result话题继续输出两个目标里边深度距离最短的这个用于抓取,完事后再抓取最后一个。
请问下小鱼老师怎么操作可以实现这样的效果呢,我目前的状态就是,如果有三个目标,当我订阅yolo result这个话题,并且要开始抓取时,当我运行抓取程序里边的回调函数时,此时话题里边输出的是那个目标的三维坐标时,机械臂就去抓那个,随机性很高,所以就想着能不能实现我上述说的那种每次只输出深度距离最短的,确定我每次的抓取目标。 -
@朝雨浥轻尘 这个不难,你需要写个代码来订阅数据,数据是个数组,你把每个数据遍历一遍,计算每个中心点的欧式距离,选择最小的那个的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; }
-
此回复已被删除!