定位技术基础:GNSS、INS、轮速里程计与视觉定位
各位同学好,我是老张。今天咱们聊聊定位技术的四大基石。说实话,这四样东西单独拿出来都不算完美,但组合起来,就是自动驾驶和机器人定位的核心骨架。
我个人习惯把定位技术分成两类:一类是「绝对定位」,比如GNSS,它能告诉你在地球上的绝对坐标;另一类是「相对定位」,比如INS、轮速计、视觉里程计,它们只能告诉你「我从哪里走了多远」。嗯,这个区分很重要,后面讲融合的时候你会体会到。
1. GNSS定位原理:天上看下来的尺子
GNSS,说白了就是卫星导航系统。GPS、北斗、GLONASS、Galileo,都是这玩意儿。原理其实不复杂:卫星在天上飞,不断广播自己的位置和时间。地面上的接收机收到信号,算出自己到卫星的距离。
怎么算距离?光速乘以时间差。卫星说「我在时间T0发了信号」,你收到时是T1,那距离就是 (T1 - T0) × 光速。理论上,有三颗卫星就能解出三维位置。但实际中,接收机时钟不准,所以需要第四颗卫星来消除钟差。
其中 ρ 是伪距,c·Δt 是钟差,ε 是各种误差。
我在项目中遇到过一个问题:城市峡谷里,GNSS信号被高楼遮挡,定位直接飘到马路对面去了。这就是多路径效应——信号打到墙上再反射过来,路径变长了,算出来的位置自然不准。
2. 惯性导航系统(INS)基础:自己身体的感知
INS靠的是加速度计和陀螺仪。加速度计测线加速度,陀螺仪测角速度。你想想看,如果你知道初始位置和速度,然后不断积分加速度,是不是就能算出当前位置?
原理上很简单:
- 陀螺仪输出角速度 → 积分得到姿态(横滚、俯仰、航向)
- 加速度计输出比力 → 扣除重力 → 积分得到速度 → 再积分得到位置
但这里有个大坑:误差会累积。加速度计有零偏,积分一次变成速度误差,再积分一次变成位置误差。这就是为什么纯INS定位几分钟就飘得没边了。
嗯,这里要注意:INS的更新频率很高,通常100Hz以上。而GNSS只有10Hz。所以INS能填补GNSS的空白,反过来GNSS能修正INS的漂移。这就是融合的基本逻辑。
3. 轮速里程计原理:车轮转了多少圈
轮速里程计,说白了就是数车轮转了多少圈。每个车轮上装一个编码器,转一圈输出N个脉冲。脉冲数乘以轮子周长,就是走过的距离。
但事情没这么简单。你想想看:
- 轮胎气压变化,周长就变了
- 转弯时内外轮转速不一样
- 打滑时轮子转但车没动
所以实际中,我们通常用差速模型来推算航向变化。比如两轮差速机器人:
// 两轮差速模型
v = (v_left + v_right) / 2 // 线速度
ω = (v_right - v_left) / wheel_base // 角速度
// 更新位姿
x += v * cos(θ) * dt
y += v * sin(θ) * dt
θ += ω * dt
我在做AGV小车时遇到过一个问题:地面有水,轮子打滑,里程计显示走了10米,实际只走了8米。后来加了IMU做辅助,用加速度来检测打滑——当轮速变化率远大于加速度时,基本就是打滑了。
4. 视觉定位(VO)简介:用眼睛看世界
视觉里程计,就是通过摄像头图像来推算运动。原理有点像人眼——你看到物体在画面中移动,就知道自己在动。
基本流程分三步:
- 特征提取: 从图像中找角点、边缘等特征点(比如ORB、SIFT)
- 特征匹配: 在相邻帧之间找对应的特征点
- 运动估计: 用对极几何或PnP算法解出相机运动
举个例子,对极几何的核心思想:
// 对极约束
x2^T * F * x1 = 0
// 其中 F 是基础矩阵,x1和x2是匹配点
// 通过8点法可以解出F,再分解得到旋转R和平移t
我做过一个项目,在纹理丰富的室内,VO效果很好,误差不到1%。但一到白墙走廊,特征点全没了,VO直接崩了。这就是视觉定位的致命弱点——依赖纹理。
知识体系总览
下面这张图,是我自己画的四大定位技术的关系图。你看一眼就能明白它们各自的特点和局限。
你看这张图就明白了:GNSS是唯一能给出绝对坐标的,但容易受遮挡。INS和轮速计是「死推算」,短时准但长时飘。VO靠图像特征,环境好时很准,但怕白墙和暗光。
我个人做融合时,习惯用GNSS做长期约束,INS做高频插值,轮速计做地面约束,VO做视觉辅助。四者互补,才能得到稳定可靠的定位结果。
好了,这一章就到这里。四种定位技术各有各的脾气,理解它们的特点,是做好融合的第一步。