A Dexterous Hand-Arm Teleoperation System

论文链接:https://ieeexplore.ieee.org/document/9906807?denied=
论文出处:IEEE Transactions on Cybernetics,2024
论文单位:汉堡大学,清华大学

摘要

  • 基于无标记视觉的远程操作,利用计算机视觉的创新,为多指机器人的手提供了自然和无创的手指运动的优势。
  • 然而,目前的姿态估计方法仍然面临手指自咬合的不准确性问题
  • 在此,我们开发了一种新的基于视觉的手-臂远程操作系统,该系统可以从最佳视点合适的距离捕获人手。
  • 该远程操作系统由端到端手部姿态回归网络可控主动视觉系统组成。
  • 端到端姿态回归网络(Transteleop)结合辅助重建损失函数,通过低成本的深度相机捕获人手,并基于图像到图像的转换方法预测机器人的联合命令。
  • 为了获得对人手的最佳观察,在局部位置由机械臂实现主动视觉系统,以确保所提出的神经网络的高精度。
  • 在相对控制下,将人臂运动同步映射到机械臂上。
  • 定量的网络评估和各种复杂的操作任务,如建塔、浇筑和多桌杯子堆叠,证明了所提出的远程操作系统的实用性和稳定性。

1. 简介

  • 遥操作在许多机器人领域,如医疗外科空间探索救援行动中发挥重要作用。
  • 传统的远程操作方法通常依赖于数据手套可穿戴式运动跟踪设备,这些设备是定制的,可能会阻碍人类灵巧的运动。
  • 随着计算机视觉中人体和人手姿态估计和手势识别的快速发展,基于无标记视觉的遥操作近年来取得了很大的成就。它为远程操作提供了一种自然、高效的方法,特别是拟人手的远程操作。
  • 在先前的基于无标记视觉的遥操作方法中,手部姿态估计算法通常在后面跟一个运动重定向算法。
  • 与这些工作相反,端到端回归模型将人手图像作为输入并预测机器人联合命令,绕过中间过程,直接针对机器人系统。
  • 此外,端到端模型对于新手演示来说更直观,并且在实践中节省了后处理时间。
  • 端到端方法的主要关注点是探索两个图像域(人手和机器人手)之间丰富的共同特征,以学习从人手到机器人手的运动学映射
  • 最近,图像到图像的翻译已经成为机器人模仿学习和风格迁移中发现两种表征之间隐藏映射特征的流行方法。
  • 因此,在手部姿态估计模型中引入图像到图像的转换机制,有望提高跨域预测精度。
  • 然而,由于手指的自遮挡(self-occlusion),这些基于视觉的姿态估计算法仍然存在不准确的问题,特别是当视觉数据由单个固定摄像机提供时
  • 平均而言,目前最先进的单相机手部姿态估计算法的平均误差小于10 mm,但仅当相机方向与人手之间的夹角小于30◦时。
  • 校准良好的多相机系统通常用于感知更多的信息,但无法避免对目标物体的极端视点,并且经常遇到时间同步和处理时间长的问题。
  • 另一种选择是确保相机总是从最佳的视角和最佳的距离捕捉到人手,利用更直接的姿势估计解决手指的自遮挡。
  • 主动视觉系统可以更新摄像机的视点并获得更好的信息。
  • 为了彻底解决基于视觉的远程操作中视点有限的问题,开发一种局部的主动视觉系统将是有益的。
  • 在本文中,我们设计了一种基于无标记视觉的手臂远程操作系统,该系统由手部姿态估计方法Transteleop和实时主动视觉系统组成(见图1)。
    在这里插入图片描述
    图1. 提出的基于视觉的手臂远程操作系统的pipeline。人体演示者通过端到端手部姿态估计网络Transteleop远程操作从动手(slave robot hand),并基于操作者的手腕运动通过相对轨迹控制控制从动机械臂(slave robot arm)。为了解决手指自遮挡导致的手部姿态估计不准确的问题,我们引入了一种可控的主动视觉系统来探索最佳的手部观察。主动视觉系统由安装在机械臂上的深度摄像机和实时轨迹生成方法组成。 这种远程操作系统使从机器人能够完成不同类型的操作任务,如pouring, sweeping, 和 multitable cup stacking。
  • 手部姿态估计的初步结果由《A mobile robot hand-arm teleoperation system by vision
    and IMU》论文报道。这项工作更详细地解释了Transteleop模型,并建立了一个新的pairwise human–robot 数据集,其中双手处于相同的方向。
  • 此外,由于主动视觉设置的增强,人在环遥操作系统能够通过将手始终保持在最佳视场中来完成更多的操作任务。
  • 我们的主要贡献如下:
  • 基于图像到图像的翻译方法,开发了端到端机器人手部姿态估计模型(Transteleop)。Transteleop在自建的人机配对数据集上进行训练,预测机器人的联合命令,并将人手图像转换为合成的机器人图像,从而更好地感知姿势特征。
  • 为了彻底解决基于视觉的遥操作中视野受限的问题,我们建立了一个主动视觉系统。该系统确保相机始终从最佳视点和最佳距离捕捉人手。
  • 我们通过网络评估、轨迹分析和重要的机器人实验,证明了所提出的远程操作系统的可靠性和实用性,包括pick and place, tower building, pouring, sweeping, midi mixer fader sliding, and multitable cup stacking,在两个训练过的演示器上。

