RTCM编解码学习及代码扩展

RTCM 是一种普遍采用的数据传输格式,它是由国际海运事业无线电技术委员会提出的,用于制定在差分全球导航定位系统和实时动态操作时使用的标准。

表1 RTCM3.2标准格式的帧结构

 

序号

数据内容

比特数/bit

备注

1

同步码

8

设为‘11010011’

2

保留

6

设为‘000000’

3

信息长度

10

数据信息的长度

4

数据信息

不定

最大1023bytes

5

CRC

24

校验

 

RTCM3.X标准包含应用层﹑表示层、传输层、数据链路层以及物理层。对于编码﹑解码最重要的是表示层和传输层。表示层对整个数据结构做出了详细的定义,包含数据字段、消息类型等。传输层定义了传输的协议,校验方式等。RTCM3.X 为了达到较高的传输完整率,一条标准的电文由一个固定的引导字、保留字、一个消息的长度定义,一条消息和一个24 bits的周期冗余检校组成。

MSM电文组由于其通用性更好,便于编码、解码,未来将是实时GNSS 数据传输的重要方式。然而由于它是最新提出的一种电文类型,相关介绍文献也较少,因此下面对 MSM电文组进行介绍。MSM电文组由三部分组成﹐分别为电文头(Message Header),卫星数据(Satellite Data)和信号数据(Signal Data)。各MSM电文组的电文头是相同的,包含了该条消息的基本情况,通过解码电文头,可以得到消息类型,参考站信息﹐各观测值信息,电文长度等。

MSM电文组的信号数据是以Cell为单位进行排列,它的排列顺序根据GNSS Cell标志组(Masks)来排列的。GNSS Cell标志组是一个存放卫星编号及频率编号的二维数组。它的第一行存放的是卫星标志组中第一颗观测卫星各信号的标志,以此类推。因此它的大小Ncell是由卫星和信号的个数来决定的,Ncell= Nsat× Nsig,其中Nsat是卫星个数,Nsig是信号个数。

 表3 各MSM电文组的消息头包含内容

 

 完成项目中实时RTK部分两套代码的整合,结构体转换;完成单点定位分频点定位;完成完好性结构体数据的实时播发。

 

extern void ep2gtime(nav_Time_t * gt, double *ep)

{

    gt->year = ep[0];

    gt->month = ep[1];

    gt->day = ep[2];

    gt->hour = ep[3];

    gt->minute = ep[4];

    gt->sec = ep[5];

    gpssecw(gt);

    gtimejd(gt);

}

gtime_t navt2gtime(nav_Time_t *c)

{

    gtime_t t = epoch2time(gpst0);

    int week = c->week;

    double sec = c->secw;

    if (c->sec < -1E9 || 1E9 < sec) sec = 0.0;

    t.time += 86400 * 7 * week + (int)sec;

    t.sec = sec - (int)sec;

    return t;

}

void gtime2navt(nav_Time_t *gt, gtime_t *ge)

{

    double ep[6] = { 0 };

    time2epoch(*ge, ep);

    ep2gtime(gt, ep);

}

int sol2est(sol_t  *sol, rtk_BslSol_t *BslSol)

{

    return 1;

}

void link_free(nav_SatsEph_t *p_head)

{

    nav_SatsEph_t *p_mov;

    while (p_head != NULL)

    {

         p_mov = p_head->next;

         p_head = p_mov->next;

         free(p_mov);

    }

}

int rtk2est(rtk_t *rtk, mnt_BslSol_t *est, rtksvr_t *svr,int fobs, mnt_ConstConfig_t *g_ConstConfig1, double *rs, double *dts, double *azel_,int nu,int nr, const obsd_t *obs)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值