机器人控制中的结构化并发

主要观点:

  • 机器人需控制各种机制执行任务,多数 FTC 团队以类似方式处理,新库 Shuttle 做法独特。
  • 同步方法执行动作并阻塞直至完成,FTC SDK 中的方法大多异步,缺乏同步方法使编程模型下组合动作困难。
  • 有限状态机(FSM)在硬件和嵌入式设计中普遍存在,但在高层抽象中管理负担重,代码繁琐且易失去自然的阻塞代码优势。
  • 传统异步设计模式如基于命令的架构等易受相同问题影响,缺乏程序员易理解的自然控制流。
  • 结构化编程中,goto语句被认为破坏抽象,如今异步代码仍影响机器人编程,易导致程序失控。
  • 解决办法是使机器人动作同步,将 FSM 限制在底层代码,用同步抽象简化机制逻辑,如 Shuttle 的 HardwareTaskScope 实现结构化并发。
  • 结构化并发可轻松并行操作,减少错误处理工作,用普通 Java 代码编写,便于理解和贡献。
  • 切换到同步代码基地对习惯异步 API 的机器人程序员有难度,但应将机器人直观建模为同步系统。
  • 实践证明,在 Center Stage 赛季用阻塞 API 编程机器人效果良好,结构化并发提高代码质量。

关键信息:

  • FTC 团队常用方式及 Shuttle 库特点。
  • 同步与异步方法的区别及 FTC SDK 中方法的异步性。
  • FSM 的应用及问题。
  • 结构化编程中goto语句的影响。
  • 异步代码的问题及同步代码的优势。
  • HardwareTaskScope 的实现及作用。
  • 实践中同步代码的效果及代码示例。

重要细节:

  • Shuttle 中并行执行任务的代码示例,如releaseAndCollapse方法。
  • 有限状态机实现机器人机制的代码示例及问题。
  • 硬件任务范围(HardwareTaskScope)的使用方式及异常处理。
  • 中心舞台 FTC 机器人代码中使用结构化并发的情况。
阅读 9
0 条评论