2.相关工作

2.1 机器人遥操作

  • 机器人远程操作系统概念上包括两个sites: 1) the local and 2) the remote site
  • 本地站点定位远程操作员和用于测量或支持人类运动的多个设备,并显示远程站点的实时状态。
  • **远程站点包括机器人、支持传感器和被操纵的对象。**机器人接受人类的指令和传感器的感知,然后执行操作任务。
  • 本地站点的测量设备主要分为两大类: 1)接触式/可穿戴设备和 2)无标记设备。
  • 接触/可穿戴设备,如操纵杆、标记、惯性和磁测量单元(IMU)或基于肌电图(EMG)的数据手套或可穿戴套装,以及触觉设备,长期以来一直用于机器人远程操作。从简单的操纵杆到力反射操纵杆,大多数用于控制运动类型有限的机器人,如无人机和移动基地。基于标记、IMU、EMG的可穿戴套装,如手套、衣服等,通常都需要精确的校准和定制才能实现精确的控制,但MYO臂章等腕带型设备除外。在实际应用中,IMU-和EMG -装置设置方便,对多自由度机械臂的控制效率高。
  • 在灵巧操作方面,可穿戴设备的另一个明显缺点,尤其是基于手套的传感器,是阻碍人类的自然运动
  • 随着虚拟/混合/增强现实(VR/MR/AR)设备的快速发展,基于VR/MR/AR的远程操作在机器人领域得到了相当大的关注。这是由于沉浸式交互和增强的感知信息的好处。
  • 与可穿戴设备相比,非接触式设备具有允许自然、不受限制的身体运动和不同的远程操作员,并且侵入性较小的优点。
  • 远程操作中最常见的非接触式设备是低成本的RGB相机
  • 利用人体跟踪和手部姿态估计算法,基于无标记视觉的遥操作在控制人形机器人或灵巧机械手中的应用被研究。
  • 许多工作分别研究了人体的视觉感知 (例如,人类手势分类或人类手部姿势估计) 和机器人控制(例如,特定运动或运动学重定向)。
  • 运动学重定向利用视觉感知算法的身体检测结果,在关节空间生成机器人指令。

2.2 主动视觉(Active Vision)

  • 主动视觉已广泛应用于目标跟踪、机器人抓取、人机交互、同步定位与测绘(SLAM)等领域。
  • 它旨在通过将视觉传感器移动到最佳姿势来选择注意力和图像视点,以促进相关应用。
  • 主动视觉系统的常见形式是将视觉传感器安装在机械手的末端执行器上作为手眼系统或安装在云台机器人上。
  • 最近,一些研究基于强化学习技术优化了摄像机视点,用于抓取姿势生成和机器人pushing任务。
  • 在人机交互场景中,主动视觉通常增强机器人检测人类存在和解读人类运动或情绪的能力。
  • 在本文中,我们研究了如何在操作员现场建立一个受控的主动视觉装置,以从有利的角度捕捉人手,而不是应用主动视觉来观察远程site。

