rtklib使用kalman滤波进行高精度相对定位原理
rtklib使用kalman滤波进行高精度相对定位中浮点解的计算,流程主要分为以下几个步骤:
1. 计算移动站概略坐标
2. 计算卫星位置、速度
3. 选择共视卫星
4. 计算非差残差项和双差
5. 使用kalman滤波计算浮点解
6. 重新进行双差计算
5. 计算固定解
各个步骤的关键算法如下:
1. 计算概略坐标
概略坐标的计算可以使用卡拉曼滤波方法或者加权最小二乘法,rtklib中使用的是后者。
对应代码:rtkpos--pntpos
2. 计算卫星位置速度
对应代码: relpos--satposs
3. 选择基准站与移动站共视卫星
对应代码: relpos--selsat
4. kalman滤波状态更新
kalman滤波状态更新主要内容有3个,即a 状态转移矩阵的确定 b 初值确定 c 状态向量确定
rtklib中状态向量选择移动站的位置速度 以及单差整周模糊度(x,v,N1,N2,N3...Nm)
初值选择:坐标速度为第一步中计算的概略坐标,整周模糊度初值则使用伪距载波相位组合确定uppos upbias
状态转移矩阵的选择:对于位置速度可分为静态模型和动态模型 高动态模型,具体模型与单点定位kalman滤波模型一致uppos
对于整周模糊度,未发生周跳则整周模糊度不变,发生周跳时,则重置滤波器,重新使用伪距载波组合计算概略整周模糊度为初值进行滤波
计算量测值与预测值差v和观测矩阵H(ddres),并进行卡尔曼滤波的量测更更新filter,此步得到浮点解
周跳的判断:rtklib使用电离层残差法进行周跳的探测
对应代码udbias-detslp_gf_L1L2/L1L5
5. 重新计算双差ddres
6. 使用LAMBDA算法计算固定解
对应代码: resamb_LAMBDA
以下两图为卡尔曼滤波效果(解算为静态点):
图1可以看出单差整周经过卡尔曼滤波后控制在1周以内,图2为周跳发生,卡尔曼滤波重置图