坐标系与姿态表示:载体坐标系、世界坐标系、欧拉角、四元数

在基于IMU的步态检测与计步算法中,坐标系与姿态表示是整个数学模型的基石。IMU输出的原始数据(加速度、角速度、磁场强度)都是相对于其自身内部传感器轴定义的,而步态分析、位移积分、姿态解算则需要在世界坐标系下进行。如果坐标系定义混乱或姿态表示方法选择不当,后续的滤波、融合、步态特征提取都将失去物理意义。本章将系统梳理载体坐标系与世界坐标系的定义与转换关系,深入对比欧拉角与四元数在姿态解算中的优劣,并结合实际步态检测场景给出选型建议。

载体坐标系 (Body Frame) 世界坐标系 (World Frame) X (前向) Y (左向) Z (天向) IMU X (北/东) Y (东/北) Z (重力反方向) 参考原点 旋转+平移 姿态表示方法 • 欧拉角:Roll / Pitch / Yaw • 四元数:q0 + q1·i + q2·j + q3·k 核心转换关系 • 方向余弦矩阵 (DCM) • 四元数 ↔ 欧拉角互转

上图展示了本章的核心框架:左侧为固定在IMU芯片上的载体坐标系(通常以芯片封装方向定义X、Y、Z轴),右侧为步态分析所需的世界坐标系(通常以重力方向定义Z轴,水平面定义X、Y轴)。中间通过姿态表示方法(欧拉角或四元数)建立两者之间的数学映射。下面我们逐一深入。

3.1 载体坐标系与世界坐标系的定义

3.1.1 载体坐标系(Body Frame)

载体坐标系是固定于IMU传感器本身的直角坐标系,其原点位于IMU的测量中心。对于大多数商用IMU(如MPU6050、BMI160、LSM6DS3),芯片表面通常印有坐标轴标识。以常见的右手坐标系为例:X轴指向芯片前方(通常与PCB板边平行),Y轴指向左侧,Z轴垂直芯片表面向上。IMU输出的三轴加速度(ax, ay, az)和三轴角速度(gx, gy, gz)均在此坐标系下定义。

在步态检测中,载体坐标系的物理意义直接决定了数据的解读方式。例如,当人将手机放在裤兜时,手机屏幕朝向人体,此时载体坐标系的Z轴大致指向人体左侧,而X轴指向人体前方。如果直接将载体坐标系的加速度数据用于步频计算,会因设备佩戴方向不同而产生巨大偏差。因此,必须通过姿态解算将数据转换到世界坐标系。

3.1.2 世界坐标系(World Frame)

世界坐标系(又称导航坐标系或全局坐标系)是一个固定不动的参考系,其原点通常选择为IMU上电时的位置或步态测试的起点。世界坐标系的Z轴与重力方向相反(即指向天空),X轴和Y轴位于水平面内,具体指向可根据应用场景定义(如正北、正东或行走方向)。在步态分析中,世界坐标系的优势在于:重力方向始终沿Z轴,因此可以通过加速度在Z轴的分量判断步态的垂直冲击;水平方向的加速度分量则反映了前后和侧向的运动。

对比维度载体坐标系世界坐标系
原点位置IMU芯片测量中心测试起点或参考点
轴定义由芯片封装决定Z轴与重力反向,X/Y在水平面
是否随设备转动是否
典型用途读取原始传感器数据步态特征提取、位移积分
转换需求—需通过姿态矩阵转换

3.2 欧拉角:直观但存在万向节死锁

3.2.1 欧拉角的定义与旋转顺序

欧拉角通过三次绕不同坐标轴的旋转来描述姿态,常见的定义顺序为Z-Y-X(即先偏航Yaw,再俯仰Pitch,最后横滚Roll)。设世界坐标系为W,载体坐标系为B,则从W到B的旋转可表示为:

R = Rz(Yaw) * Ry(Pitch) * Rx(Roll)

其中,Yaw(偏航角)绕Z轴旋转,范围通常为[-π, π];Pitch(俯仰角)绕Y轴旋转,范围[-π/2, π/2];Roll(横滚角)绕X轴旋转,范围[-π, π]。在步态检测中,Pitch角反映了躯干的前倾程度,Roll角反映了侧倾,Yaw角则对应行走方向的变化。

3.2.2 万向节死锁问题

欧拉角最致命的缺陷是万向节死锁(Gimbal Lock)。当Pitch角接近±90°时,第一次旋转和第三次旋转的轴会重合,导致系统丢失一个旋转自由度。例如,当人弯腰捡东西(Pitch接近90°)时,Yaw和Roll的旋转效果变得不可区分,姿态解算会出现奇异值。在步态检测中,虽然日常行走很少达到Pitch=90°,但在跌倒检测、上下坡、跑步等场景中,Pitch角可能短暂接近临界值,导致姿态跳变。

工程警示:在步态检测算法中,如果使用欧拉角进行姿态更新,必须对Pitch角进行限幅处理(如限制在±80°以内),否则解算结果会发散。此外,欧拉角的三角函数运算涉及大量sin/cos计算,在嵌入式平台上会消耗较多CPU周期。

3.3 四元数:无奇异性的优雅表示

3.3.1 四元数的数学定义

