
如需帮助或有导航、定位滤波相关的代码定制需求可点击文末卡片联系作者文章目录核心模块详解惯性导航解算磁场测量与补偿EKF 状态向量设计地磁匹配定位Geomagnetic Map Matching速度辅助ZUPT 与磁场测速MATLAB 实现框架关键工程难点无人机惯性地磁测速定位系统Inertial/Magnetic Navigation System是 GPS 拒止环境下的核心替代方案将INS惯性导航的短期精度与地磁匹配的绝对位置修正能力结合实现长时间自主导航。核心模块详解惯性导航解算INS 的核心是对加速度计和陀螺仪数据做积分误差随时间二次累积位置误差 ∝ t²。状态方程在导航系NED下p ˙ v , v ˙ C b n f b − ( 2 ω i e n ω e n n ) × v g n \dot{\mathbf{p}} \mathbf{v}, \quad \dot{\mathbf{v}} \mathbf{C}_b^n \mathbf{f}^b - (2\boldsymbol{\omega}_{ie}^n \boldsymbol{\omega}_{en}^n) \times \mathbf{v} \mathbf{g}^np˙v,v˙Cbnfb−(2ωienωenn)×vgn其中C b n \mathbf{C}_b^nCbn是体坐标系到导航系的方向余弦矩阵由四元数传播更新以避免欧拉角奇异性。磁场测量与补偿原始磁力计输出受两类误差污染必须在进 EKF 之前校准硬磁误差Hard iron机体上永磁材料产生固定偏置b \mathbf{b}b在测量球面上表现为中心偏移。软磁误差Soft iron导磁材料改变磁场方向使球面畸变为椭球面用矩阵A \mathbf{A}A描述。校准模型m c a l A − 1 ( m r a w − b ) \mathbf{m}_{cal} \mathbf{A}^{-1}(\mathbf{m}_{raw} - \mathbf{b})mcalA−1(mraw−b)在飞行前做8字形机动用最小二乘椭球拟合求解A \mathbf{A}A和b \mathbf{b}b。EKF 状态向量设计EKF 是整个系统的核心19维状态向量x [ p n ⏟ 3 , v n ⏟ 3 , δ θ ⏟ 3 , b g ⏟ 3 , b a ⏟ 3 , b m ⏟ 3 ] T \mathbf{x} [\underbrace{\mathbf{p}^n}_{3}, \underbrace{\mathbf{v}^n}_{3}, \underbrace{\boldsymbol{\delta\theta}}_{3}, \underbrace{\mathbf{b}_g}_{3}, \underbrace{\mathbf{b}_a}_{3}, \underbrace{\mathbf{b}_m}_{3}]^Tx[3pn,3vn,3δθ,3bg,3ba,3bm]T观测更新将校准后的磁力计输出与地磁模型预测值来自 WMM/IGRF做差形成观测残差驱动状态更新。z m m c a l − C b n T m r e f ( p ) \mathbf{z}_m \mathbf{m}_{cal} - \mathbf{C}_b^n{}^T \mathbf{m}_{ref}(\mathbf{p})zmmcal−CbnTmref(p)地磁匹配定位Geomagnetic Map Matching这是获得绝对位置的关键。常用算法ICCP迭代最近等值线点将实时测量的磁场序列与预存地图做轮廓匹配类似地形辅助导航TERCOM的思路适合磁场特征丰富的区域。MSD均方差匹配在候选位置窗口内计算实测序列与地图的均方差取最小值处为匹配位置计算简单但依赖地图分辨率。粒子滤波用数千个粒子表示位置概率分布每步根据磁场似然更新粒子权重无需线性化假设对非高斯误差鲁棒性强。速度辅助ZUPT 与磁场测速ZUPT零速修正当无人机短暂悬停或检测到静止时将速度强制约束为零大幅抑制 IMU 漂移。地磁测速Magnetic Odometry利用无人机穿越空间磁场梯度时磁力计读数的变化率估计运动速度v ^ ≈ − ( ∇ m m a p ) m ˙ m e a s \hat{\mathbf{v}} \approx -\left(\nabla \mathbf{m}_{map}\right)^ \dot{\mathbf{m}}_{meas}v^≈−(∇mmap)m˙meas即用地图梯度的伪逆乘以实测磁场时间导数需要高精度地图且只在梯度显著区域有效。MATLAB 实现框架以下是 EKF 核心循环的 MATLAB 代码框架%% 无人机惯性地磁融合导航 - EKF 主循环% 状态维度位置(3) 速度(3) 姿态误差角(3) 陀螺漂移(3) 加速度偏差(3) 磁偏差(3) 19functionnavrunMagINS_EKF(imu_data,mag_data,wmm_map,dt)n19;% 状态维度% ---- 初始化 ----xzeros(n,1);% 误差状态间接法 EKFPdiag([...[111]*5^2,...% 位置初始方差 (m^2)[111]*0.1^2,...% 速度初始方差 (m/s)^2[111]*(1*pi/180)^2,...% 姿态角误差 (rad^2)[111]*(0.01*pi/180)^2,...% 陀螺漂移[111]*(0.01)^2,...% 加速度偏差[111]*(100e-9)^2]);% 磁偏差 (T^2)约 100 nT% 过程噪声连续时间转离散时间q_gyro(0.003*pi/180)^2;% rad^2/s陀螺 ARWq_accel(0.05*9.8e-3)^2;% (m/s^2)^2加速度计噪声q_mag(10e-9)^2;% T^2磁力计量测噪声QbuildProcessNoise(q_gyro,q_accel,dt,n);% 量测噪声R_mageye(3)*q_mag;% ---- 惯性导航真实状态参考量----nav.poszeros(3,size(imu_data,2));nav.velzeros(3,size(imu_data,2));nav.quat[1;0;0;0];% 初始四元数 w,x,y,zfork1:size(imu_data,2)% 步骤1INS 力学方程推进预测 gyroimu_data(1:3,k);% 角速度 rad/s已减去地球自转简化accelimu_data(4:6,k);% 比力 m/s^2体系% 四元数更新龙格-库塔或一阶近似nav.quatquatUpdate(nav.quat,gyro,dt);Cbnquat2dcm(nav.quat);% 体系 - 导航系% 速度和位置积分简化忽略科里奥利适用于低速短时a_navCbn*accel[0;0;9.8];% 减去重力nav.vel(:,k1)nav.vel(:,k)a_nav*dt;nav.pos(:,k1)nav.pos(:,k)nav.vel(:,k)*dt;% 步骤2EKF 预测协方差传播 FbuildStateTransMatrix(Cbn,accel,dt,n);% 系统矩阵线性化PF*P*FQ;% 步骤3磁力计更新量测 ifmod(k,5)0% 磁力计 50HzIMU 250Hz每 5 步更新一次mag_measmag_data(:,floor(k/5));% 已校准磁力计读数T% 从地磁模型查参考磁场导航系下[mN,mE,mD]queryWMM(wmm_map,nav.pos(:,k1));m_refCbn*[mN;mE;mD];% 转到体系与测量比较% 量测残差zmag_meas-m_ref;% 量测矩阵 H对磁偏差状态的偏导数HbuildMagMeasMatrix(Cbn,[mN;mE;mD],n);% 卡尔曼增益与更新SH*P*HR_mag;KP*H/S;xxK*z;P(eye(n)-K*H)*P*(eye(n)-K*H) K * R_mag * K;% 用误差状态修正真实状态间接法反馈nav.pos(:,k1)nav.pos(:,k1)x(1:3);nav.vel(:,k1)nav.vel(:,k1)x(4:6);nav.quatquatCorrect(nav.quat,x(7:9));xzeros(n,1);% 重置误差状态endendend关键工程难点地磁地图质量是精度瓶颈。WMM/IGRF 全球模型分辨率约 50km只够初始粗定位实际工程需要提前飞航线建立高精度局部地磁地图分辨率达到 1–10m 量级。磁场异常干扰城市钢筋建筑、地铁、高压线会使匹配完全失效需要在线异常检测自动降低磁力计量测的权重增大R m a g R_{mag}Rmag。可观测性分析纯磁场对 Z 轴航向的可观测性在低速、低机动时很差需要结合加速度计机动来激励航向可观测性这是 EKF 收敛的必要条件。UKF vs EKF磁场模型的非线性较强当姿态误差较大时 EKF 线性化误差显著可改用 UKF无迹变换以 sigma 点传播替代雅可比矩阵代价是计算量约增加 2–3 倍。