本文是一篇深度的技术解析报告,旨在帮您彻底搞清RTCM 3.x这一事实标准。我们将从底层的二进制位流讲起,详细拆解1005、1077等核心消息体,估算数据流量,最终延伸到NTRIP网络传输协议。

1. RTCM的定义

RTCM (Radio Technical Commission for Maritime Services, 海事无线电技术委员会)。该组织制定了一系列用于差分全球导航卫星系统 (DGNSS) 数据传输的标准。

我们通常所说的 RTCM格式,特指其SC-104 (Special Committee 104) 小组制定的标准,专门用于广播GNSS差分改正数据。它定义了一种标准的、通用的数据格式,使得不同厂家生产的基准站和移动站(Rover)设备可以相互通信,共享差分改正数据,从而实现高精度的定位(如厘米级的RTK)。

在深入了解RTCM之前,让我们先简要介绍差分GNSS,因为RTCM就是一种用于传输差分数据的数据封装格式。

2. 差分技术和RTCM

我们知道,即使在消除接收机钟差的情况下,标准的单点GNSS定位精度只有米级,因为它受到多种误差源的影响:

  • 大气层延迟:信号穿过电离层和对流层时产生的延迟。

  • 卫星轨道误差:卫星的实际位置与广播的位置有细微偏差。

  • 卫星钟差:卫星上的原子钟有微小的误差。

这些误差源对于附近的两台接收机来说,影响是“公共的”、“共同的”。也就是说在同一片区域内(比如几公里范围内),两台GNSS接收机接收来自同一组卫星的信号时,它们遇到的误差几乎是完全相同的。

因此差分技术的核心思想利用一台已知精确位置的基准站,实时计算出GNSS信号的共同误差,并将其发送给附近的移动站,帮助移动站消除这些误差,从而实现高精度定位的一种技术。 它的核心就是“减掉共同的误差”。最终结果是,不使用差分技术的单台接收机,定位精度是米级(通常是3-5米);而使用了差分技术,通过基准站和移动站的配合,可以实时消除绝大部分误差,定位精度可以达到厘米级甚至更高。

利用差分技术的高精度定位(如RTK)的工作流程如下:

  1. 基准站 (Base Station):设置在一个已知精确坐标的点上,持续接收GNSS信号。

  2. 误差计算:基准站将其接收到的观测值与自身的精确坐标进行比较,从而精确地计算出各种误差(或者说,计算出“改正数”)。

  3. 数据广播:基准站将这些误差改正数或其原始观测数据,按照RTCM格式进行编码。

  4. 数据传输:通过数据链(如UHF电台、4G网络/NTRIP)将RTCM数据包发送出去。

  5. 移动站 (Rover):接收来自基准站的RTCM数据包,并进行解码。

  6. 误差消除:移动站利用解码后的改正信息,对自己接收到的GNSS信号进行实时修正,消除共同的误差,从而计算出厘米级精度的坐标。

在这个流程中,RTCM就是承载这些改正信息的数据载体和编码规则

3. 改正数和差分数据

广义上,我们可以把所有用于修正定位误差的数据都统称为“改正数”(Correction)或“差分数据”(Differential Data)。这类误差修正数据有两种具体形式:

形式一:直接告诉“误差是多少”

这是比较早期和简单的差分方式。

  • 基准站操作

    1. 基准站计算出自己的位置。

    2. 用计算位置减去真实位置,得到一个位置误差(比如:向东偏了0.5米,向北偏了0.3米)。

    3. 基准站把这个误差分解到每一颗卫星的距离测量上,形成每个卫星的“伪距改正数”。

    4. 它广播的消息内容就是:“1号星距离多了0.4米,2号星距离少了0.2米......”

  • 移动站操作

    1. 接收到这些改正数。

    2. 在自己的计算中,将1号星的距离减去0.4米,将2号星的距离加上0.2米......

    3. 用修正后的距离数据来计算自己的位置。

形式二:给计算误差的“原始观测结果”

