0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用自己的手来远程控制机器人

Tensorflowers 来源:TensorFlow 作者: Igor Kibalchich 2021-09-26 14:53 次阅读

请注意,本文所体现的信息、用途及应用完全是 Video-Touch 客座作者的观点。

您可能看过一些科幻电影,电影中的人可以用身体动作来控制机器人。如今,借助现代计算机视觉和机器人方法,我们能够把这种体验变成现实,而且和电影一样精彩奇妙。

受新冠病毒影响,在如此艰难的时期,为了让远程控制和远程操作变得切实可用,我们开启了 VideoTouch 项目。

Video-Touch 是第一个人机交互系统。它允许多名用户,在世界任何地方通过视频通话应用(例如 Google Meet、Zoom、Skype)对其进行控制。

我们考虑过,是否有可能只用自己的手来远程控制机器人,而不借助手套、操纵杆等任何额外的设备,同时不产生明显的延迟。于是,我们决定使用计算机视觉来实时识别动作,并实时传递给机器人。在 MediaPipe 的帮助下,我们将其变为了现实。

操作系统大致如下:

1. 通过视频会议应用,在用户设备上获取网络摄像头视频,然后将其发送至机器人计算机(“服务器”);

2. 用户的网络摄像头视频串流通过 OBS 虚拟摄像头工具被捕捉到机器人的计算机显示器上;

3. 识别模块在 MediaPipe 的帮助下读取用户的动作和手势,并通过 ZeroMQ 发送给下一个模块;

4. 在动作捕捉数据的基础上,机械臂及其抓手由 Python 控制。

从方案中可以清楚地看出,用户在操作机器人时只需稳定的互联网连接和一个视频会议应用。所有的如屏幕捕捉、手部追踪、手势识别和机器人控制等计算,都可以在 Wi-Fi 与机器人连接的单独设备上进行(只是另一台笔记本电脑)。接下来,我们将对流水线的各个环节进行详细说明。

视频串流和屏幕捕捉

用户可以使用任何一台能够实现跨设备传输视频的软件。在实验中,我们使用的是视频会议的桌面应用。用户在其设备上呼叫一台显示器与机器人相连的计算机。这样,机器人就可以看到来自用户网络摄像头的视频串流。

现在,我们需要某种机制来把用户的视频从视频会议传递到识别模块。我们使用的是 Open Broadcaster Software (OBS) 及其虚拟摄像头工具来捕捉打开视频会议的窗口。这样我们就获得了一个虚拟摄像头,它现在有来自用户网络摄像头的帧及其独特的设备索引,可以在识别模块中进一步使用。

识别模块

识别模块的作用是捕捉用户的动作并将其传递给机器人控制模块。MediaPipe 会在此发挥作用。我们为捕捉手部动作寻找了最有效、最精确的计算机视觉软件。我们发现了许多令人兴奋的解决方案,但事实证明,对于如此具有挑战性的任务(实时设备端手部运动精确识别),MediaPipe 是唯一适合的工具。

我们对 MediaPipe 手部追踪模块进行了两项关键修改:增加了手势识别计算器并集成了 ZeroMQ 消息传递机制。

两项关键修改

https://github.com/Arxtage/videotouch.github.io/tree/main

在上次发表文章的时候,我们有两个版本的手势识别实现。第一个版本如下图 3 所示,所有的计算均在手部姿势识别计算器内进行。计算器将特征点作为输入进行缩放,也就是说,这些特征点根据手的边界框大小(而非整个图像的大小)进行标准化。接下来,它会识别 4 种手势(另见图 4):“移动”、“倾斜”、“抓取”和“无手势”(论文中的“手指距离”手势是实验性内容,没有包括在最终演示版中),并输出手势类名称。尽管这个版本十分稳健实用,但它只是基于简单的启发式规则,如:“如果此特征点 [i].x 《 特征点 [j].x,那么它是一个‘移动’手势”,而且对于手部旋转这类现实生活中的情况,此版本无法识别。

发表文章

https://dl.acm.org/doi/10.1145/3415255.3422892

为了缓解泛化不良的问题,我们实施了第二个版本。我们在手动收集和加标签的 1000 个关键点的数据集上训练了来自 scikit-learn 的梯度提升分类器:“移动”、“倾斜”和“抓取”类各有 200 个,而“无手势”类有 400 个。顺便说一下,如今可以通过最近发布的 Jesture AI SDK repo(注:我们团队部分成员的另一个项目)轻松获取此类数据集。

Jesture AI SDK

https://github.com/jesture-ai/jesture-sdk/tree/main/python#annotation-tool

