|
GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
|
GKD.RoboCtrl 是面向 RoboMaster 机器人的 Linux 电控程序,使用 C++23、 Asio 协程和 xmake,将通信、设备驱动与机器人控制分层组织。程序采用单线程 异步模型:IO 负责字节传输与分发,Device 负责协议解释和物理量,Control 负责机器人行为,Core/Utils 提供事件循环、实例管理、日志和通用算法。
依赖方向保持为:
启动阶段依次执行配置预检、对象构造、跨对象 connect、控制器 init、IO/task 启动,最后进入唯一的 Asio 事件循环。构造函数不应抢先启动长期协程;多例对象 由 key 管理并在进程生命周期内保持稳定引用。
详见生成站点中的 docs/architecture.md 页面。
需要 LLVM、libc++、xmake 以及项目声明的 Asio、cxxopts、reflect-cpp 依赖。 选择构建模式后构建主程序和单元测试:
主程序会访问 Linux SocketCAN、串口并向电机发送报文;没有硬件授权时不要 使用 xmake run gkd-roboctrl。车型通过 --config configs/<type>.yaml 在运行时 选择,省略时默认使用 configs/infantry.yaml。Debug/Release 构建由 .github/workflows/build-test.yml 自动执行。
设计约束、配置字段和验证边界见生成站点中的 docs/modules/config-build.md 页面。
docs/architecture.mddocs/modules/core.mddocs/modules/io.mddocs/modules/device.mddocs/modules/control.mddocs/modules/utils.mddocs/modules/config-build.mddocs/development.mddocs/migration-gkd-control.md