这是当前高精度定位(RTK)使用的主流方式,也是RTCM 3.x格式的核心。

  • 基准站操作

    1. 基准站不直接计算最终的“误差值”。

    2. 它把自己接收到的原始观测数据(包括伪距和更精确的载波相位)以及自己的精确坐标,打包成RTCM格式。

    3. 它广播的消息内容是:“我的精确坐标是(X, Y, Z),我测到1号星的伪距是A,载波相位是B;2号星的伪距是C,载波相位是D......”

  • 移动站操作

    1. 移动站接收到基准站的这套“原材料”。

    2. 移动站自己也有自己的一套“原材料”(它自己观测到的伪距和载波相位)。

    3. 它将自己的数据和基准站的数据进行双差(Double Difference)运算。这是一个非常巧妙的数学处理,通过在站间和星间同时作差,几乎完美地消除了前面提到的所有“共同误差”(大气延迟、卫星钟差等)。

    4. 解算双差方程,最终得到一个厘米级的精确位置。

因此,“改正数”的本质就是为了消除“共同的误差”而传输的数据,而在现代高精度RTK中,它通常是以基准站原始观测值的形式存在的。

4. RTCM 数据格式的演进

RTCM标准的官方权威文档是由 RTCM (海事无线电技术委员会) 发布,经过了多次迭代,主要版本有:

  • RTCM 2.x:这是早期的版本(如2.1, 2.2, 2.3),现在已逐渐被淘汰。其主要缺点有:

    • 主要支持GPS系统。

      数据编码效率较低,传输相同信息需要更多的数据量。

      消息类型定义比较固定,扩展性差。

    • 常见消息类型Type 1 (差分GPS改正), Type 18/19 (RTK载波相位观测值), Type 20/21 (RTK伪距观测值)。

  • RTCM 3.x:这是当前的主流标准(如3.0, 3.1, 3.2, 3.3, 3.4),是高精度应用的事实标准,文档名称为《RTCM Standard 10403.x for Differential GNSS (Global Navigation Satellite) Services – Version 3》。相比于2.x版本,其主要优势包括:

    • 高效的二进制格式:数据压缩率高,传输带宽要求低。

    • 支持多星座系统:全面支持GPS, GLONASS, Galileo, BeiDou, QZSS等。

    • 消息定义灵活:采用模块化设计,易于扩展以支持新的信号和系统。

    • 引入MSM(Multiple Signal Messages)概念:一种更高效、更灵活的方式来打包播发所有卫星系统的观测数据。

    • 支持网络RTK和SSR:定义了用于VRS(虚拟参考站)、MAC(主辅站)等网络RTK技术的消息类型,以及用于PPP-RTK的SSR(状态空间表示)改正消息。

5. RTCM 3.x 数据帧结构详解

RTCM 3.x 的数据是以“帧”(Frame)为单位传输的。每一帧都包含一个完整的消息。其结构如下:

字段 (Field) 字节数 (Bytes) 位数 (Bits) 描述
Preamble (前同步码) 1 8 固定值为 11010011 (二进制),即 0xD3 (十六进制)。用于标识一个RTCM 3数据帧的开始。
Reserved (保留位) 1 (部分) 6 始终为0,保留给未来使用。
Message Length (长度) 1 (部分) + 1 10 紧跟在长度字段后面的Payload(消息体)的长度,单位是字节(Byte)。最大长度为1023字节。
Message Type (消息类型/消息号) 1 + 1 (部分) 12 标识本帧数据具体是什么内容,例如1004, 1077等。这是解码的关键。
Payload (消息体) 0-1023 可变 实际的差分数据或观测值,内容和长度由 Message Type 决定。
CRC-24Q (校验码) 3 24 循环冗余校验码,用于校验从Preamble到Payload的数据完整性,确保传输没有出错。

可视化结构:

 <-- 1 Byte --><-- 2 Bytes --><-- N Bytes (Payload) --><-- 3 Bytes -->
 +------------+-------------+-------------------------+-------------+
 |  Preamble  |  Len + Type |         Payload         |     CRC     |
 |   (0xD3)   | (Header)    | (由Type决定具体内容)       |  (校验和)    |
 +------------+-------------+-------------------------+-------------+

