Skip to content
konodoki edited this page May 21, 2026 · 32 revisions

bxi_rl_controller_ros2_example Wiki

这个 wiki 按工程任务拆分。建议先读架构总览,再根据要做的事进入对应页面。

手把手课程

如果读者是第一次接触这套框架,优先按这个顺序读。每一篇都用一个具体例子从零开始写代码,然后逐步加功能。

  1. 手把手系列总览
  2. 手把手 1:从零写一个自定义状态
  3. 手把手 2:从零添加模型动作状态
  4. 手把手 3:从零绑定按键并接入状态机
  5. 手把手 4:从零写一个自定义过渡行为
  6. 手把手 5:从零使用双状态运行混合过渡
  7. 手把手 6:从零写一个 UDP 自定义遥控器驱动
  8. 手把手 7:把示例升级到工程上限

参考手册

这些页面用于查字段、查原理、查设计边界。

  1. 架构总览
  2. 遥控器 YAML 配置
  3. 状态机 YAML 配置
  4. YAML 字段完整参考
  5. 自定义状态参考
  6. 自定义过渡行为参考
  7. 自定义遥控器驱动参考
  8. 模型、动作数据与 launch 工程参考
  9. 框架底层运行原理
  10. 高级配置范式
  11. 发布保护与公开版同步
  12. 调试、验证与常见问题

按任务查找

只想绑定一个新按键:

想写一个新动作状态:

想接入新的遥控器或协议:

想把配置写到更高上限:

想发布公开版并删除高危动作:

遇到按键不触发、状态不切换、failsafe 误触发、Ctrl+C 退不出:

核心原则

  • 不修改底层 communication/msg/MotionCommands 来适配业务状态。
  • 遥控器输入统一走 sources -> controls -> outputs
  • 状态机只判断当前 state 和 event,不在业务代码里散落按键判断。
  • 每个具体状态是一个类,状态私有变量放在状态对象内部。
  • 状态自己的 ROS 订阅、client、timer 放在 on_bind(ctx)
  • 状态需要速度输入时调用 self.get_cmd_vel(ctx),并通过 YAML 的 speed_profile 声明能力。
  • state_machine.py 保持通用;机器人相关逻辑放到 robot_state_base.py 和具体状态类。
  • 新遥控器 driver 只生产 raw source,不写业务状态名。
  • 发布保护以配置驱动,公开版只发布脱敏后的目录。

Clone this wiki locally