《电子技术应用》

基于Kinect的家庭助理机器人系统设计与实现

2017年电子技术应用第3期
党宏社,侯金良,张 超
(陕西科技大学 电气与信息工程学院,陕西 西安710021)
摘要: 为了使独自在家的小孩、行动不便的老人和病人得到更好的照顾,设计了基于Kinect的家庭助理机器人系统。系统采用单服务器多客户端模型,Kinect和智能手机作为客户端连接到服务器。设计制作了助理机器人,其头部为网络摄像头,臂部为舵机结构,腿部为轮式结构。提出了基于Kinect的改进动作识别算法,实现了机器人的体感控制,可帮助老人和病人抓取物体。设计了手机APP,在外的家人可远程监视室内情况,与家中的老人和病人进行视频通话。
中图分类号: TP242.6
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2017.03.017
中文引用格式: 党宏社,侯金良,张超. 基于Kinect的家庭助理机器人系统设计与实现[J].电子技术应用,2017,43(3):70-72,76.
英文引用格式: Dang Hongshe,Hou Jinliang,Zhang Chao. Design and implementation of home assistant robot system based on Kinect[J].Application of Electronic Technique,2017,43(3):70-72,76.

Design and implementation of home assistant robot system based on Kinect

Dang Hongshe,Hou Jinliang,Zhang Chao
(College of Electrical and Information Engineering,Shaanxi University of Science and Technology,Xi′an 710021,China)
Abstract: In order to make the elderly, patients and children get better care, a home assistant robot system based on Kinect is designed. Single server multi clients model is used to design the system, the clients Kinect and App are connected to the server. The assistant robot is designed and the IP camera is used as the head ,the steering joint structure is used as the arm and the wheels are used as the leg of the robot. Applying the improved Kinect motion recognition algorithm,the function of motion-control is achieved. The medication bottles and cups can be taken to the elderly and patient by the robot. The APP is designed to realize the function of remote monitoring and video cheat with the elderly and patients.

0 引言

    老龄化社会提前到来,“空巢家庭”日趋增多,越来越多的老年人“照顾缺位”。子女在外上班,不能陪伴父母,一些身体虚弱、生活不能自理的老人不能得到很好的照顾。老人独自在家时若发生一些意外事故,因无法快速地发送求救信号,从而不能得到救助而造成严重后果。家人工作繁忙,一些生病或因残疾导致行动、生活不便的人,不能独自去拿水杯、药品等。家长出门孩子独自留在家中,孩子由于调皮贪玩会跑到阳台等危险区域,因无实时的监管导致意外。现代年轻人工作压力和生活压力加重,上班一族整天为工作奔波,常常会疏忽家里的琐事,忘记关灯、关空调等;家里出现煤气泄漏、水管漏水等危险情况,未能及时处理而导致事故的发生;家里有盗贼进入时,不能及时报警而导致贵重财物被盗。

    为了解决上述问题,设计了基于Kinect的家庭助理机器人系统。可通过Kinect体感控制机器人移动到指定地点并抓取物体,也可用手机APP远程控制机器人,实时地监视室内情况。

1 系统硬件设计

    系统采用基于Java的单服务器多客户端模型,Kinect和智能手机分别作为客户端连接到运行在PC上的服务器[1]。Kinect通过USB连接到电脑,利用串口通信将采集到的数据实时发送到服务器。智能手机通过WiFi连接到服务器,手机APP将控制信号发送到服务器。服务器对客户端发来的数据进行实时采集、解析,并将控制信号发送给机器人。系统整体结构如图1所示。

ck1-t1.gif

    机器人硬件组成如图2所示。机器人头部为网络摄像头IP Camera,主要功能有:远程视频监视、远程视频通话、智能报警。机器人臂部为数字舵机结构,共8个自由度,机械臂末端为夹爪结构。机械臂可模拟人的双臂运动,可通过夹爪来抓取物体。机器人的腿部为轮式结构,使其在室内更快捷、灵活地移动。

