李澤宇,李 鑫,舒文杰,王 琛,郭鐵峰
(合肥工業(yè)大學 電氣與自動化工程學院,安徽 合肥 230009)
陪伴機器人具有多方面、多功能的特點,然而國內的陪伴類機器人主要著眼于兒童的早教,一般只考慮兒童對話能力的培養(yǎng),所以常常只具有“人機交互”的功能。同時,陪伴機器人要實現多方面、多功能的特點,就需要對“人機交互”“虛擬成像”“指定跟隨”等多種功能進行整合[1]。一般來說,“人機交互”為了對話的準確、可靠和開源性,會使用安卓系統(tǒng)作為平臺支持,而“指定跟隨”等其他功能強調快速性就會使用其他獨立的系統(tǒng)進行處理??紤]到運行速度、成本、維護等多方面因素,最終導致在多種功能的整合過程中會出現如下的2 個問題:①不同的功能需要的系統(tǒng)環(huán)境可能不盡相同,因此存在兩個或者多個系統(tǒng)同時運作的情況。所以不同系統(tǒng)之間,工作的分散性和統(tǒng)一性的合理設計就顯得尤為重要。②對于所需系統(tǒng)環(huán)境相似的多個功能,如何將多個功能合理地結合在同一個系統(tǒng)環(huán)境中,并構成統(tǒng)一的整體也是整合過程中必須考慮的問題。本文從硬件平臺選擇入手,針對不同的功能使用不同操作系統(tǒng)而產生沖突的問題和同一系統(tǒng)所搭載不同功能而產生的合并問題,對多種功能進行軟件和硬件方面的修改,以實現在同一種硬件平臺上利用不同的系統(tǒng)實現不同的功能,再通過通信手段將它們聯系在一起,形成一個整體,實現整合的目的。
陪伴機器人采用多模塊、多層次的結構,本文介紹以“人機交互”“虛擬成像”“指定跟隨”為主要的三個功能的整合方法?!叭藱C交互”是指使用者和機器人之間可以進行較為復雜的對話,采用安卓系統(tǒng)作為軟件平臺,結合訊飛開源平臺的方式實現?!疤摂M成像”是指借助全息投影的相關技術,在使用者的面前呈現出逼真的3D 幻像,給使用者真實的體驗感,采用安卓系統(tǒng)作為軟件平臺,結合全息投影的方式實現。
“指定跟隨”是指機器人自主對使用者的面部圖像進行捕捉,通過分析處理后控制電機正反轉來實現以恒定的方向面對使用者,增加了機器人的活動性,為全息顯示提供合適角度。由于該功能需要對實際物理設施進行實時控制,對快速性和準確性有著一定的要求,因此采用Linux 系統(tǒng)結合OPENCV 來分析處理實時圖像,并利用處理后的結果直接控制相關硬件設備。
圖1 為整體硬件結構圖,其中,由于上述功能需要的系統(tǒng)環(huán)境不盡相同,因此存在兩個系統(tǒng)(安卓系統(tǒng)和Linux 系統(tǒng))同時運作的情況。系統(tǒng)之間的工作分配、通訊的設計對功能運行的高效性和整合性就很重要。同時,對于所需系統(tǒng)環(huán)境相似的兩個功能(“人機交互”和“虛擬成像”),就需要將這兩個功能合理地結合在同一個系統(tǒng)環(huán)境中并構成統(tǒng)一的整體。針對上述這兩個問題,本文將設計方法解決,并實現最終整合的要求。
由于需要基于兩個軟件系統(tǒng)將三個功能整合,形成一個完整、和諧的整體,因此需要依據硬件對每個功能進行針對性的軟件設計和硬件改變。
硬件平臺選擇:Raspberry Pi3,簡稱為樹莓派3,是樹莓派系列第三代產品。它是一款基于ARM 架構的微型電腦主板,以SD/MicroSD 卡位內存硬盤,其可以通過改變卡中所燒寫的系統(tǒng)來實現不同系統(tǒng)的運行。而其主板周圍有4 個USB 接口和一個10/100 以太網接口,可以連接相關的外設。其擁有視頻模擬信號的電視輸出接口和HDMI 高清視頻輸出接口,同時內置WiFi、藍牙等多種模塊[2]。
基于樹莓派3 的這些硬件可以實現運行不同系統(tǒng)、設計編寫程序、應用不同外設等功能,因此使用樹莓派3 作為基礎硬件平臺可以有針對性地解決整合過程中的問題。本文將介紹使用兩塊樹莓派3 開發(fā)板(樹莓派A 和樹莓派B)作為硬件平臺并進行整合的方法。
將樹莓派A 設置為“人機交互”和“虛擬成像”兩大功能的實現平臺,針對兩個功能所需要的相關軟、硬件條件對樹莓派A 進行修改:①在MicroSD 卡中移植并燒寫安卓7.0系統(tǒng);②利用樹莓派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 軟件方面
借助科大訊飛所提供的開源的語音技術平臺,在安卓系統(tǒng)平臺的基礎上利用Android Studio 等集成的安卓開發(fā)工具使用JAVA 編寫APK,實現對使用者語音的捕捉、轉化成字符、傳輸至服務器處理、接收處理反饋的結果、對反饋的字符篩選最后轉成語音播放的功能[4],針對某些特定的關鍵字在識別后會通過Socket 通信基于局域網和TCP/IP 的協(xié)議發(fā)送至另一塊搭載Linux 系統(tǒng)的樹莓派并作出響應。圖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 投影原理圖
本文中將樹莓派B 設置為“指定跟隨”功能的實現平臺,針對樹莓派B 所提供的相關軟硬件條件對該功能進行修改,使其適配到樹莓派B 上。
2.2.1 硬件方面
圖5 為硬件結構框圖。
圖5 硬件結構框圖
“指定跟隨”功能使用樹莓派3 開發(fā)板作為基礎硬件平臺,內部安裝的是Linux 系統(tǒng)。給定值由樹莓派進行程序給定。為了能讓人臉對著攝像頭,因此將圖像的x 坐標(橫坐標)的中心值作為給定值??紤]到在實際中容易出現震動情況,因此給定值設置一個死區(qū)范圍[7-8]。
Risym 攝像頭擴展模塊通過插線與樹莓派B 連接,使用樹莓派B 的庫函數來調動攝像頭工作,其采集到的圖像作為反饋信號反饋給樹莓派B 控制器。樹莓派B 處理后將相關的信號從相對應的輸出I/O 口傳輸到異步電機配套的驅動器,帶動異步電機旋轉至合適位置后停止。
2.2.2 軟件方面
借助圖像識別的技術,通過在樹莓派B 上安裝的攝像頭采集使用者的面部信息,并利用OpenCV 所集成好的人臉識別算法對圖像中的人臉進行分析。利用相關的像素矩陣將圖像轉化為一維向量,再利用detectAndDisplay(frame)和detecMultiScale(...)指令對圖像中的人臉進行識別,實現對使用者的特定追蹤,并獲得人臉在圖像中的區(qū)域范圍[7]。通過OPENCV 庫、樹莓派硬件控制庫WiringPi.h 來控制樹莓派的引腳,輸出相應的調節(jié)信號控制電機的正反轉和輸出脈沖波的頻率,從而在驅動的協(xié)助下實現異步電機的旋轉,改變機器自身的狀態(tài)(角度)并結合反饋閉環(huán)、誤差分析處理等方式,保證一直正面面對使用者,實現“指定跟隨”功能在樹莓派B 上的應用。圖6 為“指定跟隨”工作流程圖。
通過上述方法即可將“指定跟隨”功能整合在以Linux 平臺為基礎的樹莓派B 上。
在整體架構中,每個部分之間應當存在通信關系。針對樹莓派A 的安卓系統(tǒng)和樹莓派B 的Linux 系統(tǒng),本文中采用Socket 通信借助TCP/IP 協(xié)議實現Android(客戶端)與Linux(服務器端)在同一局域網下進行數據通信,并實現相關功能的控制。通過上述方法可將樹莓派A 和樹莓派B通過局域網聯系在一起,相互通訊。實現不同系統(tǒng)之間相互協(xié)調,從而構成整體。
根據上文所述的設計方案,對實驗產品的各項功能進行測試、分析后得出以下結果。
在樹莓派A 上搭載安卓系統(tǒng),實現“人機交互”和“虛擬成像”功能的整合。對于各功能測試結果如下。
3.1.1 人機交互部分
人機交互部主要進程由語音輸入,語音識別,語義理解、發(fā)送、接收,語音合成,語音輸出組成。而檢測部分由語音效果監(jiān)測程序代替。顯示界面的編寫在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))進行監(jiān)聽,使用mp.setLooping(true)實現循環(huán)播放。圖8 為動畫截圖,圖9 為虛擬成像原理測試機實物照片。
圖6 “指定跟隨”工作流程圖
圖7 人機交互界面截圖
圖8 “虛擬成像”動畫截圖
圖9 “虛擬成像”原理機實物照片
3.1.3 分析
樹莓派A 成功地實現了將“人機交互”和“虛擬成像”功能相結合,完成了同一系統(tǒng)條件下不同功能相整合的目的。
樹莓派B 上搭載安卓系統(tǒng),實現“指定跟隨”功能。對于該功能測試結果如下:使用O P E N C V 官方給出的haarcascade_frontalface_alt.xml 與haarcascade_profileface_alt.xml 的聯級分類器,使得識別方式很簡單。使用detectAndDsiplay ( ) 函 數 來 查 找 并 顯 示 人 臉 。detectAndDsiplay 函數中,使用detectMultiScale()函數來查找正臉與側臉。圖10 為“指定跟隨”功能識別特定使用者正臉和側臉的截圖。將“指定跟隨”整合到樹莓派B 上,再結合步進電機及其驅動,可以在一定誤差范圍和一定速度內完成對使用者的跟蹤。
圖10 “指定跟隨”識別人臉截圖
圖11 為樹莓派A 和樹莓派B 的通訊截圖。
圖11 樹莓派A 和樹莓派B 的通訊截圖
利用Socket 可以實現安卓和Linux 在同一個局域網下相互通訊,從而將樹莓派A 和樹莓派B 通過無線的方式聯系起來,從外圍將兩部分整合為一體。
通過對三大功能在樹莓派平臺上的測試,結合樹莓派A和樹莓派B 之間通訊的嘗試,證明了通過本文中描述的方法可以解決2 個或者多個系統(tǒng)同時運作條件下,不同系統(tǒng)之間工作的分散性和統(tǒng)一性的合理配置問題。同時,通過對各項功能的調整整合,可以實現多個功能合理結合在同一個系統(tǒng)環(huán)境中,并構成統(tǒng)一的整體。
本項目的靈感來自于互聯網+浪潮的推動,針對普通陪伴機器人功能較單一,多功能機器人功能整合復雜困難的特點,設計了一種整合方式,達到方便、簡單、低成本的要求。本文重點針對“語音交互”“指定跟隨”“全偽息成像”這三個功能進行整合,并結合實際制作過程中的關鍵點進行分析,形成了一個具體的整體系統(tǒng)。該系統(tǒng)在實現三大功能結合的同時,也針對功能的統(tǒng)一性和獨立性進行了諸多調整,有著普遍性和特殊性。