接收端设备首先会寻找 0xD3 这个前同步码,一旦找到,就根据紧随其后的10位长度字段,读取相应长度的Payload数据,最后用24位的CRC进行校验。如果校验通过,就根据12位的消息号对Payload进行解析和使用。

5. 常见的RTCM 3.x 消息类型 (Message Type)

消息类型是RTCM的核心,它告诉接收机这一帧数据到底是什么。以下是一些在高精度RTK中至关重要的消息类型:

A. 基准站观测值 (Observations)

这是RTK解算最基础、最核心的数据。移动站需要基准站的原始观测值来组成双差观测方程。

  • 1004 - GPS L1/L2 观测值

  • 1012 - GLONASS L1/L2 观测值

  • 1042 - BeiDou B1/B2 观测值

  • 1046 - Galileo E1/E5a/E5b 观测值

  • MSM (Multiple Signal Messages) - 推荐使用

    • MSM是一种更现代、更高效的格式,可以用一个消息类型承载一个星座的多种信号。其消息号后面的数字代表信息丰富程度(1最简单,7最全)。

    • 1077 - GPS MSM7 (全信号)

    • 1087 - GLONASS MSM7 (全信号)

    • 1097 - Galileo MSM7 (全信号)

    • 1127 - BeiDou MSM7 (全信号)

    • 为什么MSM更好? 它将一个星座的所有卫星和信号打包在一个消息里,结构清晰,解码效率高,且非常容易扩展以支持未来的新信号。

这里以MSM消息为例进行介绍,它是RTK的“命脉”,包含了基准站的原始观测数据。MSM是RTCM3最先进和高效的格式。MSM后面的数字(1到7)代表信息的完整度,数字越大,信息越全。MSM7包含最完整的信息(伪距、相位、多普勒、信噪比等),其目的是将基准站观测到的所有卫星的、所有频点的原始数据发送给移动站,发送频率1 Hz (每秒一次)。消息体内容示例 (以 MT 1077 - GPS MSM7 为例)如下:

消息头 (Header):

  • DF002: Message Number - 1077

  • DF003: Reference Station ID - 1234

  • DF397: GNSS Epoch Time (ms) - 一周内的毫秒时间戳,如 345600123

  • DF411: Multiple Message Bit - 1 (表示这是系列MSM消息中的一个)

  • ...还有一些同步、平滑间隔等状态位。

  • GNSS Satellite Mask: 一个位掩码,指示这个消息包含了哪些GPS卫星 (如 0110...1 表示包含了PRN 2, 3, ... 32)。

  • GNSS Signal Mask: 另一个位掩码,指示包含了哪些GPS信号 (如 1010... 表示包含了 L1C/A, L2P信号)。

卫星数据块 (Satellite Data Block): (对掩码中每一颗卫星,重复以下数据)

  • DF418: Integer Milliseconds of Pseudorange - 伪距的整数部分 (毫秒)

  • DF419: Rough Range Modulo 1 Millisecond - 伪距的小数部分 (不足1毫秒的部分)

  • DF420: PhaseRange minus Pseudorange - 载波相位减去伪距 (用于高精度定位)

  • DF422: Lock Time Indicator - 锁相环锁定时间

  • DF423: Half-cycle Ambiguity - 半周模糊度标记

  • DF424: Carrier-to-Noise Ratio (C/N0) - 载噪比 (信号质量)

  • ...

信号数据块 (Signal Data Block): (对于上述每一颗卫星的每一个信号,重复以下数据)

  • Fine Pseudorange - 精细伪距改正

  • Fine PhaseRange - 精细载波相位改正

  • ...等更详细的数据

