记录simulink无人机开源代码

在这里插入图片描述

FMT是一款基于模型设计的开源智驾仪,可被用来快速构建无人机,车,船,机器人等的无人控制系统。“Firmament意为苍穹,希望无人机未来可以自由翱翔于广阔天空。仰望苍穹,也表达了对于未知的探索和科技的敬畏。”
源码地址:https://github.com/Firmament-Autopilot

FMT Base INS — Simulink 模型算法解析报告

模型名称: INS.slx(Firmament Autopilot Base INS)
版权: Copyright 2016-2023 The Firmament Autopilot. All Rights Reserved.
解析日期: 2026-07-11


一、模型总体架构

该模型是一个多传感器融合惯性导航系统(INS),基于扩展卡尔曼滤波(EKF)/互补滤波(CF)框架,融合 IMU、磁力计、GPS、气压计、测距仪、光流、空速计、外部位置共 8 类传感器,输出完整的导航状态。

1.1 顶层拓扑

                          ┌──────────────────────────────────────────────────────────────┐
                          │                     FMT Base INS                              │
                          │                                                               │
  ┌──────────────┐        │  ┌──────────────────┐    ┌──────────────┐    ┌─────────────┐  │
  │ IMU          │────────┼─►│                  │    │              │    │             │  │
  │ MAG          │────────┼─►│  Sensor          │    │  Data        │    │  Bus        │  │
  │ Barometer    │────────┼─►│  _PreProcess     ├───►│  _Fusion     ├───►│  _Constructor│──┼──► INS_Out
  │ GPS_uBlox    │────────┼─►│  (system_1169)   │    │  (system_9096)│   │  (system_968)│  │
  │ Rangefinder  │────────┼─►│                  │    │              │    │             │  │
  │ Optical_Flow │────────┼─►│  9 in → 1 out    │    │  1 in → 2 out│    │  3 in → 1 out│  │
  │ AirSpeed     │────────┼─►│                  │    │              │    │             │  │
  │ External_Pos │────────┼─►│                  │    │              │    │             │  │
  └──────────────┘        │  └──────────────────┘    └──────┬───────┘    └─────────────┘  │
                          │                                 │                              │
                          │                    ┌────────────▼──────┐                       │
                          │                    │  Delay (1 sample) │                       │
                          │                    └────────┬──────────┘                       │
                          │                             │ Rotation_Data (feedback)          │
                          │                             └──────────────────────────────────┤
                          │                      (反馈到 Sensor_PreProcess port 9)          │
                          └───────────────────────────────────────────────────────────────┘

1.2 三大处理阶段

阶段子系统SID功能
阶段一Sensor_PreProcess1169传感器数据预处理:坐标变换、校准补偿、质量评估
阶段二Data_Fusion9096核心融合算法:姿态解算(Rotation)+ 位置/速度估计(Translation)
阶段三Bus_Constructor968将融合结果打包为 29 通道 INS_Out_Bus 输出总线

二、传感器预处理(Sensor_PreProcess)

子系统 Sensor_PreProcess (SID=1169) 接收 9 路输入(8 路传感器 + 1 路姿态反馈),输出 1 路 Sensor_Data 总线。

  IMU ───────────► IMU_PreProcess ──────────┐
  MAG ───────────► MAG_PreProcess ──────────┤  (also receives GPS_Data + Rotation_Data)
  Barometer ─────► Baro_PreProcess ─────────┤
  GPS ───────────► GPS_PreProcess ──────────┤──► Bus Creator (8 elem) ──► Sensor_Data
  Rangefinder ───► Rangefinder_PreProcess ──┤
  Optical_Flow ──► OpticalFlow_PreProcess ──┤
  AirSpeed ──────► AirSpeed_Process ────────┤
  ExternalPos ───► ExternalPos_Process ─────┤
  Rotation_Data ─┤ (feedback to MAG + Rangefinder + OpticalFlow)

2.1 各预处理模块

预处理模块SID输入输出核心处理
IMU_PreProcess1407IMU_BusIMU_Data陀螺/加速度计校准(零偏、比例因子)、坐标旋转
MAG_PreProcess1539MAG + Rotation + GPS (3路)Mag_Data磁力计校准、磁倾角/磁偏角补偿、质量估计 (Inclination_Quality + Intensity_Quality)
GPS_PreProcess1293GPS_BusGPS_DataGPS 数据解析、位置/速度提取、有效性校验
Baro_PreProcess1208Baro_BusBaro_Data气压高度换算、温度补偿
Rangefinder_PreProcess10403Rangefinder + RotationRangefinder_Data测距仪倾角补偿(利用当前姿态修正斜距)
OpticalFlow_PreProcess10478Rangefinder_Data + Optical_FlowOpticalFlow_Data光流速度解算(结合测距高度换算为实际速度)
AirSpeed_Process10965AirSpeed_BusAirSpeed_Data空速数据解析与滤波
ExternalPos_Process11045ExternalPos_BusExternalPos_Data外部位置参考(如视觉里程计、UWB 等)的坐标转换

