李澤宇,李 鑫,舒文杰,王 琛,郭鐵峰
(合肥工業(yè)大學(xué) 電氣與自動(dòng)化工程學(xué)院,安徽 合肥 230009)
陪伴機(jī)器人具有多方面、多功能的特點(diǎn),然而國(guó)內(nèi)的陪伴類機(jī)器人主要著眼于兒童的早教,一般只考慮兒童對(duì)話能力的培養(yǎng),所以常常只具有“人機(jī)交互”的功能。同時(shí),陪伴機(jī)器人要實(shí)現(xiàn)多方面、多功能的特點(diǎn),就需要對(duì)“人機(jī)交互”“虛擬成像”“指定跟隨”等多種功能進(jìn)行整合[1]。一般來說,“人機(jī)交互”為了對(duì)話的準(zhǔn)確、可靠和開源性,會(huì)使用安卓系統(tǒng)作為平臺(tái)支持,而“指定跟隨”等其他功能強(qiáng)調(diào)快速性就會(huì)使用其他獨(dú)立的系統(tǒng)進(jìn)行處理??紤]到運(yùn)行速度、成本、維護(hù)等多方面因素,最終導(dǎo)致在多種功能的整合過程中會(huì)出現(xiàn)如下的2 個(gè)問題:①不同的功能需要的系統(tǒng)環(huán)境可能不盡相同,因此存在兩個(gè)或者多個(gè)系統(tǒng)同時(shí)運(yùn)作的情況。所以不同系統(tǒng)之間,工作的分散性和統(tǒng)一性的合理設(shè)計(jì)就顯得尤為重要。②對(duì)于所需系統(tǒng)環(huán)境相似的多個(gè)功能,如何將多個(gè)功能合理地結(jié)合在同一個(gè)系統(tǒng)環(huán)境中,并構(gòu)成統(tǒng)一的整體也是整合過程中必須考慮的問題。本文從硬件平臺(tái)選擇入手,針對(duì)不同的功能使用不同操作系統(tǒng)而產(chǎn)生沖突的問題和同一系統(tǒng)所搭載不同功能而產(chǎn)生的合并問題,對(duì)多種功能進(jìn)行軟件和硬件方面的修改,以實(shí)現(xiàn)在同一種硬件平臺(tái)上利用不同的系統(tǒng)實(shí)現(xiàn)不同的功能,再通過通信手段將它們聯(lián)系在一起,形成一個(gè)整體,實(shí)現(xiàn)整合的目的。
陪伴機(jī)器人采用多模塊、多層次的結(jié)構(gòu),本文介紹以“人機(jī)交互”“虛擬成像”“指定跟隨”為主要的三個(gè)功能的整合方法?!叭藱C(jī)交互”是指使用者和機(jī)器人之間可以進(jìn)行較為復(fù)雜的對(duì)話,采用安卓系統(tǒng)作為軟件平臺(tái),結(jié)合訊飛開源平臺(tái)的方式實(shí)現(xiàn)?!疤摂M成像”是指借助全息投影的相關(guān)技術(shù),在使用者的面前呈現(xiàn)出逼真的3D 幻像,給使用者真實(shí)的體驗(yàn)感,采用安卓系統(tǒng)作為軟件平臺(tái),結(jié)合全息投影的方式實(shí)現(xiàn)。
“指定跟隨”是指機(jī)器人自主對(duì)使用者的面部圖像進(jìn)行捕捉,通過分析處理后控制電機(jī)正反轉(zhuǎn)來實(shí)現(xiàn)以恒定的方向面對(duì)使用者,增加了機(jī)器人的活動(dòng)性,為全息顯示提供合適角度。由于該功能需要對(duì)實(shí)際物理設(shè)施進(jìn)行實(shí)時(shí)控制,對(duì)快速性和準(zhǔn)確性有著一定的要求,因此采用Linux 系統(tǒng)結(jié)合OPENCV 來分析處理實(shí)時(shí)圖像,并利用處理后的結(jié)果直接控制相關(guān)硬件設(shè)備。
圖1 為整體硬件結(jié)構(gòu)圖,其中,由于上述功能需要的系統(tǒng)環(huán)境不盡相同,因此存在兩個(gè)系統(tǒng)(安卓系統(tǒng)和Linux 系統(tǒng))同時(shí)運(yùn)作的情況。系統(tǒng)之間的工作分配、通訊的設(shè)計(jì)對(duì)功能運(yùn)行的高效性和整合性就很重要。同時(shí),對(duì)于所需系統(tǒng)環(huán)境相似的兩個(gè)功能(“人機(jī)交互”和“虛擬成像”),就需要將這兩個(gè)功能合理地結(jié)合在同一個(gè)系統(tǒng)環(huán)境中并構(gòu)成統(tǒng)一的整體。針對(duì)上述這兩個(gè)問題,本文將設(shè)計(jì)方法解決,并實(shí)現(xiàn)最終整合的要求。
由于需要基于兩個(gè)軟件系統(tǒng)將三個(gè)功能整合,形成一個(gè)完整、和諧的整體,因此需要依據(jù)硬件對(duì)每個(gè)功能進(jìn)行針對(duì)性的軟件設(shè)計(jì)和硬件改變。
硬件平臺(tái)選擇:Raspberry Pi3,簡(jiǎn)稱為樹莓派3,是樹莓派系列第三代產(chǎn)品。它是一款基于ARM 架構(gòu)的微型電腦主板,以SD/MicroSD 卡位內(nèi)存硬盤,其可以通過改變卡中所燒寫的系統(tǒng)來實(shí)現(xiàn)不同系統(tǒng)的運(yùn)行。而其主板周圍有4 個(gè)USB 接口和一個(gè)10/100 以太網(wǎng)接口,可以連接相關(guān)的外設(shè)。其擁有視頻模擬信號(hào)的電視輸出接口和HDMI 高清視頻輸出接口,同時(shí)內(nèi)置WiFi、藍(lán)牙等多種模塊[2]。
基于樹莓派3 的這些硬件可以實(shí)現(xiàn)運(yùn)行不同系統(tǒng)、設(shè)計(jì)編寫程序、應(yīng)用不同外設(shè)等功能,因此使用樹莓派3 作為基礎(chǔ)硬件平臺(tái)可以有針對(duì)性地解決整合過程中的問題。本文將介紹使用兩塊樹莓派3 開發(fā)板(樹莓派A 和樹莓派B)作為硬件平臺(tái)并進(jìn)行整合的方法。
將樹莓派A 設(shè)置為“人機(jī)交互”和“虛擬成像”兩大功能的實(shí)現(xiàn)平臺(tái),針對(duì)兩個(gè)功能所需要的相關(guān)軟、硬件條件對(duì)樹莓派A 進(jìn)行修改:①在MicroSD 卡中移植并燒寫安卓7.0系統(tǒng);②利用樹莓派A 自帶的WiFi、藍(lán)牙模塊鏈接互聯(lián)網(wǎng)并對(duì)局域網(wǎng)進(jìn)行設(shè)置;③利用樹莓派A 自帶的USB 接口鏈接麥克風(fēng)模塊、無(wú)線控制器、U 盤等;④使用HDMI 接口將樹莓派A 與顯示屏相連接,并放置投影用全息膜。
在硬件條件設(shè)置完畢后,重新設(shè)計(jì)編寫軟件程序,將“人機(jī)交互”“虛擬成像”兩大功能移植適配到樹莓派A 上。
2.1.1 人機(jī)交互功能
2.1.1.1 硬件方面
由樹莓派A 連接的麥克風(fēng)模塊采集使用者的語(yǔ)音,并將數(shù)據(jù)傳送給樹莓派A。數(shù)據(jù)經(jīng)過樹莓派A 內(nèi)部安卓程序的處理后,由樹莓派A 內(nèi)置的WiFi 模塊經(jīng)過互聯(lián)網(wǎng)傳輸給科大訊飛開源的語(yǔ)音技術(shù)平臺(tái),實(shí)現(xiàn)樹莓派A 與互聯(lián)網(wǎng)的鏈接與數(shù)據(jù)交換和傳送GPS 坐標(biāo)的功能,并從網(wǎng)絡(luò)平臺(tái)處獲取反饋數(shù)據(jù),傳送回樹莓派A[3]。其中的安卓程序?qū)Ψ答佇畔⑦M(jìn)行識(shí)別、處理、篩選后,將需要播放的語(yǔ)音信息傳送給樹莓派A 連接的揚(yáng)聲器,播放針對(duì)使用者所提問的語(yǔ)音回答[3]。圖2 為人機(jī)交互功能結(jié)構(gòu)框圖。
圖1 整體硬件設(shè)計(jì)圖
圖2 人機(jī)交互結(jié)構(gòu)框圖
2.1.1.2 軟件方面
借助科大訊飛所提供的開源的語(yǔ)音技術(shù)平臺(tái),在安卓系統(tǒng)平臺(tái)的基礎(chǔ)上利用Android Studio 等集成的安卓開發(fā)工具使用JAVA 編寫APK,實(shí)現(xiàn)對(duì)使用者語(yǔ)音的捕捉、轉(zhuǎn)化成字符、傳輸至服務(wù)器處理、接收處理反饋的結(jié)果、對(duì)反饋的字符篩選最后轉(zhuǎn)成語(yǔ)音播放的功能[4],針對(duì)某些特定的關(guān)鍵字在識(shí)別后會(huì)通過Socket 通信基于局域網(wǎng)和TCP/IP 的協(xié)議發(fā)送至另一塊搭載Linux 系統(tǒng)的樹莓派并作出響應(yīng)。圖3 為人機(jī)交互功能的流程圖。
2.1.2 虛擬成像功能
全息投影技術(shù)也稱虛擬成像技術(shù),是利用干涉和衍射原理記錄并再現(xiàn)物體真實(shí)三維圖像的技術(shù)。本文中使用的全息膜實(shí)現(xiàn)在無(wú)論光源是否充足的情況下,都能透過正面直接觀看影像。這種投影的方式使用特殊的屏幕,屏幕本身近乎透明,但是卻可以相當(dāng)清晰地表現(xiàn)出投影內(nèi)容。在光源和圖形控制得當(dāng)并且觀看角度固定時(shí),可以有亂真的立體效果。
2.1.2.1 硬件方面
圖4 為投影原理圖。要實(shí)現(xiàn)全息投影(全息投影膜)的合理使用,全息投影膜必須包含以下幾個(gè)部分:光源、鏡面圖像、全息投影膜和相關(guān)的角度[5]。全息投影的光源部分以樹莓派A 為平臺(tái),并利用HDMI 接口與賽擎7 寸顯示屏相連接,顯示屏中的圖像作為全息投影的光源。結(jié)合45°反射原理,將上方顯示屏的圖像反射到使用者面前,同時(shí)使全息投影膜后方的光損耗較小,透過膜達(dá)到使用者面前,兩束光結(jié)合給予人視覺上的錯(cuò)覺。
2.1.2.2 軟件方面
全息投影功能的軟件部分以樹莓派A 為平臺(tái),并對(duì)樹莓派A 中編寫的安卓程序添加Vedioview 功能,來播放和切換由Mikumikudance 制作的動(dòng)畫[5]。通過上述方法,可以將“人機(jī)交互”“虛擬成像”兩個(gè)功能在安卓平臺(tái)的基礎(chǔ)上整合于樹莓派A 中。
圖3 人機(jī)交互流程圖
圖4 投影原理圖
本文中將樹莓派B 設(shè)置為“指定跟隨”功能的實(shí)現(xiàn)平臺(tái),針對(duì)樹莓派B 所提供的相關(guān)軟硬件條件對(duì)該功能進(jìn)行修改,使其適配到樹莓派B 上。
2.2.1 硬件方面
圖5 為硬件結(jié)構(gòu)框圖。
圖5 硬件結(jié)構(gòu)框圖
“指定跟隨”功能使用樹莓派3 開發(fā)板作為基礎(chǔ)硬件平臺(tái),內(nèi)部安裝的是Linux 系統(tǒng)。給定值由樹莓派進(jìn)行程序給定。為了能讓人臉對(duì)著攝像頭,因此將圖像的x 坐標(biāo)(橫坐標(biāo))的中心值作為給定值??紤]到在實(shí)際中容易出現(xiàn)震動(dòng)情況,因此給定值設(shè)置一個(gè)死區(qū)范圍[7-8]。
Risym 攝像頭擴(kuò)展模塊通過插線與樹莓派B 連接,使用樹莓派B 的庫(kù)函數(shù)來調(diào)動(dòng)攝像頭工作,其采集到的圖像作為反饋信號(hào)反饋給樹莓派B 控制器。樹莓派B 處理后將相關(guān)的信號(hào)從相對(duì)應(yīng)的輸出I/O 口傳輸?shù)疆惒诫姍C(jī)配套的驅(qū)動(dòng)器,帶動(dòng)異步電機(jī)旋轉(zhuǎn)至合適位置后停止。
2.2.2 軟件方面
借助圖像識(shí)別的技術(shù),通過在樹莓派B 上安裝的攝像頭采集使用者的面部信息,并利用OpenCV 所集成好的人臉識(shí)別算法對(duì)圖像中的人臉進(jìn)行分析。利用相關(guān)的像素矩陣將圖像轉(zhuǎn)化為一維向量,再利用detectAndDisplay(frame)和detecMultiScale(...)指令對(duì)圖像中的人臉進(jìn)行識(shí)別,實(shí)現(xiàn)對(duì)使用者的特定追蹤,并獲得人臉在圖像中的區(qū)域范圍[7]。通過OPENCV 庫(kù)、樹莓派硬件控制庫(kù)WiringPi.h 來控制樹莓派的引腳,輸出相應(yīng)的調(diào)節(jié)信號(hào)控制電機(jī)的正反轉(zhuǎn)和輸出脈沖波的頻率,從而在驅(qū)動(dòng)的協(xié)助下實(shí)現(xiàn)異步電機(jī)的旋轉(zhuǎn),改變機(jī)器自身的狀態(tài)(角度)并結(jié)合反饋閉環(huán)、誤差分析處理等方式,保證一直正面面對(duì)使用者,實(shí)現(xiàn)“指定跟隨”功能在樹莓派B 上的應(yīng)用。圖6 為“指定跟隨”工作流程圖。
通過上述方法即可將“指定跟隨”功能整合在以Linux 平臺(tái)為基礎(chǔ)的樹莓派B 上。
在整體架構(gòu)中,每個(gè)部分之間應(yīng)當(dāng)存在通信關(guān)系。針對(duì)樹莓派A 的安卓系統(tǒng)和樹莓派B 的Linux 系統(tǒng),本文中采用Socket 通信借助TCP/IP 協(xié)議實(shí)現(xiàn)Android(客戶端)與Linux(服務(wù)器端)在同一局域網(wǎng)下進(jìn)行數(shù)據(jù)通信,并實(shí)現(xiàn)相關(guān)功能的控制。通過上述方法可將樹莓派A 和樹莓派B通過局域網(wǎng)聯(lián)系在一起,相互通訊。實(shí)現(xiàn)不同系統(tǒng)之間相互協(xié)調(diào),從而構(gòu)成整體。
根據(jù)上文所述的設(shè)計(jì)方案,對(duì)實(shí)驗(yàn)產(chǎn)品的各項(xiàng)功能進(jìn)行測(cè)試、分析后得出以下結(jié)果。
在樹莓派A 上搭載安卓系統(tǒng),實(shí)現(xiàn)“人機(jī)交互”和“虛擬成像”功能的整合。對(duì)于各功能測(cè)試結(jié)果如下。
3.1.1 人機(jī)交互部分
人機(jī)交互部主要進(jìn)程由語(yǔ)音輸入,語(yǔ)音識(shí)別,語(yǔ)義理解、發(fā)送、接收,語(yǔ)音合成,語(yǔ)音輸出組成。而檢測(cè)部分由語(yǔ)音效果監(jiān)測(cè)程序代替。顯示界面的編寫在Android Studio 中的AndroidManifest 中完成,且需要針全息投影的特點(diǎn)編寫。圖7 為人機(jī)交互界面截圖。
3.1.2 虛擬成像部分
在AndroidStudio 中使用JAVA 語(yǔ)言對(duì)源程序進(jìn)行Vedioview 功能的編寫。使用myVideoView = (VideoView)findViewById(R.id.videoView); final String videoPath =Uri.parse("android.resource://" + getPackageName() + "/"+R.raw.y_x264).toString();來調(diào)用在MikuMikuDance 中制作的動(dòng)畫。使用setOnPreparedListener((mp))進(jìn)行監(jiān)聽,使用mp.setLooping(true)實(shí)現(xiàn)循環(huán)播放。圖8 為動(dòng)畫截圖,圖9 為虛擬成像原理測(cè)試機(jī)實(shí)物照片。
圖6 “指定跟隨”工作流程圖
圖7 人機(jī)交互界面截圖
圖8 “虛擬成像”動(dòng)畫截圖
圖9 “虛擬成像”原理機(jī)實(shí)物照片
3.1.3 分析
樹莓派A 成功地實(shí)現(xiàn)了將“人機(jī)交互”和“虛擬成像”功能相結(jié)合,完成了同一系統(tǒng)條件下不同功能相整合的目的。
樹莓派B 上搭載安卓系統(tǒng),實(shí)現(xiàn)“指定跟隨”功能。對(duì)于該功能測(cè)試結(jié)果如下:使用O P E N C V 官方給出的haarcascade_frontalface_alt.xml 與haarcascade_profileface_alt.xml 的聯(lián)級(jí)分類器,使得識(shí)別方式很簡(jiǎn)單。使用detectAndDsiplay ( ) 函 數(shù) 來 查 找 并 顯 示 人 臉 。detectAndDsiplay 函數(shù)中,使用detectMultiScale()函數(shù)來查找正臉與側(cè)臉。圖10 為“指定跟隨”功能識(shí)別特定使用者正臉和側(cè)臉的截圖。將“指定跟隨”整合到樹莓派B 上,再結(jié)合步進(jìn)電機(jī)及其驅(qū)動(dòng),可以在一定誤差范圍和一定速度內(nèi)完成對(duì)使用者的跟蹤。
圖10 “指定跟隨”識(shí)別人臉截圖
圖11 為樹莓派A 和樹莓派B 的通訊截圖。
圖11 樹莓派A 和樹莓派B 的通訊截圖
利用Socket 可以實(shí)現(xiàn)安卓和Linux 在同一個(gè)局域網(wǎng)下相互通訊,從而將樹莓派A 和樹莓派B 通過無(wú)線的方式聯(lián)系起來,從外圍將兩部分整合為一體。
通過對(duì)三大功能在樹莓派平臺(tái)上的測(cè)試,結(jié)合樹莓派A和樹莓派B 之間通訊的嘗試,證明了通過本文中描述的方法可以解決2 個(gè)或者多個(gè)系統(tǒng)同時(shí)運(yùn)作條件下,不同系統(tǒng)之間工作的分散性和統(tǒng)一性的合理配置問題。同時(shí),通過對(duì)各項(xiàng)功能的調(diào)整整合,可以實(shí)現(xiàn)多個(gè)功能合理結(jié)合在同一個(gè)系統(tǒng)環(huán)境中,并構(gòu)成統(tǒng)一的整體。
本項(xiàng)目的靈感來自于互聯(lián)網(wǎng)+浪潮的推動(dòng),針對(duì)普通陪伴機(jī)器人功能較單一,多功能機(jī)器人功能整合復(fù)雜困難的特點(diǎn),設(shè)計(jì)了一種整合方式,達(dá)到方便、簡(jiǎn)單、低成本的要求。本文重點(diǎn)針對(duì)“語(yǔ)音交互”“指定跟隨”“全偽息成像”這三個(gè)功能進(jìn)行整合,并結(jié)合實(shí)際制作過程中的關(guān)鍵點(diǎn)進(jìn)行分析,形成了一個(gè)具體的整體系統(tǒng)。該系統(tǒng)在實(shí)現(xiàn)三大功能結(jié)合的同時(shí),也針對(duì)功能的統(tǒng)一性和獨(dú)立性進(jìn)行了諸多調(diào)整,有著普遍性和特殊性。