基于树莓派的陪伴机器人多功能整合方法*

2019-04-11 05:21李泽宇舒文杰郭铁峰
科技与创新 2019年6期
关键词:树莓全息安卓

李泽宇,李 鑫,舒文杰,王 琛,郭铁峰

(合肥工业大学 电气与自动化工程学院,安徽 合肥 230009)

陪伴机器人具有多方面、多功能的特点,然而国内的陪伴类机器人主要着眼于儿童的早教,一般只考虑儿童对话能力的培养,所以常常只具有“人机交互”的功能。同时,陪伴机器人要实现多方面、多功能的特点,就需要对“人机交互”“虚拟成像”“指定跟随”等多种功能进行整合[1]。一般来说,“人机交互”为了对话的准确、可靠和开源性,会使用安卓系统作为平台支持,而“指定跟随”等其他功能强调快速性就会使用其他独立的系统进行处理。考虑到运行速度、成本、维护等多方面因素,最终导致在多种功能的整合过程中会出现如下的2 个问题:①不同的功能需要的系统环境可能不尽相同,因此存在两个或者多个系统同时运作的情况。所以不同系统之间,工作的分散性和统一性的合理设计就显得尤为重要。②对于所需系统环境相似的多个功能,如何将多个功能合理地结合在同一个系统环境中,并构成统一的整体也是整合过程中必须考虑的问题。本文从硬件平台选择入手,针对不同的功能使用不同操作系统而产生冲突的问题和同一系统所搭载不同功能而产生的合并问题,对多种功能进行软件和硬件方面的修改,以实现在同一种硬件平台上利用不同的系统实现不同的功能,再通过通信手段将它们联系在一起,形成一个整体,实现整合的目的。

1 整体设计

陪伴机器人采用多模块、多层次的结构,本文介绍以“人机交互”“虚拟成像”“指定跟随”为主要的三个功能的整合方法。“人机交互”是指使用者和机器人之间可以进行较为复杂的对话,采用安卓系统作为软件平台,结合讯飞开源平台的方式实现。“虚拟成像”是指借助全息投影的相关技术,在使用者的面前呈现出逼真的3D 幻像,给使用者真实的体验感,采用安卓系统作为软件平台,结合全息投影的方式实现。

“指定跟随”是指机器人自主对使用者的面部图像进行捕捉,通过分析处理后控制电机正反转来实现以恒定的方向面对使用者,增加了机器人的活动性,为全息显示提供合适角度。由于该功能需要对实际物理设施进行实时控制,对快速性和准确性有着一定的要求,因此采用Linux 系统结合OPENCV 来分析处理实时图像,并利用处理后的结果直接控制相关硬件设备。

图1 为整体硬件结构图,其中,由于上述功能需要的系统环境不尽相同,因此存在两个系统(安卓系统和Linux 系统)同时运作的情况。系统之间的工作分配、通讯的设计对功能运行的高效性和整合性就很重要。同时,对于所需系统环境相似的两个功能(“人机交互”和“虚拟成像”),就需要将这两个功能合理地结合在同一个系统环境中并构成统一的整体。针对上述这两个问题,本文将设计方法解决,并实现最终整合的要求。

2 功能设计与整合

由于需要基于两个软件系统将三个功能整合,形成一个完整、和谐的整体,因此需要依据硬件对每个功能进行针对性的软件设计和硬件改变。

硬件平台选择:Raspberry Pi3,简称为树莓派3,是树莓派系列第三代产品。它是一款基于ARM 架构的微型电脑主板,以SD/MicroSD 卡位内存硬盘,其可以通过改变卡中所烧写的系统来实现不同系统的运行。而其主板周围有4 个USB 接口和一个10/100 以太网接口,可以连接相关的外设。其拥有视频模拟信号的电视输出接口和HDMI 高清视频输出接口,同时内置WiFi、蓝牙等多种模块[2]。

基于树莓派3 的这些硬件可以实现运行不同系统、设计编写程序、应用不同外设等功能,因此使用树莓派3 作为基础硬件平台可以有针对性地解决整合过程中的问题。本文将介绍使用两块树莓派3 开发板(树莓派A 和树莓派B)作为硬件平台并进行整合的方法。

2.1 树莓派A

将树莓派A 设置为“人机交互”和“虚拟成像”两大功能的实现平台,针对两个功能所需要的相关软、硬件条件对树莓派A 进行修改:①在MicroSD 卡中移植并烧写安卓7.0系统;②利用树莓派A 自带的WiFi、蓝牙模块链接互联网并对局域网进行设置;③利用树莓派A 自带的USB 接口链接麦克风模块、无线控制器、U 盘等;④使用HDMI 接口将树莓派A 与显示屏相连接,并放置投影用全息膜。

