Snap! 中的 CoCube 库

Snap! 中的 CoCube 库

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

梁博士制作了一个名为CoCube的桌面级模块化群控机器人系统,使用MicroBlocks作为编程环境。最近为CoCube设计了一个Snap!驱动库,用户可以在Snap!中编程控制CoCube。通过消息传递实现Snap!和MicroBlocks之间的通信。Snap!中的库提供了消息传递的基础功能,用户可以获取CoCube的状态信息和发送指令。CoCube库可以通过MicroBlocks实现,用户只需在Snap!中编程。可以使用CoCube库同时调试软件和硬件代码。可以为CoCube制作一个类似的Python客户端库。

🔎

延伸解读

消息传递架构的优势

Snap! 与 MicroBlocks 通过消息传递进行通信,这种设计降低了系统间的耦合度。用户无需在两个平台间切换,只需在 Snap! 中编程即可控制 CoCube。MicroBlocks 一侧运行通用程序,负责状态推送和指令解释,Snap! 则作为客户端,通过 reporter 和 command 积木获取状态和发送指令。这种 C/S 架构使得系统更灵活,便于扩展。

push 风格的性能考量

当前 CoCube 库采用 push 风格,MicroBlocks 每秒 20 次将设备状态同步给 Snap!。这种方式可能导致性能不佳和电量消耗过快,且实时性受限于 50ms 的更新间隔。未来可能通过 Dynatalk-over-ble 实现 pull 风格,按需查询状态,以改善性能和实时性问题。

多设备与调试支持

通过复制并修改库文件,用户可以轻松添加多个 CoCube 设备,实现群控。同时,Snap! 和 MicroBlocks 可以同时连接同一设备进行调试,实时观察消息流动,方便软硬件协同开发。这种设计也易于迁移到 Python,使用 microblocks_messaging_library 即可构建类似的上位机库。

❓

Q&A

CoCube是什么?

CoCube是一个桌面级模块化群控机器人系统,使用MicroBlocks作为编程环境。

如何在Snap!中使用CoCube库?

用户只需在Snap!中加载CoCube库,连接设备并编程即可,无需在Snap!和MicroBlocks之间切换。

CoCube库的消息传递机制是怎样的?

CoCube库通过消息传递实现Snap!与MicroBlocks之间的通信,用户可以获取状态信息和发送指令。

CoCube与toio有什么相似之处?

CoCube与toio有许多相似特性,但CoCube具备可扩展的硬件接口和与MicroBlocks更紧密的结合。

使用CoCube库时有哪些性能问题?

目前的push风格可能导致性能不佳和电量快速消耗,因为设备状态信息每秒更新20次。

未来CoCube库可能会有哪些改进?

未来可能通过制作Dynatalk-over-ble实现pull风格的CoCube库,以改善性能和实时性问题。

➡️

继续阅读