GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
GKD.RoboCtrl 电控 API

项目简介

GKD.RoboCtrl 是面向 RoboMaster 机器人的 Linux 电控程序,使用 C++23、 Asio 协程和 xmake,将通信、设备驱动与机器人控制分层组织。程序采用单线程 异步模型:IO 负责字节传输与分发,Device 负责协议解释和物理量,Control 负责机器人行为,Core/Utils 提供事件循环、实例管理、日志和通用算法。

架构与生命周期

依赖方向保持为:

utils/core -> io -> device -> ctrl
^
config 组装具体实例

启动阶段依次执行配置预检、对象构造、跨对象 connect、控制器 init、IO/task 启动,最后进入唯一的 Asio 事件循环。构造函数不应抢先启动长期协程;多例对象 由 key 管理并在进程生命周期内保持稳定引用。

详见生成站点中的 docs/architecture.md 页面。

构建与无硬件测试

需要 LLVM、libc++、xmake 以及项目声明的 Asio、cxxopts、reflect-cpp 依赖。 选择构建模式后构建主程序和单元测试:

xmake f -y -m debug
xmake build -y gkd-roboctrl
xmake build -y unit-tests
xmake run unit-tests

主程序会访问 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.md
  • Core:docs/modules/core.md
  • IO:docs/modules/io.md
  • Device:docs/modules/device.md
  • Control:docs/modules/control.md
  • Utils:docs/modules/utils.md
  • 配置、构建与 CI:docs/modules/config-build.md
  • 开发流程:docs/development.md
  • GKD_Control 迁移记录:docs/migration-gkd-control.md