Telerobot:Bi-Manual Articulated Robot Teleoperation using an External RGB-D Range Sensor

论文网址:https://ieeexplore.ieee.org/abstract/document/8581174
论文出处:2018 International Conference on Control, Automation, Robotics and Vision (ICARCV)
论文代码视频:https://sites.google.com/view/telepose

1. 论文概述

  • 本文提出了一种双臂遥操作系统,由人通过3D骨骼的提取来控制。
  • 输入图像是RGB-D传感器,本文使用ASUS Xtion PRO。
  • 本文方法使用OpenPose包,首先将RGB图像输入到OpenPose CNN网络中,获得人体的2D骨骼姿态坐标。再将2D关节点的坐标映射到camera帧的3D姿态上。
  • 再将上述网络的输出作为输入来驱动机器人双手的末端姿态,通过一个在笛卡尔空间的全身逆运动学(whole-body inverse kinematics)过程。
  • 最后在一个仿半人马的CENTAURO机器人上进行验证。

2. 简介

  • 手臂类机器人能够完成对人类有害或者有困难的任务,使他们在人类社会边的重要。
  • 然而,机器人的自主性,在完成复杂的任务,尤其是环境未知或不确定的情况下,仍然在发展中。
  • 因此,有很大的潜力研究半自主的方法来控制和规划机器人的运动,通过人类的帮助。
  • 其中一种可能的控制方法就是遥操作
  • 机器人遥操作的方法不断前进,趋向于更可靠、更鲁棒、实时的方法。
  • 目前遥操作方法缺点:现在的遥操作方法非常昂贵、需要很长很困难的标定工作。比如使用IMU传感器的身体服,外骨骼,或者动作捕捉摄像机来产生操作人员的身体模型。
  • 本文提供了一种方法通过使用便宜的RGB-D sensor (ASUS Xtion PRO)来控制复杂机器人完成现实操作任务。
  • 通过跟踪人的手来控制机器人末端执行器。
  • 方法的流程
    在这里插入图片描述
  • 论文结构:(1)related work;(2)system overview,包括传感器、数据处理、3D手姿态跟踪、机器人轨迹规划控制(3)CENTAURO in simulation and real-world演示。

3. Related Work

文献“Teleoperation Humanoid Robot Control System Based on Kinect Sensor”使用RGB-D传感器用来遥操作控制一款mini-humanoid机器人,但是没有提供real-world的实验。

文献“Teaching Humanoid Robotics by Means of Human Teleoperation through RGBD Sensors”使用骨骼跟踪系统NiTE来映射人体的关节点到mini-humanoids机器人(NAO robot)上。

文献“First-Person Tele-Operation of a Humanoid Robot”使用Kinect传感器、一个VR设备(Oculus Rift )和SensorGlove来遥操作一个半人形机器人iCub进行简单的玩具抓取操作。

3. system overview

3.1 RGB-D Sensing

使用ASUS Xtion PRO相机,RGB和depth图像的分辨率都调成640×480,30Hz。
在这里插入图片描述
如图所示,RGB和深度标定存在误差,直接将2D到3D的映射存在误差,因此不是简单的像素坐标映射,采用结构点云的最邻近实时点的方法。

3.2 使用OpenPose进行人体2D关节坐标提取

OpenPose采用 Part Affinity Fields and Confidence Maps,可以在RGB图像上达到8-10Hz。
在这里插入图片描述

3.3 映射成3D人体关节点

直接像素点的2D到3D映射会存在以下2个问题:
(1)像素的值在深度图上的深度值可能为NaN。
解决方法:使用临近像素并取平均值。
(2)当存在遮挡时OpenPose会设置人体关节为NaN。
解决方法:不将这些关节点映射到3D位置,解决方法如下。

3.4 机械手的6-DoF姿态控制

手的6DOF:
位置:position (Cartesian coordinates represented by X,Y,Z)
姿态:orientation (rotation represented by a quaternion qw,qx,qy,qz)
(1)Robotic Hand Position
3种不同的方法:
第一种方法给出腕部(wrist)相对于前一帧图像的位置。这种方法虽然容易实施,但是手腕的位置容易漂移和消失。
第二种方法是提供与人类髋关节(hip joints)相关的坐标,并将其适当地映射到人形机器人上。然而这需要一个校准序列,以解决人与机器人之间的尺寸差异,并缩放从人到机器人的肢体位移。这种方法的缺点是,由于给定了手相对于臀部的位置,机器人改变高度的功能被移除,因此机器人无法改变仰角向下伸手拿起物体。
第三种方法是本文使用的方法,参考点是跟踪系统运行时手的初始点。这样,在现实世界中,机器人的运动,与在机器人坐标系中运动的坐标系之间的差值是一样的。该方法简单而有效,能保持合理的精度,防止坐标漂移。

(2)Robotic Hand Orientation
机器人手的方向可以通过创建三个手框架轴来找到,由人类手上识别的关键点来确定。
在这里插入图片描述
我们的初始任务是计算3×3旋转矩阵:
在这里插入图片描述
其中X,Y,Z是图4中的单位向量。

设zˆ为手掌关键点之间由4个不同三角形组成的平面的表面法线。
由4个三角形组成的4个正常的向量是:
在这里插入图片描述
其中Kl,l∈{1,2,3,4}表示从4个三角形提取的4条法线,Pi、Pj和Pk是构成三角形的3D手关键点。
我们使用与(Pi,Pj,Pk)点元组对应的三角形:(1,17,5), (1,17,9), (0,13,5), and (0,9,2)。

Z轴向量取Kl的平均值:
在这里插入图片描述
平均四个三角形有助于避免手关键点可能被错误识别的问题。

Xˆ向量计算为从手掌中心0-labeled 3D keypoint (Po)到手指的连接向量mean Mp。
其中Mp是关键点的平均值,关键点为:Pi ∈{17,13,9,5}.
在这里插入图片描述
Y向量由归一化的X和Z的叉积给出:
在这里插入图片描述
我们让负向量XˆYˆ和Zˆ形成最后的旋转矩阵M。

旋转矩阵可以很容易地转换为四元数qw;qx;qy;qz,使用Python中的pyquaternion库将旋转矩阵转换为四元数。

4. 实验

4.1 运行速度和视差测量

(1)Runtime Speed(2×NVIDIA Titan Xp GPUs)
整体频率为7.13HZ.
在这里插入图片描述
(2)Disparity in Movement
人到机器人的比例设置为1:1
计算出平均欧氏距离误差约为0.06m

4.2 任务控制

任务1:Box Push
在这里插入图片描述
任务2:Lever Move
在这里插入图片描述
任务3:Box Lift
在这里插入图片描述
任务4:Orientation Example
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值