杨文超,吴亚东,赵思蕊,冯鑫淼
(西南科技大学 计算机科学与技术学院,四川 绵阳 621010)
摘 要: 为解决机器人设计功能单一而结构复杂,智能家居产品依赖终端而用户体验度差等问题,结合Kinect v2体感交互设备设计一种仿人形智慧家庭机器人,借助嵌入式硬件技术、语音合成技术、动态区域滤波算法、图像分割避障算法、二阶差分边缘检测方法和姿势序列有限状态机的动作识别方法,实现可自定义内容的自然语音交流与语音控制功能、可自动调速的自主避障与路径规划功能、可锁定目标的人物跟踪与动作识别功能。设计实现的机器人具有成本低廉、结构简单、适应性强、功能多样等优点。经实际测试,该智慧家庭管家机器人运行稳定,用户体验良好,可作为智能家居行业探索方向。
关键词: 人机交互;智能家居;Kinect v2传感器;机器人
0 引言
目前,智能家居行业发展缓慢,智能家居产品未能脱离手持终端设备,同时用户体验度不高、产品功能单一、成本昂贵等弊端亟待解决。移动机器人的研究表现出声呐、激光、红外等深度探测传感器及其他传感器融合的趋势[1-2]。市面上常见的深度传感器有3种:(1)基于多目摄像头,典型代表有基于双目摄像头的Leap Motion、基于四目摄像头的Google Tango;(2)基于结构光技术,典型代表为PrimeSense和Kinect v1;(3)基于TOF技术,典型代表为Kinect v2。
微软公司发布的Kinect系列体感设备将彩色图像、深度图像、人体骨骼以及语音信息集成在一起[3],Kinect v2相比于第一代其深度可视范围更广,可同时识别6人,每个人25个骨骼点,彩色图像分辨率提升到1 080 p高清格式。本设计将Kinect v2与智能家居机器人相结合,应用该传感器和廉价的单片机嵌入式硬件实现了一套拥有自然语言交流、自主避障、路径规划、动作识别等功能的智慧家庭管家机器人,将Kinect v2传感器的室内环境应用优势充分展现[4]。
1 智慧家庭管家硬件组成
智慧家庭管家的技术架构分四部分:(1)Kinect v2为系统提供了视觉和听觉平台,充当着智慧管家的眼睛和耳朵,为分析周围环境和下一步行动决策提供数据基础;(2)主控系统包含安装了Kinect for Windows SDK2.0的笔记本电脑,好比机器人的大脑和心脏,是机器人数据处理、算法实现和逻辑控制的中心;(3)底层行走系统基于ARM架构的STM32F103系列32位单片机设计,接收控制命令并驱动电机转动,构成智慧机器人的移动四肢;(4)借助无线智能家电控制器轻松控制电器设备,为用户提供个性化智能家居服务。系统硬件组成框图如图1所示。
1.1 底层行走系统
底层行走系统以STM32F103单片机为控制中心,通过串口与主控系统进行信息交换,驱动电子罗盘模块获取机器人方向信息,输出4路PWM波控制两个直流电机的转速与转向。串口使用PL2303USB转串口模块,在笔记本和STM32单片机之间稳定传输数据;电子罗盘使用HMC5883L模块,可以实时获取方向信息;直流电机使用12 V行星减速电机,转速低,扭力大,噪音小,分别控制两边轮子的转速与转向,实现差速转向。
1.2 智能家电控制器
运用WiFi转串口模块实现STC89s52单片机与笔记本电脑之间无线传输数据。由于WiFi转串口模块传输透明,为了提高安全性,控制命令在笔记本发送端经过算法加密后发送。单片机接收到命令并解密后,控制与I/O口相连的继电器开关状态,实现对电灯等家电的控制。
2 系统软件设计
机器人软件包括底层行走系统程序、智能家电控制器程序、主控系统核心软件。行走系统和家电控制器程序都相对简单,这里不再赘述[5]。本节仅介绍基于.net4.0 Framework架构,采用WPF开发的核心软件系统。核心软件系统负责驱动Kinect v2设备,读取语音数据、彩色图像、深度数据和骨骼数据,然后经过内部算法处理控制智慧管家机器人表现类人行为。如图2是软件主流程图。
软件处理分为四种模式,复位状态处于语音模式,通过语音识别与语音合成技术实现与用户的对话交流。语音控制家电设备或者语音设置管家机器人进入跟踪模式、避障模式、导航模式。如果处于跟踪模式则在保证没有近端障碍的前提下运动到被跟踪用户近处并识别用户动作;如果处于避障模式则根据图像分割避障算法的步骤控制机器人避开障碍物并规划路径,在其他模式如果有障碍物靠近机器人也会跳转执行避障算法;如果处于导航模式则保证没有近端障碍的前提下拟合前方路径中线并应用PID控制机器人快速行径到目标位置。
2.1 语音识别与合成处理
机器人运行后,首先停止运动进入语音模式,为避免误识别,复位状态Kinect v2处于监听锁定状态,只有在识别到“Hello”、“Robot”等对话使能关键词后才开启语音对话模式,在该模式下用户可以与机器人进行自然语言交流,语音控制家电开关,或者语音改变机器人模式进入跟踪、避障、导航模式。为进一步提高语音控制命令的准确性,每个命令语音都需要重复验证:用户听到“Please repeat”回复语音后需要重复语音命令或者说“Yes”。而如果识别到的语音是对话语音则不需要验证,通过Windows语音合成开发包将文本信息转化为语音输出实现自然交流。如果等待8 s没有识别到任何语音信息则机器人重新进入监听锁定状态。语音识别流程如图3所示。
机器人与用户对话的内容记录在工程目录下的speech.data文件中,speech文件存储格式如表1所示。文件中每一行是一条语音对话内容,前面是识别到的用户语音,后面是机器人回应,如果是交流语音,中间用“|”隔开,回应时直接取后面部分语音合成回复;如果是命令语音,中间用“||”隔开,回应时翻译后面部分执行相应命令动作;如果没有分隔符则不做任何回应。在对话使能以后,当识别到speech文件中不存在的句子时,可以提示用户是否需要存档该对话内容,如果用户回答“Yes”,则可以在接下来的提示后录入回复语句,即完成用户自定义语音对话内容。
2.2 深度图像滤波
Kinect v2属于主动式TOF深度传感器,通过测量光脉冲之间的传输延迟时间来测量深度。一旦遇到透明玻璃、镜子等影响光的正常散射的物体时,就会产生测量误差[6]。随着测量深度增加,深度图像左右边缘的噪点也不可避免,这些噪声出现在物体边缘以及图像四角,影响图像判断。参考文献[7]提出了基于改进的双边滤波算法,结合彩色图像梯度域,运用联合双边滤波算法对深度图噪声进行插值,该方法需要同时遍历彩色图与深度图,会消耗大量处理时间;参考文献[8]采用带权值的全局优化插值滤波方法,运用了复杂的权值计算算法,也会消耗大量计算时间。本设计系统运算量较大,不适合采用耗时的滤波算法。进一步分析深度图像噪声特点可知,噪声为数据已知的椒盐噪声,本设计结合中值滤波的思想,应用动态区域遍历插值的方法,保证不会将图像边缘平滑掉,又能够去除大部分噪声,为下一步边缘处理提供基础。滤波公式如下:
xk=med(xk-n,xk-n+1,…,xk,…,xk+n)(1)
式中,xk-n…xk…xk+n为以噪点xk为中心的回形窗口中不为0的数据,med表示求取数据中值。xk为深度值是0的噪点,首先在包围该点的最小正方形区域(8个点组成)内遍历各点寻找非零点,若没有找到,则扩大区域到外层更大的正方形区域,直到遍历完一个极限层数。图4所示为滤波效果图。
2.3 自主避障及路径规划
根据深度数据分层着色得到深度彩图,每个像素点按照与传感器的距离由近及远分别被着色为红、绿、蓝、浅蓝、灰(在本文表现为灰度值的变化)。然后将深度彩图均分为2行4列区域块,如图5所示。
控制逻辑占据的主要是Ⅱ、Ⅲ列数据,表示视野的中间部分,这部分要够宽机器人才能通过。图像分割避障算法判断步骤如下:
(1)判断Ⅱ、Ⅲ列有没有出现红色,如果没有则转到执行(4),如果有红色则判断左转标志或者右转标志是否有置位,若有置位则执行(3);
(2)比较Ⅰ、Ⅱ列区域的红色面积之和与Ⅲ、Ⅳ列区域的红色面积之和的大小,如果Ⅰ、Ⅱ列区域大于Ⅲ、Ⅳ列区域,则右转标志置位,否则左转标志置位,并记录当前机器人方位值;
(3)如果左转标志置位则执行左转,如果右转标志置位则执行右转,读取当前方位值,如果与记录值相等则交换左转、右转标志再执行(5);
(4)执行前进,清零左转标志、右转标志;
(5)控制流程结束,等待下一帧图像处理。
上述控制逻辑能有效控制机器人自主避障及路径规划,在执行一次左转或者右转命令后会一直沿着该方向转动,直到可以前进时才清零标志,避免了管家机器人陷入左转一次右转一次的死循环。在转向时读取方位值,当旋转超过一圈时就会反向旋转。
为了给传感器足够的前瞻性,必然在近端产生小区域盲区。因此对于比较低的物品,如果在绿色背景中有蓝色区域出现,并且该蓝色区域面积超过阈值,则判定为低障碍物,当做红色障碍避开,预测性避开盲区障碍物。同时,在机器人四周还安置红外避障模块,在盲区突然进入低障碍(如猫)时也能检测到并立即停止运动。
2.4 边缘提取与路径拟合
在自主避障模式中,依靠深度彩图控制机器人前进,此过程基于近端红色危险区规避原则实现,速度不能太快,不适合远距离行径。因此,在近端没有红色障碍物时,通过路径边缘提取和中线拟合得到路径中线,再运用控制学科经典的PID控制算法使机器人快速而准确的沿路径中线前进。
图像边缘提取算法中,图像的梯度对应于图像灰度值变化最快的方向,基于一阶导数算子的边缘检测算法需要求得像素点处的灰度梯度[9]。
|f(x,y)|=|f(x,y+1)-f(x,y)|+|f(x+1,y)-f(x,y)|(2)
其中,f(x,y)为像素点(x,y)处的灰度梯度,f(x,y)为(x,y)处灰度值。式(2)可求得像素点处横向和纵向上的灰度差之和。基于这种思想的衍生算法包括Roberts算子、Laplacian算子等[10]。但从式(2)也可以看出这类算法对于噪声敏感,所以本设计采用该公式的一种变种。
这里,f(x,y)为像素点(x,y)处的深度值梯度, f(x,y)为(x,y)处深度值,fx(x,y)为横向差值的梯度, fy(x,y)为纵向差值的梯度。通过计算二阶梯度,可以有效避免单个噪点带来的干扰。得到场景内物品的边缘后,从图像每一行的中点向两边遍历寻找路径边缘,提取路径边线,再根据左右边线求平均就可以得到拟合的路径中线。图6中右边部分标出的中线就是拟合路径的中线。
本算法应用自适应路径拟合的方法,只在有效路径长度(绿色区域)内拟合路径中线,超出范围不作为控制的依据。主要公式如下:
其中,mid为拟合路径中线的横坐标值,n为路径的有效长度,xl为每行数据左边缘线的横坐标值,xr为右边缘线横坐标值,width为图像宽度,δ为拟合中线横坐标与图像中心线横坐标的偏差,此值作为PID控制器的输入。PID输出命令控制两个电机的转速,即控制机器人转向和运动速度。
2.5 用户跟踪与动作识别
Kinect v2带有可直接获取的用户骨骼数据,由骨骼数据在图像中的移动规律易于实现用户跟踪。在跟踪模式下,机器人运动到距离用户1.5 m的近距离位置停止,为避免在临界值产生抖动,还做了容差处理,即距离值大于1.7 m才继续向前跟进,距离值小于1.3 m才向后退。在近距离位置自动开启动作识别功能。
利用骨骼数据可实现较为复杂的连续动作识别,本设计应用了姿势序列有限状态机动作识别的方法[11],并对该方法进行了扩充。Kinect v2可以辨别拇指与手掌相对关系并在官方数据中提供了握拳和张开手掌两种姿势,通过局部扣取手掌深度图并边缘提取捕获指尖关键点,记录指尖动作轨迹识别手指动作。系统最终实现了右手向右展开、左手向左展开、右手食指在胸前挥动动作的识别。
3 结论
应用Kinect v2体感交互设备,结合嵌入式技术及深度图像处理算法,实现了能理解用户交互意图,帮助用户控制家电,复杂环境动态规划路径,实时跟踪用户与识别手势的智慧家庭管家机器人。经实际测试,该机器人可以与用户进行简单自然语言交流,语音控制家电开关,在复杂环境自主避障及搜索路径,跟踪用户并识别用户手势,其智能化水平远高于现有智能家居产品。该智慧家庭管家机器人运行稳定,图像刷新率在每秒30帧左右,经处理的Kinect语音识别准确率超过80%,动作识别准确率超过90%,符合家用机器人要求,可作为智能家居机器人探索方向。
虽然系统的功能基本实现,但仍存在提升空间,可从下面几点考虑改进:(1)语音对话实现智能学习功能。只是简单的查表回复语音不能满足用户聊天需求,在联网状态下可与网络聊天机器人结合,真正实现智能聊天,甚至可以成为小孩子的百科全书。(2)基于人物跟随与Kinect v2判别声源方向的能力,设计动态监控功能,为上班族了解家庭情况提供更直接、更全方位的途径。(3)目前实现的路径规划仅实现了跟踪用户时迅速靠近用户以及寻找到较长距离可行路径并快速移动,可以参阅参考文献[12-13]在室内环境构建家庭地图,从而实现定点移动。
参考文献
[1] 魏志莲,汪剑鸣,窦汝振,等.一种新的室内机器人手势指令识别系统[J].天津工业大学学报,2010,29(1):72-76.
[2] 余振中,郑为凑,刘鑫,等.基于Kinect的移动机器人实时局部路径规划[J].计算机工程,2013,39(4):243-247.
[3] FABIAN J, YOUNG T, JONES J C P, et al. Integrating the Microsoft Kinect with simulink: real-time object tracking example[J]. IEEE-ASME Transactions on Mechatronics,2014,19(1):249-257.
[4] Xing Guansheng, Tian Shuangna, Sun Hexu, et al. People-following system design for mobile robots using Kinect sensor[C]. 25th Control and Decision Corference(CCDC), Guiyang,2013:3190-3194.
[5] 陈敬德,赵文丽,梁洪涛,等.基于Kinect的机器人控制系统[J].电子设计工程,2014,22(5):81-83.
[6] 陈晓明,蒋乐天,应忍冬.基于Kinect深度信息的实时三维重建和滤波算法研究[J].计算机应用研究,2013,30(4):1216-1218.
[7] 李应彬,冯杰,张华熊,等.基于改进双边滤波的Kinect深度图像空洞修复算法研究[J].工业控制计算机,2013,26(11):105-106.
[8] 刘金荣,李淳梵,欧阳建权,等.基于联合双边滤波的深度图像增强算法[J].计算机工程,2014,40(3):249-252.
[9] 林源晟.基于FPGA的图像边缘检测系统设计[D].西安:西安电子科技大学,2014.
[10] 董梁,王忠民.图像边缘检测算法研究[J].现代电子技术,2007,30(15):179-180.
[11] 林水强,吴亚东,余芳,等.姿势序列有限状态机动作识别方法[J].计算机辅助设计与图形学学报,2014,26(9):1403-1411.
[12] 李海,陈启军.基于全景视觉的移动机器人地图创建与定位[J].控制与决策,2014(2):215-220.
[13] 孔令富,高胜男,吴培良.面向对象的家庭全息地图表示与构建[J].计算机工程与设计,2013,34(1):353-359.