通过虚拟现实实现操纵机器人的控制界面
作者:互联网
虚拟现实等沉浸式技术具有改善机器人远程操作的潜力。这些技术将操作员运送到工作区,提供任务信息,并允许他直观地命令机器人。在这项工作中,Kinova Jaco2机械手机器人已集成到使用HTC Vive虚拟现实眼镜可视化的虚拟现实环境中。该界面既可以监视机械臂(关节状态,效应器的位置,对其环境的作用...),也可以监视其命令(通过将目标发送给效应器)。此外,这项工作成功地解决了由机器人操作系统(ROS)主导的机器人世界与使用Unity和Steam VR重新创建的虚拟现实世界之间的联系。对操作员的首次测试表明了该界面的潜力:空间信息的传输,直观的命令系统以及在安全条件下的操作。未来的工作将解决通过3D摄像机获得的有关环境信息的集成,以及如何实现机械手机器人实现其目标的轨迹的可视化。
1. 简介和目标
近年来,机器人任务有了长足的发展,并已应用于基础设施保护[4],环境监测[11]等多个领域。 这些任务带来了与使用多个机器人,执行复杂任务或在非结构化场景中部署有关的困难。
机器人任务中的一些人为因素问题包括工作量过多,缺乏态势感知,压力水平不足会导致焦虑或无聊的状态以及自动化的缺乏或过分自信。 这些问题可能会导致操作员的决策不正确,并且其控制动作可能会导致效率降低,甚至导致机器人事故。
通过开发具有操作员某些功能,以正确方式传输正确信息,在任务期间保持注意力并支持决策的界面,可以解决这些挑战。 特别是,这些界面探索了诸如多模式交互,沉浸式技术,预测性组件和自适应仪表板之类的可能性。
在这项工作中,已经开发了用于监视和控制机械手机器人的虚拟现实界面。 该界面使用沉浸式技术(虚拟现实)将操作员介绍给工作环境并改善他们对机器人动作的感知,并使用多模式交互(振动控件)来增强视觉信息并促进机器人命令。
该通信的其余部分安排如下:第2节汇编了机器人任务沉浸式界面的一些最新发展。 第3节介绍了由机械手机器人和虚拟现实界面组成的系统。 第4节介绍了机器人操纵器及其轨迹规划和控制系统。 第5节介绍了虚拟现实界面,并介绍了信息的显示和命令的生成。 最后,第6节总结了这项工作的主要成果及其可能的延续。
2. 最先进的
机器人的操作员界面必须集成以下信息[1]:机器人传感器的测量值,发送给机器人的命令,机器人的当前状态(例如,电池电量),任务的当前状态( (例如,完成百分比)和导航所需的地图。
这些接口的性能可能会受到表1中列出的问题的影响。在设计时必须考虑诸如视野限制,方向损失或感知深度降低之类的因素。 沉浸式界面的开发是解决这些问题的最有前途的策略之一。
如今,沉浸式技术有三种类型:增强现实(AR),虚拟现实(VR)和混合现实(MR)。
增强现实将虚拟元素叠加在机器人的视频上。 这些虚拟项目可以包括地图,地形标高,障碍物,机器人路径,目标位置和其他相关数据。 文献包含用于操纵机器人[5],外科手术机器人[15]和具有多个机器人[6]的舰队的增强现实接口的示例。
虚拟现实通过结合真实元素(例如,机器人和障碍物)和虚拟元素(例如,路线和目标)的表示来重新创建场景。 可在文献中找到用于移动机器人[9]和工业操纵器[10]的虚拟现实界面的开发。 一些研究开始证明这些界面在不显着增加他们的工作量的情况下提高操作者的态势感知的潜力[12]。
最终,混合现实将增强和虚拟相结合,生成了场景,操作员可以在其中与真实和虚拟对象进行交互。 该技术是最新技术,几乎没有在接口中实现,但是工业[3]和移动[7]机器人有了一些发展。
3. 系统描述
机械手机器人在虚拟现实中的集成要求现实世界与虚拟世界之间的连接,如图1所示。真实世界(在第4节中进行了描述)是由机械手机器人及其工作空间组成的,并且由其控制由机器人操作系统(ROS)负责,因为此系统既可用于机器人的计划也可用于控制。 就其本身而言,虚拟世界(在第5节中进行了描述)包含操作员界面,并由Unity和Steam VR控制,因为这些工具用于虚拟现实的回放和可视化。
4. 机械手机器人
为了开展这项工作,使用了Kinova Robotics制造的Jaco2机械手机器人。 它是一个六自由度的机械臂,包括一个由三个柔性塑料手指组成的末端执行器。 它支持1.6千克的有效负载,并达到900毫米的范围。 该臂还可以控制力量,从而可以安全地与人协作。 由手臂及其效应器组成的机械手机器人如图2所示。
机器人通过计算机之间的USB或以太网连接进行控制,在该计算机中执行轨迹计划和其他高级任务,并在其中嵌入一个控制器,在该控制器中执行关节的控制,并在必要时进行控制,逆运动学。
手臂运动的计划使用开放运动计划库(OMPL)[13]作为其主要工具,这是一个开放源代码库,可基于采样实现多种计划算法:例如PRM,RRT,EST,SBL,KPIECE和SyCLOP。 该库已集成到移动操纵软件MoveIt!中。 ,它提供运动学功能,例如碰撞检查,3D感知和其他工具。
对于进行的实验,使用了RRT-connect调度程序[8]。 首先,该计划者在关节空间中获得随机状态qr。 然后,它在先前观察到的状态中搜索最接近qr的状态,并将其表示为qc。 最后,考虑到机器人的运动能力,它从沿qr方向的状态qc到达到有效状态qm扩展树,并将其添加到探索树中。 图3显示了使用此工具的情况,其中操纵机器人实现了从虚拟现实发送的目标。
MoveIt中的机器人配置! 它是使用统一机器人描述格式(URDF)文件执行的,该文件使用XML格式来表示机器人模型,其传感器以及在其中找到它的场景。 所使用的模型从制造商提供的基本文件开始,并在其中添加了场景描述和所使用的其他传感器。 在此URDF模型中,MoveIt! 它获取碰撞检查器所需的信息以及运动计划所需的其他元素。
初始配置完成后,MoveIt !! 它与机器人驱动程序进行通信,以获得每个关节的位置以及其他必要的参数,以了解机器人的当前状态。 机器人的最终配置或位置可以发送到MoveIt! 通过控制界面或ROS消息。 一旦接收到目标,就执行计划并获得每个关节的轨迹,并将其发送回机器人驱动器,该机器人驱动器负责与手臂进行通信并控制其运动。
为了从虚拟现实界面控制操纵器,有必要在Unity环境和机器人的软件组件之间建立双向通信,后者在ROS下工作。 为此,使用了RosBridge 1组件,该组件允许ROS节点与外部程序进行通信,将ROS标准消息转换为JSON消息,可以通过Web界面发送该消息。 RosBridge建立用于建立通信的协议,即在ROS主题中进行订阅或发布。 此外,该程序包具有允许使用网络套接字发送消息的实现。
如前所述,RosBridge和Unity之间的通信是双向的。 Ros-Bridge从Unity接收控制消息,该消息由运动命令和其他控制任务执行的信号组成。 另一方面,RosBridge发送回机器人的状态,该状态包括每个关节的位置以及传感器的测量值(如果有的话)以及允许操作员对情况有足够了解的任何其他信息。
图4显示了机器人与Unity之间的通信的总体图。 可以看出,一旦从RosBridge接收到命令,中间节点将负责处理它们并将其转换为可解释为MoveIt!的有效控制命令的消息,该节点还将发送启动所需的信号,停止或重新开始手臂的运动。 MoveIt! 它处理这些消息,执行运动计划,并将关节轨迹发送到机器人控制器。 后者负责与机器人的嵌入式控制器进行通信,并以关节状态发送回消息。 RosBridge将此消息直接发送到Unity,在此进行处理以呈现给操作员。
5. 虚拟现实
Unity环境用于虚拟现实界面的开发,虚拟现实眼镜HTC Vive和Steam VR程序用于其可视化。 Unity是一个视频游戏开发环境,可提供大量资源,例如现实场景,动态和电影模型,具有人工智能的角色等。 HTC Vive套件包括一个带虚拟现实护目镜和耳机的头戴式耳机,两个带按钮和振动功能的控制器以及两个将这些物品放置在房间中的基站。 最后,“ Steam VR”是Unity在虚拟现实中编译和运行程序所必需的补充。
机器人模型已在Unity中输入,分为八个链接:底座,肩膀,手臂,前臂,手腕1,手腕2,手和手指。 每个链接都是通过两个对象实现的:一个对象以正确的位置和方向将其与前一个对象组装在一起,另一个对象则允许其关节移动。 结果是虚拟机器人的位置和运动与真实机器人的位置和运动相匹配。
此外,为机械手机器人设计了两种方案:一种用于虚拟机器人处于空载状态的测试,另一种用于模拟真实机器人实验室的演示。 Unity工具以及最重要的是,Internet上可用的广泛资源允许对各种内部或外部场景进行建模:例如,房屋,办公室,工业,农作物,森林...
为了操纵器的命令,提出了几种直观的系统,最后选择了具有三个轴的球体。 球体表示机器人的执行器必须达到的位置,而三个轴定义了机器人必须获取的方向。 当球体位于效应器中时,机器人将保持静止。 操作员可以随时抓住球体,在场景中移动球体,然后将其放到另一个位置。 当操作员释放球体时,机器人将移动到该位置。
另外,已经引入了一个隐形传送系统,该操纵系统允许操作员选择观察场景并命令机器人的视点。 要进行传送,用户只需按下控制器上的按钮,然后将寓言指向地面上的所需点即可(参见图5)。 该系统对于充分了解操作任务并精确发送执行器的目标特别有用。
机械手的命令中涉及多个脚本。 第一个(Interactable)是基于Steam VR的一个示例开发的,它控制命令球的运动,允许用户拾取,移动和释放命令球。 其余脚本属于ROSBridgeLib [2]库,并且已进行了修改,以处理机械手机器人使用的消息。
RealSenseViewer脚本与RosBridge软件包建立套接字通信,并创建相关的订阅者和发布者。 在这种情况下,在Unity中开发的程序会订阅一条带有关节位置的消息(传感器msgs / JointState),并发布另一条具有目标效果的消息(几何msgs / Pose)。
您要在Unity和ROS之间交换的每条消息都必须使用两个脚本来实现。 第一个必须定义消息的结构,提供JSONNode(套接字接收的消息)的构造函数和每个消息变量,并提供访问这些变量的方法。 第二部分涉及确定消息的类型和接收消息的主题。
6. 结果与结论
与操作员进行的首次测试结果表明,该界面可提供与情境感知和机器人直观命令相关的优势。 操作员积极地重视选择观察机器人的观点的自由,以及通过移动其执行器的目标来控制机器人的简易性。
未来的工作将增强机器人及其周围环境的视觉信息,显示工作空间,可操纵性和计划的轨迹。 另外,设想了一种直接命令方法的开发,该方法允许一个接一个地修改关节方向。 最后,将使用3D相机并显示点云来研究机器人环境的自动建模。
标签:界面,操作员,机器人,Unity,机械手,虚拟现实 来源: https://www.cnblogs.com/feifanrensheng/p/14626719.html