ck1-t2.gif

    机器人的主控芯片采用树莓派,树莓派(Raspberry Pi)是只有信用卡大小的卡片式电脑。它配备一枚1.24 GHz的4核ARM架构Cortex-A53处理器,SD卡作为储存媒体,主板周围有4个USB接口和一个网口[2],利用USB接口可直接与Arduino相连。树莓派内置无线WiFi模块,可与服务器进行无线通信。树莓派PWM输出能力有限,利用2片Arduino共同产生8路PWM控制机械臂的8个舵机[3]。Arduino是一款便捷灵活、方便上手的开源电子原型平台,它搭载Atmel ATmega328处理器,有14路数字输入输出端口。一片Arduino可同时产生6路PWM信号,并且Arduino开发软件提供标准的串口通信协议,可直接与树莓派通信。树莓派通过USB与Arduino相连,通过串口通信将每个舵机控制信号发给Arduino。数字舵机根据PWM信号转动,实现0°~180°的精确控制。此外,机器人上装有烟雾和温湿度传感器,可实时监测家中环境,发生煤气泄漏或火灾时可自动报警。

    Kinect通过USB与服务器相连,完成人体骨骼数据的采集。采用Kinect for Windows,其工作原理是通过传感器上一个可见光RGB摄像头和2个红外摄像头,使传感器能够采集彩色影像和3D深度图像[4]。采集图像时,Kinect传感器通过红外激光点阵反馈图像信息到2个红外摄像头中,对操作者的X、Y、Z坐标进行3D扫描定位。此外,通过可见光RGB摄像头捕捉VGA级别的图像[5],可进行人物的身份识别。Kinect数据通过USB线缆传输到PC上,PC上的Kinect数据采集库对传感器传输而来的3种不同的数据资料进行串联,将彩色图像和3D深度图像融合成为一个数据流,最后将数据流输出[6]。本次设计利用数据流中的20个关键点的三维坐标,对人体动作进行识别。

2 系统软件设计

2.1 Kinect动作识别算法

    基于轮廓和特征匹配的目标跟踪算法,例如文献[7]中的人体动作识别算法,虽然准确性良好,但其算法过于复杂,模板匹配运算量太大,需要大量设备进行并行处理,需要比较高端的处理器。基于滤波预测跟踪算法,例如文献[8]中提出的利用卡尔曼滤波算法实现人体动作识别,虽然消除了数据抖动,但其算法的鲁棒性不好,对光照、背景变化太敏感。本文提出了一种改进的Kinect动作识别算法,将人体关节分上、下半身来处理,既保证了手臂控制机器人的实时性,又保证了双腿控制机器人的准确性。

2.1.1 坐标获取

    Kinect是微软公司于2011年推出的一款体感外设,主要由红外发射器、RGB摄像头、红外深度摄像头组成。它具有实时的全身骨骼跟踪、运动捕捉以及麦克风输入的功能,并能够识别一系列人体动作[9]。本文算法利用Kinect骨骼追踪技术获取操作者20个关键点的三维坐标,并能对这些点的位置进行实时追踪。图3为人体关键点的示意图。

ck1-t3.gif

    由于直接获取的坐标为深度图像坐标,所以将其换算为实际坐标。(ximage,yimage,zimage)到(xworld,yworld,zworld)的变换公式[10]

ck1-gs1.gif

2.1.2 特征提取

    在Kinect不标定的情况下识别人体动作,且操作者所在位置可能随时会发生变化,因此算法对鲁棒性要求很高。本文算法提取的特征是骨骼关键点坐标的相对位置,即提取关键点坐标向量所成的角度特征。Kinect每秒钟获取30帧图像[11],即关键点的坐标每秒刷新30次,再加上人体的抖动,采集到的关键点坐标会有波动。采用加权递推平均滤波方法对坐标进行滤波。把连续N个采样值看成一个队列,队列的长度固定为N,每次采样到新的数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)。然后针对不同时刻采用不同的权值,最后把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。公式如下:

ck1-gs2-4.gif

    角度θij就是当前人体肘部的角度特征。以此类推,可求出人体所有关节的角度特征。提取的角度特征是一个相对的特征且鲁棒性好,只与关键点相对位置有关,与光照、背景、操作者以及操作者的位置都无关。

2.1.3 特征匹配

    机器人的机械臂是由操作者的双臂体感控制的,而所提取的角度特征恰好是每个关节点的相对角度,所以可直接将角度特征输出控制舵机的转动。对于下半身,则要通过特征匹配的方法更加准确地识别操作者的动作。由于Kinect采用Processing进行开发,用Java语言编程,所以将计算好的动作模板保存到TXT文本中。本设计中下半身需要识别的动作包括:前进一档、前进二档、前进三档、后退一档、后退二档、后退三档、停止、机器人夹爪的张开与闭合。将下半身骨骼数据的角度特征与动作模板角度特征进行比较,可得到匹配的百分比,从而实现人体动作的识别。

