4. 坐标表示方法与转换原理

AUV 在任务规划中会同时面对两套坐标语言:一套是描述地球表面位置的经纬度(地理坐标),另一套是便于计算航向、距离和路径的平面坐标(投影坐标)。航点表里写的是经纬度,而路径规划、避碰、PID 制导往往在平面直角坐标中完成,因此必须掌握两者之间的投影转换,以及不同平面坐标系之间的旋转与平移关系。本节围绕墨卡托投影、UTM 投影和刚体变换三个核心展开。

一、地理坐标与平面坐标的本质差异

经纬度是球面(更准确说是椭球面)上的角度量:纬度 φ 表示某点法线与赤道面的夹角,经度 λ 表示该点子午面与本初子午面的夹角。它的优点是全球唯一、无投影变形,缺点是“度”不能直接当“米”用——同样 0.001° 的纬度差在赤道约 111 m,而同样 0.001° 的经度差在纬度 30° 处只有约 96 m。平面坐标则是把椭球面展开到平面上,用米制 x、y 描述位置,距离和角度可以直接做线性运算,但必然引入投影变形。AUV 任务规划的基本策略是:存储与交换用经纬度,计算与控制用平面坐标。

二、墨卡托投影:等角但面积失真

墨卡托投影是等角圆柱投影,其核心性质是“保角”——平面上任意两点连线的方位角与球面上真实方位角一致。这正是航海与 AUV 航向控制最看重的性质:在墨卡托平面上画一条直线,按该直线的方向航行即可保持恒定航向(等角航线)。其正算公式(球面近似)为:

x = R · λ            (λ 为经度弧度,东为正)
y = R · ln(tan(π/4 + φ/2))   (φ 为纬度弧度,北为正)
R = 6378137 m(WGS-84 赤道半径)

反算则用 λ = x/R,φ = 2·atan(e^(y/R)) − π/2。墨卡托的致命弱点是纬度越高,纵向拉伸越剧烈,y 值在极区趋于无穷,因此不适合高纬度作业,也不能直接用平面距离代替真实距离。工程上常用的是“局部墨卡托”:以任务区域中心 (φ₀, λ₀) 为原点,只在小范围内投影,此时比例因子近似为 1/cos φ₀,可把平面米制距离换算回真实距离。

三、UTM 投影:分带、低变形、米制直接可用

UTM(通用横轴墨卡托)把地球按经度每 6° 分为 60 个带,每带中央经线比例因子取 0.9996,从而把带内最大长度变形控制在约 0.1% 以内。每个带以中央经线为 x 轴(东向,Easting),赤道为 y 轴(北向,Northing),并人为给东向坐标加 500000 m 的假东移,避免出现负值;南半球再给北向坐标加 10000000 m 的假北移。AUV 近海作业通常落在某一带内,UTM 坐标可直接当米制平面坐标使用,是路径规划最常用的工作坐标系。

需要特别注意两点:其一,UTM 带号由经度决定,带号 = floor((λ + 180)/6) + 1,跨带作业时不能把两个带的坐标混用,必须先统一到同一带或转到局部平面系;其二,UTM 的北向是格网北(Grid North),与真北存在子午线收敛角 γ,高精度航向解算时需做格网方位与真方位换算:真方位 = 格网方位 + γ。

经纬度 → 平面坐标 → 局部任务坐标的转换链 地理坐标(WGS-84) 纬度 φ = 22.5431° N 经度 λ = 114.0579° E 球面角度量,不可直接算米 航点存储与交换格式 投影正算 UTM 平面坐标 带号 50N,中央经线 117°E E ≈ 213 500 m(含假东移) N ≈ 2 494 800 m 米制、低变形,可直接算距离 平移+旋转 局部任务坐标(ENU) 原点 = 任务起点 (E₀, N₀) x = 东向偏移,y = 北向偏移 航向 ψ 以正北为 0°,顺时针为正 制导、避碰、PID 的工作系 刚体变换(UTM → 局部 ENU,含旋转与平移) x = (E − E₀)·cosθ + (N − N₀)·sinθ y = −(E − E₀)·sinθ + (N − N₀)·cosθ θ:局部系相对 UTM 格网北的旋转角 (E₀, N₀):局部原点在 UTM 中的坐标 注意:旋转与平移不可交换顺序 墨卡托:保角,适合航向 等角航线在图上为直线 高纬纵向拉伸,y 趋于无穷 局部墨卡托比例因子 ≈ 1/cos φ₀ UTM:分带,适合距离 6° 一带,中央经线比例 0.9996 跨带不可混用,需统一带号 真方位 = 格网方位 + 子午线收敛角 γ