简单理解:这个消息就像一份详细的“观测报告”: “报告时间:345600123毫秒。 我是1234号基准站,我看到了以下GPS卫星:

  • G07号星

    • 信号质量(C/N0): 48 dB-Hz

    • 伪距: 21,543,210.123 米

    • 载波相位: 113,254,876.543 周

    • ... (L1, L2, L5等不同频点的详细数据)

  • G12号星

    • 信号质量(C/N0): 51 dB-Hz

    • 伪距: 20,987,654.321 米

    • 载波相位: 110,345,987.654 周

    • ...

  • (列出所有可见的GPS卫星...)”

其他系统的MSM消息(如 1087 for GLONASS, 1127 for BeiDou, 1097 for Galileo)结构与此完全类似。

B. 基准站坐标与描述 (Station Information)

移动站需要知道基准站的精确坐标才能进行解算。

  • 1005 - 基准站坐标 XYZ (ECEF)

  • 1006 - 基准站坐标 XYZ (ECEF) 及天线高

  • 1033 - 接收机与天线描述符

1006为例,它的主要目的告诉移动站,基准站的天线参考点(ARP)在ITRF坐标系(一种高精度的地心地固坐标系 ECEF)下的精确XYZ坐标。移动站必须知道这个才能进行差分解算。通常每5-10秒发送一次。消息体内容示例如下:

字段编号 字段名称 位数 描述 示例值/说明
DF002 Message Number 12 消息号 1006
DF003 Reference Station ID 12 基准站ID 1234
DF021 ITRF Realization Year 6 ITRF坐标框架的年份 2014
... ... ... (一些状态位)
DF025 ARP ECEF-X 38 天线参考点(ARP)的X坐标 (米) -2173588.3561
DF026 ARP ECEF-Y 38 天线参考点(ARP)的Y坐标 (米) 4389332.6592
DF027 ARP ECEF-Z 39 天线参考点(ARP)的Z坐标 (米) 4076043.4218
DF028 Antenna Height 16 天线高 (ARP到地面的垂直距离, 毫米) 1.850 (米) -> 编码为 1850

简单理解:这个消息就是一个“名片”,上面写着:“我是1234号基准站,我的精确坐标是(X, Y, Z),我的天线高度是1.850米。”

C. 卫星星历 (Ephemeris)

虽然移动站自己也能接收星历,但基准站播发的星历可以确保基准站和移动站使用完全一致的卫星轨道信息,避免因星历更新不同步导致的误差。

  • 1019 - GPS 星历

  • 1020 - GLONASS 星历

  • 1044 - QZSS 星历

  • 1045 - Galileo F/NAV 星历

  • 1046 - Galileo I/NAV 星历

D. 网络RTK相关消息

用于VRS、FKP等网络RTK技术。

  • 1021-1027 - 坐标转换参数,用于将移动站的位置从全球坐标系转换到地方坐标系。

E. SSR (State Space Representation) 消息

用于PPP-RTK等广域高精度增强服务。

  • 1057-1068 - 播发精确的卫星轨道、钟差、电离层等改正参数。这与传统RTK播发原始观测值不同,SSR播发的是改正模型参数。

6. 实际数据流样例

一个真实的RTCM数据流是上述消息的组合。移动站(Rover)会持续收到这样的数据包:

时间 T = 0秒 (连接刚建立)

  • 收到 MT 1006 (基准站坐标)

  • 收到 MT 1033 (天线和接收机描述)

  • 收到 MT 1077 (GPS MSM7)

  • 收到 MT 1087 (GLONASS MSM7)

  • 收到 MT 1127 (BeiDou MSM7)

  • 收到 MT 1097 (Galileo MSM7)

时间 T = 1秒

  • 收到 MT 1077 (GPS MSM7)

  • 收到 MT 1087 (GLONASS MSM7)

  • 收到 MT 1127 (BeiDou MSM7)

  • 收到 MT 1097 (Galileo MSM7)

时间 T = 2秒

  • 收到 MT 1077 (GPS MSM7)

  • 收到 MT 1087 (GLONASS MSM7)

  • 收到 MT 1127 (BeiDou MSM7)

  • 收到 MT 1097 (Galileo MSM7)

... (观测值消息每秒都来)

