← 返回知识体系
00 入门 3D 视觉 视觉 SLAM 机器人 机器人抓取

6D Object Pose Estimation · Field Guide

先建立地图,
再深入每一种几何

6D 位姿回答“物体相对哪个坐标系,位于哪里、朝向哪里”。但真正的问题还取决于对象先验、相机、输入模态、检测条件、时间范围、尺度、对称和下游任务。本章先把这些分叉放进同一张问题地图。

Position + Orientation + Reference Frame

位姿不是一个点,而是两个坐标系之间的刚体关系

位置只给出物体原点在哪里;朝向给出物体系三根轴如何落在参考系中。选择哪个 CAD 原点、哪个 canonical orientation 和哪个参考 frame,会直接改变数值标签,但不会改变真实场景。

本站默认:object → camera
Cp=CRO Op+CtO{}^{C}\mathbf p = {}^{C}\mathbf R_{O}\,{}^{O}\mathbf p + {}^{C}\mathbf t_{O}
^O p 是 CAD / 物体系中的点,^C p 是同一点在相机系中的坐标;^C t_O 是物体原点在相机系中的坐标,不是任意一条“位移向量”。
Homogeneous rigid transform
CTO=[CROCtO0⊤1]∈SE(3),[Cp1]=CTO[Op1]{}^{C}\mathbf T_{O}=\begin{bmatrix}{}^{C}\mathbf R_{O}&{}^{C}\mathbf t_{O}\\\mathbf 0^\top&1\end{bmatrix}\in SE(3),\qquad \begin{bmatrix}{}^{C}\mathbf p\\1\end{bmatrix}={}^C\mathbf T_O\begin{bmatrix}{}^{O}\mathbf p\\1\end{bmatrix}
本站采用右手系、列向量和左乘;^A T_B 的含义始终是把 B frame 中的坐标转换到 A frame。
VISIBLE EFFECT图像中的投影

已知相机内参与畸变后,把 CAD 点经 CTO 变到相机系,再做透视投影,即可得到关键点、三维框、轮廓和渲染深度。因而“投影是否贴合图像”是最直接的位姿语义检查。

查看相机投影 →

Degrees of Freedom

先区分物理自由度、参数个数与模型输出维数

DoF 计算系统状态能独立变化的维度;表示可以冗余、带约束或有多对一。四元数有四个分量但受单位范数约束且 q 与 −q 等价,因此旋转仍只有三个物理自由度。

状态一种写法物理含义常见场景不要混淆
3 DoFt = [x, y, z]ᵀ只估计位置,朝向、形状与尺度已知或固定目标中心定位、带方向无关标记的三维跟踪不是完整物体 pose;同一位置仍允许任意旋转
4 DoF[x, y, z, yaw]重力固定 roll / pitch,只剩平移与偏航自动驾驶 3D box、平面移动机器人、直立物体“直立”是场景先验,不能直接用于任意手持物体
6 DoF(R, t) ∈ SE(3)三维位置 + 三维朝向,保持刚体尺寸实例级物体位姿、相机定位、机器人操作R 的参数可能有 3、4、6 或 9 个数,但旋转仍只有 3 DoF
7 DoF(s, R, t) ∈ Sim(3)6D 刚体位姿 + 一个一致尺度 s单目地图对齐、未知统一尺度的对象或轨迹不要把 quaternion(4) + translation(3) 的 7 个输出误称为 7DoF
9 DoF(R, t, sx, sy, sz)三平移 + 三旋转 + 三个轴向尺寸类别级 pose 与实例尺寸联合估计非均匀尺寸不属于刚体变换,canonical frame 会影响标签语义
PHYSICAL SPACE

6 DoF

刚体能独立移动的维度:R³ 的平移加 SO(3) 的旋转。它由物理问题决定。

REPRESENTATION

7 个数也可表示 6 DoF

unit quaternion q(4) + t(3) 共有 7 个分量,但范数约束与双覆盖不会新增物理运动。

NETWORK HEAD

输出维数可更高

网络可输出 6D rotation representation、分类 bins、多关键点或概率分布,再映射回同一个 pose 空间。