3. 硬件设置

  • 我们的目标是建立一个灵活的基于视觉的远程操作系统,在该系统中,远程操作者可以在无限的工作空间中执行一系列操作任务,并进行自然的手指运动和不受限制的手臂动作。硬件设置如图2所示。
    在这里插入图片描述
    图2. 提出的远程操作系统的硬件设置。(a)局部site的正面视图。(b)远程操作硬件。
  • local site设置[见图2(b)]由一个带有RealSense SR300深度传感器的6自由度UR5协作机器人手臂、一个PhaseSpace运动跟踪系统、一个3d打印的轻质LED手腕标记、两个监视器和两个deadman’s 开关组成。
  • 人类远程操作者站在UR5机器人前面,保持安全距离,而UR5机器人手臂拥有认证的安全系统,用于自动跟踪人类的右手
  • 对于手指跟踪深度传感器安装在机器人手臂的末端执行器上,用于捕获人手的深度图像。
  • 对于手腕跟踪PhaseSpace运动跟踪系统(320 Hz) 根据粘贴在人手手背上的手腕标记来估计右手的6-D姿势。
  • 两个监视器用于可视化远程站点的实时状态和人手的深度图像。除了从俯视图和右视图可以看到机器人状态的两种视觉流外,机器人五个指尖上的实时力反馈也用五个圆柱体来表示,它们的高度随着测量力的大小而变化。
  • 在远端,从机器人为PR2机器人,其5自由度的右臂上安装了一个19自由度的Shadow机械手
  • 安装在PR2头部的Kinect2 RGBD摄像头和位于PR2右侧的网络摄像头从顶部和侧面视角捕捉机器人的表现。
  • 除此之外,五个Syntouch Biotac触觉传感器安装在Shadow手的指尖。
  • 在我们的设置中,人类站在UR5机器人的前面,只能从视觉显示中看到PR2。
  • 这种硬件设置在同一局域网下的三台计算机上工作,数据通过机器人操作系统(ROS)在这些计算机之间进行通信。
  • 每台计算机上的主要ROS主题和数据通信如图3所示。
    在这里插入图片描述
  • PC1和PC2属于local site,PC3属于remote site。PC2和PC3分别控制UR5机器人和PR2机器人。PC2发布6-D global hand poses,PC3根据global hand poses生成 右PR2手臂的实时轨迹命令。PC3根据人手图像生成Shadow hand的联合指令,然后Shadow hand在远端模仿人手手势。PC1用于反馈可视化和控制SR300深度相机。

4. 基于视觉的机器人手部姿态估计

4.1 Transteleop

  • 我们期望从跟踪系统捕获的人手深度图像 I_H 中估计出机器人手的关节角度

  • 尽管“Shadow hand”被设计成与成人手的机制相匹配,但灵巧的远程操作需要操作者的手与机器人之间的精确映射。

  • 由于机械手和人手之间存在跨域的差异,如何从这两个域中获取具有指导意义和共享手部特征H_share,如骨骼形状和整个轮廓,是该回归问题的主要问题。

  • 我们认为从共享姿态特征 H_share而不是单纯的 I_H 进行预测更有利。

  • 为了获得指导性的特征表示Z_pose,我们采用了一种从 人手图像I_H 映射到机械手图像I_R 的生成结构,并从bottleneck层检索姿态特征H_share

  • 尽管条件GANs在图像生成质量上有了很大的提高,但鉴别器只追求重构图像的高真实感,而没有充分关注输入图像的姿态特征。

  • 另外,众所周知,自动编码器以无监督的方式学习有效的数据编码,并且广泛用于图像到图像的翻译应用程序。

  • 因此,我们建议使用编码器-解码器风格的图像-图像转换方法(Transteleop)进行手部特征H_share提取。

  • 这个学习方案定义为:
    在这里插入图片描述

  • Transteleop的深度网络架构如图4所示。
    在这里插入图片描述
    图4. Transteleop的结构图。给定来自人手域的输入深度图像,Transteleop旨在重建机械手图像并预测机器人域中机械手的关节命令。

  • Transteleop可以归结为四个模块:
    (1)encoder(编码)模块
    (2)embedding(嵌入)模块
    (3)decoder(解码)模块
    (4)joint (关节)模块

  • encoder–embedding–decoder关联获取人手 I_H 的深度图像,并在相同的手部姿势下重建机械手Iˆ_R的深度图像。

  • 嵌入层连接编码器和解码器子模块,并体现了共享姿态特征H_share

  • 请注意,嵌入模块中的所有层都是全连接层,因为全连接层允许每个单元连接前一层的每个激活单元,而卷积层通常具有特定的感受野。

  • 在image-to-image translation领域,L1损失会产生预测图像的粗略轮廓,但保留高分辨率的细节,而L2损失则倾向于估计分布的平均值,导致图像模糊。

  • 在我们的例子中,手的局部特征,比如手关键点的位置,比图像分辨率更重要。Transteleop通过引入基于关键点的 L2 重构损失(公式(3))来解决这个问题。这鼓励模型专注于局部特征,比如手关节周围的像素。
    在这里插入图片描述
    式中,M为像素个数,αij为像素在[i, j]处的权重因子。I_R为机器人手图像的真值.

  • 每个像素的权重因子 α∈[0,1] [见式(4)]为像素与手部关键点之间的归一化距离,如图5所示。
    在这里插入图片描述
    式中,Pij为像素在图像坐标[i, j]处的位置,A为所有15个关键点及其8个相邻像素的位置数组,αij为像素在[i, j]处的比例因子。Dmax为数组D的最大值,Pij的大小为1 × 2, A的大小为135 × 2, D的大小为M × 1。
    在这里插入图片描述
    图5. 权重因子α的热图。较深的颜色说明了这些像素的重要性。

  • Transteleop的 joint模块采用全连通层,从嵌入H_share的潜在特征推断出17-D joint角度。关节损失L_joint 用均方误差损失进行监督
    在这里插入图片描述
    式中,N为节点个数,GT为真地节点角度。

  • 在训练时间内,完整训练目标 L_hand 为重建损失与关节角度回归损失的加权和,在配对的人-机器人数据集上训练。
    在这里插入图片描述

  • 其中λ_recon = 1, λ_joint = 10为标度权值。

  • 在推理时,不使用解码器模块。相应地,Transteleop将人手的深度图像作为输入,然后为机器人输出关节命令。

