APP下载

面向空巢老人的健康情感服务云端机器人原型系统设计与实现

2018-09-21肖家立刘俊华陈东伟周肖树黄哲

微型电脑应用 2018年9期
关键词:空巢人脸语音

肖家立, 刘俊华, 陈东伟, 周肖树, 黄哲

(北京理工大学 珠海学院, 珠海 519088)

0 引言

随着社会的发展,我国人口结构逐渐快速老化,且子女因学习工作忙碌而无暇照顾老人,因此如何保障老人的生理和心理需求值得人们研究。虽然机器人的发展迅速,但是对于家庭服务方面仍然不足以满足人们的需求,特别是在生理健康指标的监测和情感识别方面,具有情感交互的服务型机器人是一个突破口。将健康监测与情感交互结合在机器人身上可以成为实现空巢老人监护的工具,并结合云平台、网络可以有效解决空巢老人的生理以及心理需求[1-2]。机器人本身的计算能力有限,而人工智能技术往往需要大数据和分布式运算的支持,云平台的存在, 大大提高了机器人的运行处理速度,很大程度上降低了机器人的压力。为此,我们研发了面向空巢老人的健康情感服务云端机器人原型系统。通过面向空巢老人的健康情感服务云端机器人原型系统能够实现语言交互使其能够成为家庭的成员陪伴老人聊天、玩游戏、听音乐等,同时它能够服务于老人,能够帮助老人搬运简单的物品。

1 系统结构

面向空巢老人的健康情感服务云端机器人原型系统机器人端,项目基于ROS (Robot Operating System)框架,ROS是一种分布式的处理框架,并集成了很多软件和算法,提高了机器人代码的复用率,是现今发展最快,应用最广的主流机器人操作系统[3]。基于 ROS 框架的机器人可以通过其丰富的社区资源加快开发的速度,并且凭借其松耦合的特点可以使更多传感器可以被使用在其中,丰富其功能,而且也不用过于担心因开发语言而带来的编码转换问题。

整个机器人系统包括以下几个部分、1.机器人、2.生理数据采集设备、3.技能家电设备、4.后台数据转发及管理。机器人利用摄像头、生理数据采集传感器等来采集老人的心情、血氧、呼吸等生理数据,然后通过进一步的处理判定生理数据的范围,再根据这些生理数据做出相应的反馈例如语音播报采集结果,汇报通知亲人,温馨提醒等。同时机器人可以接入智能家居控制模块。机器人通过监听环境中的语音控制进行判断,当接收到控制家电命令后将控制命令发送到后台服务器。服务器接收到控制命令再转发至目标智能设备中。整个系统的整体框架图,如图1所示。

图1 系统框架图

系统硬件部分:本项目中机器人底盘使用了成形的ROS机器人底盘Kobuki,实现基本的机器人运动。机器视觉则使用Kinect来获取图像信息进而实现避障、构建地图、物体识别等[4]。机器人控制部分则使用笔记本来进行数据处理以及转发等。理疗数据采集方面使用的是低成本医疗设备,实现对相关数据的采集,同时实现将数据传送至后台服务器上,或者传输至移动终端。设备图,如图2所示。

图2 设备图

2 软件系统设计

服务机器人系统是基于Linux下的ROS(Robot Operating System)来实现的。其中机器人内部则由以下几个模块组成:底盘运动及定位导航模块、机器视觉模块、语音交互模块、界面交互模块。机器人的各个模块独立运行,但却又相互相成,每个模块将各种的环境信息进行采集然后再通过发送给控制模块,控制模块通过各种环境信息进行最终判断做出反应,如图3所示。

2.1 语音交互模块

语音交互模块结合科大讯飞的语言功能包技术,本项目中使用了语音识别、以及图灵机器人的语义识别、语音合成等功能模块。配合了ROS机器人操作系统,将3个功能结合起来,并且使用离线与在线功能结合使整个语音交互系统更加灵活,以及可控性更加方便。整个语音系统的框架图如图4所示。

连续语音听写节点,使用ALSA编程调用系统麦克风设备监听环境声音,在监听过程中会判断会话断点。当检测到断点,即在连续说话过程中停止说话,程序会结束监听,并上传监听得到的音频文件,等待服务器返回结果。服务器返回音频文件转换成文字的结果(字符串)。最后把结果通过 ROS的话题节点功能,送往下一个对应图灵语义理解节点的话题[5]。

关键函数:

调用麦克风实现录音、断点检测、上传音频和得到服务器返回结果的功能函数

static void demo_mic(const char* session_begin_params){}

对系统麦克风设备初始化,涉及 alsa 编程内容

errcode = sr_init(&iat, session_begin_params, SR_MIC, &recnotifier);

启动系统麦克风设备,开始录音,触发回调函数 on_speech_begin() 显示并记录当前状态为开始会话阶段

errcode = sr_start_listening(&iat);

图灵语义理解节点 ( nlu 节点)

