定位系统基础:GPS/GLONASS/北斗原理、惯性导航系统(INS)简介、视觉定位(VIO)基础

做飞控这些年,我见过太多因为定位不准炸机的情况。说白了,定位就是无人机的眼睛。眼睛花了,飞机自然乱飞。这一章我们聊聊定位系统的底子。

你可能会问:为什么飞控需要这么多定位方式?其实每种都有短板。GPS怕遮挡,INS会漂移,VIO怕光线暗。把它们揉在一起,才能互补。嗯,这就是多传感器融合的核心思路。

2.1 卫星导航系统:GPS / GLONASS / 北斗

卫星导航的原理,说白了就是三边测量。卫星告诉你它的位置和发送时间,你收到信号后算出差值,就能知道距离。四颗卫星就能解出三维坐标加时间。

我刚开始做飞控时,总觉得GPS精度很高。后来在楼宇间飞了一次,定位直接跳了十几米。那次之后我才真正重视卫星几何分布的问题。

核心公式:伪距观测方程

ρ = √((x - x_s)² + (y - y_s)² + (z - z_s)²) + c·Δt + ε

其中 ρ 是伪距,c 是光速,Δt 是钟差,ε 是误差项。实际解算时至少需要4颗卫星。

三大系统的差异,我整理了一张表:

参数 GPS GLONASS 北斗
轨道高度 20200 km 19130 km 21528 km
卫星数量 31 24 30+
频段 L1/L2/L5 G1/G2 B1/B2/B3
定位精度 2-5 m 3-6 m 2-5 m
特色 成熟稳定 高纬度覆盖好 短报文通信

我的经验:在城市峡谷或山谷中飞行,建议同时开启GPS+GLONASS+北斗。多系统融合能增加可见卫星数,把定位精度从5米拉到2米以内。我在深圳飞过几次,三系统同时锁定20颗星以上,效果明显。

2.2 惯性导航系统(INS)简介

INS不需要外部信号。它靠加速度计和陀螺仪,自己推算位置。原理很简单:加速度积分得速度,速度积分得位移。但问题也出在这里——积分会累积误差。

我记得第一次做纯惯性导航实验,飞机悬停10秒后位置就漂了2米。当时我还以为是代码写错了,后来才发现这是INS的固有缺陷。

避坑指南:我曾经在调试中忽略陀螺仪的零偏稳定性,结果航向角以每秒0.1度的速度漂移。10分钟后,飞机转了60度。嗯,那次差点撞树。所以每次上电后一定要做静态对准,把零偏校准掉。

INS的误差来源主要有三个:

  • 零偏误差:传感器静止时输出不为零,积分后变成速度斜坡
  • 比例因子误差:实际加速度与测量值不成线性,高频振动时尤其明显
  • 随机游走:噪声积分后形成随机漂移,时间越长越严重

INS的更新频率很高,通常200Hz以上。GPS只有10Hz。所以飞控里常用INS做高频姿态估计,用GPS做低频位置修正。这就是松耦合的基本思路。

2.3 视觉定位(VIO)基础

VIO是Visual-Inertial Odometry的缩写。它把相机和IMU绑在一起,用图像特征点做位置估计。为什么加IMU?因为单靠视觉,快速运动时图像会模糊,IMU正好补上。

VIO的核心流程:

  1. 提取图像特征点(比如ORB、FAST角点)
  2. 匹配前后帧的特征点
  3. 结合IMU数据,解算相机运动
  4. 构建局部地图,优化位姿

我调试VIO时踩过一个坑:光照变化剧烈时,特征点匹配率从80%掉到20%。后来加了自适应曝光和直方图均衡化,才稳住。你想想看,如果特征点全丢了,VIO就相当于瞎了。

VIO的两种主流方案:

  • MSCKF:基于多状态约束卡尔曼滤波,计算量小,适合嵌入式
  • VINS-Mono:基于滑动窗口优化,精度高,但需要更强的算力

我个人习惯在STM32F7上用MSCKF,在树莓派上用VINS-Mono。算力决定方案,别硬上。

2.4 三种定位方式的对比

我把它们放在一起对比,方便你理解各自的定位:

特性 卫星导航 惯性导航 视觉定位
外部依赖 卫星信号 无 光照、纹理
长期精度 高(无漂移) 低(持续漂移) 中(有累积误差)
短期精度 低(更新慢) 高(更新快) 高(局部稳定)
更新频率 5-20 Hz 100-1000 Hz 10-60 Hz
典型场景 室外开阔 所有场景(短时) 室内、低空

说白了,没有一种定位方式能通吃所有场景。飞控里做的融合,就是把它们的优点拼起来,缺点互相补上。

2.5 本章知识体系

下面这张图,是我梳理的定位系统知识框架。你可以看到,三种定位方式最终汇入融合引擎,输出稳定的位置和姿态。

定位系统知识体系 卫星导航 GPS / GLONASS / 北斗 惯性导航 INS 加速度计 + 陀螺仪 视觉定位 VIO 相机 + IMU 三边测量原理 多系统融合 RTK 差分定位 积分推算位置 误差累积特性 零偏校准 特征点提取匹配 MSCKF / VINS 光照鲁棒性 多传感器融合引擎 EKF / 互补滤波 / 因子图 稳定位置 + 姿态输出

我的建议:刚开始学定位系统,别急着调融合算法。先把每种定位方式的特性摸透。GPS的精度受什么影响?INS的漂移速率是多少?VIO在什么场景下会失效?这些基础问题搞清楚了,后面排查漂移才能有的放矢。