想象你正在排演一支双人舞。舞伴A是一位“眼睛”——她能看清舞台灯光、观众座位和地板标记线,负责“看”世界;舞伴B是一位蒙眼的“体感大师”——他感受不到光线,却能精确感知自己每一瞬间的加速与旋转,负责“feel“身体。两人以固定的舞姿相拥(就像相机与IMU被焊在同一块电路板上),组成一套”视觉惯性系统“。要让这支舞天衣无缝,两人必须先弄清楚两件事:彼此”怎么站“——A在B的什么方位、各自面朝哪里、重心差多远;以及是否踩着同一个节拍。前者就是”相机-IMU外参“,后者是”时间对齐“。外参标定,就是设计一场精心排练,把这对舞伴的站位与节拍差一点点量出来。此后无论怎么旋转跳跃,系统都能把”看见的“与”感受到的”融合成一致的世界模型。本文将沿着这支舞,拆解外参标定的原理、方法与工程陷阱。
相机-IMU外参标定是视觉惯性里程计(VIO)、SLAM、AR/VR与机器人定位系统的“出厂必修课”。掌握它,你就能理解传感器融合的第一性原理,并为真实产品设计可靠的标定与自校准方案。
目录
可视化演示
演示相机-IMU外参标定:时间对齐、旋转平移标定与联合优化,保障视觉惯性系统的状态估计精度与融合质量。
本节配有交互动效(进入视口后自动加载,约 3KB)。
时间对齐 相机帧 IMU采样 tcam≈timu 时间戳对齐是外参标定的前提
认清两位舞伴:标定基础概念
排练开始前,导演必须把两位舞伴的基本情况摸清:眼睛舞者站在哪、负责看什么;体感舞者站在哪、负责感受什么。两人各有各的“参照系”——眼睛习惯用视线方向描述世界(相机坐标系),体感大师习惯用前后左右描述运动(IMU坐标系)。坐标系不同,同一件事物在两人口中的描述就完全不同。
把坐标系想成每个人自带的“语言”。相机系的原点在光心,z轴朝前看;IMU系的原点在其内部敏感元件上。所谓相机-IMU外参,就是这两种语言之间的“翻译规则”:$\mathbf{R}_{ic}$ 描述两人面朝方向的差异(旋转),$\mathbf{t}_{ic}$ 描述两人重心之间的距离(平移)。
技术上,IMU输出三轴角速度与三轴加速度,测量的是“自身”的运动;相机通过图像特征点观测“外部”世界。眼睛在黑暗中失灵,体感却能硬撑一小会儿;体感会漂移,眼睛却能纠正航向——两者天生互补。要让它们协同工作,就需要外参把任意相机观测转换到IMU视角。同一个三维点 $P$,在相机系里记作 $\mathbf{p}^{c}$,在IMU系里记作 $\mathbf{p}^{i}$,两者之间满足刚体变换:
认识舞伴只是第一步。既然坐标系怎么摆已经清楚了,下一步就该解决两人最大的矛盾——节拍不同步。
- 相机系坐标$\mathbf{p}^{c}$ 是三维点在相机坐标系中的坐标,相当于眼睛舞者报出的“我看到的位置”
- 旋转对齐方向$\mathbf{R}_{ic}$ 是一个3×3旋转矩阵,把方向从相机系转到IMU系,相当于把眼睛舞者的“朝向”调整到和体感大师一致
- 平移补偿距离$\mathbf{t}_{ic}$ 是相机光心到IMU原点的位移向量,补偿两人重心的距离差
踩准同一个节拍:时间同步与对齐
排练时最头疼的事,是两位舞伴听的不是同一个音响。眼睛舞者踩着乐队的现场演奏(图像帧率通常30Hz),体感大师却戴着耳机听录音带(IMU高达200-1000Hz)。两人心里各有一个独立晶振驱动的时间轴,总以为自己在节拍上,实际上差了半拍。
这“半拍”就是时间偏移 $\delta t$,通常有几毫秒到几十毫秒。低速场景看不出问题,可一旦急转、急停,一帧图像对应的“真实时刻”和IMU读数对不上,视觉特征与惯导积分就会“打架”,融合出的姿态像喝醉了一样抖动。解决手段分三层:硬件时钟同步(共用PPS或触发线,从源头消除偏差)、软件插值对齐(把高频IMU重采样到图像时刻)、以及把 $\delta t$ 也当作参数放进优化里估计。
估计 $\delta t$ 的经典思路,是利用旋转运动时两路传感器测到同一条“角速度曲线”这一事实。曲线形状相同,只是错开了一个时间差。我们不断平移IMU曲线,寻找与相机曲线最吻合的位置:
节拍统一了,两位舞伴总算站在同一条时间线上。接下来正式量站位——先看两人各自面朝哪里。
- 错位观察$\boldsymbol{\omega}_{k}^{c}$ 是相机在第 $k$ 时刻测到的角速度,$\boldsymbol{\omega}^{i}$ 是IMU同时刻的读数,两者之间隔着一个未知的 $\delta t$
- 候选平移把IMU曲线整体平移 $\delta t$ 后再与相机比较,相当于让体感大师“提前半拍”或“延后半拍”
- 残差度量平移后两向量的差取二范数平方,衡量“没对上”的程度
- 搜索最小对所有时刻求和,遍历或迭代 $\delta t$ 使总残差最小,得到时间偏移估计
对齐面朝方向:旋转外参标定
两位舞伴相拥定格时,眼睛舞者面朝舞台左侧,体感大师却面朝舞台右侧——他们“看到”的同一个转动方向,各自的描述完全不同。旋转外参 $\mathbf{R}_{ic}$ 要回答的正是这个问题:同一场旋转,在两人口中分别怎么说?
突破口在于:既然两人被刚性地绑在一起,那么无论怎么转,他们测到的角速度向量之间只差一个固定的旋转——这就是角速度约束。让设备绕多个轴做旋转运动(相当于编一组“旋转舞步”),同时记录相机与IMU的角速度读数,就能把 $\mathbf{R}_{ic}$ 解出来。求解方法是最小二乘:找一个旋转矩阵,使得旋转后的相机角速度与IMU读数尽量重合。
面朝方向对齐了。但舞伴的站位还有个关键参数没量出来——两人重心的距离。这正是平移外参的活儿。
- 读取角速度对第 $k$ 个时刻,相机与IMU各自测到同一转动的角速度向量,它们是同一物理量在两种语言下的表达
- 旋转对齐候选旋转 $\mathbf{R}$ 把相机系角速度转到IMU系,理想情况下应与IMU读数完全一致
- 残差度量两向量之差取二范数平方,记录这一次“没对上”的代价
- 全局寻优把所有时刻的代价累加,在旋转群 $SO(3)$ 上搜索令总和最小的 $\mathbf{R}$
量出彼此站位:平移外参标定
面朝方向一致后,导演还要知道体感大师站在离眼睛舞者多远的地方。这个“距离”就是平移外参 $\mathbf{t}_{ic}$。它为什么不直接量?因为传感器封装在设备内部,物理测量既不方便也不够准,必须靠运动“逼”它现身。
平移的现身方式很巧妙:杠杆臂效应。想象体感大师站在离旋转中心有一段距离的位置——当舞伴们旋转时,他除了感受到整体的运动,还会额外感到一股把他往外“甩”的力(向心加速度),以及角速度变化时的切向加速度。这两股“额外感受”完全由站位距离 $\mathbf{t}_{ic}$ 决定。于是,通过分析IMU读数中与旋转耦合的加速度分量,就能反解出站位:
旋转和平移分别有了着落,但单独求解容易互相影响。要追求极致精度,就得把整场排练的所有动作放在一起通盘打磨——这就是联合优化。
- 运动项$\mathbf{R}_{ic}\left( \mathbf{a}^{c}-\mathbf{g} \right)$ 把相机系加速度扣除重力后旋转到IMU系,相当于舞伴整体的移动
- 切向项$\dot{\boldsymbol{\omega}}\times\mathbf{t}_{ic}$ 是角加速时杠杆臂产生的切向加速度,角速度变化越猛越明显
- 向心项$\boldsymbol{\omega}\times\left( \boldsymbol{\omega}\times\mathbf{t}_{ic} \right)$ 是匀速旋转时杠杆臂产生的向心加速度,始终指向旋转轴
- 合成求解等式左边是IMU实测加速度(比力),右边是运动项加杠杆臂项,联立多组数据即可解出 $\mathbf{t}_{ic}$
整场排练精修:联合优化估计
前面的方法像“分步排练”:先对节拍,再调面向,最后量站位。但舞伴之间的配合是耦合的——面向调错一点,站位估计也会跟着歪。联合优化的思路,是把所有未知量装进同一个“状态向量”,用整段排练的所有观测数据一起精修,让每个参数都为全局一致性服务。
状态向量 $\mathbf{x}$ 里装着:外参旋转 $\boldsymbol{\theta}_{ic}$、平移 $\mathbf{t}_{ic}$、IMU陀螺仪零偏 $\mathbf{b}_{g}$、加速度计零偏 $\mathbf{b}_{a}$、时间偏移 $\delta t$。代价函数则同时包含视觉残差(特征点重投影误差)与惯性残差(IMU预积分误差),外加各参数的先验约束。整体写成一个带马氏加权的非线性最小二乘问题:
整场排练精修一遍后,标定结果已经相当可靠。但设备真正上场后,站位还会偷偷变化——这就需要在线标定登场了。
- 状态向量$\mathbf{x}$ 把待估计参数全部装入一个向量——外参旋转、平移、两类零偏、时间偏移,缺一不可
- 残差定义$\mathbf{r}_{k}(\mathbf{x})$ 是第 $k$ 时刻“预测减实测”之差,由视觉重投影误差与IMU预积分误差拼接而成
- 马氏加权$\left\| \mathbf{r} \right\|_{\boldsymbol{\Sigma}}^{2}=\mathbf{r}^{T}\boldsymbol{\Sigma}^{-1}\mathbf{r}$ 用协方差 $\boldsymbol{\Sigma}$ 给每个残差定权重——噪声大的测量说话分量轻
- 迭代求解用高斯牛顿或LM法反复更新状态,直到残差不再下降:$\left( \mathbf{J}^{T}\mathbf{W}\mathbf{J} \right)\Delta\mathbf{x}=-\mathbf{J}^{T}\mathbf{W}\mathbf{r}$
边跳边自我纠偏:在线标定方法
排练再充分,正式演出时舞伴也可能因为紧张、疲劳而悄悄移位。现实中的设备也一样:温度升高让壳体热胀冷缩、跌落碰撞让传感器微微错位、螺丝松动改变相对位姿——出厂时标定好的外参,用着用着就“过时”了。在线标定就是让系统“边跳边纠偏”。
在线标定的主流框架是滑动窗口:系统运行时,始终维护最近一段时间的传感器数据(窗口),把外参作为状态量加入视觉惯性里程计的联合优化中,每个时刻都在用最新数据微调外参估计。窗口不断向前滑动,旧数据被丢弃、新数据被纳入,外参估计也随着“新鲜”的激励持续更新。与之配套的是可观测性分析——系统要持续判断当前运动是否足以支撑外参估计:
在线标定让系统有了“自愈”能力。但无论是离线还是在线,标定效果都取决于一件事——你给系统编排了怎样的运动。最后我们来谈谈工程落地。
- 可观测矩阵$\mathcal{O}$ 由系统状态方程与观测方程的偏导数堆叠而成,反映“这段运动能否暴露状态参数”
- 满秩判据当 $\mathcal{O}$ 的秩等于状态维数时,所有参数都可辨识;这就是可观测的数学条件
- 秩亏退化若秩不足,说明某些外参方向在当前运动下“隐身”,估计不可靠,应暂停更新
编排与选角之道:工程实践与选型
一位好导演知道,排练效果取决于舞步编排:只做慢动作,看不出配合问题;只绕一个方向转,某些站位偏差永远藏得住。标定亦是如此。工程实践的第一要义就是设计“激励路径”——让设备做包含多轴旋转与各方向平移加速的六自由度运动,把外参的每个维度都“激活”。实践中常用“8字舞”轨迹:手持设备在空中画8字,既涵盖多轴旋转,又包含持续的方向变化,是经典且高效的激励方式。
选型层面,离线标定与在线标定各有拥趸。离线方案(如Kalibr)在受控环境下采集数据、离线联合优化,精度高、可复现,适合产线出厂标定与研发验证;在线方案(如VINS-Mono、OpenVINS中的在线外参估计)融入实时系统,鲁棒性强,能应对温度漂移与碰撞,适合消费级产品和长期运行场景。两者并非互斥——许多产品先离线精标定出初值,再靠在线标定持续维护。
最后,标定质量要用指标说话:用标定结果重新预测IMU读数,计算与实测的均方根残差:
从认清舞伴、对齐节拍,到量准站位、整场精修,再到边跳边纠偏——相机与IMU这对舞伴终于配合得天衣无缝。把这套认知带回工程中,你就能为任何视觉惯性系统设计出可靠的标定与维护方案。
- 预测读数用标定好的 $\mathbf{R}_{ic}$ 把相机角速度旋转到IMU系,作为“预测值”
- 逐点残差预测值与IMU实测值求差并取平方,记录每个时刻的偏差
- 均方根汇总对所有时刻的偏差求平均再开方,得到整体标定质量评分
AI 应用场景
AR/VR头显的在线自校准
阶段:感知与定位 / 在线状态估计
解决的问题:AR/VR头显运行时发热严重,壳体热胀冷缩会改变相机与IMU的相对位姿;若外参固定不变,视觉惯性里程计(VIO)会逐渐漂移,虚拟物体在现实世界中“站不稳”。传统做法是返厂重标或人工干预,成本高且打断用户体验。
具体案例:某主流MR头显在开机后自动运行滑动窗口在线标定:用户正常转头、走动时,系统持续把外参纳入联合优化;当检测到可观测性不足时冻结外参,避免错误更新。实测在连续使用2小时后,外参漂移被实时修正,虚拟物体的稳定度显著提升。
无人机产线的自动化出厂标定
阶段:标定与融合 / 产线集成
解决的问题:每架无人机装配后,相机与IMU的安装位置都有毫米级差异,手工标定效率低、一致性差。需要一套自动化流程,在产线上快速、准确地完成外参标定。
具体案例:某无人机产线部署了自动化标定工位:无人机被固定在旋转台上,自动执行“8字激励”轨迹;相机拍摄棋盘格标定板,IMU同步记录运动数据;后台脚本完成时间对齐、旋转/平移标定与联合优化,标定残差实时显示,合格则写入出厂参数。单台标定时间从人工的30分钟压缩到3分钟以内。
扫地机器人长期运行的外参漂移监测
阶段:运维与鲁棒性 / 可靠性维护
解决的问题:扫地机器人运行中常发生碰撞、被搬动、经历温度变化,外参可能突然改变,导致VIO建图漂移、墙壁“穿模”、回充失败。传统方案只能等用户报修。
具体案例:某扫地机器人厂商在系统中加入“残差异常检测+在线重标定”:当视觉惯性联合优化的平均残差连续超过阈值时,判定外参可能漂移,自动触发在线标定流程,利用当前环境的自然特征重新估计外参;若仍无法收敛,则提示用户“请放置到充电座重新初始化”。该方案使地图漂移客诉率下降60%。
Python 演示
import numpy as np def rodrigues(axis, angle): """轴角转旋转矩阵, 用于构造仿真外参真值.""" axis = axis / np.linalg.norm(axis) K = np.array([[0.0, -axis[2], axis[1]], [axis[2], 0.0, -axis[0]], [-axis[1], axis[0], 0.0]]) return np.eye(3) + np.sin(angle) * K + (1.0 - np.cos(angle)) * (K @ K) def calibrate_rotation(w_cam, w_imu): """利用角速度约束最小二乘求解旋转外参 R_ic.""" H = np.zeros((3, 3)) for wc, wi in zip(w_cam, w_imu): H += np.outer(wi, wc) U, _, Vt = np.linalg.svd(H) R_est = U @ Vt if np.linalg.det(R_est) < 0: U[:, -1] *= -1 R_est = U @ Vt return R_est def rotation_error(R1, R2): """计算两个旋转矩阵间的角度误差(度).""" cos_theta = (np.trace(R1 @ R2.T) - 1.0) / 2.0 return np.degrees(np.arccos(np.clip(cos_theta, -1.0, 1.0))) def main(): rng = np.random.default_rng(42) n = 300 axes = rng.normal(size=(n, 3)) angles = 0.5 + 1.5 * rng.random(n) w_cam = np.array([a / np.linalg.norm(a) * s for a, s in zip(axes, angles)]) R_true = rodrigues(np.array([0.2, 0.3, 0.8]), 1.1) w_imu = (R_true @ w_cam.T).T + 0.03 * rng.normal(size=(n, 3)) R_est = calibrate_rotation(w_cam, w_imu) err = rotation_error(R_est, R_true) print("旋转外参估计误差(度): {:.4f}".format(err)) assert err < 1.0, "标定误差过大" if __name__ == "__main__": main()
w_cam = np.array([a / np.linalg.norm(a) * s for a, s in zip(axes, angles)])生成300组随机方向的角速度向量,模拟相机在“多轴旋转激励”下的读数w_imu = (R_true @ w_cam.T).T + 0.03 * rng.normal(size=(n, 3))用外参真值把相机角速度旋转到IMU系并叠加噪声,模拟IMU实测H += np.outer(wi, wc)累加外积构造3×3矩阵H,这是角速度约束最小二乘的核心累加U, _, Vt = np.linalg.svd(H)对H做奇异值分解,一步得到旋转外参的闭式解if np.linalg.det(R_est) < 0:检查行列式,确保结果是合法旋转矩阵(行列式为+1,而非反射)rotation_error(R_est, R_true)用旋转矩阵夹角公式计算估计值与真值的角度误差,验证标定精度
常见误区
误区我听说旋转外参影响最大,平移才几厘米,对结果没什么影响,标旋转就够了。
正解平移通过“杠杆臂”直接进入IMU加速度模型:转动时离旋转中心越远,向心加速度越大,忽略 $\mathbf{t}_{ic}$ 会在急转时引入显著加速度误差;同时平移还影响特征点在不同时刻的投影位置。好比双人舞中,体感大师的读数不仅取决于整体运动,还取决于他站在离眼睛舞者多远的位置——站位错了,旋转再准也白搭。
为何常见:旋转对姿态估计的影响直观可见,而平移误差在低速场景下并不明显,初学者容易忽略;部分简化的教程只讲旋转标定,进一步强化了误解。
误区相机30Hz、IMU几百赫兹,两者时间差也就几毫秒,随手设成0就能跑。
正解高速运动下角速度可达每秒数百甚至上千度,几毫秒就对应零点几到几度的姿态误差;对加速度做积分时误差更会被放大。时间对齐要做的不是“精确到微秒”,而是把 $\delta t$ 估计出来并补偿。相当于一支舞里两人节拍差半拍——慢舞看不出来,快节奏立刻乱套。
为何常见:时间同步错误不像数值错误那样直接报错,系统“能跑”,只是精度悄悄下降,问题很难被归因到时间上。
误区出厂标定完把参数写死,产品用到退役就行,没必要搞在线标定。
正解温度变化、跌落碰撞、螺丝松动都会让外参漂移。AR头显发热后壳体形变即可让外参明显改变;无人机摔过一次后,原先的标定结果基本作废。因此主流产品都引入在线标定,在运行时持续修正,把外参当作“活参数”而非“死常数”。
为何常见:刚体连接看起来是固定的,但现实中的“刚”是相对的——热胀冷缩与机械形变无处不在,只是平时不易察觉。
误区激励不用设计,拿着设备随便晃两分钟,数据够多就能标出来。
正解外参可观测性依赖激励方向。纯旋转难以观测平移中沿旋转轴的分量;静止或匀速直线运动几乎无法观测任何外参。必须设计包含多轴旋转与平移加速的“六自由度激励”,像编排舞步一样覆盖各个方向。否则优化即使收敛,也可能是“自欺欺人”的局部解——残差小,但结果错。
为何常见:“动一动就好”的直觉忽略了可观测性数学;且优化算法总能输出一个数值结果,让人误以为它有效。
误区标定结果用roll/pitch/yaw打印出来多直观,比四元数那四个数好懂多了。
正解欧拉角存在万向锁与旋转顺序歧义:同一姿态可对应多组角度组合,在优化迭代中容易遇到奇异性,导致雅可比矩阵退化。工程上存储与优化必须用旋转矩阵或四元数,欧拉角只适合人看的展示层。好比舞伴的面向可以用“方位角+俯仰角”描述,但真正计算走位时必须用无歧义的数学表示。
为何常见:人脑习惯用三个角度理解旋转,但三维旋转本质上是李群结构,不是三个独立的实数——用欧拉角做计算是“用错工具”。
面试题
Q1. 相机与IMU外参标定中的“外参”指的是什么?
- A.相机的内部光学参数
- B.两传感器的相对旋转平移← 正确答案
- C.传感器在世界系的位置
- D.IMU陀螺仪的零偏噪声
答案:B。外参描述相机与IMU两个坐标系之间的相对位姿,即旋转 $\mathbf{R}_{ic}$ 与平移 $\mathbf{t}_{ic}$,相当于两位舞伴的“站位关系”。相机内参是镜头自身的光学属性;世界系位置属于定位问题;零偏是IMU的自身误差,都不是外参。
Q2. 为什么视觉惯性系统必须先做时间对齐?
- A.提升图像清晰程度
- B.消除时间偏差引起的误差← 正确答案
- C.降低数据存储开销
- D.提高IMU采样频率
答案:B。相机与IMU各自使用独立时钟,同一物理时刻对应不同时间戳,高动态运动下会引入姿态与位置误差。好比两位舞伴各听各的音响,节拍不对齐,动作必然乱套。图像清晰度、存储开销、采样频率都与时间同步无关。
Q3. 旋转外参标定中最常用的约束关系是?
- A.两路角速度向量应一致← 正确答案
- B.两路图像亮度应一致
- C.两路温度读数应一致
- D.两路电压数值应一致
答案:A。相机与IMU刚性连接,同一旋转运动下两路角速度只是坐标系不同,差一个固定旋转——这是最直接的约束。图像亮度、温度、电压与旋转外参没有物理关联。
Q4. 关于手眼标定方程 AX=XB,下列说法正确的是?
- A.X表示待求的传感器外参← 正确答案
- B.方程形式为 AX=XB← 正确答案
- C.X可用奇异值分解求解← 正确答案
- D.X等于相机内参矩阵
答案:ABC。手眼标定中A、B分别是两个传感器各自的相对运动,X就是要标定的外参;方程AX=XB可通过构造线性系统并用SVD求出X。X与相机内参无关——内参描述镜头光学,外参描述传感器间位姿。
Q5. 下列哪种激励运动最适合标定平移外参?
- A.让机器人静止停放
- B.绕光心做纯旋转
- C.旋转与加速充分激励← 正确答案
- D.匀速直线慢速滑行
答案:C。平移外参通过杠杆臂效应与旋转耦合,需要同时存在旋转和线加速度才能充分激励 $\mathbf{t}_{ic}$ 的各个方向。静止、纯旋转、匀速直线都会让部分方向不可观,标定结果不可靠。
Q6. 在线标定外参通常采用哪种估计框架?
- A.滑动窗口联合优化← 正确答案
- B.PID负反馈控制
- C.固定周期查表法
- D.纯手工离线测量
答案:A。主流在线标定把外参作为状态量加入滑动窗口内的视觉惯性联合优化(或扩展卡尔曼滤波),随新数据持续更新。PID、查表、手工离线测量都不是在线估计框架。
Q7. 绕相机光心做纯旋转时,平移外参的可观测性如何?
- A.平移分量完全可观
- B.平移分量完全不可观
- C.仅部分方向分量可观← 正确答案
- D.与旋转运动形式无关
答案:C。纯旋转时杠杆臂产生向心加速度,但向心加速度只暴露垂直于旋转轴的平移分量,沿旋转轴方向的分量无法被激发,因此平移外参只能部分可观测。若再结合重力方向的信息,可观性会有所改善,但“完全可观”和“完全不可观”都过于绝对。
Q8. 下列哪些做法有助于解决相机与IMU的时间不同步问题?
- A.信号相关搜索对齐← 正确答案
- B.插值重采样对齐← 正确答案
- C.增大IMU量程
- D.硬件触发时钟同步← 正确答案
答案:ABD。信号相关搜索可估计 $\delta t$;插值重采样能把高频IMU对齐到图像时刻;硬件时钟同步从源头消除时间偏差。增大IMU量程只改变测量范围上限,与时间同步毫无关系。
Q9. 相机-IMU联合优化中,代价函数通常由哪些残差构成?
- A.视觉重投影误差← 正确答案
- B.IMU预积分误差← 正确答案
- C.图像亮度一致性
- D.编码器里程计残差
答案:AB。经典联合优化把视觉重投影误差与IMU预积分误差放进同一代价函数,再做马氏加权求和。图像亮度一致性属于直接法/光度误差,编码器残差属于轮式传感器,它们都不是相机-IMU联合优化的标准组成。
Q10. 为什么工程中不直接用欧拉角表示外参并参与优化?
- A.欧拉角存在万向锁问题← 正确答案
- B.欧拉角数值更不精确
- C.欧拉角无法表示旋转
- D.欧拉角与平移不兼容
答案:A。欧拉角在特定姿态下出现万向锁,导数奇异、雅可比退化,且旋转顺序有歧义——同一姿态可对应多组角度。它完全可以表示旋转,数值精度也不存在天然劣势,核心问题是数学结构病态,因此工程上存储与优化都用旋转矩阵或四元数。