作者:卓晴博士,清华大学自动化系
更新时间:2020-09-24 Thursday

01这是群什么鬼?

也许大家已经熟悉了现在的计算机的界面。通过屏幕、键盘、鼠标、手写笔、触摸屏、语言甚至

VR、AR等设备与计算机进行沟通。但蚁群用户界面也许大家并不太熟悉。

蚁群用户界面 是由一些独立运动的小型机器人组成,它们可以协同工作提供显示信息,并能够感知对用户手的输入信号。

甚至它们还可以协同来搬运桌面上的一些小型物件,敲击铃铛等。

面对这群可以移动的小机器人,你拿起其中的一个,随意的在桌面上滑动。在旁边站成一排的机器人就自动跟踪过来,根据第一个机器人走过的路线排成一个完整的轨迹曲线。

当所有的机器人都加入到轨迹排列之后,它们就会像 贪吃蛇 一样随着第一个机器人进行游动。

▲ 动态组成绘制曲线

甚至你揪动这个队列的中任意两个,整个队列就像一个有弹性的橡胶带一样伸缩扭动。

它们还可以组成各种时间序列的图像,完成动态信号和演示,或者在坐标纸上进行多重散点坐标显示。甚至,通过它们的运动,可以为动画制作人员提供关键镜头之间的动态演示。

似乎只有这群独立移动的机器人足够多的,再加上足够的想象力,使用它们可以做很多有趣的事情。

对于工程师来说,更想知道它们究竟是如何工作的?

02内部结构

Mathieu Le Goc等人在2016年通过 Zooids: Building Blocks for Swarm User Interfaces 介绍了这款开源系统的工作原理。 在 Github上可以下载SwarmUI的设计资料

Zooid是根据用户需要定制的微型机器人,它的内部结构如下图所示。它的体型高21毫米,直径26毫米的圆柱体,使用3D打印制作外壳结构。每个Zooid内部安装有100mAh的锂聚合物电池。

使用微型电机直接带着两个主动轮来驱动机器人运动。为了减少机器人的直径,两个轮子并不是共轴的,运行起来并不会使得机器人旋转。

它的外部安装有电容感应电极,通过 AT42QT1070 电容触摸传感器芯片来感知用户触碰。

▲ 小型机器人内部结构

在PCB板上集成有48MHz ARM MCU(STM32F051C8)完成机器人的控制、以及通过2.4GHz nRF24L01+芯片与主控计算机进行通讯。

为了能够完成定位,在PCB板上还安装有两个光电管来识别投影跟踪系统发射的不同亮光。中央固定一个彩色LED用于表明机器人身份,作为系统反馈。

Zooid在静止时,耗电40mA,运动时消耗100mA电流。在100mAh的电池供电下,可以连续运动1个小时,如果有静止时间段,可以工作更长的时间。

03如何定位?

为了保证整群机器人准确完成任务,组成精确的队列,需要每个Zooid可以实时感知自己当前的精确2D位置,并按照指令进行移动。在演示桌面上面,使用TI公司的DLP Light Crafter 投影仪发送的每秒3000帧编码图像。每个Zooid机器人通过顶部电路板上的两个光电管接收的信号序列编码来确定两点的位置。进而可以计算出机器人的中心位置和方向了。

每个光电管的信号通过41个采样信号序列编码来得到对应的位置,因此位置更新速率就是73Hz(3000Hz / 41),这可以满足机器人在桌面上以44厘米/秒的速度行进控制需要。

根据DLP投影仪的像素和投影面积,在投影的1米×0.63米的范围内,可以达到水平1.15mm,垂直1.12mm的定位精度。

▲ 通讯使用时的MCU模块

那么每个Zooid如何知道自己去哪儿呢? 这是通过电路板上的nRF24L01+无线通讯芯片与外部的无线接收器进行通讯的。无线接收器所使用的控制板包括有Teensy 3.1和Arduino Pro mini。

下图给出了系统软件结构。顶层应用软件根据需要确定每个机器人的目标位置、方向以及显示的颜色。然后通过仿真层对所有机器人进行最优路径规划,在避免相互之间碰撞的前提下使得机器人移动的距离最短。

在服务器层用于机器人运动指令的发送,接收机器人返回来的位置,方向以及是否用户触摸灯信息。这些交互信息通过无线通讯模块与每个机器人进行通信。

▲ Zooid控制系统示意图

04局限性

现在这款开源Zooids蜂群用户界面,还有很多需要进一步发展改进的方面。

  1. 最主要的一个限制就是这款机器人还不属于全向自由运动机器人。在拐弯时,它需要向汽车一样有一个拐弯半径。这就限制了它在小范围内运行的自由度;
  2. 它在感知用户输入时还仅仅依靠触摸传感器。当多个机器人被拿起时,之后被直接接触的机器人才能够感知被触摸。其它没有白直接触碰的就无法得到正确的输入信号;
  3. 在机器人等位方面还需要使用外部的DLP投影,不仅增加了系统成本,而且限制系统所使用的范围,并对环境光线有要求。
  4. 这款Zooid中没有安装无线充电电路,对他们充电还需要手工逐个进行。