时间 T = 10秒

  • 收到 MT 1006 (基准站坐标又来了一次,用于确认和更新)

  • 收到 MT 1077 (GPS MSM7)

  • 收到 MT 1087 (GLONASS MSM7)

  • 收到 MT 1127 (BeiDou MSM7)

  • 收到 MT 1097 (Galileo MSM7)

这个数据流的特点是:高频的核心观测数据 (MSM) + 低频的辅助信息 (坐标、描述符等),共同构成了移动站进行高精度解算所需的所有信息。

7. RTCM传输带宽估算

RTCM 3.x 在一个典型的四系统(GPS+GLONASS+BeiDou+Galileo)RTK应用中,每秒需要传输的完整数据总量通常在 400 到 900 字节 (Bytes) 之间。

这个数值不是固定的,它会根据以下几个关键因素浮动:

带宽影响因素
  1. 观测到的卫星数量 (最重要的因素)

这是影响数据量的最大变量。天空中的卫星越多,需要传输的数据就越多。

  • 卫星稀少时:例如,在城市峡谷或刚开机时,可能只观测到20-25颗卫星,此时数据量会偏低,可能在 300-500字节/秒

  • 开阔天空下:当能观测到全部四个系统的卫星时,卫星数量可能达到40-50颗,此时数据量会偏高,可能达到 700-900字节/秒甚至更高。

  1. 支持的卫星系统数量

每增加一个卫星系统,就需要增加一种消息类型(或在MSM消息中增加更多数据)。

  • GPS + GLONASS:这是比较早期的配置,数据量较小。

  • GPS + GLO + BDS + GAL + (QZSS):这是当前主流的全星座配置,数据量最大。

  1. 消息类型和效率 (MSM vs Legacy)

RTCM 3.x 推荐使用 MSM (Multiple Signal Messages) 格式,如 1077, 1087, 1127, 1097 等。MSM格式经过了高度优化和压缩,传输效率非常高。如果使用旧的非MSM消息(如1004, 1012),传输同样的信息会需要更多的数据。

  1. 发送频率 (Update Rate)

标准的RTK应用中,观测数据的发送频率是 1 Hz (即每秒一次)。我们上面讨论的数据量都是基于1Hz的。

  • 如果用于高速动态场景(如赛车),频率可能提高到5Hz或10Hz,那么每秒的数据总量就会成倍增加。

  1. 辅助信息

一个完整的RTK数据流除了核心的观测值外,还需要周期性地包含其他信息:

  • 基准站坐标 (1005/1006):通常每5-10秒发送一次,这个消息本身很小(约20-30字节),所以平摊到每秒的数据量上影响不大。

  • 天线和接收机描述 (1033):发送频率更低,影响可以忽略不计。

具体带宽计算示例

我们来估算一个非常典型的场景:

  • 配置:四系统全开 (GPS+GLO+BDS+GAL)

  • 环境:开阔天空,信号良好

  • 卫星数:GPS 10颗, GLONASS 8颗, BeiDou 12颗, Galileo 8颗 (总计38颗)

  • 消息类型:使用高效的MSM7系列消息

  • 频率:1 Hz

每秒钟,基准站会打包并发送以下4个核心观测值消息:

  1. 1077 (GPS MSM7): 包含10颗GPS卫星的全频段信号数据,大小约 150 - 180 字节

  2. 1087 (GLONASS MSM7): 包含8颗GLONASS卫星数据,大小约 130 - 150 字节

  3. 1127 (BeiDou MSM7): 包含12颗北斗卫星数据,大小约 180 - 220 字节

  4. 1097 (Galileo MSM7): 包含8颗伽利略卫星数据,大小约 130 - 150 字节

数据总量估算: 160 (GPS) + 140 (GLO) + 200 (BDS) + 140 (GAL) = 640 字节

此外,假设每10秒发送一次 1006 消息(约30字节),平摊到每秒就是 30 / 10 = 3 字节。

所以,在这种典型场景下,每秒的数据流量大约是 643 字节。这个数值在我们之前给出的范围 (400-900字节/秒)之内。