三、数据融合(Data_Fusion)

子系统 Data_Fusion (SID=9096) 是核心算法引擎,将融合问题解耦为旋转(姿态)和平移(位置/速度)两个子问题

                     ┌──────────────────────────────────────────────┐
  Sensor_Data ──────┤                                              │
                     │  ┌──────────────────┐                       │
                     ├──► Rotation_Filter   ├──► Rotation_Data ─────┼──► Data_Fusion out
                     │  │  (system_12)      │                       │       (port 2)
                     │  │  AHRS (EKF-based) │                       │
                     │  └────────┬─────────┘                       │
                     │           │                                  │
                     │           ▼                                  │
                     │  ┌──────────────────┐                       │
                     ├──► Translation_Filter├──► Translation_Data ──┼──► Data_Fusion out
                     │  │  (system_2332)    │                       │       (port 1)
                     │  │  CF (双通道EKF)   │                       │
                     │  └──────────────────┘                       │
                     └──────────────────────────────────────────────┘

3.1 旋转滤波器 — Rotation_Filter (AHRS)

子系统路径:Data_Fusion/Rotation_FilterRF_Data_PreProcessAHRS

3.1.1 AHRS 结构:Correct → Update 闭环
RF_Data ────────────────────────────────────────┐
                                                ▼
          ┌─────────────────┐    ┌──────────┐    ┌──────────────────┐
Sensor ──►│ RF_Data_        │───►│          │───►│                  │
  Data    │ PreProcess      │    │  AHRS    │    │  Bus_Constructor │──► Rotation_Data
          └─────────────────┘    │ (system  │    │  (system_9858)   │
                                 │  9717)   │    └──────────────────┘
                                 │          │
                                 │ Correct  │     ┌──────────┐
                                 │ (438)    │────►│ Delay1   │──┐
                                 │  ↓       │     │ (1 samp) │  │
                                 │ Update   │     └──────────┘  │  ┌──────────────┐
                                 │ (822)    │◄───────────────────┼──┤ Attitude     │
                                 │          │     ┌──────────┐  │  │ Update(829)  │
                                 │          │────►│ Delay2   │──┘  │  + Gyro_Bias │
                                 └──────────┘     │ (1 samp) │     │  Update(910) │
                                                  └──────────┘     └──────────────┘
3.1.2 Correct 阶段 — 误差校正
校正模块SID输入输出算法
Attitude_Correction9146Sensor_Data + Rotation_Data + RF_Data校正后姿态 att_B_correction磁力计/加速度计辅助姿态校正:利用加速度计测量重力方向 + 磁力计测量地磁方向,与当前估计姿态比较,计算姿态误差并补偿
Gyro_Bias_Correction710att_B_correction + IMU_Databias_g_B_correction陀螺零偏估计:利用校正后的姿态和原始陀螺数据,在线估计陀螺零偏漂移,并进行 Saturation 限幅保护
3.1.3 Update 阶段 — 状态传播
更新模块SID输入输出算法
Gyro_Bias_Update910bias_g_correction + gyr_B_radPsbias_g (3轴)一阶马尔可夫过程:陀螺零偏随时间漂移建模
Sum2965att_B_correction + bias_g补偿后角速度将校正后的偏置与当前零偏估计相加得到最终角速度补偿量
Attitude_Update829att_reset + quat_0 + 补偿后角速度att_quat + DCM_OB四元数传播:使用 Runge-Kutta 或 Euler 积分更新姿态四元数,并输出方向余弦矩阵(DCM)
3.1.4 AHRS 输出
输出信号含义单位
att_quat姿态四元数 [q0, q1, q2, q3]
DCM_OB机体坐标系→导航坐标系的方向余弦矩阵
bias_g陀螺零偏估计 [gx, gy, gz]rad/s

3.2 平移滤波器 — Translation_Filter (CF)

子系统路径:Data_Fusion/Translation_FilterTF_Data_PreProcessCF