当然,它们还不足够小,这样在完成显示功能时,显得过于粗糙。

也许上述各种限制,在不久的将来会逐步得到改善。

蚁群用户界面这篇文章最后,还介绍了很多用于机器人室内定位的技术。这也许在将来可以被设计应用在 智能车竞赛 的导航系统中。

■ 相关文献链接:

  • Zooids: Building Blocks for Swarm User Interfaces
  • 贪吃蛇
  • GitHub - ShapeLab/SwarmUI: Necessary material to build and use Zooids to create Swarm User Interfaces
  • AT42QT1070
  • 智能车竞赛相关的教高司公函:公函[2005]201号文、教高司[2005]13号

蚁群用户界面:一群桌面运动的机器人相关推荐

  1. 李群理论笔记1:特殊欧式群SE(3)和刚体运动描述

    1.引言:我们为什么要用到特殊欧式群SE(3)描述刚体运动? 我们知道在欧式三维空间中一个物体没有约束有三个旋转自由度和三个平动自由度.为了描述一个可动构件相对另一个固定管构件能够有哪些自由度,本质就 ...

  2. Tailscale免费远程操作软件、群晖、远程桌面、个人网盘P2P

    Tailscale免费远程操作软件.群晖.远程桌面.个人网盘P2P. 本篇文章分享:免费远程操作软件.群晖.远程桌面.个人网盘P2P实现这些功能的软件 1.Tailscale的简介 Tailscale ...

  3. 【转】粒子群算法----粒子群算法简介

    一.粒子群算法的历史  粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比如研究鸟群系统,每个鸟在这个系统 ...

  4. 群晖 root_群晖洗白简单教程

    黑群没洗白.洗半白.洗全白的区别: (1)黑群没洗白:部分套件不能使用(比如:Active Backup for Business.玩物下载.OFFICE.群晖DDNS):不能注册和登录QuickCo ...

  5. 什么是服务器集群?集群服务器有什么好处

    作者:小蚁云安全 链接:https://zhuanlan.zhihu.com/p/493818945 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 对于服务器朋友们 ...

  6. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

  7. 基于虚拟化的混合云集群——基于集群管理监控系统

    摘要 本博文将详细的介绍本人在实现过程中的所经历的项目,同时对象将进行的详细的说明.将对项目的背景,项目的技术,项目的架构设计,项目的难点,项目的开发周期,项目中详细的功能的开发,项目中本人的主要工作 ...

  8. 高斯核函数初始化邻接矩阵_基于均值漂移和双层群结构模型的群目标GMPHD滤波...

    0 引言 群目标(如机群编队和弹道导弹群目标), 是由一些具有相似运动特性且在很长一段时间内都处于相互邻近状态的目标组成.同时, 这些目标又会随着时间不断地分裂融合, 构成复杂的运动模式, 给群目标的 ...

  9. 服务器查看不到集群信息,集群服务器查看内存

    集群服务器查看内存 内容精选 换一换 用户可以查看在不同云服务区已经申请成功的专属云.进入指定的专属云,还可以查看该专属云内专属计算资源详情及云服务器等专属云内基础服务的实例信息.登录管理控制台.单击 ...

最新文章

  1. 在jupyter notebook中attr1参数的作用_PID控制中P、I、D参数的作用究竟是什么?
  2. Mysql分组合并函数并进行数据列处理
  3. NOIP 2018 普及组 解题报告
  4. 【Qt】2D绘图之绘制简单的图形
  5. 7-3 逆序的三位数 (10 分)
  6. centos7 安装git_Centos7.4 Yapi 服务搭建
  7. 计算机程序设计艺术+第3卷:排序与查找(第二版)pdf
  8. python怎么导入数据集keras_python – 如何为Keras准备数据集?
  9. python画圆形螺旋线_中秋节到了,送你一个Python做的Crossin牌“月饼”
  10. 善于从错误中总结,而且还要持之以恒地达到目标
  11. Spark 学习路线
  12. c语言求自然数1 10之和,C程序计算自然数之和
  13. vi命令下编辑文件时,按insert键文件底部不出现“INSERT”问题
  14. 服务器固态硬盘无法识别硬盘,固态硬盘无法识别的原因及解决方法
  15. 做跨境人人都是天秤座,三个月都没能建起一个店铺
  16. spi sync async
  17. 机器学习40讲-12正则化处理:收缩方法与边际化
  18. c语言乐谱编辑软件怎么用的,如何优雅的编辑一份乐谱|打谱软件Lilypond(一)...
  19. 探索新零售时代背后的技术变革
  20. 为什么总是封板又打开涨停_股票出现涨停,但很快涨停板又打开了,是不是要卖出呢!...

热门文章

  1. Android 4.2.2原生Launcher修改使之可以运行过程小结
  2. 公司内部流量控制案例
  3. USB供电不足怎么办
  4. T-SQL中的随机数
  5. 文件处理(如果文件存在则追加,不存在则生成多级文件夹以及txt目录)
  6. vscode+MinGW+cmake设置轻量ide
  7. 软件工程第二周阅读作业
  8. SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。...
  9. linux expr命令
  10. MSE病毒库离线更新包