One Relation · Two Directions

物体位姿与相机位姿是同一变换的两个读取方向

若 ^C T_O 把 object 坐标送入 camera 坐标,那么它的逆 ^O T_C 就表达相机在物体系中的位置与朝向。平移求逆不是简单取负,因为逆平移必须重新表达在逆变换的 target frame 中。

Rigid inverse
(CTO)−1=OTC=[(CRO)⊤−(CRO)⊤CtO0⊤1]({}^{C}\mathbf T_{O})^{-1}={}^O\mathbf T_C=\begin{bmatrix}({}^{C}\mathbf R_O)^\top&-({}^{C}\mathbf R_O)^\top{}^{C}\mathbf t_O\\\mathbf0^\top&1\end{bmatrix}
旋转逆为 Rᵀ;逆平移是 −Rᵀt,而不是通常意义上的 −t。
Connect world, camera and object
CTO=CTW WTO,WTO=WTC CTO{}^{C}\mathbf T_O={}^C\mathbf T_W\,{}^W\mathbf T_O,\qquad {}^W\mathbf T_O={}^W\mathbf T_C\,{}^C\mathbf T_O
SLAM 常维护 world-from-camera,物体估计常输出 camera-from-object;只要方向明确,就可通过变换链统一。
SOURCE

点原来在哪个 frame?

下标 / 右端的 O 表示输入坐标来自 object frame。

TARGET

结果要表达在哪个 frame?

上标 / 左端的 C 表示输出坐标落在 camera frame。

UNIT

t、CAD 与 depth 是否同单位?

旋转无量纲,平移、模型与深度必须统一 m 或 mm。

CONVENTION

轴向与乘法侧是什么?

OpenCV、OpenGL、ROS 和图形引擎的相机轴约定可能不同。

Interactive Overview Lab

在一个实验里拆开自由度、变换方向与任务设定

先观察自由度变化如何改变状态空间,再对同一物体—相机关系求逆;最后组合测试时对象先验、观测模态与单帧/视频条件,判断自己真正解决的任务。

Interactive · Pose at a Glance

自由度、变换方向与任务设定实验室

先在同一个物体上比较 3/4/6/7/9 DoF,再把 object pose 与 camera pose 互相求逆,最后根据测试时先验和模态辨认自己真正解决的任务。
right-handed column vector object → camera
物体坐标轴 可见三维框 物体原点 t 透视显示仅用于建立直觉,数值计算使用完整 R、t

Task

3D 位置

3 个物理自由度旋转和尺寸固定

State vector

本实验输出

[x, y, z]3 个数 = 3 DoF

Translation

物体原点在相机系

—单位必须与 CAD / scene 一致

Rotation / size

朝向与尺寸

——
参数个数不等于物理自由度。 四元数 q 有 4 个分量但受单位范数约束,且 q 与 −q 表示同一旋转;所以“q + t 共 7 个数”仍然描述 6-DoF 刚体,而不是 7-DoF 物理运动。

Task Taxonomy

“6D pose”不是单一任务:先问测试时到底知道什么

是否有精确 CAD、测试对象是否参与训练、是否给定 object ID / ROI、是否要从全图检测、是否允许参考图或 onboarding,都会改变可用几何证据和结果可比性。

任务族测试时先验典型输出阅读论文时继续追问代表性语境
实例级 · 已见对象训练与测试共享 object ID;通常有精确 CAD、尺度和固定 object frame每个已知实例的 6D rigid pose目标是否给定?使用 GT box / mask 还是从全图检测?经典 BOP localization / detection、LINEMOD 系列
未见对象 · CAD-based测试对象未参与训练,但测试时提供精确 CAD,可离线 onboardingnovel object 的 6D pose,常含 coarse-to-refineCAD 是否有真实尺度?onboarding 成本与 detector 从哪里来?MegaPose 等 render-and-compare 路线
类别级 · 未见实例只有类别与 canonical / shape prior,没有该实例的精确 CAD6D pose + 尺寸,或常被称为 9DoF pose类别规范朝向、尺寸、连续对称和形状变化如何定义?NOCS 及类别级 pose-and-size
Reference-based / CAD-free测试前或测试时提供参考 RGB、RGB-D 扫描、视频或神经对象表示相对或度量 6D pose;取决于参考是否有尺度与相机 pose“model-free”究竟免除了 CAD,还是也免除了对象 onboarding?FoundationPose 的 model-free setting 等
开放世界 / 开放词汇对象与类别范围不再封闭,常结合文本、检索、通用分割与基础特征身份、实例、pose、置信度及拒绝状态zero-shot 对对象、类别、场景分别意味着什么?如何发现未知目标?novel-object / open-vocabulary 扩展任务
LOCALIZATION VS DETECTION

