Firmament Autopilot(简称FMT)是首个基于模型设计 (Model-Based Design, 简称MBD) 的开源自驾仪。FMT项目从 Starry Pilot 开源飞控发展而来,耗时四年开发完成。基于目前最流行的开源飞控硬件Pixhawk,包括一个用C语言实现的嵌入式飞控系统 FMT Firmware 以及基于 Matlab/Simulink 开发的算法模型库和仿真框架 FMT Model。
相比其它传统飞控系统,基于FMT平台可以更快速的开发和验证算法,无需手动编写嵌入式代码,只需要在Simulink中通过图形化的方式设计算法模型然后一键生成C/C++代码。生成的代码可以直接合入飞控而无需修改和编写任何嵌入式代码,大大提高算法的开发和验证效率。
FMT优势:
基于模型设计是一种数学及可视化的设计方法,通过图形化的方式设计复杂的飞控或者其它控制系统。MBD的设计模式已经广泛应用于汽车以及航空航天领域,其科学性和可靠性也早已被充分证明。传统的手动编码的开发模式固然有其优势,但是其劣势也越来越明显。特别当系统变得越来越庞大,功能越来越复杂,使用手写的算法模块变得越来越难以维护,也不可避免的造成代码的安全性和可移植性越来越差。
FMT 作为首个完全基于MBD开发的飞控系统,其核心算法在 Matlab/Simulink 平台上搭建,继承了 MBD 开发模式的诸多优点,如:
● 极大提升算法开发效率,节省时间和人力成本。
● 减少手动编写代码过程中产生的错误,提升系统稳定性。
● 极大提升算法的优化和Debug效率,简化系统测试和验证流程。
● 提高算法的可维护性和可移植性。
FMT Firmware:
FMT Firmware 为飞控的嵌入式部分,采用分层设计模式,层与层,模块与模块之间松耦合,更易于裁剪和移植。
FMT Firmware 具有轻量级,易于阅读和使用的特点,并且兼具稳定性和实时性。总结起来,FMT Firmware 的优势包括:
· C 语言编写的轻量级飞控系统,更易使用和二次开发。
· 跨台的开发工具链,支持Windows/Linux/Mac OS。
· 支持MBD设计模式,大大提升开发和测试效率。
· 支持当前最流行的开源飞控硬件 Pixhawk。
· 高实时性,时间误差 < 1us。
· 更高运行效率和更低的CPU使用率。提供更大算力空间用以提高算法复杂度和运行频率。
· 支持 Mavlink V1.0/V2.0和主流地面站 QGC,Mission Planner等。
· 支持硬件在环仿真 (HIl/SIH)。
· 高度模块化,松耦合的软件架构,易于裁剪和移植。
其架构如下图所示:
FMT Model
FMT Model 为 基于 Matlab/Simulink平台编写的一个完整的仿真模型框架和算法模型库。支持模型在环仿真 (Model-in-the-loop Simulation, MIL),软件在环仿真 (Software-in-the-loop Simulation, SIL) 和开环仿真 (Open-loop Simulation)。
FMT Model 的模型库包括一套完整的无人机算法模型。可以分为导航系统,飞行管理系统,控制系统和被控对象模型四个部分。每个部分包含多种类的算法模型,以支持不同的算法和被控对象。
其架构如下图所示:
其中算法库通过Github Submodule的方式进行组织,用户可以用来独立维护自己的算法模型,并添加到FMT Model的仿真框架中。FMT提供种类丰富而且功能完善的仿真模型,可以很容易的基于已有模型或者提供的模型模板进行二次开发。
FMT Model 算法模型库主要由四类模型组成:
· INS : 惯性导航系统。通过多传感器融合算法得到被控对象的状态信息(如姿态、速度和位置等)以及各个传感器的健康状况信息等。
· FMS : 飞行管理系统。主要负责飞行逻辑相关的控制,内部主要由状态机实现。包括飞行模式控制,自动起飞降落,轨迹跟踪控制,安全检测等功能。
· Controller : 控制器模型。基于 FMS 输出的指令信息和 INS 输出的状态信息进行速度环、姿态环和角速度环的控制。控制器的输出经由控制分配将控制信号转成作动器(电机)信号。
· Plant : 被控对象模型,如无人机,无人车/船,机器人等。对象模型包括了动力学模型,作动器模型,环境模型和传感器模型。通过对不同的被控对象进行科学的建模,以达到对不同被控对象进行闭环仿真的目的。
基于FMT的仿真
FMT飞控依托Matlab/Simulink平台提供了强大的仿真功能,如模型在环(MIL),软件在环(SIL),硬件在环(HIL)仿真等。
除此以外,还提供了强大的开环仿真功能,基于FMT强大的日志功能,实时记录飞行数据,飞行数据通过解析可以直接导入FMT Model的模型中进行仿真。得益于FMT飞控系统优秀的实时性和高效的性能,仿真的结果跟实际飞行的结果100%吻合。如下图所示为一组导航的输出,红色为开环仿真的结果 (500Hz运行频率),蓝色为记录的导航实际输出的结果 (100Hz频率记录)。两者完全拟合(图中不拟合的部分是由于记录实际模型输出的频率低于实际模型的运行频率)。其它模型也可以获得同样的仿真效果。除了模型的输出以外,模型内部任意模块的状态信息也能通过开环仿真100%复现,真正做到“一次测试,多次仿真”的目的,从而大大提高了开发和调试效率。
重点来啦!!!
阿木实验室现面向所有无人机爱好者,公开招募一批内测用户先期使用FMT飞控,目的是让感兴趣的用户可以体验FMT基于模型开发的功能,帮助提供飞行测试数据,提出宝贵的反馈意见或者提交一些代码修改以提升FMT的稳定性和性能。(首批用户需具有一定飞控开发和Matlab/Simulink使用经验哦。)
目前FMT只支持多旋翼平台,故需要一台组装好能飞的多旋翼无人机。其它控制平台如多旋翼,VTOL,无人车/船,机器人等也欢迎有能力的技术大拿加入,并协助开发对应的控制模型。
注意呦~试飞成功后用户可以获得免费的技术指导和100阿木币作为奖励。
欢迎各位小伙伴儿加入我们!测试视频如下↓↓
文档地址:更多内容请参阅用户手册https://github.com/FirmamentPilot/fmt_user_guide_cn
项目主页:https://github.com/FirmamentPilot