李建勇,趙 靜,劉雪梅,李雪霞
(西北工業大學明德學院,陜西 西安710124)
隨著經濟發展和社會變革,越來越多的年輕人背井離鄉去較遠的地方工作,留下了留守兒童、空巢老人以及那些行動不便之人等[1-3]。 這些人往往得不到充分的陪伴而感到孤獨,長此以往將會對他們身體和心里造成很大影響,甚至出現個別自暴自棄以及自殺等情況[4-6]。雖然目前市場上已經出現了形式多樣的陪伴機器人[7],但是大部分都是兒童陪伴機器人,如科大訊飛的阿爾法蛋機器人、優必選的悟空機器人、物靈的盧卡機器人等,而且只有少部分功能比較強,如本田Asimo 和軟銀Pepper 等仿人機器人。 這些機器人要么偏重于兒童早教方面,要么缺乏對老人的陪伴,要么價格比較昂貴等。針對這些問題,本文設計了一種自主家庭陪伴機器人。
由于家庭陪伴中最需要的就是溝通和交流,而溝通和交流的主要方式是語言溝通和肢體語言,因而本文所設計的家庭陪伴機器人采用仿人型結構,通過機器語言進行人機自然語音交流以實現語言溝通,如語音聊天、語言互動、講故事和唱歌等;通過眼部表情和一雙仿人上肢進行肢體交流,如再見、打招呼和抓取東西等;通過UI 并利用機器視覺和網絡等功能實現其他的人機互動功能。
為實現以上功能,家庭陪伴機器人基于ROS 架構[8-11]進行設計,其架構如圖1 所示。 首先進行機器人本體設計并在其上安裝實現上述功能的各種傳感器、控制器和語音交互模塊等設備,然后搭載嵌入式計算機系統并以其為核心構建自主家庭陪伴機器人硬件系統,最后在OS系統上按照ROS 架構分層設計軟件以實現上述功能。

圖1 家庭陪伴機器人架構

圖2 家庭陪伴機器人實物
家庭陪伴機器人本體由頭部、上肢、軀體、下肢和移動底盤等組成,其身高140 cm,自重30 kg,其實物如圖2所示。 機器人的頭部、軀體和下肢采用一體成型塑料外殼設計,其尺寸為:240 mm×460 mm×1 200 mm。 其頭部安裝了眼睛表情屏、攝像頭和語音交互模塊等設備,軀體上安裝嵌入式計算機系統、觸摸屏和體感攝像頭等設備,下肢內部走線以使移動底盤和計算機系統相連接。機器人上肢參照人體上肢自由度分配和機器人軀體尺寸進行設計,包括仿人手臂和仿人機械手兩部分,其長度為450 mm。 左右仿人手臂各有5 個自由度(其中肩部3 個、肘部1 個和腕部1 個)的旋轉關節并分別由5 個直流伺服電機進行驅動,左右仿人機械手各采用1 個直流伺服電機進行驅動以實現握拳到伸掌以及相反過程的動作。 移動底盤為鋁合金材質,采用兩輪差分驅動的輪式結構,按照驅動輪在中間并在底板前后各安裝1 個萬向輪的布置方式使機器人重心處于中心位置,其尺寸為φ400×200 mm(H),離地間隙35 mm,自重20 kg,最大有效載荷30 kg。
家庭陪伴機器人硬件系統由嵌入式計算機系統、語音交互模塊、人機交互模塊、上肢控制模塊、移動控制模塊和電源等組成,其框圖如圖3 所示。

