机器人动作投影技术的研究与实现
2018-01-29余子衡杨馨朱珣
余子衡 杨馨 朱珣
摘 要:文章介绍了机器人动作投影技术的定义,研究现状。并提出了研究方法。在此基础上,通过简易设备让机器人模仿人类完成举手,抬手,前进,后退等动作。实验表明,通过红外摄像头读取的深度数据,通过算法转化为骨骼数据后,可以骨骼帧的形式处理,并转化为机器人的舵机数据。
关键词:机器人;传感器;深度数据
中图分类号:TP242.6 文献标志码:A 文章编号:2095-2945(2018)36-0006-05
Abstract: This paper introduces the definition and research status of robot motion projection technology and puts forward the research method. On this basis, through a simple device, the study allows robots to imitate human beings by finishing the process of stretching hands, raising hands, walking forward, walking backward and other movements. The experiment shows that the depth data read by infrared camera can be processed in the form of skeleton frame and transformed into the data of robot steering gear after the algorithm is transformed into bone data.
Keywords: robot; sensor; depth data
隨着科技的发展,机器人逐渐开始在人类的的生产和生活中扮演着重要的角色,这些机器人可替代人类完成不少工作量大,危险性高的工作。在机器人技术高度发展的今天,仍然有部分工作(例如手术,精密设备修理这类随机性高,容错率低的工作),机器人依然无能为力。让机器人通过模仿人类的行为来完成相应工作,是解决此问题的一个很好的办法。
1 机器人动作投影技术定义及意义
机器人动作投影技术的定义为将人类的行为动作,转换机器人的对应行为,以此来实现机器人对人类行为的模仿。若能实现此技术,可有效减少部分高风险,普通机器人无法完成工作的危险性,提高工作效率。
2 国内外研究现状及方法
2.1 国外的研究现状以及所用技术
近期,英伟达在国际机器人与自动化会议①(ICRA)上介绍了其在机器人教学方面的新的进展——通过简单地观察一个人就可以让机器人学会新的任务。
从公开的视频来看,人类只要先示范动作,机器人就能学习拿起、移动、堆叠彩色的盒子和玩具车。当然,其中涉及的任务也还比较简单,只涉及堆叠几个彩色的立方体。
据介绍,研究人员首先会训练一系列的神经网络来检测物体,推断他们之间的关系,之后再生成一个程序来重复人类的过程。而这种新系统可以让他们训练机器人在现实世界中只需一次演示,就能完成堆叠任务。这个技术的厉害之处在于,从流水线下来的机器人可以在内置的编程命令之外,通过模仿人类的行为进行自我“进化”。示范学习只是其中一步,英伟达机器人研究项目负责人Dieter Fox称,比如在今后居家扶老的环境中,机器人还将利用深度学习技术预判人类的行为,提前响应。
在技术支撑方面,英伟达表示依靠的是GPU②,毕竟他们有着多年3D建模、图形识别分析的能力,而且并行计算也提供了广阔的运算资源支持。英伟达机器人实验室的目标是让非专家更容易训练机器人,这对机器人来说是一项非常困难的任务。除了让机器人通过观察学习人类动作外,通过外置设备捕捉人类动作,然后传达给机器人,也是实现动作投影的办法之一。
2017 年底,丰田推出了可以模仿人类动作的第三代人形机器人“T-HR3③”;“T-HR3”是一种由通过可穿戴设备控制的机器人。用户通过头部可穿戴设备可以看见机器人的视角。同时通过手部和脚部的可穿戴设备来控制机器人的动作。
2.2 国内的研究现状以及所用技术
2017年9月15日首届全国创业就业服务展示交流活动④在山东省济南市启动。此次展出的体感机器人是本次展览最大的亮点之一。项目负责人傅胤荣联合北京大学、韩山师院、山东大学等众多国内外专家学者耗时十年研发出具有自主知识产权人体编程技术的机器人。傅胤荣介绍,该机器人拥有国内领先仿生机器人技术、数字舵机技术、体感控制技术、数据手套等技术等。体感机器人可以实时现场精准模仿人类的动作,并记忆人动作运动轨迹,可以再重播人的动作。目前体感机器人技术可以广泛应用于创客教育、工业控制、影视制作等产业。
3 本人提出的研究问题提出的模型
3.1研究问题:如何让机器人模仿人类动作
3.2 实现过程
(1)捕捉人类动作。
(2)处理捕捉过来的人类数据。
(3)将这些经过处理的数据转化为机器人舵机⑤信号并发送给机器人。
3.2.1 捕捉人类动作
捕捉动作需要的是被捕捉对象的关节位置,换言之,就是需要关节部位的深度数据。因此我们需要一个自带深度传感器的传感设备,红外传感器是最佳选择。得到具体的深度数据,还需要一些辅助仪器。目前测量深度值有两种方法,第一种是根据红外线从发射到返回的时间差来确定深度值。一般情况下这个时间差会特别短,需要极其精密的计时器。因此,这种办法测量深度值的仪器都会非常昂贵。第二种办法则是通过红外线反射形成的散斑形状来判断物体的距离。这种方法只需要用到一个红外光屏即可实现,并且成本低廉。由微软公司设计的Kinect固件就是运用这种原理的设备之一。
Kinect for windows固件中包含很多感应元件和处理芯片,这里我们主要使用的感应元件有两个:
(1)红外投影机:主动投射近红外光谱,照射到粗糙物体、或是穿透毛玻璃后,光谱发生扭曲,会形成随机的反射班点(称为散班),进而能被红外摄像头读取。
(2)红外摄像头:分析红外光谱,创建可视范围内的人体、物体的深度图像⑥。
Kinect获得深度数据的原理如下:红外投影机的普通光源射出一道“一类普通激光”,这道激光经过磨砂玻璃和红外滤光片,覆盖Kinect的可视范围,红外摄像头接受反射光线,识别物体的“深度场”。红外投影机是位于Kinect左侧的“眼睛”,他与右侧的红外摄像头配合使用。PS1080S
oC(系统级芯片)对红外光源进行控制,以便通过红外光源编码影像放映场景,紅外投影机的光源是一类普通激光光源,经过磨砂玻璃和红外滤光片,投射出近红外光,该光波长为830nm,可持续输出。
3.2.2 处理人体深度数据
获得的人体深度数据需要转化为骨骼节点位置才可以转化为机器人的舵机数据。而Kinect内置了专门用于计算骨骼的芯片。Kinect固件计算出骨骼数据后,这些数据将由计算机程序处理并转化为机器人舵机数据。具体过程如下:
Kinect for windows SDK是微软专门为开发者准备的工具包。其中应用层的API⑦中,有三大组件,其中,NUI API是Kinect for windows SDK 的核心,用于处理彩色图像流,深度图像数据,骨骼跟踪控制,管理设备等。Kinect Audio DMO主要负责波形处理以及音源定位。而Windows Speech SDK 提供音频,语音,多媒体接口以及微软语音识别功能。作为最核心的API,NUI API具体功能包括传感器与计算机的连接,传感器的访问,关闭,访问传感器的图像以及深度数据流,通过图像和深度数据的处理来确定骨骼的位置等。深度图像以像素的形式进行存储,每个像素2字节,共16位。
骨骼跟踪的第一步就是将用户从周围的环境分离出来,在Kinect的字节索引中,通过低三位字节的索引,应用程序可将用户和周围的环境分离开来,称为用户分割数据,它是索引数据的一部分,其中,低三位字节表示用户的索引编号,000表示内置处理器认定这个像素点不属于用户,而001,010则表示这个像素属于用户一和用户二。而每个像素的高13位数值表示物体离摄像头的距离。作为由深度数据组成的“视频”,深度数据流由深度图像帧组成,在每一个深度图像帧中,每一个像素点包含了特定的距离信息。如果深度数据是0,说明距离太近或者太远。当骨骼识别关闭时,记录id的三位被设定为0。通过建立缓冲区和相关方法的调用,应用程序可以获取最新的彩色图像帧,深度图像帧以及骨骼跟踪数据流,新的帧数一旦准备好,就会被复制到缓冲区中。如果应用程序取帧的速度大于数据准备的速度,那么只能等待下一个帧的触发。当骨骼跟踪引擎一段时间后,会将骨骼帧返回给应用程序,应用程序会据此对动作进行识别。
当应用程序对这些骨骼帧进行识别后,会调用相应的函数进行处理。在骨骼帧中,每一个关节都会有对应的编号,这些编号对应着不同的关节位置,同时,机器人不同的舵机也具有不同的编号,当Kinect固件捕捉到数据帧并将它传送至应用程序后,应用程序会将这几个被认定为关节的节点的位置通过函数转化为舵机的运动指令,再将这些机器人指令发送给机器人。
3.2.3将经过处理的数据转化为机器人舵机信号并发送给机器人
机器人由结构件,舵机,电机,控制器,电池组成。控制器负责向舵机发送指令,舵机负责机器人关节运动,而电机负责机器人的运动。当控制器和计算机连接成功时,即可通过人体来控制机器人。
3.3 实验成功判断方法
根据以上问题的结论,当Kinect固件连接计算机时,启动生成的应用程序,当使用者在Kinect面前做出肢体动作时,机器人能模仿人类做出对应的肢体动作(即当人体关节到达指定空间时,机器人对应的舵机将移动至指定位置数值),即可说明机器人动作投影技术已实现。
4 实验过程
4.1 实验环境
本实验要求在一间空旷的实验室进行,要求Kinect固件所面对的方向五米内无障碍物。
4.2 实验步骤
(1)安装vs2010,并安装Kinectrobot SDK,组装机器人。
(2)编写代码,生成文件要求可以将Kinect固件传递过来的骨骼数据转化为舵机信号,同时能读取并显示人体关节位置,舵机参数。
(3)架设好Kinect设备,接通电源并连接电脑,启动机器人电源,同时将电脑的蓝牙连接机器人控制器。
(4)测试人员站在Kinect固件前,做出测试动作,动作依次为举手,双手平放,双手下垂,前进,后退(注,因为机器人没有双脚,所以人体抬右脚被设置为机器人向前移动,抬左脚为向后移动)。记录人员负责记录人体关节位置,机器人舵机位置。
4.3实验数据
数据说明:表格记录了Kinect固件所记录的操作者关节坐标(参见图1),以及舵机旋转示数(舵机位置参见图2)。人体动作由骨骼各节点坐标(x,y,z)描述,z代表该节点与Kinect摄像头正对方向的水平距离,y表示该节点高度,x代表与z垂直的水平方向的距离。当节点在摄像头正前方5米时,坐标为(0,250,0),依此类推。机器人动作由各舵机示数来描述,范围为0-256,当舵机转轴在起始位置时,示数为0,当舵机恰好旋转360度时,示数为256。当机器人处于初始姿态(见图3)时,所有舵机示数为0。测试者的初始姿态为双脚站立,双手自然下垂。在第1-5次实验中,测试者动作依次为举手,双手平放,双手下垂,右脚抬起,左脚抬起。
5 结束语
综合以上实验结果,当使用者在Kinect固件前做出举手,双手平摊,双手下垂,右脚抬起,左脚抬起五个动作时,机器人可以做出举手,双手平摊,双手下垂,右轮前进,左轮前进,因为固件精度以及拍摄环境的影响,数据会出现略微的偏差,但在允许的范围内,另外,因机器人为轮式驱动,故测试者做出抬脚动作时,对应方位的驱动轮会前进,不影响实验结果,故机器人动作投影技术已实现。
注释:
①搜狐网.英伟达再添ai新技术,机器看一遍就“模仿人类行为”[EB/OL].http://www.sohu.com/a/232401651_99970711.
②图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
③丰田发布第三代人形机器人T-HR3 佩戴式设备助力动作模仿及物理交互[EB/OL].http://auto.gasgoo.com/News/2017/11/22115053
505370027958C601.shtml.
④新浪.体感人形机器人亮相全国众创周[EB/OL].city.sina.com.cn/invest/t/2017-09-18/16336736.html.
⑤舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前,在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。
⑥Kinect应用开发实战[M].机械工业出版社,2012.
⑦API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。