# RTKLIB新频点解析 **Repository Path**: sunnier666/RTKLIB_BeidouNewCode ## Basic Information - **Project Name**: RTKLIB新频点解析 - **Description**: 基于RTKLIB b33版本的修改,支持解析北斗B1C和B2a的信号 - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-04-12 - **Last Updated**: 2022-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RTKLIB新频点解析 #### 介绍 RTKLIB b33版本的修改,支持解析北斗B1C和B2a的信号 #### 1.概述 北斗三号卫星新增了B1C和B2a的新频点,但在RTKLIB中,即使是新发布的b34版本,也并不能实现新频点的解析。解析新频点的信号,对于增加观测量和改进定位效果非常重要,因此特撰写此文档,介绍在RTKLIB中新频点的解码方法。特别要指出的是:本文档的修改是基于RTKLIB b33的版本,下文若不特别说明,均指b33版本。 #### 2.前期知识准备 北斗系统空间段由若干地球同步轨道卫星(GEO)、倾斜地球同步轨道卫星(IGSO)和中圆地球轨道卫星(MEO)三种轨道卫星组成混合导航星座。北斗二号基本星座采取5GEO+5IGSO+4MEO的形式;北斗三号采取3GEO+3IGSO+24MEO的星座构成,卫星与卫星之间具备通信能力,可以在没有地面站支持的情况下自主运行。 北斗二号和北斗三号的基本导航服务信号及频率如下表: ![输入图片说明](IMG/S1image.png) 从表1可以看到,B1C信号的载波频率为1575.420MHz,与GPS L1和GalileoE1共享频点;B2a信号载波频率1176.450MHz,与GPSL5和Galileo E5a共享频点。 ![输入图片说明](IMG/2.png) 另外,根据观测值信号ID与BDS信号的映射关系,可以获知BDS的信号代码和放置的信号位,此信号位的对应可在rtcm3.c中的msm_sig_cmp()函数中查看,这对于后文中支持新频点的修改特别重要。 #### 3.代码修改 (1)修改头文件,增加对B2a的支持 rtklib.h头文件中,注意看北斗系统相关的参数是否定义。 ``` #define NFREQ 5 //载波相位频率的数量 #define ENACMP //关于北斗卫星的定义(定义了北斗卫星的卫星数量、卫星号等) ``` (2)观测值代码转观测值index 在如图1的地方,打断点进行调试,可以看到h->sigs[]数组中的信号位,然后根据数据位,找到图2的msm_sig_cmp[32]数组,并打开进行相应数据位的修改。 ![输入图片说明](IMG/%E5%9B%BE1image.png) 图1 save_msm_obs()函数断点调试 ![输入图片说明](IMG/%E5%9B%BE2image.png) 图2 北斗信号频点数组 (3)msm_sig_cmp[32]数组修改 如图3所示,按照h->sigs[]的23、25位,在msm_sig_cmp[]数组中修改23、25位的数值为1X、5X,分别代表新频点B1C和B2a。 ![输入图片说明](IMG/%E5%9B%BE3image.png) 图3 数组中的数据位 (4)code[i]及freq[i]的映射 添加如下图4中的代码,完成code[i]及freq[i]的映射。 ![输入图片说明](IMG/%E5%9B%BE4image.png) 图4 code[i]及freq[i]的映射 (5)sigindex()函数修改 如图5所示,在sigindex()函数中,需要在if (ex[i]==0) ind[i]=freq[i]-1前添加 `if(sys==SYS_CMP) ex[i]=0;//北斗系统修改` 此函数是为了确定频点的顺序,以便解析不同频点上的观测值。 ![输入图片说明](IMG/%E5%9B%BE5image.png) 图5 sigindex()函数修改 (6)载波相位波长的计算修改 satwavelen()函数中,增加B1C和B2a波长计算。 ![输入图片说明](IMG/%E5%9B%BE6image.png) 图6 波长计算函数的修改