项目介绍
GymFC 是一个专注于姿态控制的飞行控制调整框架。最初,这个项目是在有关无人机姿态控制的文稿中首次推出的,通过使用模拟器合成超过传统 PID 控制器性能的神经飞行器姿态控制器。自首次发布以来,GymFC 一直在成熟,成为一个模块化框架,能够调校飞行控制系统,既可用于合成神经飞行控制器,也能用于调节传统控制器。
GymFC 是全球首个神经网络支持的飞行控制固件 Neuroflight 开发控制器的主要方法。其项目详情和架构在威尔·科赫的论文《通过深度增强学习实现飞行控制器合成》中得到了详细描述。
项目特点
- 支持 IMU、ESC 和电池传感器。
- 飞机无关性:可配置不同的执行器和传感器来支持任何类型的飞机。
- 数字双胞胎独立性:数字双胞胎是独立于 GymFC 开发的,允许单独版本控制。
- 使用 Google Protobuf 提供的飞机数字双胞胎 API,用于发布控制信号和订阅传感器数据。
- 灵活的代理界面,允许为任何类型的飞行控制系统开发控制器。
- 支持 Gazebo 8, 9 和 11,根据已安装的版本动态构建 Gazebo 插件。
安装指南
GymFC 主要运行在 Ubuntu 18.04 上,并依赖 Gazebo 和 Dart 来作为后端模拟器。建议使用提供的 install_dependencies.sh
脚本安装所需的依赖。这是一个可消耗较多资源的过程,可能需要超过一小时。如果有足够的内存,可以增加并行运行的任务数量。例如,指令 sudo MAKE_FLAGS=-j4 ./install_dependencies.sh
可以在四个任务间并行运行。
为了安装 GymFC,可以使用 Python 的虚拟环境进行隔离。利用命令 pip3 install .
可完成 GymFC 及其所需的 Python 依赖的安装。
项目新闻
- 2020年5月:NF1 四轴飞行器模型和论文中使用的奖励函数已发布于
examples
目录。 - 2019年8月:GymFC 合成出表现优异的神经控制器。
- 2019年7月:发布 GymFC 版本 0.2.0。
- 2018年12月:GymFC 论文被 ACM Transitions on Cyber-Physical Systems 接受发表。
入门指南
创建一个简单的环境只需继承 FlightControlEnv
类,同时需要实现一个 OpenAI gym 的环境,可以通过继承 gym.Env
类来拓展。GymFC 环境以 SDF 格式文件来描述飞机模型,包含对飞机所有可视化、几何体及插件的声明。
可用模块
用户需要提供四个模块来提高灵活性并创建一个通用的调整框架:飞行控制器、飞行控制调节器、环境接口及数字双胞胎。此方式扩展了在 GymFC 上可以进行的飞行控制研究的广度,例如,可以通过遗传算法和粒子群优化来调节 PID 增益。
示例
在 examples/
目录下可以找到 Wil Koch 论文中使用的 OpenAI 环境和数字双胞胎模型。
贡献者
感谢以下出色的人士对 GymFC 项目的贡献。如果你也想参与贡献,请查看我们的贡献指南以了解如何开始。