本发明涉及一种基于RealSense的陪伴机器人的多模式交互方法。
背景技术:
随着社会老龄化的日益加剧,陪伴机器人正在逐渐走入家庭和养老机构。但目前的机器人多使用语音、触摸屏进行交互,交互模式单一,使用不便。部分基于Kinect相机的机器人能够识别人体骨骼点,但是对于人脸、手指等细微部位的识别精度低、延时高。
RealSense 3D camera是英特尔提供的一套感知计算解决方案,RealSense摄像头为该方案的一种硬件设备。RealSense摄像头内置红外传感器、色彩传感器及麦克风阵列,可以采集深度图像、彩色图像和语音信号。该摄像头具有精度高、延时短和体积小的优势。
与Kinect相比,RealSense能够准确、快速地识别人脸及手指,并可以获取人脸和手指上的标识点。RealSense可以提供手势、人脸和语音三种交互模式,与单模式相比,多种交互模式相互配合,一方面机器人可以准确地识别用户的需求,另一方面用户可以更方便地与机器人进行交互,以便机器人在与人服务的过程中区分操作命令信息与非操作指令信息,从而使交互更加自然灵活。
技术实现要素:
本发明提供一种基于RealSense的陪伴机器人的多模式交互方法,利用RealSense传感器设计多种交互模式,为陪伴机器人设计人机对话、新闻播报和移动控制等功能。采用手势、人脸及语音的多模式交互方法,方便用户与机器人交互。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种基于RealSense的陪伴机器人的多模式交互方法,其特征在于,包括三大功能模块和六种工作模式,所述三大功能模块是人机对话、新闻播报和移动控制功能模块,所述六种工作模式分为非操作性模式和操作性模式,其中:
非操作性模式包括:
A)非操作性语音模式:利用语音识别技术识别全部的语音输入信号;
B)非操作性手势模式:通过预设的手势命令表,利用手势识别技术识别手势信号;
C)非操作性人脸模式:通过预设的人脸表情表,利用人脸识别技术识别人脸的表情信息;
操作性模式包括:
A)操作性语音模式:通过预设的语音命令表,利用语音识别技术将语音输入转变为操控机器人的指令;
B)操作性手势模式:通过预设的手势命令表,利用手势识别技术将手势信号转变为操控机器人的指令;
C)操作性人脸模式:通过预设的人脸命令表,利用人脸识别技术将人脸表情转变为操控机器人的指令;
多模式交互方法具体包括如下步骤:
步骤1、初次使用时,设置机器人系统默认的操作性模式和默认的非操作性模式,并对每个功能模块设置默认的操作性模式和默认的非操作性模式,对于每个功能模块,操作性模式输入的优先权高于非操作性模式输入;
步骤2、机器人系统启动后通过操作性模式选择并进入一个功能模块;
步骤3、在各功能模块中根据设置的操作性模式和非操作性模式,利用RealSense传感器进行识别并进行对应的分析和处理。
优选,步骤3中,对于人机对话功能模块:默认的操作性模式为操作性手势模式或操作性人脸模式的一种,默认的非操作性模式包括非操作性语音模式,具体交互步骤如下:
A1、使用RealSense传感器提供的函数启动RealSense传感器的语音识别模块,启动RealSense传感器与操作性模式对应的手势识别模块或操作性人脸模式;
A2、若用户输入语音信号,则进入步骤A3;否则,进入步骤A7;
A3、利用RealSense传感器识别用户的语音,获取语音识别结果;
A4、对识别结果进行分析,若其置信度大于50%,即为识别成功,获取识别结果中的文字内容;
A5、调用网络上提供的聊天机器人接口,将文字内容发送至聊天机器人,并获取应答;
A6、使用RealSense传感器提供的函数对聊天机器人的回答进行语音合成并输出;
A7、利用RealSense传感器识别用户的人脸或手势,获取人脸数据或手势数据,进而判断用户是否需要暂停或退出人机对话功能模块。
优选,步骤3中,对于新闻播报功能模块:默认的操作性模式为操作性手势模式,具体交互步骤如下:
B1、启动RealSense传感器的手势识别模块;
B2、获取网络上的新闻资源;
B3、使用RealSense传感器提供的函数将新闻标题进行语音合成并输出;
B4、利用RealSense传感器识别用户的手势,使用RealSense传感器提供的函数获取手势数据,进而判断用户是否希望播报该新闻,或者播报下一条新闻,或者退出新闻;
B5、在某条新闻播报过程中,利用RealSense传感器识别用户的手势,使用RealSense传感器获取手势数据判断用户是否希望结束播报该新闻。
优选,步骤3中,对于移动控制功能模块:默认的操作性模式为操作性语音模式、操作性手势模式或操作性人脸模式的一种,具体交互步骤如下:
C1、启动RealSense传感器的语音识别模块、手势识别模块和人脸识别模块;
C2、用户输入语音、人脸或手势信号;
C3、利用RealSense传感器识别用户的语音输入信号、人脸数据和手势数据,对识别结果进行分析;
C4、机器人根据移动命令进行移动。
本发明的有益效果是:通过设置默认的操作性模式和默认的非操作性模式,避免了将交互中的一些与操控机器人的指令相同的语音或符号等一般性输入当作操控机器人的命令,避免混淆。多模式交互方便残障人士,例如聋哑人、手部有残疾的人等与机器人交互。
附图说明
图1是本发明陪伴机器人功能模块示意图;
图2是本发明一种基于RealSense的陪伴机器人交互模式关系示意图;
图3是本发明信号处理流程图;
图4是本发明交互模式转换示意图;
图5是本发明陪伴机器人功能流程图。
具体实施方式
下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
RealSense传感器提供了多种交互技术,方便用户与机器人进行交互,例如:
(1)手势识别技术:RealSense传感器提供了手部22个标识点数据(PXCMHandData.JointType),并定义多个手势(PXCMHandData.QueryFiredGestureData()),开发人员可以根据需要,定义符合需求的手势。
(2)人脸识别技术:RealSense传感器提供了人脸77个标识点数据(PXCMFaceData.LandmarksData),利用这些数据,开发人员可以定义人脸命令,并可以分析用户的表情。
(3)语音识别与合成技术:利用RealSense传感器提供的语音库,可以方便地对用户的语音信号进行识别(PXCMSpeechRecognition),并将文字转化为语音告知用户(PXCMSpeechSynthesis)。
一种基于RealSense的陪伴机器人的多模式交互方法,包括三大功能模块和六种工作模式,如图1所示,所述三大功能模块是人机对话、新闻播报和移动控制功能模块,如图2所示,所述六种工作模式分为非操作性模式和操作性模式,其中:
非操作性模式包括:
A)非操作性语音模式:利用语音识别技术识别全部的语音输入信号;
B)非操作性手势模式:通过预设的手势命令表,利用手势识别技术识别手势信号,以便进行符号语言(如哑语)的交流;
C)非操作性人脸模式:通过预设的人脸表情表,利用人脸识别技术识别人脸的表情信息,从而判断用户的情感与情绪等信息。
操作性模式包括:
A)操作性语音模式:通过预设的语音命令表,利用语音识别技术将语音输入转变为操控机器人的指令;
B)操作性手势模式:通过预设的手势命令表,利用手势识别技术将手势信号转变为操控机器人的指令;
C)操作性人脸模式:通过预设的人脸命令表,利用人脸识别技术将人脸表情转变为操控机器人的指令。
定义了多模式交互过程中的两种输入:操作性输入和非操作性输入,在交互过程中,操作性输入与非操作性输入采用不同的模式,如语音、手势、人脸。操作性输入优先权高于非操作性输入,以便在交互过程中方便的操作机器人并改变当前交互进程。
多模式交互方法具体包括如下步骤:
步骤1、初次使用时,设置机器人系统默认的操作性模式和默认的非操作性模式,并对每个功能模块设置默认的操作性模式和默认的非操作性模式,系统启动时,根据客户喜欢或实际需求,设置默认的操作性模式(如操作性手势模式)和默认的非操作性模式(如非操作性语音模式)。
对于每个功能模块,操作性模式和非操作性模式不同,操作性模式输入的优先权高于非操作性模式输入。这样,避免了将交互中的一些与操控机器人的指令相同的语音或符号等一般性输入当作操控机器人的命令,比如,在对话聊天过程中,非操作性语音输入中含有“….停止….”或“…退出….”的语音不会被识别为让机器人停止或退出当前任务的指令。
步骤2、机器人系统启动后通过操作性模式选择并进入一个功能模块;
步骤3、在各功能模块中根据设置的操作性模式和非操作性模式,利用RealSense传感器进行识别并进行对应的分析和处理,如图3所示。
下面进行详细介绍,如图4所示,陪伴机器人默认操作模式是操作性语音模式,设计语音命令表,该表共包括3个语音命令:“人机对话”、“新闻播报”、“移动控制”。用户使用相应的语音命令启动相应的功能。
如图5所示,对于人机对话功能模块:由于需要识别用户所有的语音信号,机器人默认的非操作性模式包括非操作性语音模式,而默认的操作性模式为操作性手势模式或操作性人脸模式的一种。在对话过程如果用户想要操控机器人,如退出当前对话,则可以很方便地采用操作性手势控制机器人,如暂停、退出对话等操作,具体交互步骤如下:
A1、使用RealSense传感器提供的函数pxcmStatus SpeechRecognition.StartRec(PXCMAudioSource source,PXCMSpeechRecognition.Handler handler)启动RealSense传感器的语音识别模块,因为是默认的操作性模式为操作性手势或操作性人脸模式,所以根据用户的选择,二者启动一种即可,比如,使用RealSense提供的函数pxcmStatus PXCMSenseManager.AcquireFrame(bool ifall)启动RealSense传感器的手势识别模块;
A2、若用户输入语音信号,则进入步骤A3;否则,进入步骤A7;
A3、利用RealSense传感器识别用户的语音,使用自定义函数PXCMSpeechRecognition.RecognitionData OnRecognition()获取语音识别结果PXCMSpeechRecognition.RecognitionData;本文自定义函数均采用C#语言。
A4、对识别结果PXCMSpeechRecognition.RecognitionData进行分析,若其置信度(PXCMSpeechRecognition.RecognitionData.scores[0].confidence)大于50%,即为识别成功,获取识别结果中的文字内容(PXCMSpeechRecognition.RecognitionData.scores[0].sentence);
A5、使用自定义函数void Chat(string question,out string answer)调用网络上提供的聊天机器人接口,将文字内容(question)发送至聊天机器人,并获取应答(answer);
A6、使用RealSense提供的函数pxcmStatus PXCMSpeechSynthesis.BuildSentence(int sid,string sentence)对聊天机器人的回答(sentence)进行语音合成并输出;
A7、利用RealSense传感器识别用户的人脸或手势,使用RealSense提供的函数PXCMFaceData.Face PXCMFaceData.QueryFaceByIndex(int index)获取人脸数据PXCMFaceData.Face,使用RealSense提供的函数pxcmStatus PXCMHandData.QueryHandDataById(int handId,out PXCMHandData.IHand handData)获取手势数据handData,进而判断用户是否需要暂停或退出对话功能模块。需说明的是,只有操作性模式下的操作才能进行暂停或退出。
对于新闻播报功能模块:机器人发出的新闻声音可能会干扰用户语音信号的识别。因而,默认的操作性模式为操作性手势模式。用户通过手势选取希望播报的新闻,以及控制播报新闻时的进度,具体交互步骤如下:
B1、使用RealSense传感器提供的函数pxcmStatus PXCMSenseManager.AcquireFrame(bool ifall)启动RealSense传感器的手势识别模块;
B2、使用自定义函数string sendPost(string urlHotNews,string parameter)获取网络上的新闻资源;
B3、使用RealSense传感器提供的函数pxcmStatus PXCMSpeechSynthesis.BuildSentence(int sid,string sentence)将新闻标题(sentence)进行语音合成并输出;
B4、利用RealSense传感器识别用户的手势,使用RealSense提供的函数pxcmStatus PXCMHandData.QueryHandDataById(int handId,out PXCMHandData.IHand handData)获取手势数据,进而判断用户是否希望播报该新闻,或者播报下一条新闻,或者退出新闻;
B5、在某条新闻播报过程中,利用RealSense传感器识别用户的手势,使用RealSense提供的函数pxcmStatus PXCMHandData.QueryHandDataById(int handId,out PXCMHandData.IHand handData)获取手势数据判断用户是否希望结束播报该新闻。
对于移动控制功能模块:用户可以通过使用人脸命令、语音命令和手势命令控制机器人的移动,默认的操作性模式为操作性语音模式、操作性手势模式或操作性人脸模式的一种,一般的,机器人处于移动控制状态时,主要操作性输入为语音。语音命令包括5个语音命令:“前进”、“后退”、“左转”、“右转”、“停止”。手势与人脸也可以作为操作性输入。这种多种操作性输入,方便残障人士,例如聋哑人、手部有残疾的人等,控制机器人,具体交互步骤如下:
C1、使用RealSense传感器提供的函数pxcmStatus SpeechRecognition.StartRec(PXCMAudioSource source,PXCMSpeechRecognition.Handler handler)启动RealSense传感器的语音识别模块,使用RealSense提供的函数pxcmStatus PXCMSenseManager.AcquireFrame(bool ifall)启动RealSense传感器的手势识别模块和人脸识别模块;
C2、用户输入语音、人脸或手势信号;
C3、利用RealSense传感器识别用户的输入信号,使用RealSense提供的函数PXCMFaceData.Face PXCMFaceData.QueryFaceByIndex(int index)获取人脸数据PXCMFaceData.Face,使用RealSense提供的函数pxcmStatus PXCMHandData.QueryHandDataById(int handId,out PXCMHandData.IHand handData)获取手势数据handData,使用自定义函数PXCMSpeechRecognition.RecognitionData OnRecognition()获取语音识别结果PXCMSpeechRecognition.RecognitionData,对数据和识别结果进行分析;
C4、机器人根据移动命令进行移动。
本发明的有益效果是:通过设置默认的操作性模式和默认的非操作性模式,避免了将交互中的一些与操控机器人的指令相同的语音或符号等一般性输入当作操控机器人的命令,避免混淆。多模式交互方便残障人士,例如聋哑人、手部有残疾的人等与机器人交互。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。