尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

02-目标检测+测距融合:2D检测结合深度信息实现精准抓取

02-目标检测+测距融合:2D检测结合深度信息实现精准抓取 目标检测+测距融合:2D检测结合深度信息实现精准抓取作者:黒漂技术佬YOLO 告诉你目标在画面里的位置,但没告诉你它有多远。没有距离信息,机械臂就是个近视眼——看得见摸不着。一、2D检测的局限:缺了"深度"这一维上一篇文章讲了视觉抓取四步走,第一步视觉识别用 YOLO 搞定了。YOLO 输出的边界框给了你目标在图像中的像素坐标 (u, v),比如 (320, 240)。但问题来了:这个像素坐标只有二维信息。真实世界是三维的,同一个像素位置 (320, 240),物体可能在距离相机 30cm 处,也可能在 80cm 处。没有深度信息,你算出来的三维坐标就是错的,机械臂伸过去要么够不着,要么戳穿物体。打个比方:你闭上一只眼睛看前方,很难判断前面那个杯子离你到底是 30cm 还是 50cm——因为单目视觉丢失了深度信息。人靠两只眼睛的视差来感知距离,机器也需要类似的机制。所以,要实现精准抓取,必须在 2D 检测的基础上融合深度信息。二、深度信息获取方式目前主流的深度获取方案有三种,各有优劣。方案一:RGB-D 相机( structured + IR )原理:主动投射红外结构光(或飞行时间ToF),通过分析返回的光模式变形或时间差,直接计算出每个像素的深度值。输出的是对齐的 RGB 图 + Depth 图(每个像素一个深度值,单位通常毫米)。代表产品:Intel RealSense D435/D455、奥比中光 Astra、Azure Kinect。# Intel RealSense 获取深度图示例importpyrealsense2asrs pipeline=rs.pipeline()config=rs.config()config.enable_stream(rs.stream.depth,640,480,rs.format.z16,30)config.enable_stream(rs.stream.color,640,480,rs.format.bgr8,30)pipeline.start(config)frames=pipeline.wait_for_frames()depth_frame=frames.get_depth_frame()color_frame=frames.get_color_frame()# 获取某像素点的深度值(毫米)depth=depth_frame.get_distance(320,240)# 返回单位:米print(f"目标距离:{depth:.3f}米"
返回列表