标题:ROS现实:使用消费级硬件的支持ROS的机器人的虚拟现实框架
0. 摘要
虚拟现实(VR)系统使用户可以直观地与3D环境进行交互,并且已被广泛用于机器人远程操作任务。虽然比2D同类产品更具沉浸感,但早期的VR系统价格昂贵,并且需要专用的硬件。幸运的是,最近出现了价格可承受的消费级VR系统。这些系统便宜,相对便携,并且可以集成到现有的机器人框架中。我们的团队为机器人操作系统(ROS),ROS Reality设计了一个VR远程操作包,可以轻松地将其集成到此类框架中。 ROS Reality是任何启用ROS的机器人与任何Unity兼容的VR耳机之间的开放源代码,互联网上的远程操作界面。我们完成了一项试点研究,以测试我们的系统的有效性,与通过直接动觉处理来控制机器人的相同用户相比,通过ROS Reality控制百特机器人的专业人类用户可以完成24项灵巧的操作任务。这项研究提供了对使用当前消费者级资源的VR机器人远程操作任务的可行性的见解,并揭示了这些VR系统中需要解决的问题。此外,本文还介绍了ROS现实,其组件和体系结构。我们希望该系统将被其他研究小组采用,以便将VR遥控机器人轻松集成到未来的实验中。
1. 介绍
虚拟现实(VR)为机器人提供了引人注目的界面,因为它可以在真实的物理世界中进行流体交互,并允许用户以直观的方式指定点和变换。 VR接口提供了进行远程操作,通过演示进行机器人教学和学习以及远程调试和修复机器人上的问题的潜力。
VR系统的主要优势在于,它们允许非专业用户控制机器人。 机器人操纵器与VR操纵器的直接映射创建了一个界面,操纵器在其中充当用户的手的扩展。 这种人机界面可让日常用户无需大量培训即可直观地执行各种灵巧的机器人操纵任务。 另一方面,许多任务需要细粒度的操作,这需要专家表现,这需要时间来获得这种经验。 因此,VR界面也可能是一种手段,可以利用专家级用户的熟练程度来帮助机器人学习复杂的细粒度操作任务。 因此,VR允许非专家控制机器人,并利用专家在具有挑战性的领域中的经验。
考虑到这一点,我们提出了ROS现实。 ROS Reality是一个VR和增强现实(AR)远程操作界面,它使用具有ROS功能的机器人的消费级VR和AR硬件。 它允许用户使用消费级的VR和AR硬件通过Internet查看和控制机器人。 ROS现实已经成为Whitney等人[18]进行VR研究和Rosen等人[13]进行AR研究的技术基础。 图一显示了使用ROS Reality进行的VR远程操作演示。在这项工作中,我们集中于ROS Reality的VR系统架构和应用。
在这项工作中,我们详细介绍了消费者级VR和AR远程操作界面ROS Reality。 我们将讨论该软件包如何使ROS网络机器人(如Rethink Robotics的Baxter)通过Unity游戏引擎通过HTC Vive与Internet进行双向通信。 我们还介绍了一项试验性研究的结果,以测试使用ROS Reality遥控机器人执行24项灵巧操作任务的功效。 以前,这项工作的某些部分出现在Rosen等人的扩展摘要中[14]。
2. 相关工作
远程操作使机器人能够完成原本很难自动完成的任务,例如在DARPA机器人挑战赛[5]中,并且还允许人类在通常会造成伤害的环境中通过代理进行操作[1]。
近年来,用于机器人远程操作(尤其是通过Internet)的2D接口已经流行[6]。 监视器和键盘设置已用于控制机器人执行各种经典任务,例如运动计划和物品抓取[16]。 此外,事实证明,网络浏览器在允许世界上任何拥有计算机的人远程操作机器人,扩大操作人员的用户基础方面特别有用[11]。 但是,2D监视器界面不能反映人类观察3D世界并与之交互的自然方式。 我们的研究表明,VR界面可以解决此问题,因为非熟练用户更快,更高效,并且更喜欢使用VR界面而不是2D显示器界面来遥控机器人[17]。
虚拟现实界面和龙门系统提供了直观的方法,可以将用户的动作直接映射到他们所控制的机器人的动作[17]。 例如,达芬奇机器人系统是一种沉浸式触觉远程外科手术系统,对于新手和有经验的用户都具有改善的手术性能[2]。 达芬奇机器人虽然功能强大,但其接口却非常适合于手术领域和固定领域。 Mallwitz等人[10]开发了一种便携式且易于穿戴的外骨骼,使人类用户可以自然地遥控复杂的类人机器人。 该系统的控制非常直观,但又仅限于特定的机器人,并且非常昂贵,与基于Web的界面相比,极大地限制了潜在的操作员基础。
图形的最新进展已使游戏界可以使用商业上可用的VR系统。 HTC Vive,Oculus Rift和Google Cardboard等系统提供廉价且便携式的VR硬件。 结果,实验室研究人员最近开始探索这些用于机器人遥控操作的VR系统。 Zhang等[20]使用HTC Vive遥控PR2并进行模仿学习。 Lipton等[9]还使用了市售的VR系统来在Baxter上执行远程操作。 我们先前关于将VR与2D远程操作系统进行比较的工作[17]也使用HTC Vive作为VR接口,该接口通过ROS Reality启用。 通过让实验室使用相同的VR系统,结果和界面更易于复制。
消费级VR系统的普及是最近的,因此,对于使用该技术的远程操作界面的功效的研究很少(例如[20])。 尽管任务的完成在很大程度上取决于接口类型和特定的机器人,但我们有兴趣探索使用通用的研究机器人可以在我们的开源软件上完成哪些复杂的任务。
我们选择要评估的对象和操作任务的灵感来自于以前有关机器人任务基准的工作。 Kasper等人[8]创建了一个程序,以生成一个包含100多个对象模型的开放数据库,用于评估服务机器人中的识别,定位和操纵能力。 Goldfeder等人[7]发布了一个收集的项目和稳定掌握数据集,作为进行机器学习和对掌握计划算法进行基准测试的一种方法。 YCB对象和模型集是一个值得注意的基准,它是一组易于访问的项目,被选择为包含各种常见的对象大小,形状和颜色,以使用公认的协议测试各种机器人操作技能[3]。 YCB数据集使任何研究实验室都可以轻而易举地对大型对象数据集上的常规任务评估机器人操纵器。 本文执行的一些任务来自YCB数据集。
3. ROS REALITY
本节首先提供在虚拟现实中与机器人交互的简要提要,然后是ROS Reality1的技术描述。
3.1 VR作为远程操作界面
当今,两种最常见的虚拟现实系统是Oculus Rift和HTC Vive。 由于出色的房间规模跟踪功能,我们的小组使用HTC Vive进行开发,但是以下有关如何将VR用作远程操作界面的说明适用于两个系统。
有多种方法可以向用户显示机器人的状态,以及将用户的输入映射到机器人。 我们将这些不同的方法分为两大类:以自我为中心或以机器人为中心。
在以自我为中心的模型中,人是虚拟世界的中心,实际上与机器人居住在同一空间。 利普顿(Lipton)等人[9]的同质研究和张等人[20]就是这种以自我为中心的映射的例子。 在这种情况下,人类用户报告说自己“成为机器人”或“从机器人的眼睛看不见”。
在以机器人为中心的模型中,人和机器人共享一个虚拟空间,但不一定彼此重叠。 我们用于评估ROS现实度的模型[17]属于此类。 在这种模型下,人类会绕过机器人的虚拟模型,并通过虚拟抓握和拖动机器人来控制其手臂。 因此,我们将此模型称为虚拟龙门系统。
3.2 系统总览
HTC Vive已连接到运行Unity游戏引擎的计算机。 Unity使用定制的URDF解析器根据其URDF构建我们的机器人的本地副本。 Unity通过Rosbridge WebSocket连接[4]通过Internet连接到ROS网络。 通过此WebSocket连接发送机器人的姿势和手腕相机,以及安装在机器人头部的Kinect 2的颜色和深度图像。 颜色和深度图像通过自定义着色器内置到Unity中的点云中。 当用户按住无人驾驶开关时,用户控制器的姿势将被发送回机器人,后者使用反向运动学求解器将机器人的末端执行器移动到指定姿势。 有关ROS现实系统的直观概述,请参见图2。
C. ROS
ROS(机器人操作系统)是一组工具和库,可帮助对机器人应用程序进行编程。 ROS连接执行不同功能的程序进程,称为节点。 节点通过在本地TCP网络(称为ROS网络)上通过通道或主题流式传输数据进行通信。 节点创建发布者对象以通过网络在某个主题上发布数据,或者创建订阅者对象以订阅一个主题。 ROS提供了一个API,可以用C ++或Python创建节点。 所有为ROS Reality编写的节点都是用Python编写的。
ROS Reality启动一个Kinect2 ROS节点[19],两个RGB摄像机供稿(机器人的每个手腕摄像机一个),一个Rosbridge WebSocket服务器[4],一个将机器人的完整变换(TF)转换为的自定义ROS节点。 一个紧凑的字符串,另一个ROS节点侦听VR系统中的目标姿势,查询机器人的逆运动(IK)解算器,如果找到则将其移至IK解决方案,如果未发现则报告IK失败。
D. HTC Vive
HTC Vive是消费级虚拟现实系统。 它具有三个被跟踪的对象:一个头戴式显示器(HMD)和两个棒控制器。 通过一组两个红外脉冲激光发射器(称为灯塔)跟踪每个设备,从而可以通过飞行时间计算进行跟踪2。 对每个被跟踪的对象进行位置和旋转跟踪,误差约为1-2mm。 棒控制器是完全无线的,并且HMD通过USB和HDMI电缆连接到计算机。 每个控制器都有一个触摸板,触发器和两个用于用户输入的按钮。
HTC Vive支持多个游戏和物理引擎,但是最初的(我们认为最好的支持)开发平台是Unity3。 Vive通过称为SteamVR的软件包连接到Unity。
E. UNITY
Unity是一个游戏引擎,可用于许多流行的2D,3D和虚拟/增强/混合现实应用程序。 它具有一个内置的物理引擎,可以处理接触动力学以及材料模拟(例如水,沙子或布料)。 它支持与大多数常见的VR(和AR)硬件集成,并提供用于编写自定义GPU着色器的着色器语言。
开放的Unity环境称为场景。 在此场景中是Unity原子单元GameObject的集合。 每个GameObject都有一组组件。组件有数十种,但对于我们而言,最重要的是脚本。 脚本是在每个渲染帧执行的小型C#程序。 ROS Reality的功能是通过一组这些Unity脚本实现的。
F. ROS现实
ROS Reality是一组程序,允许用户在VR中通过Internet查看和控制启用ROS的机器人。 ROS Reality由一组C#脚本组成,如下所述。
1)WebSocket客户端:此脚本是默认Rosbridge客户端roslibjs [15]的C#实现。 它支持广告,订阅和发布ROS主题。 所有消息都以JSON格式发送和接收,并且数据根据Rosbridge规范以base64编码。
2)URDF解析器:此脚本解析统一机器人描述格式(URDF)文件,并构建构成机器人的GameObjects的层次结构。 URDF是基于XML的规范,用于表示所有启用ROS的机器人通用的机器人模型。 URDF包含有关机器人的每个部分的信息(称为链接)以及机器人的链接如何连接的信息(称为关节)。 URDF解析器为每个链接创建一个GameObject,并根据关节将它们连接起来。 目前,我们已经成功地使用PR2和Baxter对我们的URDF解析器进行了测试,如图3和4所示。
虚拟机器人具有可以通过Unity的物理引擎进行仿真的物理属性。 这使机器人可以与其他GameObject进行交互,这对于在模拟场景中练习远程操作交互很有用。
3)变换侦听器:变换侦听器订阅(紧凑表示)机器人的变换(TF),并将虚拟机器人移动到与真实机器人相同的姿势。 ROS TF主题具有每个链接的位置和旋转(表示为四元数),此脚本读取并应用于模拟机器人的每个链接。
这样做的困难之一是ROS和Unity使用不同的坐标系。 因此,Transform Listener首先通过以下公式转换ROS的位置和旋转。
4)RGB摄像机可视化器:为了可视化来自机器人的摄像机源,此脚本订阅了指定的摄像机主题。 当它接收到摄像机图像时,将其从base64转换为图像,并使用摄像机源对平面GameObject进行纹理处理。 飞机GameObject已附加到用户的魔杖控制器上,因此用户在操作过程中始终可以看到它。 该脚本支持JPG或PNG格式的图像,但是出于带宽原因,ROS Reality始终使用JPG。
5)Kinect PointCloud Visualizer:Kinect PointCloud Visualizer脚本使用GPU着色器从Kinect 2的RGB摄像机图像和原始深度图中构建点云。该脚本订阅Kinect的RGB和深度主题,并将其传递给 作为自定义几何着色器的纹理。 此着色器为RGB和深度图像中的每对像素创建一个彩色的四边形。 四边形的颜色只是相关联的RBG像素的颜色。 必须计算位置。 深度图像中的每个像素都是该像素到相机平面的距离(以毫米为单位),因此首先我们将毫米转换为米,然后计算四边形相对于相机的位置。 然后,我们将该位置乘以Unity场景中Kinect的变换矩阵,以获得四边形的世界空间位置。 最后,将世界空间位置乘以视图和投影矩阵,然后传递给顶点着色器。
6)手臂控制器:该脚本允许用户将目标末端执行器坐标发送给机器人。 按下安全开关时(HTC Vive上的侧面抓握按钮),控制器的当前位置和方向将从Unity坐标系转换为ROS坐标系,并通过主题发布到ROS中的节点 该网络查询机器人的内置IK解算器,并在找到解决方案时移动机器人。 此外,该脚本使用户可以通过棒控制器的触发器来打开和关闭抓具。 这也可以通过将有关主题的消息发送给机器人来实现。
位置的从Unity到ROS的转换可以从公式1、2、3推导出来,而旋转则可以通过以下四元数运算来计算:
7)IK状态可视化器:该脚本订阅机器人IK解算器的当前状态,如果IK解算器发生故障,则将用户棒控制器变为红色。 这使用户知道是否无法达到发送给机器人的目标位置。
G. Robot
我们使用Rethink Robotics的Baxter。 百特是专为工业自动化应用而设计的机器人,也是有用的研究平台。 百特有一个固定的底座和显示屏头,带有两个7自由度臂和带有力感测器的夹具,使百特能够灵巧地操纵各种物体。 我们连接了百特工具包中的橡胶手柄,以最大程度地增加末端执行器的摩擦力。
我们还将ROS Reality连接到Gazebo中的模拟PR2,并且能够实时观察机器人的运动,但尚未建立控制该机器人的基础结构。
4. 长途电信试用
为了测试ROS Reality在远距离远程操作中的功效,我们让人工操作员在另外一所大学中控制了41英里外的机器人。 在该试验中,我们能够成功背靠背堆叠12个杯子,并通过拾放棋子进行短时间的国际象棋游戏。 用户报告没有滞后或带宽问题。
5. VR遥控任务可行性
我们考虑了机械手机器人所需的技能。 我们的目标是回答两个问题:
机器人在物理上是否有能力执行某些任务?
如果是这样,人类可以在VR中对机器人进行遥控操作来完成此任务吗?
由于机器人的物理功能取决于硬件,因此我们的特定研究使用了百特研究型机器人。 有关更多信息,请参阅第III-G节。
为了回答这两个问题,本文的两位作者担任执行试验的专家远程操作员。 对于第一个问题,我们在现实生活中实际移动了机器人的手臂以完成任务。 机器人手臂的直接操纵可为用户提供最佳的场景感知,以及机器人和环境的直接触觉反馈。 我们在之前的VR研究中使用了直接操纵的这种方法,以此作为衡量任务可行性的好方法[17]。 对于第二个问题,我们使用第三节中提到的ROS现实接口执行VR遥操作来完成任务。
百特的7个DoF臂在末端执行器上配备了平行的电动抓具,因此百特能够有效地抓握,推动,拉动和旋转物体。 但是,百特的抓取物体的能力受到其平行电动抓具的性质以及其手臂施加推拉力的能力的限制。
我们通过选择可能与各个领域的机械手机器人相关的不同常见操作任务(例如,家庭个人助理用途,社交辅助应用程序)来推导出24个任务,同时尝试选择我们认为可能的任务 在百特上实施。 选择了两组任务,以便可以使用一个操纵器完成一半任务,而另一半则需要同时使用两个操纵器。 另外,选择任务来代表一系列不同的运动(即,抓握,推动,拉动和旋转)。
对于通过方向控制和ROS Reality执行的每个任务,我们最多执行5次尝试来完成任务。 如果我们能够至少完成一次任务,则认为该任务可行。 我们在表I和图V-B中报告了任务的结果。
B. 讨论
总体而言,通过ROS Reality对Baxter机器人进行VR控制非常成功。 对于单个操纵器任务,十二分之八是通过直接操纵完成的,八项任务中的七项是通过VR实现的。 对于这两个操纵器任务,也通过直接操纵实现了十二分之八,并且再次通过VR完成了这八项任务中的七项。
我们的试验表明,机器人施加的力是能否首先完成任务的限制因素,机器人无法为某些任务产生足够的力(例如,抛球,接球,断屑)。 然而,不需要大量力量的操纵任务在很大程度上是成功的。 轮换没有对完成任务构成主要障碍。 在我们的评估中,需要灵活抓握的操纵任务也受到机器人上并联的电气抓爪的限制,但对于具有较高DoF末端执行器的机器人而言,操作可能会容易得多。 最后,机器人的内置碰撞检测系统阻止了打开切屑袋的两个操纵器任务的完成,该系统可防止机器人的手臂足够靠近以在袋子的两侧抓住薯片袋 。
6. 未来研究
本文描述的系统为将来的研究奠定了基础。例如,从演示中学习(LfD)是一种教学机器人复杂操作任务的流行方法,因为它利用了人类的专业知识,判断力和决策能力。但是,要从实验室研究的人类参与者那里获得示范,既费时又费力。解决该问题的一种方法是开发需要越来越少的人类演示的算法。这具有挑战性,不可避免地需要人类用户使用物理机器人进行至少一次(如果不是更多的话)演示。即使采用这种解决方案,在某些时候对于大多数任务来说,用户也将不得不与机器人进行交互以帮助训练它们。但是,使用VR作为大规模收集LfD数据的机制是一种有前途的选择。从任务专家那里学习复杂的任务对于自治系统可能是具有挑战性的,因为VR使用户可以直接控制系统,同时利用系统的优势,从而避免了这一问题。
可以通过众包范式在Internet上访问的用户向虚拟机器人提供演示,以大规模完成任务,从而解决当前困扰现有LfD培训方法的参与者和资源限制。 结合ROS Reality的VR可以为这一挑战提供经济高效的解决方案。
7. 总结
随着硬件平台的成本稳步下降,虚拟现实正日益为日常用户所用。 这些系统还代表了用于控制机器人的直观界面。 在本文中,我们提供了一个开源的VR远程操作包ROS Reality,它使任何具有ROS功能的机器人都可以被Unity兼容的VR耳机控制。 这项工作还可以使用ROS Reality和消费级VR头显来识别和测试机器人操作任务。