从 firstSubFrame(channel) 开始,每20ms取一个bit,连续读取 300 bits(一个子帧,6秒)。GPS一帧有5个子帧(1500 bits,30秒),需要收集至少一帧数据才能解出星历。这部分内容对应的程序代码见上一篇文章。
子帧1:卫星时钟参数、健康状态、群延迟(TGD)
子帧2:轨道开普勒参数(半长轴、偏心率、轨道倾角等)
子帧3:轨道开普勒参数续(近地点幅角、升交点经度、平近点角等)
从子帧1-3中提取出 星历参数,用于计算卫星在发射时刻的精确位置。
子帧2的HOW字中包含 TOW(Time of Week,周内时),精确到6秒整数倍。
结合子帧起点在跟踪结果中的位置(firstSubFrame),可以推算出信号发射时刻。
用本地接收机时间减去信号发射时刻,乘以光速,得到伪距。
收集至少 4颗卫星 的伪距和卫星位置。
建立观测方程,用最小二乘法或卡尔曼滤波求解。
看看步骤2如何写代码?
这次将展示步骤1和步骤2的执行过程!

load的数据是跟踪模块输出的解调结果,这只是解调结果,还需要采样点的索引值。不过找到子帧和解出星历参数只需要解调结果即可。