基于LabVIEW与智能机器人的人体姿态检测

2017-04-18 18:03张帅旗刘子龙张彬韩光鲜
软件导刊 2017年2期
关键词:智能机器人

张帅旗 刘子龙 张彬 韩光鲜

摘要 针对老年人或者残疾人独自行走时,可能发生意外事故而得不到及时处理等问题,提出一种解决方案:智能机器人在保持安全距离的前提下,能够跟随独居老人或残疾人移动,在移动过程中能够实时监测老年人的人体姿态变化,以便及时关注老年人的生活状况。该方案以Microsoft Kinect为硬件基础 ,结合模式识别算法在LabVIEW平台上来实现人体姿态检测,相比采用传统的RGB或者深度图像做姿态匹配时需要建立大量样本库,采用Kinect的骨骼图来检测人体姿态,只需要根据Kinect的三维坐标就可以判断出人体的各种姿态,应用价值较大。

关键词 智能机器人;Microsoft Kinect;LabVIEW;姿态检测

DOI DOI: 10.11907/rjdk.162797

中图分类号: TP301

文献标识码: A 文章编号 文章编号: 16727800(2017)002001603

0 引言

人体姿态实时检测是智能服务机器人的一大特点,近年来逐渐成为机器人研究领域的重点[1]。通过实时的人体姿态检测,该服务器机器人可以对被跟随者的实时状态是否安全作出相应判断,然后进行及时的事故处理,可用于残障人士、独居老人等社会弱势群体的日常监护中。一旦检测并判断出被跟随者有类似跌倒的紧急情况,智能机器人报警模块会立刻发出警报,寻求帮助。

过去研究者大多采用RGB图像检测人体姿态,不仅需要大量的样本库供机器人进行学习和匹配,而且受周围光线影响容易导致姿态检测判断失误;也有很多研究者采用Kinect的深度图,此方法同样需要建立大量样本库。虽然以上方法都能较准确地实现人体姿态检测的目的,但是都需要建立大量的样本库,都有各自应用场合的局限性[2]。

本方案采用Kinect的骨骼图来检测人体姿态,骨骼图中包含人体20个关节点,并将每个关节点标注为Kinect的三维坐标,根据坐标值的变化可以准确判断出人体各种姿态。首先在机器人上安装一台miniPC,通过 Microsoft的SDK获取骨骼图。Kinect本身采集到的是深度图和RGB图,然后经过SDK中的相关算法处理才得到骨骼图。使用骨骼图虽然需要相应的硬件支持,但是可以不用建立大量的樣本库,并且可以精确地检测到各种人体姿态。总体来看,采用Kinect的骨骼图来实现人体姿态的检测拥有良好的应用前景。

1 人体姿态检测原理分析

1.1 智能服务机器人及Kinect模块

该智能跟随服务机器人如图1(左图)所示,该服务机器人具有智能跟随、自动避障、实时人体姿态检测以及远程监控等功能。人体姿态检测模块采用的传感器是Microsoft的Kinect模块,如图1(右图)所示,模块有3个摄像镜头,中间的RGB摄像镜头主要用来负责采集彩色图像信息,其两边的3D DEPTH SENSORS摄像头主要用来采集深度数据。比如场景中物体到摄像头的距离,此外模块还拥有强大的随着对焦物体移动的技术。随着对焦物体的移动,其底座上的马达也会跟着转动,能够对运动物体进行实时拍摄,以便后续用于人体姿态检测处理。

1.2 Kinect 骨骼图

Microsoft还使用模式识别算法,根据RGB图像和深度图生成人体骨骼图,可实时显示Kinect摄像头前人体的20个关节点,如图2所示,同时还能将每个关节点用坐标(x,y,z)表示出其相对于Kinect的位置,从Kinect感应器的视角来看,假设HIP CENTER为坐标原点,以坐标原点向左的直线作为坐标系轴的负向,以坐标原点向上的直线作为坐标系轴的正向,Kinect感应的方向作为坐标系的z。这为人们检测人体姿态提供了极大地便利,在该方案中主要是检测人体是否处于跌倒状态,以便更好地实现对独居老人的监护功能[3]。因此,可以用图2中的头部关节点坐标中的值来判断独居老人是否处于跌倒状态,即当小于某个值时即认为老人此时已经处于跌倒状态,此时机器人会触发报警装置,并发生报警信号,使得能够在第一时间里及时处理事故,更好地监控老年人的生活状态。