四元数是由一个实部和三个虚部组成的超复数,形式为 q = q0 + q1·i + q2·j + q3·k,其中满足 i² = j² = k² = ijk = -1。单位四元数(模长为1)可以唯一表示三维空间中的旋转。其与旋转轴(ux, uy, uz)和旋转角θ的关系为:

q0 = cos(θ/2)
q1 = ux * sin(θ/2)
q2 = uy * sin(θ/2)
q3 = uz * sin(θ/2)

四元数避免了欧拉角的奇异性,且只需4个参数(相比方向余弦矩阵的9个参数),计算效率更高。在步态检测中,四元数被广泛用于姿态融合算法(如Mahony、Madgwick滤波)的核心表示。

3.3.2 四元数与欧拉角的转换

在实际工程中,我们经常需要将四元数转换为欧拉角以便直观理解姿态,或将欧拉角转换为四元数以进行姿态更新。以下给出从四元数到欧拉角的转换公式(Z-Y-X顺序):

Roll  = atan2(2*(q0*q1 + q2*q3), 1 - 2*(q1² + q2²))
Pitch = asin(2*(q0*q2 - q3*q1))
Yaw   = atan2(2*(q0*q3 + q1*q2), 1 - 2*(q2² + q3²))

注意,当Pitch接近±90°时,asin函数的输入可能超出[-1,1]范围,需要做截断处理。在步态算法中,建议直接使用四元数进行积分和滤波,仅在输出可视化或调试时转换为欧拉角。

3.4 坐标系转换在步态检测中的实战应用

3.4.1 从原始数据到世界坐标系的转换流程

在步态检测系统中,坐标系转换的典型流程如下:

  1. 初始化姿态:利用加速度计在静止时的输出估计初始Roll和Pitch(通过atan2(ay, az)和atan2(-ax, sqrt(ay²+az²))),利用磁力计估计初始Yaw。
  2. 姿态更新:使用陀螺仪的角速度数据,通过四元数微分方程 q_dot = 0.5 * q ⊗ ω 进行积分,其中ω为角速度四元数(实部为0)。
  3. 数据转换:将载体坐标系下的加速度 a_body 通过旋转矩阵 R(q) 转换到世界坐标系:a_world = R(q) * a_body。
  4. 重力补偿:从世界坐标系的加速度中减去重力分量(0, 0, g),得到线性加速度,用于步态特征提取。

3.4.2 案例:手机放在裤兜中的步态检测

场景背景:某计步APP需要检测用户将手机放在前裤兜时的步数。手机屏幕朝向人体,顶部朝上,此时载体坐标系的X轴指向人体前方,Y轴指向左侧,Z轴指向天空。

初始现象:直接使用载体坐标系的Z轴加速度进行步频检测,发现波形幅值很小且噪声大,无法准确识别步态周期。

分析过程:由于手机在裤兜中并非完全固定,行走时手机会随腿部运动产生旋转,导致载体坐标系的Z轴并不始终与重力方向对齐。直接使用Z轴数据会丢失垂直方向的冲击信息。

操作步骤:

  • 第一步:采集静止时的加速度数据,计算初始Roll和Pitch,假设Yaw=0(忽略初始朝向)。
  • 第二步:使用Madgwick滤波融合陀螺仪和加速度计数据,实时更新四元数。
  • 第三步:将每个采样点的加速度转换到世界坐标系,提取Z轴(垂直方向)的线性加速度。
  • 第四步:对垂直加速度进行带通滤波(0.5-3Hz),检测波峰作为步态事件。

结果对比:转换前,Z轴加速度的峰峰值约为0.8g,信噪比低;转换后,垂直方向线性加速度的峰峰值达到1.5g,步态周期清晰可辨,计步准确率从82%提升至96%。

复盘经验:坐标系转换是步态检测的"第一公里",如果这一步处理不当,后续所有特征工程(步频、步幅、对称性)都会失真。建议在算法开发初期就建立完整的坐标系转换模块,并设计可视化工具(如实时显示姿态角)来验证转换的正确性。

3.5 常见误区与总结复盘

误区后果正确做法
忽略载体坐标系与设备佩戴方向的关系特征提取方向错误明确设备佩戴方向,必要时进行轴重映射
直接使用欧拉角进行姿态积分万向节死锁导致姿态发散使用四元数进行积分,欧拉角仅用于显示
未进行重力补偿加速度数据包含重力分量,步态特征失真转换到世界坐标系后减去重力
四元数未归一化累积误差导致旋转矩阵非正交每次更新后对四元数进行归一化
忽略磁力计校准Yaw角漂移在无磁干扰环境下校准,或使用GPS辅助

本章总结:坐标系与姿态表示是IMU步态检测的数学基础。载体坐标系是传感器的"母语",世界坐标系是算法的"通用语言",而欧拉角和四元数则是两种翻译工具。在实际工程中,推荐使用四元数作为姿态解算的核心表示,仅在需要直观理解姿态时转换为欧拉角。掌握坐标系转换的完整流程,能够显著提升步态检测算法的鲁棒性和准确性。在下一阶段的课程中,我们将基于本章的姿态表示方法,深入讲解加速度与角速度的预处理技术。