基于EKF常加速度模型的RTK定位中,状态向量增加前一历元测站到地心距离作为约束条件后滤波中各矩阵如何更改的代码
时间: 2024-03-29 13:34:15 浏览: 67
基于matlab实现采用gps、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置+源码
在 EKF 常加速度模型的 RTK 定位中,状态向量通常包括位置、速度、钟差等参数。如果要增加前一历元测站到地心距离作为约束条件,需要将其放入状态向量中。假设前一历元的测站到地心距离为 `rho`,则状态向量可以表示为:
```
X = [pos_x, pos_y, pos_z, vel_x, vel_y, vel_z, dt, rho]'
```
其中 `pos_x`, `pos_y`, `pos_z` 分别表示位置的 x、y、z 分量,`vel_x`, `vel_y`, `vel_z` 分别表示速度的 x、y、z 分量,`dt` 表示钟差,`rho` 表示前一历元测站到地心距离。
状态转移方程和观测方程需要相应修改。假设状态转移方程为:
```
X_k = F*X_{k-1} + G*U
```
其中 `F` 和 `G` 分别表示状态转移和控制矩阵,`U` 表示控制量(如加速度),则增加约束条件后的状态转移方程可以表示为:
```
X_k = F*X_{k-1} + G*U + K*rho
```
其中 `K` 表示增加约束条件后的卡尔曼增益,`rho` 表示前一历元测站到地心距离。
观测方程也需要相应修改,假设观测方程为:
```
Z_k = H*X_k + V_k
```
其中 `H` 表示观测矩阵,`V_k` 表示观测噪声,则增加约束条件后的观测方程可以表示为:
```
Z_k = H*X_k + V_k + N*rho
```
其中 `N` 表示增加约束条件后的观测噪声,`rho` 表示前一历元测站到地心距离。
在 EKF 中,需要对状态向量和协方差矩阵进行预测和更新。预测时,状态向量和协方差矩阵的更新方式不变,即:
```
X_k = F*X_{k-1} + G*U
P_k = F*P_{k-1}*F' + Q
```
其中 `P` 表示协方差矩阵,`Q` 表示过程噪声。
在更新时,需要先计算卡尔曼增益 `K`,然后更新状态向量和协方差矩阵,即:
```
K = P_k*H'*(H*P_k*H' + R)^{-1}
X_k = X_k + K*(Z_k - H*X_k)
P_k = (I - K*H)*P_k
```
其中 `R` 表示观测噪声协方差矩阵。注意,在计算卡尔曼增益时,需要将约束条件 `rho` 加入观测向量中。
阅读全文