--定位--
GPS+RTK
GPS组成
GPS分为三部分。
- 空间星座部分:由至少24颗卫星组成(目前有30多颗在轨运行),分布在6个中地球轨道上。保证全球任何地方、任何时间至少能接收到4颗以上的卫星信号。每颗卫星不断播发一种包含卫星星历(自己的精确轨道位置)、时钟校正参数和系统状态的无线电信号。
- 地面监控部分:由主控站、监测站和注入站组成,分布在全球。监测站负责持续跟踪所有可见卫星,收集它们的信号和数据,并发送给主控站;主控站负责计算每颗卫星的精确轨道(生成星历)和时钟误差,并预测其未来的轨迹;注入站负责定期将主控站计算出的星历和时钟参数上传给各颗卫星。
- 用户设备部分:就是我们手中的GPS接收机(手机、车载导航、专业设备等)(GPS卫星只发送信号不接收信号),GPS接收器通过测量信号的飞行时间然后用光速乘以时间来计算与卫星的距离。
三边测量(GPS原理)
在一个平面上有三个物品,分别为一棵树一个路灯和一个房子(位置已确定),现在我告诉你我的位置距离树20m,这时你就会以树为圆心画一个半径为20m的圆,我的位置可能出现在这个圆的任意位置;现在我又告诉你我距离路灯15m这时你又会以路灯为圆心画一个半径为15m的圆来进一步确定我的位置,我的位置可能出现在上面两圆的两个交点上。现在我又告诉你我距离房子10m,这时再以房子为圆心画一个半径为10m的圆,这三个圆必交于一点,这个确定的点就是我的位置。这个过程称为三边测量
GPS的原理类似,其核心思想是通过测量信号从卫星到接收机的传播时间来计算距离,然后通过几何上的“三边测量”(类似交会定位)来计算出自己的位置。GPS定位的根本是测量距离(速度 × 时间 = 距离),GPS信号是以光速传播的无线电波,速度 c
是一个已知常数(约每秒30万公里),而卫星在发送信号时,会打上一个非常精确的时间戳(由卫星上的原子钟生成)。接收机在接收到信号时,也会记录一个接收时间。两者的时间差就是信号的传播时间 Δt
。但是这个计算出的距离,因为各种误差的存在,并不完全是真实的几何距离,所以被称为 “伪距”。误差来源通常为以下几中:(这也就是GPS定位精度只有几米到十几米的原因)
- 要精确测量
Δt
,要求卫星和接收机的时钟必须完全同步。卫星使用昂贵的原子钟,精度极高。但我们的手机、车载接收机使用的是普通的石英钟,精度差很多,存在钟差。这种钟差是可以解决的,下面介绍的第四颗卫星就是为了解决这个误差。 - 信号穿过大气层时速度会变慢,路径会弯曲。这是最大的误差源。
- 信号被周围的建筑物、地面等反射后,接收机收到多个延迟的信号副本,造成干扰
GPS的三边测量介绍如下,知道了一颗卫星的距离,意味着你位于以这颗卫星为球心、以该距离为半径的球面上的某个地方;当知道了两颗卫星的距离,两个球面相交,意味着你在一个圆环上;当知道了三颗卫星的距离,三个球面相交理论上可以得到两个点。但其中一个点通常在地球之外或不合理的位置,可以排除,从而得到一个二维的平面坐标(经度、纬度);当知道了四颗卫星的距离,可以确定唯一的点,第四颗卫星的关键作用,就是为了解算出接收机的钟差。这样,接收机就能在时钟不准的情况下,依然计算出正确的位置,并同时输出精确的时间信息。所以我们常说GPS接收机也是一个授时工具。
关于第四颗卫星的作用,这里再做详细解释。接收机事实上需要解一个包含四个未知数的方程,即“伪距 = 真实几何距离 + 钟差误差 × 光速 (c)”,需要解的四个未知数是接收机的三维坐标 (X, Y, Z) 和 接收机的钟差,因此,必须有4颗(或以上)卫星的观测数据,才能解出这4个未知数,得到精确的绝对位置。那如果我们就用三颗卫星,而将钟差误差看作0,事实上也是可以解出接收机的三维坐标 (X, Y, Z)的,但是现实世界中,接收机的时钟(普通石英钟)误差非常大并且光速c又很大,如果你忽略它,计算出的位置 (x, y, z) 将会包含巨大的误差,可能偏差几公里甚至上百公里,这个结果完全不可用。第四颗卫星的作用就在于此:它提供了第四个约束条件,使得方程组有唯一解。
RTK(实时动态定位)
普通的单点GPS定位(比如手机或车载导航)存在多种误差源,导致其精度通常在几米到十几米之间。RTK技术就是为了解决此误差而生的。
RTK系统组成:
- 基准站:这是一个固定不动的GPS接收机(也称为基站,且不止一个),它的精确位置(经纬高)是通过精密测量已知的。它持续不断地观测所有可见的GPS卫星。
- 移动站 :安装在自动驾驶车辆上的GPS接收机。
- 数据链路:用于将基准站的观测数据实时(通常是通过4G/5G移动网络)传输给移动站
RTK系统流程:
1. 基准站计算误差:
基准站根据它已知的精确位置和接收到的卫星信号,可以反推出每颗卫星信号的综合误差值(包括大气延迟、钟差等)。因为它自己的位置是精确已知的,所以它算出的卫星距离(伪距)与真实几何距离的差值,就是各种误差的总和。
2. 数据发送:
基准站将这些计算出的误差校正数据通过数据链路实时发送给附近的移动站(如自动驾驶汽车)。
3. 移动站进行差分校正:
移动站接收到基准站的校正数据后,将其应用到自己的原始观测数据上。关键的一步来了:RTK不仅使用普通的GPS伪距码,更重要的是使用载波相位测量。
- 载波相位:GPS卫星发射的无线电信号波长很短(约19厘米)。接收机可以非常精确地测量载波信号的相位(可以想象成测量波峰和波谷的位置),其测量精度可以达到毫米级。但问题是,它只能测出不足一个整波长的小数部分,无法直接知道距离卫星有多少个整周数(称为“整周模糊度”)。
4. 解算“整周模糊度”:
RTK技术的核心算法就是快速、准确地解算出这个“整周模糊度”。一旦成功解算(称为“固定解”),移动站就能利用极其精确的载波相位观测值,结合基准站传来的差分校正数据,消除掉公共误差(因为两台接收机距离较近,它们看到的大气误差等非常相似)。
5. 输出高精度位置:
通过这一系列复杂的计算,移动站最终能够计算出相对于基准站的厘米级精度的相对位置。由于基准站的绝对位置是已知的,移动站自然也就能获得厘米级的绝对地理坐标。
惯性导航系统(INS)
简单来说,惯性导航是一种基于惯性原理的自主式导航技术。它的核心思想是:我知道初始位置,然后我通过持续测量自身的加速度和旋转角速度,来推算出我每一刻的新位置、新速度和新姿态(朝向)。它不依赖任何外部信号(如GPS、基站、Wi-Fi),完全自包含(Self-contained)。
惯性导航系统中最重要的”是惯性测量单元(Inertial Measurement Unit, IMU),注意区分概念,INS是一个完整的系统,它包含IMU并利用其数据进行计算,最终输出导航结果,而IMU(惯性测量单元)是一个传感器,它只负责测量数据。IMU通常包含两类核心传感器:
-
加速度计 (Accelerometer):测量物体在三个轴向(X, Y, Z) 上的线加速度。
-
陀螺仪 (Gyroscope):测量物体绕三个轴向的角速度(旋转的快慢)。
IMU的工作流程就是一个“积分”过程:陀螺仪测得的角速度 → 积分一次 → 得到姿态角度(俯仰、滚转、偏航)。加速度计测得的加速度 → 扣除重力影响 → 积分一次 → 得到速度 → 再积分一次 → 得到位移。
INS优势如下:
- GPS只能提供位置和速度(二维或三维),但无法直接知道车辆的姿态——即车辆的俯仰角(上下点头)、滚转角(左右倾斜)和偏航角(车头朝向)。
- IMU的更新频率极高(可达1000Hz),远超GPS(通常10-20Hz)。这意味着它能提供极其连续、平滑的位置、速度和姿态变化,对于需要快速反应的车辆控制系统(如转向、刹车)至关重要。
- 当车辆进入隧道、地下车库、城市峡谷(高楼之间) 或遇到恶劣天气时,GPS信号会中断或严重退化。此时,INS可以基于信号丢失前最后已知的精确位置,继续提供短时间的高精度定位,保证自动驾驶功能不中断。
INS很少单独工作。它几乎总是与GPS、轮速计、摄像头、激光雷达等传感器通过算法(如卡尔曼滤波 Kalman Filter)融合在一起,形成组合导航系统。例如,当GPS信号良好时用GPS提供的绝对位置来持续校正和校准INS,抑制其误差累积,并精确估算出INS的误差参数(如零偏);当GPS信号丢失时,INS利用刚才被校准好的状态,进行高精度的自主推算。由于误差已被最大限度地抑制,它在信号丢失的几十秒内仍能保持极高的定位精度。
- GPS:提供长期稳定、绝对准确的位置,但更新慢、易中断。
- INS:提供短期精确、高频、连续的相对位移和姿态,但误差会随时间累积(漂移)。
激光雷达定位
激光雷达定位的核心思想是:通过实时扫描周围环境并获取高精度的三维点云数据,然后将这些数据与一份预先存在的高精度地图进行匹配,从而计算出车辆在当前地图中的精确位置和姿态(朝向)。它不像GPS那样依赖卫星信号,也不像INS那样会漂移,它是一种基于环境特征匹配的绝对定位方式。
尽管有GPS/RTK和INS的组合,但它们仍有固有缺陷:
- GPS信号丢失:在隧道、地下、城市峡谷等场景失效。
- INS误差累积:一旦GPS长时间失效,INS的漂移会使得定位误差变得不可接受。
- 精度要求极高:自动驾驶需要厘米级的定位精度来确定自己在哪条车道的具体位置,这是GPS/RTK+INS难以始终稳定提供的。
激光雷达定位恰好弥补了这些缺陷,提供了稳定、可靠、高精度的绝对位置信息。激光雷达定位通常不是一个一步到位的过程,它遵循一个分层、逐步精细的流程,如下图所示,其核心是 “预测-匹配-更新” 的循环,其核心技术原理如下:
- 预测(初始位置预测):在开始匹配之前,算法需要一个“猜测”的初始位置,此预测过程通常由GPS/RTK+INS组合系统提供一个大致的、米级精度的位置和朝向。
- 匹配(扫描匹配):这是激光雷达定位的算法核心。它的目的是找到一种变换(旋转和平移),使得当前扫描得到的实时点云与高精度地图上的局部参考点云尽可能完美地重叠。主要算法有两种,迭代最近点(ICP)和正态分布变换(NDT)
- 更新(后处理与传感器融合):单纯的扫描匹配结果可能仍有微小误差或抖动。为了得到更稳定、可靠的位置输出,还需要使用卡尔曼滤波(KF)或粒子滤波(PF)等算法,对多帧激光雷达的匹配结果进行平滑处理,滤掉不合理的抖动。将激光雷达定位的结果与GPS、IMU、轮速计等信息进行传感器融合。最终输出一个最优的、最可靠的位姿估计。
关于激光雷达定位的更详细解释及算法,参考以下文章:
激光雷达定位算法-CSDN博客
视觉定位
视觉定位的核心思想是:通过摄像头捕获周围的视觉环境(如车道线、交通标志、建筑物、树木等),然后将这些视觉信息与已知的地图或模型进行匹配,从而推断出车辆自身的精确位置和姿态(朝向)。它与激光雷达定位的逻辑相似(都是环境匹配),但使用的传感器和数据形式完全不同:一个是三维几何点云,一个是二维纹理图像。
在激光雷达成本高昂的背景下,视觉定位提供了一种相对低成本的解决方案。现在出现的一些视觉SLAM方法还可以不依赖预先绘制的高精地图,真正实现“即走即建图”。
视觉定位主要分为三条路线:
1.基于语义地图的视觉定位(主流方案):
这是目前最可靠、与高精地图结合最紧密的方案,其流程与激光雷达定位类似。
a. 离线建图阶段:
- 采集车(搭载摄像头、GPS/IMU等)预先行驶在道路上,收集大量图像和位置数据。
- 通过算法(如SFM, Structure from Motion)从这些图像中提取稳定的语义特征(如交通标志的角点、路灯的顶端、建筑物轮廓等),并计算出它们在全球坐标系中的精确3D位置,生成一份视觉高精语义地图。这份地图存储的不是原始图像,而是特征的3D坐标和描述子。
b. 在线定位阶段:
- 特征提取:车辆上的摄像头捕获实时图像,提取出相同的语义特征。
- 特征匹配:将当前图像中提取的2D特征点,与视觉语义地图中存储的3D路标点进行匹配。寻找“当前看到的这个点,对应地图上的哪个3D点”。
- PnP求解:一旦找到足够多的2D-3D匹配对,就可以使用PnP(Perspective-n-Point) 算法。PnP是一种几何解法,通过已知的多个3D点及其在图像上的2D投影,直接反推出相机的6自由度位姿(位置和旋转)。
- 优化:使用集束调整(Bundle Adjustment)等算法对位姿结果进行优化,使其更精确。
2.视觉SLAM(同步定位与建图)
SLAM更像是一个“边走边画地图”的过程。它不需要预先的高精地图,而是由车辆自身在行驶过程中同时完成定位和局部地图构建。
工作原理:
- 跟踪(Tracking):通过比较连续帧图像,估算出相机自身的运动(通过视觉里程计, VO),并初步估计出当前位姿。
- 建图(Mapping):将跟踪过程中观察到的新的环境特征点添加到当前维护的局部地图中。
- 回环检测(Loop Closure):识别出曾经访问过的地点,从而校正整个行程中累积的定位漂移。
- 在自动驾驶中的应用:更多用于停车场等缺乏GPS信号的封闭结构化环境,或作为城市道路驾驶中的一种辅助定位手段。纯粹的视觉SLAM难以满足高速自动驾驶对全局绝对定位的苛刻要求。
3.基于学习的端到端定位
利用深度学习模型,直接从图像中回归出车辆的位姿。这种方法目前更多处于研究阶段,尚未成为主流自动驾驶系统的核心定位方案。
工作原理:
- 使用一个庞大的数据集(图像+对应的真实位姿标签)来训练一个深度神经网络(如CNN)。
- 训练完成后,网络输入一张或多张当前图像,直接输出车辆的估计位置(x, y, z)和姿态(俯仰、滚转、偏航)。
优点是方法简洁,无需复杂的特征匹配和几何计算。目前的缺点是泛化能力差,在一个地区训练的网络,到另一个外观迥异的地区可能完全失效,除此之外目前难以达到几何方法的精度和可靠性,容易受到光照、天气、季节变化的影响