第五篇:NMEA、RTCM、NTRIP 到底是什么?——RTK 数据链路详解
引言上一篇我们讲了《Point-In-Polygon 是什么——机器人电子围栏核心算法》现在很多人已经知道RTK 高精度定位但真实工程里。很多人第一次接 RTK 模块时会直接懵掉。因为你会突然看到NMEA RTCM NTRIP GGA RMC 串口 TCP 差分流各种名词满天飞。于是很多人开始疑惑RTK 模块到底输出了什么NMEA 是什么RTCM 又是什么NTRIP 为什么还需要网络差分数据到底怎么传Android / IoT 到底怎么接 RTK今天这一篇。我们就从工程视角。真正讲透RTK 的完整数据链路一、先理解一个核心问题很多人以为RTK 模块 一个定位芯片其实不是。真正的 RTK 系统 本质上是“数据通信系统”因为 RTK 不只是接收卫星它还需要接收差分数据而差分数据 本质上也是数据流于是RTK 工程里最核心的东西之一其实就是数据协议二、RTK 数据链路长什么样真实工程通常长这样卫星 ↓ RTK 基站 ↓ 生成差分数据RTCM ↓ NTRIP 网络传输 ↓ 机器人 RTK 模块 ↓ 输出 NMEA 定位数据 ↓ Android / IoT 上层系统这里面 最核心的三个东西 就是NMEA RTCM NTRIP三、什么是 NMEA这是最常见的。也是你最容易看到的。NMEA 本质上是什么一句话“GPS 定位输出格式”可以理解成GPS 日志协议RTK 模块定位完成后会不断输出经纬度 速度 方向 时间 卫星数量这些数据。而 NMEA就是这些数据的标准格式。四、NMEA 长什么样真实数据通常长这样$GNGGA,123519,4807.038,N,01131.000,E...第一次看到很多人会觉得这是什么鬼其实这只是文本协议五、NMEA 常见消息类型这是工程高频。1. GGA最重要。包含经纬度 海拔 Fix状态 卫星数量RTK 工程里最常看。2. RMC包含速度 方向 时间 定位状态很多导航系统会用。3. GSV包含可见卫星信息例如有多少颗星信号强度卫星编号六、Android / IoT 为什么经常解析 NMEA因为RTK 模块通常就是通过串口 USB 蓝牙 TCP不断输出NMEA 字符串例如UART → Android然后Android 上层自己解析。七、什么是 RTCM现在来到RTK 的核心协议RTCM 本质是什么一句话“差分数据协议”上一篇我们讲过RTK 基站会生成误差修正数据这些数据必须传给机器人。而 RTCM就是差分数据格式八、RTCM 里面是什么通常包括卫星误差时钟误差相位数据差分修正基站信息这些都是RTK 解算核心数据九、为什么普通 GPS 不需要 RTCM因为普通 GPS只做单点定位不做高精度差分解算所以不需要 RTCM。十、什么是 NTRIP这里来到工程核心NTRIP 本质是什么一句话“通过网络传输 RTCM”可以理解成RTK 的网络层协议十一、为什么 RTK 需要网络因为基站和机器人通常离得很远。例如基站在楼顶 机器人在草坪于是差分数据必须通过网络发送。十二、NTRIP 工作流程真实工程通常长这样1. 基站生成 RTCMRTCM 差分数据2. 上传到 NTRIP Server类似云服务器3. 机器人通过网络连接例如4G / WiFi4. 获取 RTCM 差分流5. RTK 模块完成高精度解算最终进入FIX十三、为什么 RTK 有时会突然失效因为NTRIP 本质依赖网络如果4G 波动WiFi 中断Server 断流RTCM 延迟都会导致FIX → FLOAT于是机器人开始漂。十四、真实机器人里的 RTK 数据链路真实工程通常是这样的卫星 ↓ RTK 模块 ↓ 输出 NMEA 网络 ↓ NTRIP ↓ 获取 RTCM RTK 解算 ↓ 输出 FIX Android / Linux ↓ 地图系统 ↓ 机器人控制你会发现RTK 本质是“定位 通信 网络”系统而不仅仅是定位。十五、Android / IoT 怎么接 RTK因为很多机器人 其实上层就是Android或者Linux常见接法1. UART 串口最常见。例如ttyS4 ttyUSB0读取NMEA 数据流2. 蓝牙某些 RTK 设备通过蓝牙输出 NMEA。Android 直接接收。3. TCP / Socket有些设备直接TCP 推流例如192.168.1.100:8001十六、工程里最常见的问题1. NMEA 解析错误例如半包 粘包 编码问题2. RTCM 不兼容不同设备RTCM 版本可能不同。例如RTCM3.0 RTCM3.23. 网络延迟NTRIP 延迟过大会影响 FIX。十七、面试怎么回答如果面试官问“NMEA、RTCM、NTRIP 分别是什么”推荐回答标准答案面试版NMEA是 GNSS 模块输出的定位数据协议。主要包含经纬度时间速度Fix 状态RTCM是 RTK 差分数据协议。用于传输误差修正相位数据基站信息NTRIP是通过网络传输 RTCM 的协议。机器人通常通过4GWiFi从基站获取 RTCM 差分流。最终实现厘米级定位。十八、总结一句话总结NMEA 负责“输出定位结果”RTCM 负责“传输差分修正”NTRIP 负责“通过网络发送 RTCM”三者共同组成RTK 的完整数据链路下篇预告下一篇我们继续《Android / IoT 如何接入 RTK 模块——串口、蓝牙、TCP 工程实践》深入讲透Android 如何读取 NMEA串口怎么接 RTK 模块蓝牙 RTK 怎么通信TCP 推流怎么处理粘包半包问题实际机器人定位架构怎么做这些才是真正开始进入 RTK 工程开发。《RTK / GNSS 工程实战系列》为什么机器人能厘米级定位——一篇讲透 GPS、北斗 与 RTKRTK 为什么比 GPS 准——差分定位原理详解机器人为什么会“漂”——RTK 漂移问题详解Point-In-Polygon 是什么——机器人电子围栏核心算法NMEA、RTCM、NTRIP 到底是什么——RTK 数据链路详解Android / IoT 如何接入 RTK 模块——串口、蓝牙、TCP 工程实践RTK 地图 机器人完整定位系统架构解析

相关新闻