是否已知图中有哪些目标?

localization 通常给出目标存在信息;detection 必须从整图发现并识别实例。GT crop、GT mask 或已知 object ID 会显著降低系统难度。

MODEL-BASED VS MODEL-FREE

没有 CAD 不等于没有对象先验

model-free 方法仍可能需要 posed reference、RGB-D 扫描、对象视频或在线重建。还要追问参考是否有尺度和相机位姿。

ZERO-SHOT

“未见”必须带作用域

未见测试实例、未见类别、未见场景和不做 per-object training 是不同声明;最好逐项列出训练集、资产与测试时操作。

What Does the Sensor Actually Observe?

RGB、深度、点云和多视角提供的是不同证据

模态不是网络输入通道数量,而是测量机制与可用信息的边界。RGB-D 同时拥有颜色和深度也不代表天然可靠:对齐、尺度、有效性与时间同步属于任务契约。

模态直接观测主要能力缺失与失效常见几何路线
RGB颜色、纹理、轮廓、透视与遮挡关系高分辨率外观;配合已知 CAD 与 K 可由投影约束恢复度量 t不直接测量深度;弱纹理、光照、材质和单目歧义明显2D–3D 对应 + PnP、模板、直接回归、render-and-compare
Depth / Point cloud可见表面的度量三维几何尺度、表面距离、法向和 3D–3D 对齐证据颜色语义;透明、镜面、黑色材质会产生空洞和飞点Kabsch / Umeyama、RANSAC、全局配准、ICP / GICP
RGB-D同一时刻的外观与可见表面几何互补证据,可验证单目深度并做点级融合与几何精修并非自动对齐;深度尺度、RGB–D 外参、时间同步都可能错误早/中/晚融合、点级投票、PnP + depth check、ICP refinement
Multi-view / Video跨视角视差、时间连续性和逐步显露的表面缓解单帧遮挡,三角化结构,联合优化相机与对象状态需要数据关联、相机运动、同步和漂移管理跟踪、三角化、BA、multi-view fusion、object-level SLAM
DEEP DIVE

模态融合会在 09 专题单独展开

包括 RGB-only / depth-only / RGB-D、点云与法向、早中晚融合、RGB–Depth 对齐、真实传感器噪声、透明反光物体、模态缺失、多视图与几何精修。

查看知识地图 →

From Observation to Action

一条最小可用流程:发现、建立证据、求解、验证,再交给任务

有些网络会联合实现多个阶段,但系统责任不会消失。把输入权限、候选生成、独立验证和任务接受拆开,才能知道失败在哪一层。

  1. 01

    FIND

    发现目标与身份

    检测 / 分割 / 已给 ROI;确定 object ID、instance ID、visible mask 与 crop 变换。
  2. 02

    EVIDENCE

    预测几何证据

    关键点、稠密物体坐标、NOCS、深度点云、局部特征、模板视点或直接 pose 分布。
  3. 03

    SOLVE

    生成一个或多个候选

    PnP-RANSAC、3D–3D 对齐、投票、检索、回归或全局采样;同时检查正深度与退化。
  4. 04

    VERIFY

    用独立证据验证与精修

    比较轮廓、RGB 特征、渲染深度、法向和时序;管理对称、多假设、拒绝与重定位。
  5. 05

    ACT

    转换到下游 frame

    AR 做投影,SLAM 进地图,机器人复合到 base / tool,抓取再检查 TCP、IK、碰撞与闭环误差。

