介绍一下 commodore 飞行控制系统
自己用 Python 写了一个异步的网络飞行系统, MIT 协议于 GitHub 开源 :)
建议材料:
- Arduino UNO 兼容开发板, 将串口与 Redmi 2 手机串口相连接, 以传输数据
- Redmi 2 手机, 焊接串口, 刷入 LineageOS aarch64 系统, 装入 Termux 和 termux-api, termux-boot 与 Python, 并使用 Magisk root 手机
- 一张 IoT sim 卡, 插入手机卡槽中, 用于控制器的网络连接
- 按照 Arduino HAL 的设置将电调, 舵机与 Arduino 的
~
标记接口相连接, 并设置好电源
请确保您符合以下条件:
- 时间充裕
- 能手写(改写)硬件相关控制 API
- 不怕炸机
目录结构
/client: 客户端, 含有 CLI 与 GUI 客户端
/server: 服务端
/server/dummy_all: 傀儡服务端支持文件 (一个适用于调试开发的假数据回传器, 具有一个 Tkinter GUI 调谐器, 包含 API 和 Lib)
/server/arduino_api: 兼容到 Arduino 的 API 数据发送层, 区分于 HAL, 会在设计结构中说明
/server/termux_lib: 适用于 Android Termux 的板载控制库
/hal: 硬件兼容层, 通常单独编译烧写
/hal/arduino: 适用于 Arduino 的硬件控制程序
/docs :文档
设计结构
graph LR
A(远程客户端)-->|网络|B(服务端)-->C(Lib)-->D(API)-->E(HAL)-->|硬件控制开发板|F(硬件)
F-->|硬件控制开发板|E-->D-->C-->B
G(部分其他传感器)-->C
C-->G
B-->|网络|A
快速开始
host.py
与 host_*.py
文件是服务端, 装载于飞行器的控制系统.
client*.py
文件与 src
目录是客户端, 在本地计算机上运行.
dummy*.py
文件是傀儡环境, 即运行在本地计算机上的模拟飞行器程序. 运行程序前, 请安装依赖包.
运行服务端:
python3 host.py
运行图形化客户端 (需要图形环境):
python3 client_gui.py
运行命令行客户端 (无法查看摄像头, 通过 JSON 调用命令):
python3 client_cli.py
运行傀儡环境:
python3 dummy.py