2.2 机器人软件编程

    机器人的软件部分主要完成的任务为:接收服务器发来的控制信号并根据信号控制舵机和电机。机器人的控制芯片为树莓派,树莓派的操作系统是开源的Linux系统,采用Python语言进行编程。首先利用Socket无线通信把树莓派作为客户端连接到服务器,开启客户端并将其连接到服务器的IP地址和端口号,接收服务器数据。然后根据通信协议解析数据,最后利用Firmata协议将控制舵机和电机数据发给Arduino。Arduino根据接收到的数据,控制对应引脚产生不同占空比的PWM信号来控制舵机和电机的转动。树莓派接收烟雾传感器和温湿度传感器的反馈值,与设定阈值比较决定是否报警。

    本设计利用安卓开发了手机APP[12],可使在外的家人通过机器人实时查看家中情况,及时发现家中紧急情况。图4为手机APP界面,点击连接按钮,手机APP会自动登录服务器。左边是实时视频监控界面,可实现360°旋转监视、拍照、录像等功能,还可通过对讲功能与家里的老人和病人进行视频通话;右边是机器人控制界面,通过前后、左右按钮控制机器人的运动,从而实现了与传统固定摄像头监视不同的室内移动视频监视功能。

ck1-t4.gif

3 功能实现

    Processing程序对Kinect深度数据进行采集,利用上文动作识别算法对数据进行处理,把控制信号传给机器人。操作者可以用双臂体感控制机械臂,并且实时性很好;可以用腿部的前后移动体感控制机器人的前后移动,并且可以调速;可以利用双腿的分开程度控制机械夹爪的开合。实验表明,本算法的动作识别准确率较高,而且光照、背景、操作者和操作者位置的变化对算法影响较小。测试结果如图5和图6所示。系统可实现机器人的体感控制,帮助家里的老人和病人抓取物品。

ck1-t5.gif

ck1-t6.gif

4 结束语

    设计制作了基于Kinect的家庭助理机器人系统,可通过机器人的体感控制帮助在家无人照顾的老人和病人抓取物体。在外的家人可通过手机App远程监视室内情况并可视频通话,使老人和病人得到更好的照顾。通过实验测试,该系统工作正常,可实现以上各项功能。

参考文献

[1] 马响.基于Java语言在Web开发的知识探讨[J].信息技术与信息化,2015,13(15):169-171.

[2] 苏祥林,陈文艺,闫洒洒.基于树莓派的物联网开放平台[J].电子科技,2015,28(9):35-37.

[3] 崔阳,张维华.一种基于Arduino的智能家居控制系统[J].计算机技术与应用,2014,40(4):123-125.

[4] PANSARE J R,BANSAL M.A system to recognize dynamic hand gestures using hidden markov model to control windows applications[J].International Journal of Computer Applications,2013,62(15):169-171.

[5] SU C J,CHIANG C Y.Kinect-enabled home-based rehabilitation system using dynamic time warping and fuzzy logic[J].Applied Soft Computing,2014(22):652-666.

[6] FABRIZIO P,SERGIO B.An open source framework for hand pose and gesture recognition using kinect[J].Visual Computer,2014(30):1107-1122.

[7] 朱国刚,曹林.基于Kinect传感器骨骼信息的人体动作识别[J].计算机仿真,2014,31(12):329-333.

[8] 王梅,卢熙昌.基于人体动作识别的服务机器人手臂运动控制[J].工业控制计算机,2015,28(9):59-62.

[9] 战荫伟,于芝枝.基于Kinect角度测量的姿势识别算法[J].传感器与微系统,2014,33(7):129-132.

[10] 陈翰雄,黄雅云,刘宇,等.基于Kinect的空中手势跟踪识别的研究与实现[J].电视技术,2015,39(21):91-94.

[11] 蔡菁,程雷,王红霞.基于Kinect的疲劳驾驶综合监测系统研究[J].计算机工程与科学,2015,37(12):2380-2385.

[12] 薛亮,张继飞.基于IOS的智能家居安防系统移动端设计[J].计算机技术与自动化,2016,35(2):89-92.



作者信息:

党宏社,侯金良,张  超

(陕西科技大学 电气与信息工程学院,陕西 西安710021)

继续阅读>>