在硬件条件设置完毕后,重新设计编写软件程序,将“人机交互”“虚拟成像”两大功能移植适配到树莓派A 上。

2.1.1 人机交互功能

2.1.1.1 硬件方面

由树莓派A 连接的麦克风模块采集使用者的语音,并将数据传送给树莓派A。数据经过树莓派A 内部安卓程序的处理后,由树莓派A 内置的WiFi 模块经过互联网传输给科大讯飞开源的语音技术平台,实现树莓派A 与互联网的链接与数据交换和传送GPS 坐标的功能,并从网络平台处获取反馈数据,传送回树莓派A[3]。其中的安卓程序对反馈信息进行识别、处理、筛选后,将需要播放的语音信息传送给树莓派A 连接的扬声器,播放针对使用者所提问的语音回答[3]。图2 为人机交互功能结构框图。

图1 整体硬件设计图

图2 人机交互结构框图

2.1.1.2 软件方面

借助科大讯飞所提供的开源的语音技术平台,在安卓系统平台的基础上利用Android Studio 等集成的安卓开发工具使用JAVA 编写APK,实现对使用者语音的捕捉、转化成字符、传输至服务器处理、接收处理反馈的结果、对反馈的字符筛选最后转成语音播放的功能[4],针对某些特定的关键字在识别后会通过Socket 通信基于局域网和TCP/IP 的协议发送至另一块搭载Linux 系统的树莓派并作出响应。图3 为人机交互功能的流程图。

2.1.2 虚拟成像功能

全息投影技术也称虚拟成像技术,是利用干涉和衍射原理记录并再现物体真实三维图像的技术。本文中使用的全息膜实现在无论光源是否充足的情况下,都能透过正面直接观看影像。这种投影的方式使用特殊的屏幕,屏幕本身近乎透明,但是却可以相当清晰地表现出投影内容。在光源和图形控制得当并且观看角度固定时,可以有乱真的立体效果。

2.1.2.1 硬件方面

图4 为投影原理图。要实现全息投影(全息投影膜)的合理使用,全息投影膜必须包含以下几个部分:光源、镜面图像、全息投影膜和相关的角度[5]。全息投影的光源部分以树莓派A 为平台,并利用HDMI 接口与赛擎7 寸显示屏相连接,显示屏中的图像作为全息投影的光源。结合45°反射原理,将上方显示屏的图像反射到使用者面前,同时使全息投影膜后方的光损耗较小,透过膜达到使用者面前,两束光结合给予人视觉上的错觉。

2.1.2.2 软件方面

全息投影功能的软件部分以树莓派A 为平台,并对树莓派A 中编写的安卓程序添加Vedioview 功能,来播放和切换由Mikumikudance 制作的动画[5]。通过上述方法,可以将“人机交互”“虚拟成像”两个功能在安卓平台的基础上整合于树莓派A 中。

图3 人机交互流程图

图4 投影原理图

2.2 树莓派B

本文中将树莓派B 设置为“指定跟随”功能的实现平台,针对树莓派B 所提供的相关软硬件条件对该功能进行修改,使其适配到树莓派B 上。

2.2.1 硬件方面

图5 为硬件结构框图。

图5 硬件结构框图

“指定跟随”功能使用树莓派3 开发板作为基础硬件平台,内部安装的是Linux 系统。给定值由树莓派进行程序给定。为了能让人脸对着摄像头,因此将图像的x 坐标(横坐标)的中心值作为给定值。考虑到在实际中容易出现震动情况,因此给定值设置一个死区范围[7-8]。

Risym 摄像头扩展模块通过插线与树莓派B 连接,使用树莓派B 的库函数来调动摄像头工作,其采集到的图像作为反馈信号反馈给树莓派B 控制器。树莓派B 处理后将相关的信号从相对应的输出I/O 口传输到异步电机配套的驱动器,带动异步电机旋转至合适位置后停止。

2.2.2 软件方面

借助图像识别的技术,通过在树莓派B 上安装的摄像头采集使用者的面部信息,并利用OpenCV 所集成好的人脸识别算法对图像中的人脸进行分析。利用相关的像素矩阵将图像转化为一维向量,再利用detectAndDisplay(frame)和detecMultiScale(...)指令对图像中的人脸进行识别,实现对使用者的特定追踪,并获得人脸在图像中的区域范围[7]。通过OPENCV 库、树莓派硬件控制库WiringPi.h 来控制树莓派的引脚,输出相应的调节信号控制电机的正反转和输出脉冲波的频率,从而在驱动的协助下实现异步电机的旋转,改变机器自身的状态(角度)并结合反馈闭环、误差分析处理等方式,保证一直正面面对使用者,实现“指定跟随”功能在树莓派B 上的应用。图6 为“指定跟随”工作流程图。