4.2 Dataset

  • 考虑到输入图像和重建图像的方向和位置不一致无疑会给Transteleop带来更多的训练挑战,因此最好从相同的视点相同的手腕姿势拍摄人手和机器人手的图像。
  • TransteleopTeachNet中,摄像机和机器人均处于固定全局姿态时,通过Gazebo模拟器记录机器人图像。
  • 在本文中,我们建议从相同的视角收集成对的人-机器人数据集。基于Bighand2.0提供的人手深度图像和关键点位置,通过OpenGL接口采集机器人图像,利用 仿生解算器(bio-ik solver) 优化机器人关节角度。
  • bigand2.0数据集提供了960K张人手深度图像,其中人手的整体姿势变化很大。
  • 21个手关键点相对于相机帧的位置如图6(a)所示。为了获得手腕的方向,我们为每只手建立一个局部的手框架。z轴是食指(FF)-手掌,中指(MF)-手掌,无名指(RF)-手掌,小指(LF)-手掌的均值。y轴是MF-掌和RF-掌的叉乘。然后,我们得到了右手坐标系下的x轴。向量FF-palm、MF-palm、RF-palm和MF-palm表示从手腕指向FF、MF、RF和LF的掌骨关节的向量。一旦我们有了手腕的方向,我们就获得了关于人手数据集的从相机到手腕的转换。接下来,我们在OpenGL中设置一个与机器人手腕相同方向和位置的相机。利用仿生解算器(bio-ik solver),我们开发了一种优化的重定向方法,该方法集成了从人手关键点到相应机械手关键点的位置映射方向映射
    在这里插入图片描述
  • Shadow hand的运动链如图6(b)所示。随后,获得机器人的关节角度,即Transteleop的ground truth。
  • 最后,考虑到相机和机器人手腕之间的转换,我们在OpenGL中渲染机器人模型并捕获机器人手部的深度图像
  • 配对数据集由400K幅同步的人机深度图像和相应的机器人关节角度组成。如图6©所示,机器人的手正在模仿人手,并且处于类似的手腕姿势。

