坐标系与坐标变换:WGS84、UTM、ENU、车身坐标系、传感器坐标系,以及齐次变换矩阵

做高精地图和定位,说白了就是在跟坐标系打交道。我刚开始接触这行的时候,被各种坐标系绕得晕头转向。后来踩了不少坑,才慢慢理清楚。今天咱们就把这些坐标系和变换关系彻底讲明白。

1. 全球坐标系:WGS84

WGS84 是个什么概念?你可以把它想象成一个巨大的地球模型。GPS 卫星发下来的信号,给的就是 WGS84 坐标。它用经度、纬度、海拔高度来描述一个点。

举个例子,北京天安门的 WGS84 坐标大概是:

  • 经度:116.397°E
  • 纬度:39.908°N
  • 海拔:约 44 米

嗯,这里要注意。WGS84 的纬度、经度是角度单位,不是长度单位。你没法直接用加减法算距离。我在项目中遇到过有人直接用经纬度差值算距离,结果偏差大得离谱。

⚠️ 避坑指南
我曾经在融合 GPS 和 IMU 数据时,忘记把 WGS84 转成平面坐标系。结果卡尔曼滤波直接发散。记住:WGS84 只适合做全局定位,不适合做局部运算。

2. 投影坐标系:UTM

UTM 把地球表面切成 60 个带,每个带 6 度宽。它把球面上的点投影到平面上,这样就能用米来做单位了。

UTM 坐标长这样:

  • 东向(Easting):从中央经线往东多少米
  • 北向(Northing):从赤道往北多少米
  • 带号:比如 50N

我个人的习惯是,在自动驾驶的感知模块里,全部用 UTM 坐标。因为激光雷达、相机算出来的距离都是米,跟 UTM 天然匹配。

💡 小技巧
如果你在跨带区域做标定,比如北京和天津分属不同 UTM 带,建议统一到一个带。否则坐标跳变会让你怀疑人生。

3. 局部坐标系:ENU

ENU 是东-北-天坐标系。它是个右手系:

  • X 轴指向东
  • Y 轴指向北
  • Z 轴指向天

ENU 特别适合做车辆周围的局部定位。比如你站在天安门,ENU 原点就在你脚下。往东走 100 米,坐标就是 (100, 0, 0)。

你想想看,ENU 和 UTM 的区别在哪?UTM 是固定的,ENU 是跟着你走的。在标定过程中,我们经常把 UTM 原点平移到车辆位置,就变成了 ENU。

4. 车身坐标系

车身坐标系是固定在车上的。一般定义:

  • X 轴:车头方向
  • Y 轴:车身左侧
  • Z 轴:车顶方向

这个坐标系会随着车动。我在做传感器标定时,所有传感器的外参都是相对于车身坐标系的。比如激光雷达装在车顶,它的坐标就是 (0, 0, 1.8) 米左右。

🔑 关键点
车身坐标系的原点通常在后轴中心。为什么?因为车辆的动力学模型都是基于后轴中心计算的。如果你把原点放在车头,转弯半径的计算会变得很麻烦。

5. 传感器坐标系

每个传感器都有自己的坐标系:

传感器 X 轴 Y 轴 Z 轴
激光雷达 正前方 左侧 上方
相机 右方 下方 前方
IMU 前向 左侧 上方

注意,相机坐标系比较特殊。它的 Z 轴是朝前的,X 轴朝右,Y 轴朝下。这是图像处理领域的惯例。我第一次做相机和激光雷达联合标定时,就被这个搞晕了。

6. 齐次变换矩阵

齐次变换矩阵是连接所有坐标系的桥梁。它长这样:

| R11  R12  R13  tx |
| R21  R22  R23  ty |
| R31  R32  R33  tz |
|  0    0    0    1  |

左上角 3x3 是旋转矩阵,右上角 3x1 是平移向量。用这个矩阵,你可以把任意点从一个坐标系变换到另一个坐标系。

举个例子,把激光雷达的点变换到车身坐标系:

P_body = T_lidar_to_body * P_lidar

其中 T_lidar_to_body 就是齐次变换矩阵。我建议你把这个矩阵写成 4x4 的形式,这样乘法运算特别方便。

💡 实战经验
我在做多传感器融合时,维护了一个坐标系变换树。每个传感器到车身的变换矩阵都存起来。这样不管数据从哪个传感器来,都能统一到车身坐标系。

7. 坐标系变换链

实际应用中,坐标变换是链式的。比如:

  1. GPS 给出 WGS84 坐标
  2. 转成 UTM 平面坐标
  3. 平移到车辆位置变成 ENU
  4. 再转到车身坐标系
  5. 最后转到传感器坐标系

这条链上的每一步,都是一个齐次变换矩阵。把它们乘起来,就得到最终的变换关系。

⚠️ 常见错误
我曾经犯过一个低级错误:变换矩阵的乘法顺序搞反了。记住,矩阵乘法不满足交换律。先旋转后平移,和先平移后旋转,结果完全不同。

8. 知识体系总览

下面这张图展示了本章的核心逻辑:

坐标系与坐标变换知识体系 WGS84 经纬度 + 海拔 UTM 东向 + 北向 + 带号 ENU 东 + 北 + 天 投影 平移 车身坐标系 后轴中心原点 传感器坐标系 LiDAR / Camera / IMU 齐次变换矩阵 4x4 旋转 + 平移 坐标变换 外参标定 矩阵表示 核心逻辑:WGS84 → UTM → ENU → 车身 → 传感器 每一步都用齐次变换矩阵表示

说白了,坐标系变换就是一套数学工具。它让我们能把不同来源的数据统一到一个框架下。我做了这么多年标定,最大的体会就是:坐标系搞清楚了,标定就成功了一半。

📌 总结
  • WGS84:全球定位,角度单位
  • UTM:平面投影,米单位
  • ENU:局部坐标系,以车辆为中心
  • 车身坐标系:固定在后轴中心
  • 传感器坐标系:每个传感器独立定义
  • 齐次变换矩阵:4x4 矩阵,连接所有坐标系

嗯,今天就聊到这儿。这些坐标系和变换矩阵,是后续所有标定工作的基础。你只要把这块吃透了,后面学传感器标定、融合定位都会轻松很多。

可可精品资料库