Ambiguity, Failure and Sanity Checks

“能输出 R、t”不等于“观测唯一支持这个姿态”

位姿估计的难点既来自几何不可辨识,也来自传感器、资产和协议错误。可靠系统需要保留多假设、显式拒绝,并通过投影、深度和变换链做独立检查。

问题为什么发生第一响应
对称与重复外观多个旋转产生相同或近似观测;单一 canonical 标签可能人为制造冲突输出等价类 / 多假设,并使用对称感知训练和评测
遮挡与截断只看到局部表面,关键点、轮廓与深度证据不完整估计可见性,保留 top-K,用时序或主动视角补证据
弱纹理与域差距RGB 对应不稳定,合成渲染与真实材质/光照不一致结合轮廓、几何、冻结特征与域随机化,独立验证候选
尺度、单位与原点m/mm、CAD 尺寸或 object origin 错误可让旋转看似正确而平移/投影全错把 frame、unit、asset version 写入数据契约并投影检查
深度失效透明、镜面、黑色表面、多径和边缘混合像素产生系统性缺失保存有效性 mask,训练模态缺失,禁止把 0 depth 当真实表面
错误任务比较GT crop、已知 ID、预测 detector、CAD-based 与 CAD-free 的数字被混在一起先写清 setting contract,再比较检测召回、pose 精度与运行成本
MINIMUM DEBUG PROTOCOL

拿到一条预测 pose 后,按这个顺序检查

  1. 01

    读契约:它是 CTO 还是 OTC?列向量还是行向量?m 还是 mm?

  2. 02

    查旋转:RᵀR ≈ I、det(R) ≈ +1;四元数顺序、Euler 轴序和角度单位是否匹配?

  3. 03

    查深度:物体原点与可见模型点是否在相机前方?t 的 z 与场景距离是否同量级?

  4. 04

    做投影:用当前 K、畸变、crop 后坐标与同一 CAD 投影坐标轴、3D box、轮廓和深度。

  5. 05

    查等价:看似“旋转错了”是否其实是物体对称、canonical frame 差异或 object origin 版本不同?

  6. 06

    查任务:最终是 benchmark 接受、AR 视觉贴合、机器人可达,还是抓取成功?不同任务的容错方向不同。

One Geometry · Four Communities

3D 视觉、SLAM、机器人与抓取共享同一套变换语言

不同领域常用不同命名和输出方向,但核心仍是 frame 之间的刚体关系。理解它们如何连接,比记住某个 API 的默认格式更可靠。

3D 视觉

从像素恢复对象与相机的三维关系

核心是相机模型、对应、PnP、点云配准、对称与评测。位姿常是识别、重建、AR 和测量的几何接口。

坐标系 → 旋转 → 相机 → PnP → 配准 → 流程
视觉 SLAM

相机 pose 与 object pose 放进同一张图

SLAM 多以世界中的相机位姿为主,object SLAM 还估计物体 landmark。二者通过求逆与变换复合连接,而不是两套独立几何。

刚体几何 → 相机 → 多视图 → BA → Object SLAM
机器人

把 camera frame 的结果送到 base / tool frame

视觉输出只有经过相机外参、手眼标定、时间同步和运动学链,才成为机器人可执行的目标。

变换链 → 外参 → 手眼标定 → 误差传播 → 视觉伺服
机器人抓取

物体 pose 不是抓取 pose

还需 object-to-grasp、夹爪 TCP、碰撞、可达性、对称等价抓取与闭环重定位;最终指标应是任务成功而不只是 ADD。

物体位姿 → grasp frame → IK / collision → 闭环操作

How to Continue

按依赖学习,不必一次读完所有专题

最稳妥的主线是先掌握刚体几何和坐标约定,再进入旋转、相机与求解器;之后根据自己的应用选择 SLAM、模态、数据、机器人或前沿分支。

下一专题 · 01

数学与刚体几何

把本章的直觉正式写成向量、矩阵、SO(3)、SE(3) 与齐次变换。

进入完整专题 →