5. 主动视觉系统

  • 我们的实时主动视觉系统允许相机通过移动视觉传感器捕捉到最佳视点的右手

  • 视觉传感器安装在机器人手臂的末端执行器上。

  • 在这样的跟踪系统中,需要考虑三个关键问题:
    1)机器人能否实时流畅地跟随人手;
    2)机器人是否与人保持安全距离;
    3)UR5机械臂是否能满足操作任务所需的工作空间

  • 对于第一个问题,PhaseSpace运动跟踪系统的频率保证了对人手的快速、可靠的识别。

  • 然后,携带SR300深度相机的UR5机器人的目标姿态始终更新到相机可以最优观察到人的手指的位置,即人的手掌前面40厘米的位置。在我们的手部坐标系中,这个位置很容易通过沿着人手负y轴平移40厘米来计算,如图6(a)所示。

  • 第二,30hz关节空间轨迹生成由逆运动学求解器bio-ik实现。

  • 末端执行器的实时6D姿态在线转换为关节空间机器人指令,要求指令尽可能接近当前机器人构型。在笛卡尔空间中,平移和角运动受到速度和加速度极限的约束。除此之外,还采用了关节空间中的最大速度约束

  • 在UR5认证安全系统的基础上,人手与末端执行器之间40厘米的距离和轨迹约束也提供了强有力的安全保障。

  • 此外,我们在规划场景中添加了一个体积覆盖人手面积的碰撞对象,并实时更新其姿态。

  • 在实验中,我们在执行前检查了目标姿态的碰撞。而且,人可以随时按下deadman开关(左脚踏板),UR5机器人立即停止。

  • 为了确定系统的整体工作空间,我们通过在环境中创建网格位姿,构建了UR5和PR2右臂的可达性图,并计算了这些位姿的有效IK解

  • 在我们的设置中,UR5机器人安装在墙角附近的墙上,而PR2则站在一个不受约束的空间中。

  • 图7中的蓝、绿、黄、红球体表示机器人末端执行器可以以大于50、20、10、等于1个方向(-s)到达该位置。
    在这里插入图片描述

  • 与UR5工作空间相比,显然,由于机制限制,PR2工作空间中只有少数蓝色球体分散。

  • 为了最大限度地利用PR2工作空间,我们对右PR2臂进行了相对控制对UR5机器人进行了绝对控制

  • 因此,右PR2手臂只在演示者踩下右脚踏板后进行人臂的增量运动,UR5机器人将在线跟踪人臂的运动。

  • 通过这种方式,人类演示者可以始终在一个舒适的运动范围内移动他们的手臂。整个手部姿态跟踪的框图如图8所示。
    在这里插入图片描述

6. Slave Robot 运动生成

  • 由于PR2机器人的工作空间有限,我们对从机器人采用相对控制来实现两个机器人之间的精细协调。
  • 因此,不需要将人的手腕位姿与从属机器人手腕进行初始配准,从机器人的工作空间也不受局部位置的约束。
  • 只有当人踩下脚踏板时,从机器人才会移动。
  • 这不仅保证了机器人的安全,也便于在局部进行潜在的调整,例如,避免UR5机器人可能发生的自碰撞,或者接近UR5 机器人工作空间边界。
  • 与UR5机器人的运动类似,根据PhaseSpace系统获取的人体腕部位姿,在笛卡尔空间和关节空间的速度和加速度约束下,利用 bio-ik solver 计算从臂的关节角。一个微小的区别是,在关节空间中,我们考虑前馈和反馈关节角度差来计算关节速度。
  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果 `onDidReceiveNotificationResponse` 方法没有被调用,那么可能是由于以下原因之一: 1. 没有在初始化时设置 `onDidReceiveNotificationResponse` 回调。请确保在 `FlutterLocalNotificationsPlugin` 的初始化方法中设置了此回调,例如: ```dart FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); Future<void> _initNotifications() async { var initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); var initializationSettingsIOS = IOSInitializationSettings(); var initializationSettings = InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS); await flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } Future<void> onSelectNotification(String payload) async { // 在此处处理通知点击事件 } // 设置 onDidReceiveNotificationResponse 回调方法 flutterLocalNotificationsPlugin.onDidReceiveNotificationResponse.listen((event) async { await onSelectNotification(event.payload); }); ``` 2. 在 Android 平台上,需要在 `AndroidManifest.xml` 文件中注册 `NotificationReceiver`,并将其与 `FlutterLocalNotificationsPlugin` 相关联。请确保在 `AndroidManifest.xml` 文件中添加以下代码: ```xml <application ...> <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" /> <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver> </application> ``` 3. 在 iOS 平台上,需要在 `AppDelegate.swift` 文件中添加以下代码: ```swift import UIKit import Flutter import UserNotifications @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate, UNUserNotificationCenterDelegate { override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 在此处初始化 FlutterLocalNotificationsPlugin // 设置 UNUserNotificationCenterDelegate UNUserNotificationCenter.current().delegate = self return super.application(application, didFinishLaunchingWithOptions: launchOptions) } // 实现 didReceive response 方法 func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { let flutterChannel = FlutterMethodChannel(name: "com.example.app/notification", binaryMessenger: self.window.rootViewController as! FlutterViewController) flutterChannel.invokeMethod("onSelectNotification", arguments: response.notification.request.content.userInfo) completionHandler() } } ``` 上述代码中,我们通过实现 `UNUserNotificationCenterDelegate` 协议的 `didReceive response` 方法来处理通知的点击事件,并且调用了 `FlutterMethodChannel` 方法来将通知的 payload 发送给 Flutter 端的 `onSelectNotification` 方法。 希望这些信息能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值