当接收到 asr 节点往本节点的话题发消息时,会触发本节点的回调函数,开启该节点的功能----向服务器发送 HTTPPOST 请求,上传话题收到的结果。然后等待服务器返回 JSON 结果。收到返回内容后,对 JSON 字符串进行解析,取得结果,达到理解句意或得到固定问题的答案。

关键函数

//回调函数 nluCallback(),显示收到内容并调用自定义函数 HttpPostRequest()进行 HttpPost 请求void nluCall-back(const std_msgs::String::ConstPtr& msg)

图3 软件框架图

图4 语音模块框架图

讯飞语音合成节点 (tts 节点)

当接收到 nlu 节点往本节点的话题发消息时,会触发本节点的回调函数 topicCallback(),实现语音合成并报读合成好的 wav 音频文件

关键函数

void makeTextToWav( const char* text , const char* filename )

传入合成文本内容和文件目录,设定讯飞开发文档提供的合成音频的参数(合成发音人、音频采样率、语速、音量、音调等)

传入合成文本内容、文件合成到的目标目录和合成参数来合成音频

int text_to_speech(const char* src_text, const char* des_path, const char* params)如图5所示。

图5 语音模块测试图

2.2 机器视觉模块

该模块使用了Kinect作为图像采集基础。使用OpenNI接口提取摄像头中捕获的彩色图像信息、点云数据、灰度图等,然后将这些图像信息打包成消息通过话题发布到ROS中为其他节点模块提供数据源。然而在ROS中图片的传输并不是简单的将图片直接发送出去,而是利用ROS中的cv_bridge来讲图片转化成消息类型之后再发布到话题中。其他节点便可以接收该话题,同样的再用cv_bridge转化回图片格式之后就可以进行显示或者是处理了。

/*图像发布函数*/

int img_publish()

//将CV_bridge转化为ROS图像消息

void toImageMsg(sensor_msgs :: Image&ros_image)const ;

人脸检测节点获取到图片之后进行人脸检测,检测图片中是否存在人脸,然后将人脸保存起来并将其与系统中的人脸进行比对实现人脸识别。同时利用Face++中的人脸特征信息来获取老人的微笑值进而根据老人的心情来做出相应的回应。

//人脸检测, 将图片与人脸特征进行对比获取图片中人脸在图标的坐标

def detect(img, cascade):

2.3 路径规划及定位导航

路径规划及定位导航实现地图构建,通过利用构建完成的地图进行避障、定位导航、路径规划功能。其中,构建地图以及避障功能需要机械视觉模块提供的PLC点云数据。该模块接收到的PCL数据后将数据进行转换得到坐标数据。然后再通过TF转换通知机器人现实中的物体与机器人之间的距离[6]。再根据实际情况进行构建地图、避障等。而路径规划和定位导航则是利用建立好的地图来获取地图中环境情况,然后再通过给定地图中的点进行路径规划以及定位到航。

在构建地图的过程中,使用了TF进行传感器坐标的转换。因为机器人的控制中心不一定是在传感器上,所以要把传感器的数据转换成在控制中心上的坐标信息,从而实现数据通信[7-8]。如图6所示。

传感器获取的数据是在Kinect的坐标系统中的,但是系统控制时只能以base_link为中心,所以要根据两者的位置关心进行坐标变换,并使用MOVE_BASE路径规划功能包进行实现[9]。

2.4 人机界面交互模块

人家交互界面模块主要负责机器人与用户之间的进行交互信息。同时还可集成各种游戏提供用户体验例如象棋、俄罗斯方块、连连看等简单游戏。通过人机交互模块还可以实现将老人的生理数据显示给老人查看。同时还可以捕获摄像头的信息进行拍照、互动等。

在人机界面交互模块中,我们使用了移植性较高的Qt进行开发,配合ROS插件能够自由的接收机器人发布的各种消息[10]。同时利用Qt中成熟的发展技术可以简单的融合各种软件如音乐播放器、游戏等等,如图7所示。

图7 界面设计-查看摄像头

3 总结

本项目将机器人开发技术、物联网技术、人工智能技术、图像处理技术等多项前沿的IT技术进行整合,综合实现信息之间的高效地连接,进而为人们提供多样化的生活类的综合服务。由于本项目定位为家庭类服务机器人的设计与实现,因此在项目最终成果及主要研究力量都放在机器人终端交与及硬件开发上。因此,在多机器人交互调度、智能学习、行为大数据分析等问题将在下一次迭代中修正和完善,并引入Big Data及Deep Learning等技术实现智能学习,从而为老人提供更多服务和帮助。

猜你喜欢

空巢人脸语音
有特点的人脸
一起学画人脸
魔力语音
基于MATLAB的语音信号处理
基于MQ3与MP3的价廉物美的酒驾语音提醒器
关爱空巢老人
关爱空巢老人
对方正在输入……
空巢生日不孤独
三国漫——人脸解锁