圖3 家庭陪伴機器人硬件系統框圖
由于所設計家庭陪伴機器人為自主機器, 需要計算機具有強大的運算和處理能力,因而嵌入式計算機系統采用NVIDIA 的嵌入式平臺開發者套件Jetson TX1。 Jetson TX1 是全球首款模塊化超級計算機,以革命性的NVIDIA Maxwell GPU 架構為基礎構建,提供每秒超過一萬億次浮點運算的性能,具有先進的3D 圖形、視頻和圖像處理以及機器視覺等能力,適用于一切自主機器的AI 平臺[12],完全滿足家庭陪伴機器人的需要。雖然Jetson TX1 接口比較豐富,但只有1 個USB 3.0 和1 個USB 2.0 接口, 因此采用USB HUB 對USB 3.0 接口進行擴展以滿足搭建硬件系統的需要。 另外由于Jetson TX1 只集成了16 GB eMMC,故采用三星120 GB 的SSD硬盤進行擴展。
語音交互模塊用來實現自然語言溝通,但由于Jetson TX1 沒有提供音頻輸入和輸出接口,因而采用迷你小音箱和360°全指向高靈敏拾音器以及外置聲卡組成語音交互模塊,并通過USB 接口與Jetson TX1 進行語音輸入和輸出。
人機交互模塊主要用來實現面部識別、體感交互和人機互動等功能。 在機器人頭部安裝1 個500 萬像素的高清攝像頭,不僅可用來實現面部識別,還可以當網絡攝像頭使用。 體感交互主要靠在機器人胸前安裝的Intel RealSense ZR300 來實現,其內置3D 實感相機、魚眼鏡頭和6IMU 等設備[13],可以使機器人進行SLAM 來創建室內3D 地圖、跟蹤家人和捕獲家中物體,以及識別家人身體手勢來進行肢體交流。人機互動除了語音交互和體感交互之外,還由安裝在頭部的5 英寸液晶屏和胸前的10.1 英寸觸摸屏來實現。 5 英寸液晶屏用來顯示機器人的眼睛表情,為其設計了15 種眼睛表情,如笑、哭、生氣和睡覺等,并由主機通過串口控制液晶屏來進行眼睛表情的變換;10.1 英寸觸摸屏采用2K 畫質帶電容觸摸的HDR 屏以滿足Jetson TX1 對顯示器的要求,通過它能為用戶提供非常美觀的UI 操作界面。
為了減少上肢各個關節與控制器之間的連線,各個關節都是采用ZX20D 串行總線舵機進行設計。 左右上肢各有6 個舵機,按順序串接在一起,并連接串行舵機控制器,然后經USB 接口與Jetson TX1 通信。 每個舵機都有固定地址,能提供最大20 kg·cm 扭矩,并支持角度回讀,通過串口指令能被Jetson TX1 精確控制來實現仿人的多種動作以進行肢體交流。
移動控制模塊主要由Arduino MEGA2560、12 V 大功率直流電機、直流電機驅動器、編碼器等構成閉環系統[14],采用500 線編碼器測機器人左右輪的移動速度,通過Arduino 進行PID 控制,使機器人不僅能精準移動還能向主控制器輸出機器人左右輪移動的速度、角度和里程等信息以定位機器人,并能使用6 個成環形分布的超聲波傳感器進行避障。 同時在底盤上安裝了RPLIDAR-A2激光雷達,結合ZR300 進行SLAM 和自主導航以及配合上肢實現肢體交流的動作。
整個家庭陪伴機器人采用裝在移動底盤內的12 V 10 000 mAh 大電流鋰電池供電,經12 V 轉19 V 大電流DC/DC 升壓模塊為Jetson TX1 供電,經12 V 轉6 V 大電流DC/DC 降壓模塊為上肢控制器供電,經12 V 轉5 V大電流DC/DC 降壓模塊為音箱、USB HUB、Arduino MEGA2560 等供電,同時分別經12 V 穩壓模塊為觸摸屏和電機驅動供電。
由于ROS 需要依托OS 系統,首先在Jetson TX1 刷機安裝Ubuntu16.04 OS 系統和CUDA 8.0,然后再安裝Kinetic 版本的ROS,接著按照家庭陪伴機器人的架構,利用ROS 提供的一些共享資源結合硬件系統來進行軟件分層設計。 ROS 是一個分布式框架,為用戶提供多節點(進程)之間的通信服務,所有軟件功能和工具都建立在這種分布式通信機制上[8-11]。 Jetson TX1 和外圍設備之間都是采用USB 進行連接,在OS 上安裝對應的驅動程序和ROS 需要的庫、功能包和相關依賴包之后,其所使用的通信機制、數據封裝和解析等都已確定,故中間層(通信層和接口層)幾乎不用改動,系統軟件設計的重點在于應用層(規劃層和交互層)的設計。 交互層是實現人機交互的接口,規劃層則是家庭陪伴機器人實現各種功能的核心,這些都是通過ROS 提供的功能包按照家庭陪伴機器人的硬件參數進行修改并以此開發來實現的。 交互應用在實現時可能需要幾個獨立的功能包,也可能交叉使用一些相同功能包,而功能包的模塊都是以節點為單位運行,并通過不同節點端對端的通信連接關系來實現功能。
語音交互是家庭陪伴機器人的必要技能,主要由語音識別、語義理解和語音合成等規劃層的節點來實現,以使機器人能用中文語言和人進行自然語言交流,其流程如圖4 所示。 在開機之后該功能就處于等待狀態,當通過麥克風輸入語音關鍵詞喚醒機器人之后,首先使用在線的科大訊飛中文識別對語音進行識別并轉成字符串文本輸出,然后調用圖靈機器人API進行基于人工智能的在線語義分析后以文本方式回復,最后根據文本內容調用科大訊飛的語音合成將文本轉換為語音并經音箱輸出,同時使機器人眼睛同步變換表情或發送使機器人進行相應動作的命令。 用戶通過圖靈機器人API 提供的智能工具、休閑娛樂和生活服務等技能滿足語音聊天、兒童娛樂和老人生活等方面的需求。

圖4 語音交互流程
肢體交互主要靠仿人上肢做出類人的肢體動作來實現,并能結合語音和眼部表情以和人進行交互,采用ROS 提供的MoveIt! 功能包進行設計,其結構框圖如圖5所示。首先根據機器人模型和視覺傳感器獲取的環境信息以及機器人的初始狀態等進行規劃場景,然后通過運動學求解和坐標變換得到左右仿人上肢姿態和每個關節舵機轉動角度之間的關系,最后經運動規劃通過仿人上肢舵機控制器控制每個關節的舵機轉到相應的角度來實現肢體動作。 在動作過程中,通過舵機反饋的轉動角度以及3D 實感相機檢測周圍環境的變化以避免碰撞。

