刚体6D位姿估计方法综述

本文深入探讨了刚体6D位姿估计的方法,包括基于2D图像、3D点云的对应、模板和投票策略。这些技术在机器人抓取和增强现实中至关重要。从早期的PnP算法到深度学习的广泛应用,6D位姿估计已成为研究热点,其中基于深度学习的方法展示了优秀的性能。文章还对比了不同方法的优缺点,为实际应用提供了选择依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文同步于微信公众号:3D视觉前沿,欢迎大家关注。

1 引言

刚体的6D位姿估计,是指估计相机坐标系下物体的6D位姿,即3D位置和3D姿态,此时原始物体本身的坐标系可以看作是世界坐标系,也即得到原始物体所在世界系到相机系的RT变换。刚体是指物体不会弯曲变形(手),也不存在活动关节(胳膊)。刚体的6D位姿估计的意义在于能够获得物体的精确姿态,支撑对于物体的精细操作,主要应用于机器人抓取领域和增强现实领域。在机器人抓取领域,主流的方法是估计已知物体的6D位姿,进而获得抓取器的目标6D抓取位姿。在增强现实领域,可以在物体上叠加虚拟元素,随着物体的移动而保持和物体相对位姿不变。随着SLAM等技术的成熟,机器人已经能够在空间中进行很好的定位,但如果想要和环境中的物体进行交互,物体的6D位姿估计是必需的技术,也会持续成为研究热点。本文来自论文https://arxiv.org/abs/1905.06658,涉及的论文也都可以在论文中找到,也包含于 GitHub,转载请注明出处,有错误请指正,欢迎大家多交流 ^ _ ^

2 回顾

刚体的6D位姿估计按照使用的输入数据,可以分为基于2D图像的方法和基于3D点云的方法。早期基于2D图像的6D位姿估计方法处理的是纹理丰富的物体,通过提取显著性特征点,构建表征性强的描述符获得匹配点对,使用PnP方法恢复物体的6D位姿。对于弱纹理或者无纹理物体,可以使用基于模板的方法,检索得到最相似的模板图像对应的6D位姿,也可以通过基于机器学习的投票的方法,学习得到最优的位姿。

随着2011年以kinect为代表的的廉价深度传感器的出现,在获取RGB图像的同时可以获得2.5D的Depth图像,进而可以辅助基于2D图像的方法。为了不受纹理影响,也可以只在3D空间操作,此时问题变成获取的单视角点云到已有完整物体点云的part-to-whole配准问题。如果物体几何细节丰富,可以提取显著性3D特征点,构建表征性强的描述符获得3D匹配点,使用最小二乘获得初始位姿;也可以使用随机采样点一致算法(Ransac)获得大量候选6D位姿,选择误差最小的位姿。

自2012年始,深度学习在2D视觉领域一骑绝尘,很自然的会将深度学习引入到物体6D位姿估计,而且是全方位的,无论是基于纯RGB图像、RGB和Depth图像、还是只基于3D点云,无论是寻找对应、寻找模板匹配、亦或是进行投票,都展现了极好的性能。

随着在实例级物体上的6D位姿估计趋于成熟,开始涌现了类别级物体6D位姿估计的方法,只要处理的物体在纹理和几何结构上近似,就可以学习到针对这一类物体的6D位姿估计方法,这将极大提升这项技术在机器人抓取或者AR领域的实用性。

本文分别介绍基于2D图像和基于3D点云的,基于对应(Correspondence-based)、模板(Template-based)和投票(Voting-based method)的物体6D位姿估计方法,综合如下表。

在这里插入图片描述
表1 刚体6D位姿估计方法综述

3 基于对应的方法

这类方法的是指寻找输入数据和已有物体的完整3D点云之间的对应,如果输入的是2DRGB图像,可找到2D像素点和3D物体点之间的对应,进而使用PnP算法计算;如果输入的是3D点云,则可以使用3D特征描述符寻找输入点云中3D点和已有完整物体3D点之间的对应,使用最小二乘法获得6D位姿;两类输入都可以使用局部配准方法如ICP进行优化。

### 刚体变换位姿估计原理 #### 定义与背景 刚体变换是指物体在空间中的平移和旋转操作,保持形状不变。对于计算机视觉应用而言,刚体变换用于描述相机或其他对象相对于某一固定坐标系的位置变化[^3]。 #### 变换矩阵表示 \(T_{cw}\) 表示从世界坐标系 \(W\) 转换至相机坐标系 \(C\) 的转换关系。该变换由一个旋转分量 R 和一个平移向量 t 组成: \[ T_{cw} = \begin{bmatrix} R & t \\ \mathbf{0}^T & 1 \end{bmatrix} \] 其中,\(R ∈ SO(3)\),即正交矩阵集合;而 \(t ∈ ℝ³\) 是三维实数向量。 #### 特征匹配方法概述 为了实现两个不同视角下获取的数据间的配准,通常采用基于特征的方法来建立对应关系。这些特征可能是通过传统算法提取出来的几何特性或是借助深度学习技术获得的语义信息。例如,在点云数据处理领域内存在多种有效的局部特征描述子可供选用,包括但不限于 Spin Images、3D Shape Contexts、FPFH (Fast Point Feature Histograms) 等经典方案以及像 PoseCNN 这样的现代神经网络架构所生成的高级表征形式[^4]。 #### 位姿求解策略 一旦建立了可靠的特征对应,则可通过最小化重投影误差或直接距离度量等方式来进行最终的姿态参数调整。针对离散采样型输入(如激光雷达扫描),常用的技术手段有迭代最近邻法 Iterative Closest Points (ICP)[^5]。此过程涉及到一系列交替执行的操作:寻找最接近当前预测位置的目标点集成员作为参照物,并据此更新待估变量直至收敛为止。 对于连续流形上的优化问题,还可以利用李群理论框架下的工具箱完成更高效的数值计算。特别是当考虑到了噪声影响因素之后,往往倾向于采取鲁棒性强且具备全局最优保障性的贝叶斯推断机制,比如 Bundle Adjustment (BA) 方法就是一种典型代表。 ```python import numpy as np def icp_svd(source_points, target_points): """ 使用 SVD 实现简单的 ICP 对齐 """ # Step 1: Compute centroids and de-mean points source_centroid = np.mean(source_points, axis=0) target_centroid = np.mean(target_points, axis=0) H = (source_points - source_centroid).T @ (target_points - target_centroid) U, _, V_t = np.linalg.svd(H) R = V_t.T @ U.T if np.linalg.det(R) < 0: V_t[-1,:] *= -1 R = V_t.T @ U.T t = target_centroid - R @ source_centroid return R, t.reshape(-1, 1) if __name__ == "__main__": src_pts = np.array([[1., 2., 3.], [4., 5., 6.]]) tgt_pts = np.array([[7., 8., 9.], [10., 11., 12.]]) rotation_matrix, translation_vector = icp_svd(src_pts, tgt_pts) print(f"Rotation Matrix:\n {rotation_matrix}") print(f"Translation Vector:\n {translation_vector}") ```
评论 210
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值