主要观点:
- 机器人需控制各种机制执行任务,多数 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 机器人代码中使用结构化并发的情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。