2 人体姿态检测的LabVIEW程序设计

2.1 LabVIEW介绍

LabVIEW是美国NI公司开发的编程语言,与其它语言最大的不同是其采用图形化编辑方式。使用LabVIEW进行软件开发,其流程相对简单、高效。

LabVIEW最大的优点是在硬件一定情况下,可以通过修改流程图或者框图,实现不同仪表的功能[4]。使用LabVIEW进行原理研究、算法设计,并最终实现系统功能时,极大提高了工程师的设计效率,同时使用LabVIEW Real-Time工具进行并发编程时,可以对相应的嵌入式开发平台进行多核支持,比如在此智能机器人的硬件平台下,使用LabVIEW进行人体姿态软件开发,具有简单、高效的特点。

2.2 人体姿态检测程序设计

LabVIEW程序架构主要分为两部分,前面板由输入及显示两种类型的控件组成,程序的框图包含检测程序的全部代码,如图3所示。A处所指的矩形框内容是初始化Kinect以及模式设置,该处选择“Skeleton and Video”模式,并初始化获取骨骼图的状态;B处所指的矩形框里的内容即是While内部循环主程序,包括读取Skeleton and Video模块、2DPicture模块、3D Skeleton模块以及关节点协同控制等模块,实时读取骨骼图和视频的原始坐标数据,并由这些实时的原始坐标数据生成RGB视频以及骨骼图[5];C处所指的矩形框是在While循环停止后执行,用于结束对Kinect的调用。

3 实验结果与分析

运行图3的LabVIEW程序设计,分别对人体处于直立和摔倒状态时进行姿态检测,然后从20个关节点的坐标数据中取出头部的坐标数据,并用表示高度的y值判断是否跌倒,当y小于-0.39时,则认为此时检测的目标出现跌倒状态。在LabVIEW中可以使用变量的值决定是否触发语音警报,当检测正常状态时,此时指示灯常绿,此时人体姿态的检测结果如图4所示;当检测到跌倒状态时,“Fall”指示灯由绿变红,此时人体姿态检测结果如图5所示。在LabVIEW程序运行过程中,Joint Coordinates显示模块是在While循环停止后执行,用于结束对Kinect的调用,最后Labview的错误处理机制会检查程序执行中的错误,若有错误则在图4、图5的输出接口处显示出错误代码,否则停止整个程序的运行。

人体姿态检测的程序是在miniPC(即上位机)中运行,通过Labview的网络共享变量将“Fall”变量的值传给myRIO,从而决定是否触发语音警报并暂停机器人的运动[6]。

4 结语

本方案所设计的智能跟随服务机器人能够实现人体的实时姿态检测,相比采用传统的RGB或者深度图像,在不需要建立大量样本库的情况下,即能对老年人或者智障人士生活状态进行实时检测,然而要实现更好的智能监护功能,仍需要对智能机器人的其它功能作进一步优化,比如在智能跟随、语音交互方面进行改进。在智能跟随方面,在电机的最大转速不能使机器人快速跟随移动目标的情况下,使智能机器人与目标对象保持更小的安全距离,在语音交互方面,可以进一步优化交互的方式和功能。

参考文献:

[1] I S CHOI,J S CHOI.VFH based obstacle avoidance system for leaderfollowing formation control[C].Seoul:2013 44th International Symposium on Robotics (ISR),2013:14.

[2] 曹雏清.面向多方式人际交互的肢体动作识别研究[D].哈尔滨:哈尔滨工业大学,2012.

[3] 林志强.面向智能服务机器人的物体感知研究[D].合肥:中国科学技术大学,2014.

[4] 马琼雄.基于视觉的服务机器人人机交互技术研究[D].广州:华南理工大学,2014.

[5] 黄彬.智能空间中人的行为识别与理解[D].济南:山东大学,2010.

[6] 谢炯坤.面向人机互动的自然语言理解的研究[D].合肥:中国科学技术大学,2015.

(责任编辑:孙 娟)

猜你喜欢
智能机器人
智能机器人实践课程自主创新能力培养研究