CF(Complementary Filter)将平移估计解耦为水平(Horizontal)垂直(Vertical) 两个独立的 EKF 通道。

                        ┌─────────────────────────────────────┐
  TF_Data ─────────────┤                                     │
  Rotation_Data ───────┤    CF (Complementary Filter)        │
                        │                                     │
                        │  ┌──────────────────────┐           │
                        ├──► Horizontal_Filter     ├──► 水平状态  │
                        │  │ (system_7656)         │   [6×1]   │
                        │  │ Predict → Correct     │           │
                        │  └──────────────────────┘           │
                        │                                     │
                        │  ┌──────────────────────┐           │
                        ├──► Verticle_Filter       ├──► 垂直状态  │
                        │  │ (system_8125)         │   [3×1]   │
                        │  │ Predict → Correct     │   + rf_bias│
                        │  └──────────────────────┘           │
                        │                                     │
                        │  ┌──────────────────────┐           │
                        └──► Bus_Constructor       ├──► Translation_Data
                           │ (system_8465)         │
                           └──────────────────────┘
3.2.1 Horizontal_Filter — 水平位置/速度估计
  • 状态向量维度: 6 ([6×1], 经 Reshape 重塑)
  • 架构: PredictCorrectReshape(反馈闭环)
  • 算法类型: EKF(扩展卡尔曼滤波)
  • 状态变量推测(标准无人机水平导航):
    • 位置:[p_N, p_E](北向/东向位置)
    • 速度:[v_N, v_E]
    • 附加:可能包含加速度计零偏 [ba_x, ba_y]
模块SID功能
Predict7891使用 IMU 加速度 + 姿态信息进行状态一步预测(运动学模型)
Correct7972使用 GPS 位置/速度、光流速度等外部观测进行量测更新
3.2.2 Verticle_Filter — 垂直高度/速度估计
  • 状态向量维度: 3 ([3×1])
  • 架构: PredictCorrectReshape(反馈闭环)
  • 额外输出: rf_bias(测距仪偏置估计)
  • 状态变量推测:
    • 高度:h
    • 垂直速度:v_D
    • 气压计偏置或加速度计零偏
模块SID功能
Predict8206垂直运动学预测(气压高度 + IMU 垂直加速度积分)
Correct8128多源高度融合校正:GPS 高度、气压高度、测距仪 AGL 高度
3.2.3 反馈闭环

Translation_Filter 存在两个反馈路径:

  1. 内部反馈:CF 输出经 Delay(1) 反馈至 TF_Data_PreProcess(port 3),作为下一时刻的先验
  2. 外部反馈Rotation_Data 同时输入到 TF_Data_PreProcess(port 2),用于加速度的坐标旋转(机体→导航系)

四、输出总线构建(Bus_Constructor)

子系统 Bus_Constructor (SID=968) 将三个子系统的结果汇总为 29 通道 INS_Out_Bus

4.1 输出信号一览(29 通道)

序号信号名来源含义单位
1timestampCounter(1004)时间戳计数器sample
2phiRotation_Output滚转角rad
3thetaRotation_Output俯仰角rad
4psiRotation_Output偏航角rad
5quatRotation_Output姿态四元数 [q0,q1,q2,q3]
6pRotation_Output机体 x 轴角速度rad/s
7qRotation_Output机体 y 轴角速度rad/s
8rRotation_Output机体 z 轴角速度rad/s
9axRotation_Output机体 x 轴加速度m/s²
10ayRotation_Output机体 y 轴加速度m/s²
11azRotation_Output机体 z 轴加速度m/s²
12vnTranslation_Output北向速度m/s
13veTranslation_Output东向速度m/s
14vdTranslation_Output地向速度m/s
15airspeedTranslation_Output空速m/s
16latTranslation_Output纬度rad
17lonTranslation_Output经度rad
18altTranslation_Output海拔高度m
19lat_0Translation_Output参考原点纬度rad
20lon_0Translation_Output参考原点经度rad
21alt_0Translation_Output参考原点高度m
22dx_dlatTranslation_Output纬度-北向位置转换因子m/rad
23dy_dlonTranslation_Output经度-东向位置转换因子m/rad
24x_RTranslation_Output北向位置(相对原点)m
25y_RTranslation_Output东向位置(相对原点)m
26h_RTranslation_Output相对高度m
27h_AGLTranslation_Output离地高度(Above Ground Level)m
28flagStatus_Output状态标志位
29statusStatus_Output系统状态字

五、核心算法总结

5.1 算法架构总览

