基于树莓派的智能家居机器人i-mirror设计
扫描二维码
随时随地手机看文章
引 言
随着物联网的不断发展,各种家用电器逐渐实现了智能化[1],但是生活中最常见的镜子还处于比较初级的状态。2012 年,日本科技展示会上出现了一面基于安卓系统的智能镜,除了可以显示日常的天气、人体体重等信息,还可感知用户的手势操作,可以说是智能镜的“鼻祖”[2] ;2017 年 8 月美国纽约一个团队研制出的智能镜 Eve 采用了完全可定制的交互式触控屏幕,拥有自己的应用商店,可以作为智能家居的控制中枢, 实现多种家居控制功能 ;国内近几年也出现了功能繁多、应用场景多样的智能镜 [3]。针对智能镜的研究一直在进行,但其普及率却不高,主要原因是成本较高、功能的针对性不够以及智能镜与整体智能家居的融合度不高 [4]。
本文针对以上问题,构思并设计了基于树莓派的智能家居机器人 i-mirror。利用单向镜成像原理,通过互联网实现通信和控制,加入语音识别、人脸识别等技术,实现智能家居智慧生活的目的。
1 系统的总体框架和功能
本文根据实际应用情况,设计出一种适用于多种场合、具备常用智能家居功能、通过人脸识别技术增加安全系数的智能家居机器人 i-mirror,它采用树莓派作为控制处理中心以满足多功能的实现和信号处理。树莓派外接成像控制、唤醒触控、语音转换、图像摄取等模块以及内置人像处理识别、语音识别交互等程序,使智能镜具有信息显示、语音交互、人体感知、智能安防、休闲娱乐等功能。智能镜工作原理如图1 所示。
2 系统的硬件设计
本文系统的硬件由单面镜、红外感应框、显示屏、驱动板、红外感应器、树莓派开发板、麦克风、摄像头及继电器等组成, 构成如图 2 所示。
2.1 成像控制模块
智能镜的成像控制系统主要由单向镜、驱动板、显示屏、红外框等组成。成像控制系统是智能镜显示和人机交互的基础系统 [5]。在保留镜子本身成像特性的情况下可以显示包括天气、新闻等由互联网获得的日常信息。并通过网络连接可通过用户的手机进行同步备忘录、更改提词板内容、监控镜前镜像, 甚至通过触摸交互控制连入网络的智能家居,实现在镜前自拍、翻阅家庭内置照片等功能。成像控制系统主要依托显示技术,在家居镜子上呈现出用户想要获得的信息和操控单元。
2.2 触控模块
为解决最基本的触控交互问题,本文系统采用外加红外框的方式实现。红外框通过 USB端口可直接与树莓派相连。其主要工作方式是在红外框内部构建红外网络,通过触控物体遮挡网络的某一点确定预期触控位置,从而达到触控交互的目的 [6]。优势在于这种交互问题解决方式对镜面无更高要求,价格便宜,只需在连接红外框后进行相关定位调试即可, 开发成本低,有利于在现有的镜面基础上进行开发而无需重新进行相关设计。同时,相较于电容电阻屏幕触控,该方式对于用户的触控端没有过高要求,可以满足潮湿手指、非导体触控棒、任意细棒形状物体等不被电容电阻屏识别的物体对i-mirror进行触控。
2.3 自动唤醒模块
智能家居最根本的要求是节能。智能镜也应立足于原有镜子的价格成本等优势进行发展,因此 i-mirror 外接自动红外唤醒模块,只有当用户走近时才会唤醒其智能功能,其余时间只是一块普通的镜子,以节省家庭用电成本。
3 系统的软件设计
3.1 整体设计流程
在进行软件设计前要对开发平台进行相关的准备工作。具体工作为 :准备一张 2GB以上的 SD卡(建议选用高速卡, 推荐 Class4以上的卡),卡的速度将直接影响树莓派的运行速度 ;下载树莓派 Debian系统镜像文件 ;配置 SD卡,连接操作键盘鼠标、电源线、HDMI线等硬件设备 [7]。
由于在日常家居生活中,智能家居系统的各部分工作都相对独立,所以在本文系统中采用模块化设计 [8]。软件设计主要涉及人像处理与识别、语音处理与交互、网络连接、外设控制、信息显示等模块设计。整体设计流程如图 3所示。
3.2 语音处理与交互
目前,云计算的发展使得较多终端设备的交互可通过云计算的方式高效准确地实现[9]。在语音交互部分,智能镜通过调用百度语音识别的应用程序编程接口完成对人类声音的语音识别。语音识别在云端进行,而语音处理部分在本地进行。该处理方式的优势为 :应答模式固定,用户可通过手机或 PC 机自主设定,便于控制 ;处理速度较传统语音识别更快 ;中心平台更安全,语音的闭源处理使得智慧镜在网络安全保护方面更具优势。
在语音交互的基础上,本文编程实现了语音控制。当监听到“开灯”或“关灯”的语音命令后,自动完成对电灯的开关操作。由于智能镜的开关也通过控制电器的电路,因此该声控命令可用于控制其他家电。同时,当监听到“放首歌”的语音命令后,自动对音乐库歌曲进行播放。由于采用了 Python 程序的线程工作机制,放歌的同时依旧可以使用语音识别功能而互不冲突,从而可使语音识别系统高效运转 [10]。
采用 Python 语言编写语音识别程序的步骤如下:
(1) 编写必要的语音库。包括储存播放语音内容的字符串数组,储存歌曲文件名的字符串数组等。
(2) 编写 Audiorecord函数完成对用户的录音工作。
(3) 编写语音识别 V2T函数,将录下的声音文件通过百度语音API提交得到返回值,即转换成文字。若 API返回的dict[u'err_no'] 为 0,则识别成功 ;若返回 dict[u'result'],则识别不成功,返回 'bad'。
(4) 根据返回的字符串结果进行关键字匹配,对满足条件的语音命令、主程序进行对应的操作。当关键字中含有“放首歌 XXX”的语音命令时,自动搜索歌曲库中的歌曲。若找到歌曲名为 XXX的歌曲,则开启一路线程播放歌曲,另一路线程继续进行语音识别工作 ;若未找到歌曲,则播放指定的语音提示。当关键字中含有“开 /关灯”的语音命令时,系统调用Python的GPIO库,读取并输出电位,实现开关继电器操作 ;当语音识别结果中含有其他关键字信息时,系统根据关键字匹配库播放指定的语音内容。
(5) 重复(1)的操作。
3.3 人脸识别
智能家居发展越迅速就越不能忽视安全问题 [11],针对一些必要的使用场合,智能镜添加了人脸识别功能。通过调用优图人脸识别的API,完成对用户的人脸识别操作。当智能镜前方无用户时,镜子保持在主界面 ;当智能镜前方较近距离出现用户时,自动开启人脸识别服务,镜子显示的内容跳转至人脸识别页面。系统自动将摄像头拍下的人物图片提交至优图人脸识别 API,人脸识别页面显示出人脸识别的结果。系统将结果与图片库内的图片进行比较,确认该人脸与图片库中人脸的匹配度。若匹配度高于设定值,则执行某一特定任务,如输出语音“主人回来了”或者打开重要的门锁 ;若匹配度低于设定值,则执行另一特定任务,如控制继电器导通激发报警器。当镜子前方较近距离再次无人时,智能镜重新跳转至主界面。
针对镜子的主要受众——女性,通过人脸识别与卷积神经网络技术为i-mirror增加化妆指导功能。在 i-mirror上训练好的人脸识别模型包括 20余种常见面部情况和 10余种脸部常见化妆情况。根据不同的识别结果,i-mirror给出相应的图片提示和化妆指导,同时语音播报化妆步骤。i-mirror形象指导完全在本地运行,不依赖任何联网或者设备互联。这意味着它不仅可以安放在家用大镜子上,还可以安放在女士的小化妆盒里, 方便随身携带,可随时随地给用户提供指导建议。日常生活中, 用户化妆的主要目的是遮盖毛孔、雀斑、痘印、黑眼圈等各类面部问题。本文挑选了几千张人脸图片,通过 R-CNN完成在人脸图像中可能出现的雀斑、痘印等各种对象的分类和检测。模型的训练时长约 10h,迭代训练 2万次,最终在测试集上达到的平均检测准确率约为 93%。根据分类检测结果,i-mirror将提供不同的化妆指导建议。另外,i-mirror还可根据用户的面部识别结果,判断用户的情绪表现,做出更有效的答复。
4 结 语
智能镜作为智能家居的控制平台,相当于为用户在操作与体验方面提供了一个物理终端,同时在不额外增加家具设备的前提下高效、智能地为用户提供高品质生活。由于智能镜本身不含有机电系统,故外接控制系统开发简单,且成本较低。总体来说,本文提出的智能镜在开发、应用等方面都为智能家
居提供了一个中心平台解决方案。基于该理念和设计原理实现的“智能镜”作品,在 2018 年首届中国高校智能机器人创意大赛中获得了创意组“一等奖”。