对应到实际应用场景中

  • 换算成比特率 (bps): 650 字节/秒 * 8 比特/字节 = 5200 bps ≈ 5.2 kbps 即使在卫星最多的情况下,比如 900 字节/秒 * 8 = 7200 bps ≈ 7.2 kbps。

  • 对网络的要求: 这个数据量非常小。即使是古老的 2G (GPRS) 网络(理论速度几十到上百kbps)也绰绰有余。目前的4G和5G网络对于传输RTCM数据来说,完全是“杀鸡用牛刀”,其优势主要体现在更低的延迟和更可靠的连接上。

  • 流量消耗: 按 700 字节/秒 计算,一个小时的流量消耗大约是: 700 B/s * 3600 s/h = 2,520,000 B/h ≈ 2.52 MB/小时 一天连续工作8小时,大约消耗 2.52 * 8 ≈ 20 MB 的流量。对于目前的手机流量套餐来说,这个消耗是非常低的。

影响因素总结
因素 对数据量的影响 典型值/说明
卫星总数 巨大 25颗卫星约400 B/s,45颗卫星约800 B/s
支持的系统数 较大 每增加一个系统,约增加100-200 B/s
消息类型 中等 MSM格式比旧格式节省约20-30%的数据量
发送频率 线性倍增 1Hz是基准,5Hz就是5倍的数据量
辅助信息 微小 平摊到每秒的数据量通常小于10 B/s
典型总数据率 - 400-900 字节/秒 (约合 3.2 - 7.2 kbps)

8. 数据传输方式 - NTRIP

A. NTRIP工作流程

NTRIP 的全称是 Networked Transport of RTCM via Internet Protocol,翻译过来就是“通过网络协议传输RTCM数据”。

简单来说,NTRIP 就是一套利用互联网来传输高精度GNSS差分数据(比如RTCM格式数据)的标准协议和架构。 它把原来依赖于无线电台的“短距离广播”模式,变成了基于互联网的“全球化订阅”模式。

在NTRIP出现之前,基准站通常使用UHF无线电台来广播差分数据。这种方式有几个明显的缺点:

  • 距离受限:电台的有效作用距离通常只有几公里到十几公里。

  • 易受干扰:信号容易被山脉、建筑物遮挡,或受到其他无线电干扰。

  • 许可和成本:使用大功率电台可能需要申请无线电频率许可证,且设备成本高。

NTRIP的出现就是为了解决这些问题,NTRIP系统就像一个“电视台”系统,由三个角色组成:

  • NTRIP Server (数据源 / 记者站)

    NTRIP Server负责将GNSS基准站产生的RTCM数据流“推”送到NTRIP Caster。类比为一个在现场进行直播的记者,他把现场画面(RTCM数据)传回电视台总部。

  • NTRIP Caster (数据中心 / 电视台总部)

    NTRIP Caster一个部署在服务器上的核心中转站。它接收来自一个或多个NTRIP Server的数据流,并对这些数据流进行管理。同时,它还处理来自用户的连接请求,并将用户订阅的数据流转发给他们。类比为电视台总部。它接收所有记者传回的信号,并把它们编成不同的频道(如CCTV-1, CCTV-5等),等待观众选择收看。

  • NTRIP Client (数据接收者 / 电视观众)

    NTRIP Client是集成在移动站(Rover)设备里的客户端软件。它通过4G/5G网络连接到NTRIP Caster,并像“看电视选台”一样,选择一个自己需要的数据流(通常称为“挂载点”,Mountpoint)进行订阅和接收。

NTRIP的工作流程简要概括为:

基准站NTRIP Server(互联网)NTRIP Caster(互联 网)NTRIP Client (移动站)

B. NTRIP协议格式

*NTRIP 协议是基于 HTTP/1.1 (超文本传输协议) 的***。它的整**个通信过程,完全遵循了 HTTP 的客户端-服务器请求/响应模型。

