Ublox十六进制导航数据解析及Pixhawk兼容模拟数据制作问询
1. 经纬度信息解析
你提供的两条数据是Ublox的UBX-NAV-PVT消息(类01,ID07),包含完整定位信息,其中确实存在经纬度:
第一条数据解析
- 纬度:取载荷第12-15字节(
1f 9b ad 2f),按小端字节序转换为32位有符号整数:0x2FAD9B1F = 799902495,单位为1e-7度,换算后为 79.9902495°(北纬) - 经度:取载荷第16-19字节(
03 01 0a 0b),小端转整数:0x0B0A0103 = 188688643,换算后为 18.8688643°(东经)
第二条数据解析
- 纬度:取载荷第12-15字节(
ff 92 fe ff),小端转32位有符号整数(补码):-708609,换算后为 -0.0708609°(南纬) - 经度:取载荷第16-19字节(
03 01 0a 0b),与第一条一致,为 18.8688643°(东经)
2. 数据结构与差异解释
完整帧结构
这是Ublox的二进制UBX协议帧(并非类NMEA,是Ublox自研的高效定位协议),结构固定为:
- 同步字:
b5 62(固定标识,用于区分UBX帧与其他数据格式) - 类/ID:
01 07(NAV类的PVT消息,包含位置、速度、时间全量定位数据) - 长度字段:
5c 00(小端字节序,对应十进制92,说明载荷长度为92字节) - 载荷:92字节,包含时间戳、定位状态、经纬度、高度、速度、卫星数量、定位精度等数十种动态参数
- 校验和:最后2字节(第一条
e5 51、第二条c7 a4),基于类/ID、长度、载荷的所有字节计算(UBX专属校验算法:CK_A为所有字节累加和取低8位,CK_B为CK_A的累加和取低8位)
结构重复但内容有差异的原因
- 两条是同一类型的周期性输出消息:Ublox会按固定频率(如1Hz)输出NAV-PVT消息,所以帧的头部、类/ID、长度字段完全一致,整体结构重复
- 载荷差异来自动态定位数据:比如时间戳、实时经纬度、速度、定位精度参数等,这些参数随传感器的实时测量结果变化,所以部分字节内容不同
- 校验和每次不同是必然结果:校验和基于载荷计算,载荷动态数据变化后,校验和会随之更新,用于接收端验证帧的完整性,避免数据传输错误
内容的提问来源于stack exchange,提问作者Marifin -
相关产品推荐
相关产品推荐