通过上述方法即可将“指定跟随”功能整合在以Linux 平台为基础的树莓派B 上。

2.3 树莓派A 和树莓派B 之间的通讯

在整体架构中,每个部分之间应当存在通信关系。针对树莓派A 的安卓系统和树莓派B 的Linux 系统,本文中采用Socket 通信借助TCP/IP 协议实现Android(客户端)与Linux(服务器端)在同一局域网下进行数据通信,并实现相关功能的控制。通过上述方法可将树莓派A 和树莓派B通过局域网联系在一起,相互通讯。实现不同系统之间相互协调,从而构成整体。

3 结果

根据上文所述的设计方案,对实验产品的各项功能进行测试、分析后得出以下结果。

3.1 树莓派A

在树莓派A 上搭载安卓系统,实现“人机交互”和“虚拟成像”功能的整合。对于各功能测试结果如下。

3.1.1 人机交互部分

人机交互部主要进程由语音输入,语音识别,语义理解、发送、接收,语音合成,语音输出组成。而检测部分由语音效果监测程序代替。显示界面的编写在Android Studio 中的AndroidManifest 中完成,且需要针全息投影的特点编写。图7 为人机交互界面截图。

3.1.2 虚拟成像部分

在AndroidStudio 中使用JAVA 语言对源程序进行Vedioview 功能的编写。使用myVideoView = (VideoView)findViewById(R.id.videoView); final String videoPath =Uri.parse("android.resource://" + getPackageName() + "/"+R.raw.y_x264).toString();来调用在MikuMikuDance 中制作的动画。使用setOnPreparedListener((mp))进行监听,使用mp.setLooping(true)实现循环播放。图8 为动画截图,图9 为虚拟成像原理测试机实物照片。

图6 “指定跟随”工作流程图

图7 人机交互界面截图

图8 “虚拟成像”动画截图

图9 “虚拟成像”原理机实物照片

3.1.3 分析

树莓派A 成功地实现了将“人机交互”和“虚拟成像”功能相结合,完成了同一系统条件下不同功能相整合的目的。

3.2 树莓派B

树莓派B 上搭载安卓系统,实现“指定跟随”功能。对于该功能测试结果如下:使用O P E N C V 官方给出的haarcascade_frontalface_alt.xml 与haarcascade_profileface_alt.xml 的联级分类器,使得识别方式很简单。使用detectAndDsiplay ( ) 函 数 来 查 找 并 显 示 人 脸 。detectAndDsiplay 函数中,使用detectMultiScale()函数来查找正脸与侧脸。图10 为“指定跟随”功能识别特定使用者正脸和侧脸的截图。将“指定跟随”整合到树莓派B 上,再结合步进电机及其驱动,可以在一定误差范围和一定速度内完成对使用者的跟踪。

图10 “指定跟随”识别人脸截图

3.3 树莓派A 和树莓派B 的通讯

图11 为树莓派A 和树莓派B 的通讯截图。

图11 树莓派A 和树莓派B 的通讯截图

利用Socket 可以实现安卓和Linux 在同一个局域网下相互通讯,从而将树莓派A 和树莓派B 通过无线的方式联系起来,从外围将两部分整合为一体。

通过对三大功能在树莓派平台上的测试,结合树莓派A和树莓派B 之间通讯的尝试,证明了通过本文中描述的方法可以解决2 个或者多个系统同时运作条件下,不同系统之间工作的分散性和统一性的合理配置问题。同时,通过对各项功能的调整整合,可以实现多个功能合理结合在同一个系统环境中,并构成统一的整体。

4 结束语

本项目的灵感来自于互联网+浪潮的推动,针对普通陪伴机器人功能较单一,多功能机器人功能整合复杂困难的特点,设计了一种整合方式,达到方便、简单、低成本的要求。本文重点针对“语音交互”“指定跟随”“全伪息成像”这三个功能进行整合,并结合实际制作过程中的关键点进行分析,形成了一个具体的整体系统。该系统在实现三大功能结合的同时,也针对功能的统一性和独立性进行了诸多调整,有着普遍性和特殊性。

猜你喜欢
树莓全息安卓
iPhone不卡的秘密曝光:安卓也能享受
全息? 全息投影? 傻傻分不清楚
全息“魔镜”在身边
文物表情包
安卓系统或成智能汽车标配
手机看三维全息影像有望成现实
黄金水果红树莓
树莓红了 游人醉了
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)