1. 获取源列表 (Source Table)

  • NTRIP Client (客户端):向 NTRIP Caster 的地址(如 http://caster.example.com:2101)发送一个标准的 HTTP GET 请求。

  • NTRIP Caster (服务器):响应这个请求,返回一个 HTTP 200 OK 状态码,其响应体 (Body) 就是一个文本格式的“源列表”。这个列表详细说明了该 Caster 上有哪些可用的数据流(挂载点/Mountpoint)、数据格式(如 RTCM 3.2)、所属GNSS系统等信息。

这个过程和浏览器访问一个网站主页,服务器返回网页内容,原理上完全一样。

2. 请求差分数据流

  • NTRIP Client:从源列表中选择一个想要的挂载点(比如 RTCM3_MSM),然后向该挂载点的特定 URL(如 http://caster.example.com:2101/RTCM3_MSM)再次发送一个 HTTP GET 请求。

    • 身份验证:如果这个挂载点需要密码,客户端会在 HTTP 请求的头部 (Header) 中加入标准的 Authorization 字段,进行身份验证(通常是 HTTP Basic Authentication)。

  • NTRIP Caster:验证请求(挂载点是否存在、用户名密码是否正确)后,会返回一个特殊的响应:ICY 200 OK

    • 关键点 ICY 200 OK:这个响应码源于 Icecast 流媒体服务器(用于网络电台)。它告诉客户端:“你的请求已成功,接下来我不会关闭连接,而是要开始向你连续不断地发送一个数据流。”

    • 数据流:在此之后,Caster 就会通过这个保持开放的 HTTP 连接,将原始的、二进制的 RTCM 数据源源不断地作为响应体发送给客户端。

3. 基准站上传数据

  • NTRIP Server (基准站):向 Caster 的特定挂载点发送一个 HTTP POSTSOURCE 请求(SOURCE 是 Icecast 定义的一个方法)。

  • NTRIP Caster:验证通过后,这个 HTTP 连接同样会保持开放,NTRIP Server 就可以通过这个连接,将 RTCM 数据持续不断地“推”给 Caster。

C. 为什么选择基于 HTTP
  1. 穿透防火墙:HTTP 使用标准的网络端口(如 80, 443, 或 NTRIP 常用的 2101),这些端口在绝大多数网络环境中都是开放的,因此 NTRIP 数据可以轻松穿过防火墙,解决了许多网络连接问题。

  2. 利用现有设施:可以直接利用现有的 HTTP 服务器、代理、负载均衡等网络基础设施。

  3. 简单易实现:几乎所有的编程语言都有成熟的 HTTP 客户端和服务器库,开发 NTRIP 相关软件的门槛大大降低。

  4. 无状态与有状态的结合:虽然 HTTP 本身是无状态的,但 NTRIP 通过保持 TCP 连接的开放,巧妙地实现了一个有状态的、持续的数据流传输。

9. 总结

  • RTCM是一种标准:它定义了GNSS差分改正数据的编码、打包和传输格式,是实现不同品牌设备间互操作性的基石。

  • RTCM 3是当前主流:它高效、灵活,支持所有主流GNSS星座,是现代高精度定位应用(如测绘、自动驾驶、精准农业)的首选。

  • 核心内容是消息:通过不同的消息类型(Message Type),RTCM可以承载基准站的原始观测值、坐标、星历等多种信息。

  • 工作流程:基准站生成RTCM数据 -> 通过电台或NTRIP网络传输 -> 移动站接收并解码 -> 用于消除误差,实现厘米级定位。

  • 传输方式:以1Hz的频率或者更高的频率流式传输观测数据,并定期加入其他辅助数据

理解RTCM格式,是深入学习和应用高精度GNSS技术的关键一步。RTCM最详细的介绍就是www.rtcm.org网站的标准文档(需要收费购买),此外开源软件pyRTCM和RTKLIB,以及GNSS接收机厂商的技术文档也都是学习和理解RTCM 3格式的参考。

参考的HDK文档

RTCM 3.x数据格式全解:万字长文彻底解析高精度GNSS核心协议

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