news 2026/7/12 6:59:03

记录simulink无人机开源代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录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 种传感器融合。*

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 6:58:50

CTF实战:用010 Editor破解ZIP伪加密原理与操作详解

1. 项目概述:从一道“加密”的CTF题说起如果你刚接触CTF(Capture The Flag)网络安全竞赛,可能会遇到一种让人又爱又恨的题目:一个被加密的ZIP压缩包,题目描述暗示密码可能很复杂,或者干脆让你“…

作者头像 李华
网站建设 2026/7/12 6:58:38

Ubuntu鼠标指针MOD制作:从资源替换到游戏适配全流程

如果你在《辐射4》里造过房子、改过武器、刷过任务,大概率会注意到一个细节:游戏里的鼠标指针,还是那个灰白色的小箭头。在废土世界里用着挺正常,但一旦切回桌面处理点别的事,再回到游戏,总有种“画风突变”…

作者头像 李华
网站建设 2026/7/12 6:58:37

Harness AI工程化:从实验到生产的AI Agent稳定部署指南

1. 先搞清楚 Harness AI 工程化到底解决什么问题如果你在 2026 年还在手动拼凑大模型调用、记忆管理、工具调度和任务流程,那 Harness AI 工程化这套东西确实值得花时间看。它不是某个单一工具,而是一套让 AI Agent 能稳定跑在真实业务里的工程方法。核心…

作者头像 李华
网站建设 2026/7/12 6:56:36

Win11Debloat:5分钟让你的Windows 11系统更干净、更快速、更安全

Win11Debloat:5分钟让你的Windows 11系统更干净、更快速、更安全 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declut…

作者头像 李华
网站建设 2026/7/12 6:54:50

Word 隐藏文字与打印设置实战:5步解决‘显示却打不出’问题

Word隐藏文字打印全攻略:从显示异常到完美输出的系统解决方案办公室里最让人抓狂的场景之一:你精心准备的文档在屏幕上显示完美无缺,打印出来却少了关键内容。这种"显示却打不出"的问题往往与Word的隐藏文字功能有关,但…

作者头像 李华
网站建设 2026/7/12 6:51:46

LZ77 vs LZ78 vs LZW:3 大字典编码算法核心差异与演进对比

LZ77 vs LZ78 vs LZW:三大字典编码算法核心技术解析与演进图谱当我们谈论ZIP压缩包或GIF图片时,背后隐藏的是一段跨越半个世纪的算法进化史。1977年,两位以色列科学家Abraham Lempel和Jacob Ziv在IEEE期刊发表的论文,彻底改变了数…

作者头像 李华