圖5 肢體交互結構框圖
自主移動使機器人不僅能夠在家里移動過程中避開各種障礙物,還能自動移動到主人面前并能跟隨主人。 移動控制模塊中控制器使用ros_arduino_bridge作為一個ROS 節點,首先要把自主移動節點發送的移動方向、線速度和角速度等參數消息進行解析,得到機器人左右輪需要移動的線速度、角速度和位移等參數;然后與編碼器和IMU 所測得機器人左右輪實際移動線速度、角速度和位移等姿態參數進行計算,得到機器人移動的速度和方向等誤差,通過PID 算法對左右輪電機轉速進行精確控制,使機器人按路徑規劃的軌跡進行移動以及通過超聲波傳感器避障,并把機器人的線速度、角速度和位移等姿態參數向里程節點發布消息; 最后經自主導航節點調用的rgbdslam和move_base 等功能包進行室內三維地圖創建和自主導航。
家庭陪伴機器人除了與人進行語音交互和肢體交互之外,還可以通過為觸摸屏開發的UI 與人實現互動,如兒童學習、兒童娛樂、老人娛樂和經人臉識別的身份驗證等其他功能,其主界面如圖6 所示。 界面采用卡片式布局和子母界面設計,把這些功能的交互層接口節點封裝成圖標形式進行操作,不僅美觀而且操作簡單,便于兒童和老人使用。

圖6 UI 主界面
在家庭陪伴機器人實物搭建完畢之后,主要對機器人進行校準以及對語音交互和肢體交互等人機交互功能進行測試,其他功能已在軟件系統開發過程中進行了測試。
機器人校準主要包括對移動底盤校準和對仿人上肢運動校準以及對視覺傳感器標定等,以保證機器人運動的準確度和精度。 對移動底盤進行多次測量校準,使其直線移動線速度誤差在2 mm/s 之內,最大直線移動速度為1.2 m/s,原地旋轉一圈角度誤差低于2°且轉動朝向角偏離不超過2°。 仿人上肢運動校準主要是確定左右仿人上肢各關節轉動范圍,為肢體交互中的運功規劃提供約束條件以避免碰撞,以圖1 中各關節位姿為初始位姿(即0°),各關節的動作及對應轉動角度范圍如表1所示。 視覺傳感器標定采用ROS 官方提供的camera_calibration 功能包通過打印的棋盤格標定靶分別對頭部攝像頭和胸部ZR300 實感相機進行了標定并消除了圖像畸變現象。

表1 仿人上肢各關節動作及轉動范圍
人機交互功能測試按照家庭陪伴機器人的主要功能分別對語音喚醒、語音聊天、肢體交流、語音控制機器人移動和UI 互動等進行10 次測試,測試結果如表2 所示。在使用語音對機器人進行喚醒、控制機器人移動、為兒童講故事和為老人播天氣預報等較短語音交互時,機器人都能正確識別和語義理解,然而在與機器人進行自然語言的語音聊天過程中,對較長的對話只有1 次理解錯誤,其他9 次都能給出比較滿意的回答,偶有因普通話不標準造成語音識別通不過需要重復才通過的情況,就語音交互整體而言成功率基本在90%左右,滿足實際需要。

表2 人機交互測試結果
在進行語音交互過程中,都能順利觸發眼睛表情和仿人上肢進行肢體交互,測試過程如圖7 所示。 圖7(a)為機器人打招呼,在人和機器人語音打招呼過程中,其右上臂向上抬起,右肘彎曲使小臂抬起,右手呈半握狀,通過小臂前后晃動實現打招呼,同時眼睛變換成微笑表情以及在觸摸屏會顯出語音圖標和相應的一些文字;圖7(b)和圖7(c)為和人說再見的肢體互動,與打招呼的區別在于右手指完全伸直和左右晃動小臂以及顯示文字不同;圖7(d)為機器人握球互動實驗,驗證機器人的抓取能力。 另外其他測試項目都是通過UI進行操作,在10 次測試過程中都能順利完成。 通過這些測試,表明家庭陪伴機器人基本實現其主要功能,達到設計要求。

圖7 肢體交互測試過程
經實物測試,本文基于ROS 框架設計的一種自主家庭陪伴機器人不僅實現了能和人進行自然語音交流,還能肢體交流以及通過UI 交互,達到設計要求,驗證了該家庭陪伴機器人設計方案合理,能滿足日常家庭的陪伴工作。 但目前肢體交流和眼睛表情互動樣式有些少,同時UI 為兒童學習娛樂和老人娛樂提供內容比較少,下一步將會在此基礎上繼續開發更多樣式和提供更多資源, 爭取做到使仿人機械手的每個手指能單獨動作,從而使該機器人具有自己獨特的性能以勝任更多家庭方面的工作。