四、不同坐标系之间的旋转与平移

投影解决的是“球面到平面”,而旋转与平移解决的是“平面到平面”。AUV 任务中常见的场景是:任务起点在 UTM 中有一个绝对坐标 (E₀, N₀),但制导算法希望以起点为原点、以任务主航向为 x 轴建立局部坐标系。这本质是一个二维刚体变换,包含平移(把原点移到起点)和旋转(把坐标轴转到任务方向)两步。

设局部系相对 UTM 格网北的旋转角为 θ(逆时针为正),则 UTM 点 (E, N) 到局部点 (x, y) 的变换为:

dx = E - E0
dy = N - N0
x =  dx·cosθ + dy·sinθ
y = -dx·sinθ + dy·cosθ

反变换只需把 θ 换成 −θ 并加回原点。这里有两个极易出错的细节:第一,旋转与平移的顺序不能交换,必须先平移到原点再旋转,否则旋转中心错位,整条航迹会整体偏移;第二,θ 的参考方向必须全文统一,本课程约定“以正北为 0°、顺时针为正”,若某段代码采用数学逆时针约定,必须显式换算,否则航向会镜像翻转。三维场景(如带纵倾的 AUV 定深)还需引入绕 z 轴的偏航角 ψ 与绕 x、y 轴的横滚、俯仰,构成完整的旋转矩阵 R = Rz(ψ)·Ry(θ)·Rx(φ),再叠加平移向量 t,即 p_local = R·(p_utm − t)。

五、一个可复现的换算示例

假设任务起点经纬度为 (22.5431° N, 114.0579° E),经投影得 UTM 50N 坐标 E₀ = 213 500.0 m、N₀ = 2 494 800.0 m;任务主航向相对格网北为 30°。现有一航点 UTM 坐标 E = 213 800.0 m、N = 2 495 100.0 m,求其局部坐标:

dx = 300.0, dy = 300.0, θ = 30°
x = 300·cos30° + 300·sin30° = 259.8 + 150.0 = 409.8 m
y = -300·sin30° + 300·cos30° = -150.0 + 259.8 = 109.8 m

结果说明该航点在局部系中位于起点前方约 410 m、左偏约 110 m 处。若把 θ 误取为 −30°,则 y 会变成 −109.8 m,航点被错误地放到右侧,AUV 将朝相反方向修正——这正是坐标系约定不统一最典型的后果。验证方法很简单:把局部坐标反变换回 UTM,应能精确还原 (213 800, 2 495 100),误差应在浮点精度量级(<1e-6 m)。

工程建议:在任务文件中同时记录“坐标系标识 + 带号 + 中央经线 + 旋转角定义”,并在程序入口处做一次正反变换自检。只要正反变换能闭合,就说明投影参数与旋转约定一致,可避免绝大多数“航点整体偏移”类故障。
常见误区:直接用经纬度差乘以 111320 m 当作平面距离。该方法只在赤道附近且小范围内近似成立,纬度 30° 处经度方向误差可达 13% 以上,会导致航点间距和转弯半径计算明显偏大。

小结:墨卡托保角、适合航向表达;UTM 分带、米制低变形、适合距离与路径计算;旋转与平移负责把绝对平面坐标落到任务局部系。三者串联,才构成 AUV 从“经纬度航点”到“可执行制导指令”的完整坐标处理链。