• GNSS伪距从码片到米的单位转换


    概述

    因为公司项目的需求,需要解析各种GNSS接收机的协议。在解析的过程中,经常涉及GNSS接收机协议伪距数据的单位转换问题,目前遇到最多就是从码片(chip)转换成米(m)的情况,故而通过该文章记录下来,方便将来检索。
    目前接触的GNSS接收机协议,大部分都是L1/G1/B1频点才会出现码片计数的情况,这应该和早期接收机的设计有关,新出的接收机已经很少用码片作为单位的,大部分都是用米。故而文章也只是针对L1/G1/B1频点做出相关记录。

    基础知识

    GPS 信号

    L1 C/A

    GPS L1 C/A播发的码型是Gold码。码周期是1023个码片,所以在1.023MHz时钟驱动下,一个周期信号长度(1023个码片)为1ms,即每隔1ms产生一个周期的全部1023个码片,每个码片持续时间长度为1ms/1023 ≈1us,码元的宽度为293.05m,测距精度为2m到3m。

    GLONASS 信号

    L1(G1)/L2(G2)

    GLONASS信号民用播发都是C/A码,码速率为511 kHz ,码长511 ,码周期1 ms 。

    北斗信号

    B1I

    北斗伪卫星系统中Gold码的速率为2.046Mcps,长度为2046,伪码周期为1ms,即1个伪码周期包含2046个码片。

    具体代码

    #ifndef LIGNT_SPEED
    #define LIGNT_SPEED (299792458.0)
    #endif
    
    /*sow   :历元时刻*/
    /*chips :码片计数*/
    /*raidx :数据协议中的单位,例如:1/2048 chip,该字段就是2048*/
    double gps_l1_chip2pr(double sow, double chips, int raidx)
    {
    	double s = sow - (int)sow; //计算观测数据非整秒时刻
    	double p = chips / (raidx * 1.0) / 1024000.0; //计算发射时刻, 1024000 = 码长 * 1000(转换成以秒为单位)
    	double d = s - p; //计算传输时长
    	if(d < 0.0) { d += 1.0f; } //负数,表示传输过程中跨秒了,故而 +1.0f
    	return d * LIGNT_SPEED; //传输时长 * 光速 = 伪距
    }
    
    /*sow   :历元时刻*/
    /*chips :码片计数*/
    /*raidx :数据协议中的单位,例如:1/2048 chip,该字段就是2048*/
    double bd_b1i_chip2pr(double sow, double chips, int raidx)
    {
    	double s = sow - (int)sow; //计算观测数据非整秒时刻
    	double p = chips / (raidx * 1.0) / 2046000.0; //计算发射时刻, 2046000 = 码长 * 1000(转换成以秒为单位)
    	double d = s - p; //计算传输时长
    	if(d < 0.0) { d += 1.0f; } //负数,表示传输过程中跨秒了,故而 +1.0f
    	return d * LIGNT_SPEED; //传输时长 * 光速 = 伪距
    }
    
    /*sow   :历元时刻*/
    /*chips :码片计数*/
    /*raidx :数据协议中的单位,例如:1/2048 chip,该字段就是2048*/
    double glo_b1i_chip2pr(double sow, double chips, int raidx)
    {
    	double s = sow - (int)sow; //计算观测数据非整秒时刻
    	double p = chips / (raidx * 1.0) / 511000.0; //计算发射时刻, 511000 = 码长 * 1000(转换成以秒为单位)
    	double d = s - p; //计算传输时长
    	if(d < 0.0) { d += 1.0f; } //负数,表示传输过程中跨秒了,故而 +1.0f
    	return d * LIGNT_SPEED; //传输时长 * 光速 = 伪距
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    参考链接

    多种全球定位导航系统的对比,信号及频谱分布
    GPS 入门 11——GPS C/A码产生与性质
    GPS载波频率

  • 相关阅读:
    redis复制机制
    TNS-12531: TNS: 无法分配内存
    GitHub官方出手,一针见血。Spring Boot趣味实战手册来袭(彩版)
    Nginx反向代理和缓存
    Kafka组件的消费者流程解析,图文详解
    设计模式(简要,应付软考)
    范西特-泽尼克定理的证明
    设计推特(Leetcode355)
    html网页设计模板制作前需要准备什么?
    全国A级旅游景区清单数据(2023年更新)
  • 原文地址:https://blog.csdn.net/qq_38189542/article/details/133710187