4. 坐标系与变换基础

坐标系与变换是机器人感知的数学基石,几乎每场面试都会涉及。面试官通常通过一个问题考察你的空间理解、数学表达和工程落地能力。本章将高频问题拆解为三个卡片,并给出公司对应侧重点、面试官画像及结构化回答框架。

核心回答框架

明确坐标系定义 确定变换类型 选择表达方式 构建变换矩阵 链式变换与验证 (旋转矩阵/四元数/欧拉角) (刚体/仿射/透视) (链式规则、手眼标定)

高频问答卡片

卡片1:世界坐标系、相机坐标系、像素坐标系的区别与转换

回答框架:先分别定义三个坐标系及其单位/方向,然后给出齐次坐标变换公式:Pworld = Tcam2world · Tpixel2cam · Ppixel。强调内参矩阵K和外参矩阵[R|t]。

简短示例:相机坐标系下点(2,3,5) m,外参旋转为3°俯仰,平移(0.1,0.2,0.3) m,则世界坐标 = R·Pcam + t。

追问:

  • 如果相机有畸变,如何修正后再转换?
  • 深度图如何反投影到3D点?
  • 左乘右乘顺序如何影响结果?

避坑:混淆像素坐标系(u,v)原点在左上角,与图像坐标系(x,y)原点在中心;忘记内参归一化平面;单位不统一(mm vs m)。

卡片2:旋转矩阵、四元数、欧拉角的优缺点与转换

回答框架:列出三种表达的核心公式(如四元数 q = w+xi+yj+zk,旋转矩阵满足 RTR=I,欧拉角绕三个轴依次旋转)。对比:四元数无万向锁、插值平滑;旋转矩阵直观但冗余;欧拉角易理解但有歧义。

简短示例:给定欧拉角 (30°,45°,60°)(ZYX顺序),先转旋转矩阵,再转四元数,验证模长为1。

追问:

  • 什么是万向锁?如何避免?
  • 四元数如何实现Slerp插值?
  • 旋转矩阵轴角表示的关系?

避坑:欧拉角顺序约定不同(ZYX vs XYZ);四元数哈密顿规则中虚部顺序;旋转矩阵行列式为-1代表反射。

卡片3:手眼标定中的坐标系变换链

回答框架:给出标准方程 AX=XB(眼在手)或 AX=ZB(眼固定),A为机器人末端位姿,B为标定板位姿。通过非线性优化或解析法求解X。

简短示例:已知两组对应位姿,用Tsai-Lenz方法求解旋转部分,再解平移。

追问:

  • 手眼标定最少需要几组数据?为什么至少3组?
  • 标定误差来源及如何减少?
  • 能否用纯平移的方法标定?

避坑:忽略噪声影响,直接解线性方程导致奇异;忘记区分眼在手上和眼固定两种场景;标定板不平整带来巨大误差。

公司侧重点分析

公司类型 侧重方向 常见提问
自动驾驶(百度/Apollo) 多传感器融合、外参标定 激光雷达与相机外参标定流程,Ceres优化
机器人(大疆/优必选) 机械臂手眼标定、运动学 眼在手上 vs 眼固定场景设计,Tsai方法
AR/VR(华为/歌尔) 相机与IMU标定、姿态解算 四元数互补滤波、旋转矩阵与欧拉角互转
芯片/视觉方案商(旷视/商汤) 算法优化、数学原理理解深度 推导旋转矩阵导数,Lie群应用

面试官画像

  • 技术深挖型(常见于大厂算法岗):从基础概念一步步追问到数学证明,如“证明旋转矩阵的特征值为1或一对共轭复数”。
  • 工程落地型(常见于初创或量产部门):给定具体传感器型号,要求设计标定流程并考虑实际噪声。
  • 理论推导型(常见于研究院):现场推导SE(3)的指数映射,或者四元数的BCH公式近似。

核心回答框架(结构图)

  1. Step 1 – 识别坐标系:明确问题中的源坐标系和目标坐标系,以及它们之间的物理关系(刚体/仿射)。
  2. Step 2 – 选择表达:根据场景选择旋转矩阵(便于组合)、四元数(便于插值)或欧拉角(便于理解)。
  3. Step 3 – 构建矩阵:写出齐次变换矩阵 [R|t] 或使用4×4矩阵,并检查维度一致性。
  4. Step 4 – 应用链式法则:若有中间坐标系,按顺序左乘或右乘,注意运算符先后。
  5. Step 5 – 验证与可视化:用数值正确性(逆变换、模长)或物理意义(旋转方向)进行快速校验。

完整示例回答

面试问题:“请解释如何将相机坐标系下的3D点投影到像素坐标?”

1. 定义:点P_cam = (X, Y, Z)
2. 归一化平面:x = X/Z, y = Y/Z
3. 加畸变(如果已知):径向畸变 k1,k2 -> 修正 (x', y')
4. 内参投影:u = fx * x' + cx, v = fy * y' + cy
5. 注意Z>0,否则点在相机后方
验证:可将像素点反投影回3D射线,检查一致性。

常见追问

追问方向 考察点
万向锁的本质? 欧拉角奇异性和自由度丧失
四元数乘法为什么不满足交换律? 四元数代数结构和旋转合成
旋转矩阵行列式为什么是1? 正交性和手性约束
如何用李代数表示旋转? SO(3)与so(3)的指数映射

避坑要点

  • ❌ 坐标系方向假设:别默认所有坐标系都是右手系,先与面试官确认。
  • ❌ 齐次坐标混淆:点用(x,y,z,1),向量用(x,y,z,0),否则平移会错误施加。
  • ❌ 外参更新时左乘右乘不清:机器人移动后新位姿 = 原位姿 * 变换,或变换 * 原位姿需要明确。
  • ❌ 忽略非刚性变换:有尺度的仿射变换或投影变换需要单独讨论。
  • ❌ 背公式不理解:能推导旋转矩阵的正交基构造比背公式更容易应对追问。

—— 坐标系与变换,不仅会算,更要会讲。