2. 编程实现–速度解算
2.2 速度解算
进行姿态解算的目标之一就是为 加速度计提供测量基准,即,将加速度计在机体坐标系下的输出 变换到 导航坐标中去。
数学表示:
【注】:本编程实现中,速度更新周期
与姿态更新周期
相同,均为6倍的采样时间间隔。
2.2.1 算法原理
目标就是求得速度方程(或比力方程)的数值解:
对该式子在一个速度更新周期 做积分得,速度增量:
- 是 时刻姿态矩阵,且简记为
反映 时刻至 时刻坐标系的变化,而这种变化也可以由等效旋转矢量表示,关系如下(推导见P253):
- 上式中的等效旋转矢量
本应该由上一节中推导的旋转矢量微分方程解得,但此处取近似,(
为小量):
- 上式中的等效旋转矢量
本应该由上一节中推导的旋转矢量微分方程解得,但此处取近似,(
为小量):
这样,
时刻运载体在导航坐标系内的速度:
其中, 是由有害加速度引起的速度补偿量;
是由比力引起的速度补偿量;
- 其中,
为加计在
输出的速度增量;
为速度的旋转效应补偿项;
为速度的划桨效应补偿项。
- 其中,
为加计在
输出的速度增量;
下面,分析对最后一项,即,划桨效应补偿项的补偿算法。
与姿态解算时同样地,运载体的角速度和加速度随时间变化的曲线复杂且未知,此处,采用直线拟合
和
.
推导过程略,给出最后的划桨效应补偿项公式:
但是,实际中运载体的角速度和比力 与 给定的拟合曲线 并不一致。于是下面给出 在划桨运动下,划桨效应补偿项的公式:
双子样,系数相同;
三子样、四子样公式详见P298.
2.2.2 算法的编程实现
实现功能:根据陀螺和加计的输出,计算运载体的速度。
函数参数输入:(此处采用三子样算法)
增量的输出对应的时间间隔:
陀螺的角度增量输出:
加计的速度增量输出:
当地的地球物理量信息:
时刻的运载体速度:
函数的输出参数:
时刻的运载体速度:
代码如下:
function Vm1=CalculateVm(T,Cm,delTheta,delV,Vm,Wie,Wen,G)
% This function is to calculate the Vm1
% delTheta : 3-by-3 matrix \delta \Theta
% delV : 3-by-3 matrix \delta V
% By changshen_xu
% Date 2018-07-19
delTheta1 = delTheta(:,1);
delTheta2 = delTheta(:,2);
delTheta3 = delTheta(:,3);
delV1 = delV(:,1);
delV2 = delV(:,2);
delV3 = delV(:,3);
% Vm1 = Vm + Cm \delta Vsfm + \delta Vgcorm
% ====\delta Vgcorm========
harmful_force = G-cross(2*Wie+Wen,Vm);% be treated as a constant
delVg = harmful_force*T;
% \delta Vsfm = \delta Vm + \delta Vrotm + \delta Vsculm
% ====\delta Vm===========
delVm = delV1+delV2+delV3;
% ====\delta Vrotm=======
delThetam = delTheta1+delTheta2+delTheta3;
delVrotm = 1/2*cross(delVm,delThetam);
% ====\delta Vsculm========
delVsculm = 9/20*(cross(delTheta1,delV3) + cross(delV1,delTheta3)) +...
27/40*(cross(delTheta1,delV2)+ cross(delTheta2,delV3) + ...
cross(delV1,delTheta2) + cross(delV2,delTheta3));
delVsfm = delVm+delVrotm+delVsculm;
Vm1 = Vm+Cm*delVsfm+delVg;
end