点积定义长度与夹角
‖v‖²=vᵀv,cosθ=(aᵀb)/(‖a‖‖b‖)。正交 R 满足 (Ra)ᵀ(Rb)=aᵀb。
Affine Space Before Matrices
空间中的点描述位置;向量描述两个点之差或自由方向;法向编码切平面约束;坐标基负责把几何对象变成数字。它们都可写成数组,但数组形状相同并不代表语义相同。
| 几何对象 | 齐次 / 结构 | 刚体规则 | 一般仿射规则 | 保持量 | 常见陷阱 |
|---|---|---|---|---|---|
| 点 point | [pᵀ, 1]ᵀ | p′ = Rp + t | p′ = Ap + t | 刚体下点间距离保持;点会受平移影响 | 点属于仿射空间;两个点可以相减,但“原点改变”会改变点坐标 |
| 自由向量 / 方向 | [vᵀ, 0]ᵀ | v′ = Rv | v′ = Av | 刚体下长度、夹角和点积保持;不受平移影响 | 速度若在旋转 frame 间转换还需区分表达 frame;不能给方向补 w=1 |
| 法向 normal | 协向量 / 平面约束 | n′ = Rn | n′ ∝ A⁻ᵀn | 保持与变换后切向垂直,再按需要单位化 | 只有正交或一致尺度变换下,把法向当普通方向变换才“碰巧”可用 |
| 坐标基 basis | B = [b₁ b₂ b₃] | B′ = RB | B′ = AB | R 的列向量构成正交单位基;一般 A 的列不必正交 | 矩阵的列究竟是“新基在旧系中的表达”还是线性映射,取决于主动/被动语义 |
| 位姿 pose | T = [[R,t],[0ᵀ,1]] | T ∈ SE(3) | T ∈ Aff(3) 时左上块为一般 A | 刚体保持距离、角度、体积和定向 | 4×4 外形相同不保证是刚体;必须检查 RᵀR 与 det(R) |
‖v‖²=vᵀv,cosθ=(aᵀb)/(‖a‖‖b‖)。正交 R 满足 (Ra)ᵀ(Rb)=aᵀb。
[a]×b=a×b,且 [Ra]×=R[a]×Rᵀ。它把三维角速度、法向与 SE(3) Jacobian 连接起来。
Σᵢαᵢpᵢ 在 Σᵢαᵢ=1 时与原点选择无关;质心、重心坐标和插值都依赖这一性质。
What Is Preserved?
不要只看矩阵尺寸。一个变换属于哪个族,取决于左上线性块的约束、行列式与它保持的几何结构;这也决定自由度、可用求解器和法向处理方式。
| 变换族 | 矩阵形式 | DoF | 约束 | 保持量 | 6D 相关用途 |
|---|---|---|---|---|---|
| SO(3) | R ∈ ℝ³ˣ³ | 3 | RᵀR = I,det(R)=+1 | 长度、角度、体积与定向;原点固定 | 朝向、角速度积分、旋转误差 |
| SE(3) | [[R,t],[0ᵀ,1]] | 6 | R ∈ SO(3),t ∈ ℝ³ | 欧氏距离、角度、体积与定向 | 6D 刚体位姿、相机轨迹、机器人运动学 |
| Sim(3) | [[sR,t],[0ᵀ,1]] | 7 | R ∈ SO(3),s > 0 | 角度与长度比例;所有方向统一缩放 | 单目 SLAM 尺度对齐、未知统一尺度 |
| Aff(3) | [[A,t],[0ᵀ,1]] | 12 | A ∈ GL(3),det(A) ≠ 0 | 直线、平行关系与仿射组合 | 图像/三维数据变换、非刚性前处理;不是 6D pose |
| O(3) \ SO(3) | Q,det(Q)=−1 | 3 + 离散分支 | QᵀQ = I,det(Q)=−1 | 距离与角度,但翻转定向 | SVD 配准中的反射失败、轴约定镜像排错 |
SO(3) and SE(3)
群结构让变换链可以可靠复合:单位元表示不运动,逆元反向翻译坐标,结合律允许重新加括号。矩阵乘法通常不交换,因此动作顺序不能随意调换。
R = [[0,−1,0],[1,0,0],[0,0,1]]
p = [1,0,0]ᵀ
p′ = Rp+t = [1,3,3]ᵀ 用 T⁻¹ 恢复时先减去 t,再乘 Rᵀ:Rᵀ(p′−t)=[1,0,0]ᵀ。若直接对 t 取负并按错误顺序计算,就无法回到原点。
Interactive Rigid Geometry Lab
第一个视图切换刚体、相似、仿射和反射;第二个视图真正执行 SE(3) 指数/对数映射;第三个视图比较左右乘更新,并用 Adjoint 证明两套局部坐标如何表达同一物理增量。
Interactive · Rigid Geometry
Classification
det(A)
Length ratio
Normal check
Wrong rule
Exponential map
SO(3) left Jacobian
Logarithm recovery
Left coordinates
Right coordinates
Result gap
Lie Group and Lie Algebra
SO(3) 和 SE(3) 可以连续变化,因此同时具有群与光滑流形结构。Lie algebra 是单位元处的切空间;它是普通向量空间,适合描述速度、小增量、优化步和局部高斯不确定性。
全局、非线性、可复合的有限刚体运动。
4×4 矩阵形式的单位元切向量。
本站固定先平移切向量 ρ,后旋转向量 φ。
若 ξ 随时间恒定,T(s)=Exp(sξ^) 描述一条螺旋运动。φ 给角运动,ρ 与旋转耦合后形成有限平移。
Gauss–Newton / LM 求 δξ,再用 Exp 把更新送回 SE(3),保证每次迭代仍是合法刚体。
6×6 Σ 必须说明左/右扰动、参考 pose、frame、分量顺序与平移单位,否则无法正确传播或比较。
Retraction, Jacobian and Adjoint
同一个六维数组放在 T 左边或右边,会在不同坐标系中解释。二者都可建立正确优化器,但 residual、Jacobian、协方差和更新规则必须成套一致。
| 约定 | 更新 | 对 y=Tp 的一阶作用 | 点 Jacobian | 几何语义 |
|---|---|---|---|---|
| 左扰动 / target-frame | T ← Exp(δξₗ^) T | y = Tp 时,δy ≈ δρₗ − [y]×δφₗ | [I, −[y]×] | 增量在输出 / 世界 / 相机 target frame 中表达 |
| 右扰动 / source-frame | T ← T Exp(δξᵣ^) | y = Tp 时,δy ≈ Rδρᵣ − R[p]×δφᵣ | [R, −R[p]×] | 增量在输入 / 物体 / 机体 local frame 中表达 |
| Adjoint 等价转换 | δξₗ = AdT δξᵣ | Exp(δξₗ^)T = T Exp(δξᵣ^) | Σₗ = AdT Σᵣ AdTᵀ | 同一物理微扰的两套六维坐标,而不是两种不同运动 |
Errors Are Also Geometric Objects
矩阵逐元素差、Euler 角逐分量差和四元数 L2 都受表示选择影响。更稳定的做法是先构造相对变换,再用 Log 得到局部误差;之后根据任务尺度或协方差选择如何加权。
eₜ=‖t_est−t_gt‖ 有长度单位;任何综合阈值必须写单位与对象尺度。
SO(3) 主值角位于 [0,π];Euler 分量差可能在 ±180° 处不连续。
若 Σ 合法且 frame 一致,可用 eᵀΣ⁻¹e;这比随意设“1 m = 1 rad”更有意义。
抓取、装配和投影对误差方向的敏感度不同,最终还需任务 Jacobian 或成功率。
A Shared Mathematical Interface
领域之间主要差在状态命名、观测残差和任务约束;变换复合、局部更新、Adjoint 与误差传播仍是同一套机制。
| 领域 | 典型状态 | 典型残差 | 本章数学的作用 |
|---|---|---|---|
| 6D 物体位姿 | TCO ∈ SE(3) | 重投影、轮廓、深度、表面或特征残差 | 网络可预测任意表示,但求解、精修和误差最终必须回到刚体流形 |
| 视觉 SLAM / BA | TWC、landmarks、尺度或速度偏置 | 跨帧重投影、IMU 预积分、回环和相对 pose | 每次迭代在切空间求 δξ,再用左/右 retraction 更新 pose,不能直接相加 4×4 矩阵 |
| 机器人运动学 | TBE(q)、TET、手眼外参 | 末端位置/姿态、闭环约束、标定方程 | twist、Adjoint 和 Jacobian 把关节速度、工具速度和不同 frame 的扰动连接起来 |
| 机器人抓取 | TBO、TOG、TBG | 抓取位姿误差、接触、碰撞、可达性 | object-to-grasp 与视觉 object pose 复合;误差必须转换到任务真正敏感的 frame |
Failure Modes
把 frame、变换方向、分量顺序、更新侧、角度和长度单位写进 API 类型、日志和测试。只有这样,数值正确的函数才能组成语义正确的系统。
| 高频错误 | 表现 | 最低成本修复 |
|---|---|---|
| 把点和方向都写成 w=1 | 平移错误地加到方向、轴或速度上 | 对点用 [p;1],对自由向量用 [v;0];分别写单元测试 |
| 用 A 直接变换一般仿射法向 | 非均匀缩放或 shear 后法向不再垂直表面 | 使用 A⁻ᵀn 并重新单位化,检查 n′ᵀd′≈0 |
| 对 4×4 pose 逐元素做 SGD 更新 | R 离开 SO(3),det 与正交性漂移 | 在切空间优化 δξ,再通过 Exp / retraction 更新;必要时用 SVD 投影 |
| 把 twist 的 ρ 当成最终 t | 有限角度时忽略 Jₗ(φ),轨迹与 Jacobian 错误 | 明确 ξ 顺序和 Exp 公式;纯平移之外计算 t=Jₗρ |
| 左 Jacobian 配右扰动 | 梯度方向和协方差 frame 不一致,收敛慢或直接发散 | 冻结 boxplus 定义,解析 Jacobian 与有限差分按同一侧对照 |
| 用同一六维数字比较左右更新 | 把 local 与 target frame 的坐标当作同一物理增量 | 通过 δξₗ=AdTδξᵣ 转换后再比较 |
| Exp / Log 在零角和 π 附近直接套通式 | 0/0、灾难性消减、轴符号不稳定 | 小角度使用级数;接近 π 使用稳定分支并接受主值/轴符号不唯一 |
| 把米和毫米直接塞进同一 se(3) 范数 | 旋转与平移权重无物理意义,阈值随单位改变 | 分开报告或用任务尺度/协方差白化后组合 |
inverse(T) · T ≈ I Exp(Log(T)) ≈ T Log(Exp(ξ)) ≈ ξ · principal branch det(R) ≈ +1 RᵀR ≈ I Exp(AdT ξ)T ≈ T Exp(ξ) (Ad A·B) ≈ Ad A · Ad B analytic J ≈ central difference J Primary & Technical Sources