┌──────────────────────────────────────────────────────────────────────────┐
│                          FMT Base INS 算法框架                             │
│                                                                          │
│  ┌─────────────────────────────────────────────────────────────────┐     │
│  │                    传感器预处理层                                  │     │
│  │  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐ ┌───────┐    │     │
│  │  │ IMU  │ │ MAG  │ │ GPS  │ │Baro │ │Rangefind │ │Optic  │ ...│    │     │
│  │  │校准  │ │校准  │ │解析  │ │换算  │ │倾角补偿  │ │Flow   │    │     │     │
│  │  └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └────┬─────┘ └──┬────┘    │     │
│  └─────┼────────┼────────┼────────┼──────────┼──────────┼──────────┘     │
│        │        │        │        │          │          │                 │
│  ┌─────▼────────▼────────▼────────▼──────────▼──────────▼──────────┐     │
│  │                        融合估计层                                  │     │
│  │                                                                   │     │
│  │   ┌─────────────────────────┐    ┌──────────────────────────┐    │     │
│  │   │   Rotation_Filter       │    │   Translation_Filter     │    │     │
│  │   │   (AHRS - 姿态解算)     │    │   (CF - 位置/速度估计)    │    │     │
│  │   │                         │    │                          │    │     │
│  │   │   Correct 阶段:          │    │   ┌─ Horizontal_Filter   │    │     │
│  │   │   · 磁力计/加计姿态校正  │    │   │  Predict → Correct   │    │     │
│  │   │   · 陀螺零偏在线估计     │    │   │  状态维度: 6         │    │     │
│  │   │                         │    │   └──────────────────────│    │     │
│  │   │   Update 阶段:           │    │                          │    │     │
│  │   │   · 四元数姿态传播       │    │   ┌─ Verticle_Filter     │    │     │
│  │   │   · 陀螺零偏马尔可夫更新  │    │   │  Predict → Correct   │    │     │
│  │   │   · DCM 矩阵输出         │    │   │  状态维度: 3         │    │     │
│  │   └───────────┬─────────────┘    │   └──────────────────────│    │     │
│  │               │                  └────────────┬─────────────┘    │     │
│  │               └───────────┬───────────────────┘                  │     │
│  └───────────────────────────┼──────────────────────────────────────┘     │
│                              │                                            │
│  ┌───────────────────────────▼──────────────────────────────────────┐     │
│  │                        输出层                                      │     │
│  │              INS_Out_Bus: 姿态 + 位置 + 速度 + 状态               │     │
│  │              (29 通道,phi/theta/psi, quat, lat/lon/alt, vn/ve/vd)│     │
│  └──────────────────────────────────────────────────────────────────┘     │
└──────────────────────────────────────────────────────────────────────────┘

5.2 算法类型识别

滤波子系统算法类型状态维度核心观测
Rotation (AHRS)误差状态 EKF / 互补滤波融合7 (4 四元数 + 3 陀螺零偏)加速度计(重力参考)、磁力计(地磁参考)
Horizontal_FilterEKF(扩展卡尔曼滤波)6GPS 位置/速度、光流速度
Verticle_FilterEKF(扩展卡尔曼滤波)3GPS 高度、气压高度、测距仪 AGL 高度

5.3 关键设计特点

  1. 旋转-平移解耦:姿态估计(AHRS)与位置/速度估计(CF)分离,降低计算复杂度,提高数值稳定性

  2. 级联反馈

    • 旋转估计结果反馈给平移滤波器(加速度坐标变换)
    • 姿态反馈给传感器预处理(MAG 磁偏角补偿、测距仪倾角补偿)
  3. 在线零偏估计

    • 陀螺零偏:通过 Magn_Correct 与 Gyro_Bias_Correction 在线估计
    • 测距仪偏置:Verticle_Filter 的 Correct 阶段估计 rf_bias
  4. 多源高度融合:GPS 高度 + 气压高度 + 测距仪 AGL,通过 EKF 量测更新实现加权融合

  5. 质量评估机制:MAG 预处理包含 Inclination_Quality_EstimateIntensity_Quality_Estimate,对磁力计数据质量进行评估,可能用于自适应调整量测噪声协方差

  6. 姿态重置机制:AHRS Update 阶段通过 att_resetquat_0 支持姿态的强制重置(如初始对准或 GPS 航向初始化)

5.4 信号流总结

传感器 → 预处理(校准+坐标变换+质量评估)→ 旋转解算(AHRS EKF)
                                            ├─► 姿态输出(quat/DCM/欧拉角)
                                            └─► 平移解算(CF 双通道 EKF)
                                                  ├─► 水平位置/速度输出
                                                  └─► 垂直高度/速度输出
                                                         └─► 29 通道 INS_Out_Bus

六、模型统计

指标数值
顶层输入端口8(IMU, MAG, Barometer, GPS_uBlox, Rangefinder, Optical_Flow, AirSpeed, External_Pos)
顶层输出端口1(INS_Out, 29 通道总线)
子系统文件 (.xml)约 165 个
最大子系统深度约 8 层(如 Correct → Gyro_Bias_Correction → Saturation)
核心算法块AHRS Correct/Update, Horizontal/Verticle Predict/Correct
数据字典Share_Data.sldd(共享参数定义)
采样时间INS_CONST.dt(统一时间步长)

该模型为 Firmament 开源飞控的基准 INS 实现,采用解耦的旋转-平移 EKF 架构,支持 8 种传感器融合。*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值