我们使用缩放的特征点、关节间的角度以及成对的特征点距离作为模型的输入,来预测手势类。接下来,我们尝试只传递缩放的特征点,而不传递任何角度和距离,结果在 200 个关键点的本地验证集上获得了 91% 的类似多类准确率。对于这个版本的手势分类器,还有一点是我们无法直接在 C++ 中运行 scikit-learn 模型,所以我们用 Python 进行实现,作为机器人控制模块的一部分。

发表后,我们立即推出了一个在 Keras 中训练的全连接神经网络,它采用的数据集与梯度提升模型相同,而得到的结果更好,准确率达到 93%。我们将这个模型转换为 TensorFlow Lite 格式,现在我们可以在手部姿势识别计算器中直接运行手势识别 ML 模型。

得到当前手部位置和当前手势类后,我们需要将其传递给机器人控制模块。进行这一步时,我们借助了高性能的异步消息功能库 ZeroMQ。为了在 C++ 中实现这一点,我们使用了 libzmq 库和 cppzmq 标头。利用 请求-回复 方案:识别模块 C++ 代码中的 REP(服务器)和机器人控制模块 Python 代码中的 REQ(客户端)。

libzmq

https://github.com/zeromq/libzmq

cppzmq

https://github.com/zeromq/cppzmq

请求-回复

https://learning-0mq-with-pyzmq.readthedocs.io/en/latest/pyzmq/patterns/client_server.html

因此,借助我们修改过的手部追踪模块,现在能够将运动捕捉信息实时传递给机器人。

机器人控制模块

机器人控制模块是一个 Python 脚本,它将手部特征点和手势类作为输入,并输出机器人移动命令(在每一帧上)。运行该脚本的计算机通过 Wi-Fi 与机器人连接。我们的实验中使用了搭载 Nvidia GTX 1050 Ti GPU 的 MSI 笔记本电脑。同时尝试在 Intel Core i7 CPU 上运行整个系统,由于有高度优化的 MediaPipe 计算图实现,该运行也是实时的,延迟可以忽略不计。

在目前的流水线中,我们使用了 Universal Robotics 的 6DoF UR10 机器人。由于使用的抓手是双指的,我们不需要每个特征点与机器人手指关键点的完整映射,只需要手中心的位置。借助此中心坐标和 python-urx 软件包,我们现在能够在所需的方位和方向上改变机器人的速度:在每一帧上,我们计算当前手中心坐标与前一帧坐标之差,从而得出速度变化矢量或角度。最后,此机制看起来与人们用操纵杆控制机器人的方式非常相似。

python-urx

https://github.com/SintefManufacturing/python-urx

源视频

https://www.youtube.com/watch?v=F4X4jJwDBy4

高密度触觉传感器的触觉感知

灵巧的操纵要求具有较高的空间分辨率和对物体和环境的高保真触觉感知。最新的传感器数组非常适合机器人操纵,因为它们可以很容易地挂接到任何机器人末端执行器上,并适应任何接触面。

源发布文章

https://dl.acm.org/doi/10.1145/3415255.3422892

Video-Touch 嵌入了一种高密度的触觉传感器数组。它们安装在双指机器人抓手中。每个指尖上都挂接一个传感器数组。单个电极数组可以感应 5.8 平方厘米的帧面积,每帧分辨率为 100 点。感应频率等于 120 赫兹。每个点的力检测范围为 1 至 9 牛顿。因此,机器人以 200 点的分辨率(每个手指为 100 点)检测施加在机器人手指抓取的固体或柔性物体上的压力。

从传感器数组处收集的数据经过处理后,以动态手指接触映射图的形式向用户显示。压力传感器数组让用户能够感知被抓物体的顺应性、硬度、粗糙度、形状、方向等物理特性。

图 8:多用户机械臂控制功能。用户能够在常规的视频通话过程中执行 COVID-19 检测 [源视频]

源视频

尾注

如此一来,借助 MediaPipe 和机器人,我们建立了一个有效的多用户机器人远程操作系统。在未来,远程操作系统的潜在用途将包括医疗检测,以及在难以进入的环境(例如外太空)中进行的实验。该系统的多用户功能解决了有效远程协作的实际问题,允许在多人小组中进行需要手动远程控制的项目工作。

我们流水线的另一个优势特点是,人们可以使用任何带有摄像头的设备,例如手机,来控制机器人。除了机械臂,人们还可以操作其他如,边缘设备、移动机器人或无人机硬件设备。当然,目前的解决方案具有一定的局限性:延迟时间、z 坐标(深度)的利用,以及手势类型的便利性都有改进的空间。我们十分期待试用 MediaPipe 团队的更新,并期待着尝试新类型的抓手(带手指的抓手)、双手控制,甚至是全身控制(期待“铁甲钢拳”!)。

希望这篇文章对您和您的工作有所帮助。保重身体,坚持编码。非常感谢您的关注!

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27052

    浏览量

    201435
  • 机器视觉
    +关注

    关注

    161

    文章

    4046

    浏览量

    118369

