3. 坐标系基础与AUV导航常用坐标系
AUV 的航点规划与坐标处理,本质上是在几套不同定义的坐标系之间来回换算。如果对坐标系定义、轴向和正负号约定没有统一认识,就会出现“规划航点在水下偏左、执行时却偏右”“深度符号反了”“航向角与期望航向差 180°”这类典型问题。本节先把 AUV 导航中最常用的四套坐标系讲清楚:大地坐标系、地理坐标系(经纬高)、本地水平坐标系(NED/ENU)和载体坐标系,并说明它们之间的转换关系。
一、四套坐标系各自解决什么问题
大地坐标系(ECEF)是以地球质心为原点、随地球一起旋转的三维直角坐标系。通常 Z 轴指向协议地球北极,X 轴指向本初子午线与赤道的交点,Y 轴按右手系确定。它的优点是全球统一、无奇异点,适合做卫星定位解算、大范围航迹存储和多载体协同;缺点是坐标数值巨大(量级为 10⁶ m),且不直观,人很难从一组 ECEF 数值判断“AUV 在哪个海湾”。
地理坐标系(经纬高,LLA)用纬度 φ、经度 λ 和大地高 h 描述位置,是最贴近人类认知和任务书表达的形式。任务规划中“在某某岛东北 500 m、深度 30 m 处设一个航点”,最终往往以经纬度加深度落表。需要注意:AUV 常用的“深度”是相对水面或相对某基准面的垂向距离,与大地高 h 的符号方向相反,二者换算时必须显式处理,不能直接混用。
本地水平坐标系是在某个参考点(原点)处与地球表面相切的直角坐标系,把弯曲地球局部“拉平”,让 AUV 的短距离运动可以用简单的平面几何处理。它有两种常见轴向约定:NED(北-东-地)和 ENU(东-北-天)。NED 的 Z 轴向下为正,与“深度增大”方向一致,是海洋工程和飞控中非常普遍的约定;ENU 的 Z 轴向上为正,与数学上的右手系直觉一致,在机器人与测绘领域常见。两者只是轴向排列不同,本质是同一局部切平面的两种表达。
载体坐标系固连在 AUV 本体上,随载体一起平移和旋转。通常定义 X 轴沿艇体纵轴指向艏部,Y 轴指向右舷,Z 轴指向艇底(构成右手系,即“前-右-下”)。载体坐标系是传感器安装、推力分配和姿态描述的基础:惯性测量单元的安装矩阵、多普勒计程仪测量的对地速度、推进器的推力方向,都要在载体坐标系中表达。
二、转换关系:从经纬高到航点坐标
实际规划中最常走的一条链是:任务书给出经纬度航点 → 转成本地水平坐标做平面几何计算 → 再转成载体坐标系下的期望速度或期望姿态交给控制。第一步 LLA 到本地水平坐标,常用的是以参考点 (φ₀, λ₀, h₀) 为原点的局部切平面近似。设地球平均半径 R,则东向、北向偏移可近似为:
ΔE = (λ - λ₀) · R · cos(φ₀)
ΔN = (φ - φ₀) · R
ΔD = h₀ - h // NED 中向下为正,深度增大对应 ΔD 增大
这个近似在几十公里范围内误差很小,对 AUV 单次任务的航点规划足够用;若任务跨度达到上百公里,就应改用严格的 ECEF 中间转换或考虑椭球曲率。第二步本地水平坐标到载体坐标,本质是一次姿态旋转:设 AUV 的航向角 ψ、纵倾角 θ、横滚角 φ,按约定的旋转顺序(常见为 Z-Y-X,即先航向、再纵倾、最后横滚)构造旋转矩阵 R,则载体坐标系下的向量 v_b = R · v_n。这里最容易出错的是旋转顺序和正负号:航向角通常以北为 0、顺时针为正,而数学上的绕 Z 轴旋转是逆时针为正,二者相差一个符号,必须在代码里显式取反。
三、工程实践中的约定与校验
把上述关系落到代码和任务表里,建议固定几条约定。第一,全文只用一个本地水平约定:若选 NED,则所有航点、速度、深度都以“北东地”表达,深度值直接作为 Z 分量,不再另设“深度”字段;若选 ENU,则 Z 向上,深度需取负。第二,姿态角顺序写进接口文档,例如明确“航向 ψ 以北为 0、顺时针为正;纵倾 θ 抬头为正;横滚 φ 右倾为正”,避免上下游各自理解。第三,转换后回代校验:把算出的本地坐标再转回经纬高,与原始航点比对,偏差应在米级以内;若出现百米级偏差,多半是经纬度单位(度/弧度)或 cos(φ₀) 漏乘。
最后提醒一个常见排障点:当 AUV 报告的航向与规划期望航向相差约 180° 时,先检查载体坐标系 X 轴是否被定义成指向艉部,或航向角是否用了“以艏为 0”的另一套约定;当横向位置持续单侧漂移时,优先怀疑 NED/ENU 的 Y 轴方向混用。坐标系问题几乎都能通过“统一约定 + 回代校验”这两步定位,而不必反复调控制参数。