6D 位姿估计 位姿测量 常用方法总结 (适用于单目标场景)

在机器人的应用中,往往会涉及到基于视觉的 6D 位姿估计或者位姿测量的问题,现在 Pose Estimation 的论文现在非常多,也有很大的创新,不过目前SOTA的工作一般面向几个特定的数据集,比如 LineMod,YCB,T-Less等等,主要面向复杂多目标场景。而在很多应用场景中,其实只涉及对单目标物体进行位姿测量,对于这种相对简单的场景,总结一下常用的基于视觉的方法:


1. 只用RGB: 目标上贴二维码ArUco Marker,结合相机内参求目标表面二维码的 6D 位姿 (2D - 3D)
2. 只用RGB: 检测目标上的特定关键点,结合目标CAD基准模型上面对应关键点的位置,利用PnP求解目标相对基准模型的 6D 位姿 (2D - 3D)
3. RGB+Depth:在RGB图像上检测目标的特定关键点,在深度图像中读取对应关键点的深度,结合相机内参,生成目标每个关键点的 3D 位置,进而解算目标整体 6D 位姿 (3D - 3D)
4. RGB+Depth:在RGB图像分割目标区域,在深度图像中根据分割结果提取对应深度区域,结合相机内参,得到目标点云,利用CAD基准模型点云与目标点云进行ICP配准,得到目标的 6D 位姿 (3D - 3D)
5. 只用Depth:在深度图像上检测目标的特定关键点,并根据深度,结合相机内参,生成目标每个关键点的 3D 位置,进而解算目标整体 6D 位姿  (3D - 3D)
6. 只用Depth:利用深度图像生成场景的点云,对目标区域进行分割得到目标点云,利用CAD基准模型点云与目标点云进行ICP配准,得到目标的 6D 位姿  (3D - 3D)

基于关键点检测的方法 2,3,5难度在于关键点检测的准确率;基于点云配准的方法 4, 6  问题主要在于目标区域分割精度以及配准算法的时间效率;基于二维码的方法1,效率和精度都较高,而且OpenCV就有现成实现,但是问题在于这个属于接触式测量,因为需要人工贴标。

对于精度、实时性要求特别高的,非接触式的方法很难实现,因为RGB-D或者双目这种视觉传感器精度有限,而高精度的三维扫描仪的点云处理起来又会很慢,接触式的方法,比如激光跟踪仪或者动捕镜头结合对应的专用标志点,是可以实现的。

你可能感兴趣的:(心得体会,图像处理,点云处理)