原文标题:Video-Touch:手势识别助力 Google Meet 实现多用户远程控制机器人

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    信捷plc远程控制怎么实现?如何远程修改程序?

    在现代工业自动化领域,远程控制技术越来越受到关注。远程控制已成为提高效率、降低成本的关键手段,信捷PLC(可编程逻辑控制器)作为工业控制的核心设备,实现其
    的头像 发表于 02-22 16:02 329次阅读
    信捷plc<b class='flag-5'>远程控制</b>怎么实现?如何<b class='flag-5'>远程</b>修改程序?

    开源项目!教你如何复刻自平衡赛车机器人、智能家居中控、竞技机器人先进模糊控制器等

    开源项目作品 为了方便大家更好提升自己,电子发烧友小编为大家整理了一些工程师大佬设计的开源项目作品,供大家可以参考学习,希望对广大工程师有所帮助。 1.用全志R128复刻自平衡赛车机器人,还实现
    发表于 12-26 09:17

    LabVIEW的六轴工业机器人运动控制系统

    LabVIEW开发六轴工业机器人运动控制系统 本项目开发了一个高效的工业机器人控制系统,重点关注于运动学算法和轨迹规划算法的实现和测试。LabVIEW作为一个关键技术,在项目中扮演了核
    发表于 12-21 20:03

    用全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

    电池状态和机器人的倾斜角度,操作者只需要通过App中的几个可视化按钮和滑动栏实时修改其PID,以实现对机器人速度和状态的远程控制。 自平衡机器人
    发表于 12-20 10:22

    常用的远程控制软件介绍

    远程控制软件是一种能够让用户从远处获得本地控制权的软件。它可以让用户只需要使用一台主机就可以控制另一台机器。这意味着,用户不再需要登录到他想控制
    的头像 发表于 12-13 10:45 766次阅读
    常用的<b class='flag-5'>远程控制</b>软件介绍

    开源作品!稚晖君超迷你低成本开发板、超酷机器人、智能手环等参考方案

    单片机用于处理蓝牙模块接收到的数据,对电机驱动电路发送信号控制电机,超声波模块用于测量距离,TFT显示屏用于显示机器人当前电量。 由于内容较多,先展示一下效果图给大家看看,点击下面查看原文即可查看全文
    发表于 12-12 10:28

    Arduino教学机器人的使用教程

    本文档的主要内容详细介绍的是Arduino教学机器人的使用教程
    发表于 09-27 06:53

    使用Arduino和PAJ7620势传感器制作手势控制机器人

    使用Arduino和PAJ7620势传感器制作手势控制机器人,简单程序即可实现。小小的传感器可以识别各种手势。它采用内置的空间传感器,可以感知接近和离开的对象。
    发表于 09-27 06:17

    教你做个PID控制巡线机器人

    在本项目中,我们将学习如何使用带PID控制器的线跟随机器人使用Arduino Nano解决迷宫。
    发表于 09-25 06:54

    ai人工智能机器人

    的运营成本、人力成本还在不断提高(如:办公场地的租金、员工的工资、社保公积金、节假日福利等)。 如今的智能电话机器人,每天的电话拨打量可达800-1000通,相比人工提高了3-5倍,大大缩短了名单的筛选
    发表于 09-21 11:09

    【IoT毕设】机智云平台+STM32+树莓派的草莓采摘机器人控制系统

    , 采摘机器人结构简图如图1.3所示。主要研究了采摘机器人的全向移动底盘、机械及其控制、视觉识别系统和整机的控制系统。 ​ 图1.2草莓采
    发表于 08-16 17:35

    profinet转ethernet网关连接发那科机器人配置案例

    PLC,设置好机器人的IP地址,打开机器人设置菜单找到主机通讯选项; 7、找到搬运机器人控制端的TCP/IP选项; 8、设置机器人
    发表于 08-03 17:58

    【科普】干货!带你从0了解移动机器人(三) ——自主导航系统及上位机软件设计与实现

    。 移动机器人外部调度软件和管理平台调度软件和管理平台是指在上位机(服务器)上实现的软件,用于对移动机器人进行远程管理和控制。 通过调度软件,可以实现对移动
    发表于 06-28 09:36

    何用远程协助软件控制对方电脑?

    何用远程协助软件控制对方电脑?
    的头像 发表于 05-23 17:49 800次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>远程</b>协助软件<b class='flag-5'>控制</b>对方电脑?

    浅谈儿童陪护机器人

    儿童陪护机器人越来越受到人们的关注,其中转动控制是其重要组成部分之一。步进电机芯片作为一种常用的控制芯片,被广泛应用于儿童陪护机器人中的转动控制
    发表于 05-11 15:12