Starry Pilot项目开始于2016年,目的是打造一款轻量级,模块化的无人机系统。以无人机为基础,最终发展为机器人(如无人车,无人船等)的通用平台。
最新的Starry Pilot将是第一个基于MBD(Model Based Design)设计开源无人机系统。软件的框图如下图所示:
硬件平台:Pixhawk
项目将分为如下几个大的模块,分别为:
- 嵌入式部分:包含starry fmu和starry io,主要提供系统的嵌入式软件部分,包括如上图框图所示的Kernal到Framework的部分,以及部分应用,如mav proxy, starry io和log.
- MBD基于模型开发部分:这部分将在Matlab/Simulink下进行开发,通过code generation的方式,自动生成C/C++代码.
- 建模与仿真:提供无人机的通用建模模型以及仿真测试环境,如SIL,HIL等.
目前软件是在Pixhawk的硬件上进行开发的,后续会考虑支持更多的硬件。
Kernal基于RT-Thread开发,RT-Thread除了内核功能外,还提供了许多优秀的组件,如DFS文件系统,msh shell系统等。
Driver层提供Pixhawk硬件上的各种原件的驱动支持,如传感器:IMU,磁力计,气压计,GPS等。其它设备驱动如:usb,PWM,sdio,gpio,uart,spi,i2c等的支持。
HAL是建立在Driver之上的硬件抽象层,目的是给上层提供统一的设备接口,而不受不同硬件的影响,这样方便后续在不同硬件上的移植,而上层代码无需修改。
Framework框架层提供系统的基础框架功能。
- Sensor Hub:负责管理所有的sensor设备,提供统一的接口供其它应用以及导航调用,并定期发布传感器数据。
- IPC(uMCN):提供一种主题订阅/发布的跨进程通信机制。
- Mav Proxy:提供Mavlink相关协议的支持,跟上位机(QGC)进行交互。
- Console:基于msh的控制台设备,提供一些指令功能。并且控制台信息可以被映射到不同的输出上,如serial,mavlink等。
- FTP:基于Mavlink协议,提供FTP的文件上传和下载功能,用于跟飞控的文件系统进行文件交互。
- HIL Interface:用于进行HIL硬件在环仿真,将模型发来的数据进行解析,并封装成传感器数据进行发布。
- File Manager:负责文件相关的一些管理
- Math:提供基础数学库支持
- Param: 参数系统,基于xml/json,对参数进行动态管理。
- Log: 实时日志系统。在保证系统的实时性的前提下,记录飞行的日志信息,供仿真调试时使用。
- Calibration:磁力计和加速度计校准算法,支持非正交误差校准。
将基于模型的方法(MBD)开发导航(INS),控制以及飞行管理(FMS)的代码。这样的好处是可以大大简化手工编写代码的过程,提高代码复用性,让开发人员可以将更多 的精力放到算法本身上,而不用过多在意代码实现的细节。同时Matlab/Simulink提供了相当强大的仿真和Debug环境,可以更快速和高效的进行Debug。
项目大致分为以下几个阶段:
- M0: 嵌入式代码开发/优化
- 更好的支持RT-Thread原生系统的组件和功能
- 优化代码结构,增加代码可读性和稳定性
- 开发阶段:2020.01.01 - 2020.06.01
- M1: 无人机建模以及仿真环境搭建
- 多旋翼模型建立以及参数辨识
- SIL,HIL仿真环境搭建
- Visulization可视化平台
- 开发阶段:2020.01.01 - 2020.04.01
- M2: INS导航系统开发
- 导航模型搭建,测试
- 传感器模型搭建
- 导航性能调优
- 开发阶段:2020.01.01 - 2020.06.01
- M3: Controller控制系统开发
- 控制器模型搭建,测试
- 控制器性能调优
- 开发阶段:2020.01.01 - 2020.06.01
- M4: FMS飞行管理系统开发
- 飞行管理系统状态机开发
- 逻辑测试
- 开发阶段:2020.03.01 - 2020.06.01
- M5: 上位机开发
- 基于QGC进行深度客制化
- 开发阶段:2020.03.01 - 2020.06.01
- Echo:嵌入式系统,导航,控制,飞行管理,仿真系统
- weety:嵌入式系统
- zhiyong:嵌入式系统,上位机
具体工作内容及时间安排