Zooids:构建群体用户界面的积木
项目介绍
Zooids 是一个开源的开放硬件平台,旨在开发桌面群体用户界面(Swarm User Interfaces)。群体用户界面是一种新型的人机交互界面,由许多自主机器人组成,这些机器人不仅负责显示信息,还处理交互任务。Zooids 平台由一组定制设计的微型轮式机器人、一个无线基站、一个用于光学跟踪的高速 DLP 结构光投影仪以及一个用于应用程序开发和控制的软件框架组成。通过一系列使用 Zooids 开发的应用场景,我们展示了桌面群体用户界面的潜力,并讨论了群体用户界面独特的设计考虑因素。
项目技术分析
硬件
Zooids 机器人是直径为 26 毫米、高度为 21 毫米、重量约为 12 克的微型机器人。每个机器人由一个 100 mAh 的锂聚合物电池供电,并使用电机驱动的轮子进行移动。机器人内部包含一个柔性电极,用于电容触摸感应,并通过 NRF24L01+ 芯片与主计算机通信。
跟踪系统
Zooids 使用基于投影仪的跟踪系统来定位机器人。该系统利用德州仪器公司的高帧率(3000Hz)DLP LightCrafter 投影仪,将一系列灰度编码图案投影到平面上。机器人上的光电二极管独立解码这些图案,从而确定其在投影区域内的位置。
软件架构
Zooids 的通信结构由四个主要层次组成:应用程序层、仿真层、服务器层和硬件层。在应用程序层,计算出机器人的期望位置,并通过网络套接字传输到仿真层。应用程序开发者可以选择两种控制策略:比例-积分-微分(PID)位置控制或结合 PID 的混合互惠速度障碍(HRVO)。仿真层根据选择的控制策略计算机器人的目标位置,并将其发送到服务器层。服务器层负责向单个 Zooids 发送命令,同时监控它们的状态和位置。
每个机器人通过基于状态机的 PID 控制器独立控制其运动。机器人首先调整方向,然后加速到用户定义的偏好速度。在达到速度后,机器人通过 PID 控制保持方向,确保朝向最终目标。当接收到新的增量目标时,机器人将继续以相同速度移动,但 PID 控制将引导机器人朝向新的中间目标。当机器人接近最终目标时,它会减速并最终停止。
项目及技术应用场景
Zooids 平台适用于多种应用场景,特别是在需要动态、分布式用户界面的领域。例如:
- 协作工作空间:多个 Zooids 机器人可以在桌面上移动,显示不同的信息或任务,帮助团队成员协作完成任务。
- 教育与培训:Zooids 可以用于模拟复杂的系统或过程,帮助学生理解动态变化的概念。
- 互动艺术装置:艺术家可以利用 Zooids 创建动态的、互动的艺术装置,吸引观众的注意力。
项目特点
- 开源与开放硬件:Zooids 平台完全开源,硬件设计也开放,允许开发者自由定制和扩展。
- 高精度跟踪:基于 DLP 投影仪的高速跟踪系统,确保机器人的位置精度。
- 灵活的控制策略:支持 PID 和 HRVO 两种控制策略,适应不同的应用需求。
- 模块化设计:Zooids 的模块化设计使得扩展和集成新功能变得简单。
通过 Zooids,开发者可以轻松构建复杂的群体用户界面,为用户提供全新的交互体验。无论是在协作工作、教育培训还是艺术创作中,Zooids 都能发挥其独特的优势,带来创新的解决方案。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
- CangjieCommunity为仓颉编程语言开发者打造活跃、开放、高质量的社区环境Markdown00
- redis-sdk仓颉语言实现的Redis客户端SDK。已适配仓颉0.53.4 Beta版本。接口设计兼容jedis接口语义,支持RESP2和RESP3协议,支持发布订阅模式,支持哨兵模式和集群模式。Cangjie032
- 每日精选项目🔥🔥 推荐每日行业内最新、增长最快的项目,快速了解行业最新热门项目动态~ 🔥🔥02
- qwerty-learner为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workersTSX022
- Yi-CoderYi Coder 编程模型,小而强大的编程助手HTML07
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript085
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
- CommunityCangjie-TPC(Third Party Components)仓颉编程语言三方库社区资源汇总05
- Bbrew🍺 The missing package manager for macOS (or Linux)Ruby01
- byzer-langByzer(以前的 MLSQL):一种用于数据管道、分析和人工智能的低代码开源编程语言。Scala04