主要围绕 matlab里的地磁场 模型(World Magnetic Model)来介绍。
该模型的输入为:经度,纬度,高度,年份
输出为:磁感应强度向量(Mag_vec, nT),水平方向磁感应强度模值(nT),磁偏角(dec, deg),磁倾角(inc, deg),磁感应强度模值(Mag_norm, nT)
磁感应强度向量与磁偏角,磁倾角,磁感应强度模值的关系为:
M
a
g
v
e
c
x
=
M
a
g
n
o
r
m
∗
c
o
s
(
i
n
c
)
∗
c
o
s
(
d
e
c
)
Mag_{vec}x =Mag_{norm}*cos(inc)*cos(dec)
Magvecx=Magnorm∗cos(inc)∗cos(dec)
M
a
g
v
e
c
y
=
M
a
g
n
o
r
m
∗
c
o
s
(
i
n
c
)
∗
s
i
n
(
d
e
c
)
Mag_{vec}y =Mag_{norm}*cos(inc)*sin(dec)
Magvecy=Magnorm∗cos(inc)∗sin(dec)
M
a
g
v
e
c
z
=
M
a
g
n
o
r
m
∗
s
i
n
(
i
n
c
)
Mag_{vec}z =Mag_{norm}*sin(inc)
Magvecz=Magnorm∗sin(inc)
理想情况下,磁力计测量值即地球磁感应强度在机体坐标系的投影,即:
M
a
g
m
e
a
s
=
D
C
M
b
e
∗
M
a
g
v
e
c
Mag_{meas} =DCM_{be}*Mag_{vec}
Magmeas=DCMbe∗Magvec
磁力计干扰有硬磁干扰和软磁干扰。
硬磁干扰指的是被磁化的物质所产生的,一般干扰是一个固定值,不随着航向的变化而变化。表现在测量值里为“零偏”(bias)。
软磁干扰指的是地磁磁场与飞行器周围的磁化物质相互作用而产生的,这个干扰数值与航向有关。表现在测量值里为“缩放”(包含了scale和rotate)。
校准方法主流是:椭球校准法,matlab 上 搜一下 Ellipsoid Fitting 即可。
简单写一下原理就是:用融合出来的航向把机体坐标系的磁力计测量值转换到惯性系,离真实的磁感线向量差多少度,就生成多少的航向角速度(指令),继续增大(减小)航向角。
其实这里介绍的航向融合的方法和倾斜(Tilt,即roll和pitch)姿态的融合方法很像。倾斜姿态用的测量量主要是重力加速度矢量,而航向融合用的测量量主要是磁感线。
众所周知:用某种矢量作为测量量去测量姿态,肯定是无法测量出垂直于该矢量的姿态运动的。因为绕这个矢量旋转一圈,矢量方向是不变的。
例如,用重力加速度测量姿态,就无法测出航向运动。同理,用磁感线(假设与地面平行)测量姿态,也无法测量出滚转和俯仰姿态。
因此小飞机想要完整解算三轴姿态,除了加速度计必定还需要一个磁力计。