王博瑋,陸中成
(華東理工大學信息科學與工程學院,上海 200237)
隨著社會的發展,老齡化人口比例不斷提升。一方面,老年人在日常活動中需要某些幫助;另一方面,勞動力的減少也使許多行業迫切找到能代替人力的自動化方案。因此,開發、研究服務機器人具有重要的社會意義和廣泛的經濟價值。近年來,服務型機器人的廣泛需求引起研究者的極大關注,包括用于人群引導的服務機器人[1]、能和老年人溝通交流的智能機器人[2]以及家庭服務機器人[3]。在餐飲業,智能服務機器人有著更廣泛的需求空間。人力成本的不斷上升,促使許多餐廳都尋求服務機器人的替代方案。隨著傳感器技術、云技術以及人工智能的高速發展,智能餐廳服務機器人已經涌現出許多具有代表性的應用。2016年,新加坡已開發機器人送餐服務,但還需要使用固定軌道以及人類輔助,自動化程度不高。Cheong等[4]提出了基于模塊化的餐廳服務機器人設計方法,提高了自動化系統的效率。蔡俊杰等[5]設計了以微控制器MSP430F543為核心的餐廳服務機器人控制系統。然而,截至目前,國內外研發的服務型機器人總體自動化程度不高。此外,本地資源的局限性以及導航算法的弱遷移性,限制了機器人技術的發展。
云技術的發展給智能機器人的研究提供了更多的思路和方法。云技術是指通過網絡,彈性、動態地分配相應資源,以支持本地難以完成的作業。這類資源包括計算資源、儲存資源以及軟件服務。使用云框架搭建機器人系統,擴展了資源的利用度,豐富了本地的功能,也為設計更復雜的機器人系統提供了可能。另外,人工智能的發展也給服務機器人領域帶來了更多的驅動力。Mohammadi等[6]使用基于對抗生成式網絡(generative adversarial networks,GAN)完成機器人的路徑規劃任務,其生成的路徑達到了89%的平均主觀意見分(mean opinion scores,MOS)。Maiettini等[7]提出將快速區域卷積神經網絡(region-convolutional neural network,R-CNN)和FALKON結合的方法完成機器人目標識別任務,加快機器人適應環境的過程。顯然,為更好地提高服務機器人的智能化程度,結合云和人工智能的優勢設計餐廳服務機器人系統是非常有必要的。

圖1 系統結構圖Fig.1 System structure
機器人群由一組智能送餐機器人構成,負責餐廳的送餐任務。其主要工作過程如下:首先,機器人通過通信模塊,將由傳感器模塊采集到的感知信息上傳到云端;接著,由云端計算模型結果并返回;最后,機器人核心板根據返回的動作控制馬達,以完成運動。
云端為上層用戶,主要由數據庫、Web服務器和TensorFlow Serving[8]組成。其采用Linux系統下的Python語言開發,便于系統的移植和功能擴展。云端通過網絡接收來自餐廳的實時數據和機器人的感知數據,并據此實現機器人的路徑規劃,以控制機器人完成送餐作業;同時,通過Web服務對遠程用戶提供餐廳管理和點餐服務功能。
遠程用戶又稱遠程單元,由客戶端和管理端構成。客戶端通過移動終端完成點餐、評價等功能,數據通過云端返回到餐廳。管理端授權用戶可通過瀏覽器登錄系統,分析實時數據或遠程操控服務機器人。
為使系統各部分能夠協調正常運行,需要選擇合適的計算資源和組網方式。由本地處理器實現服務機器人的計算功能,會使得計算能力受到限制,無法完成計算密集型任務[9]。在此,基于TCP/IP的HTTP傳輸協議,構建以云為中心的統一系統,將計算、儲存功能置于云上,使得最小系統能夠完成后續的復雜計算任務,解決了同步定位與地圖構建(simultaneous localization and mapping,SLAM)、深度Q網絡(deep Q-network,DQN)計算復雜性和機器人系統資源有限性之間的矛盾,同時可對外提供Web服務。
機器人的總體設計遵循模塊化設計的原則,整機主要由核心控制板、馬達及碼盤、充電電池、傳感器模塊和通信芯片構成。送餐機器人以Arduino Mega 2560作為核心控制板。馬達用于在核心指令控制下實現機器人的運動。充電電池為其他模塊提供電能。紅外傳感器模塊用于機器人對障礙物的識別。Rplidar A1激光雷達用于生成動態地圖。ESP8266EX WiFi通信芯片用于實現基于TCP/IP的通信。機器人硬件結構如圖2所示。
為了確保作者的合法權益不受侵害,請廣大讀作者注意辨明真偽,謹防上當受騙。《中國矯形外科雜志》編輯部將依法追究冒充編輯部開設網站、征集稿件、亂收費的相關機構和個人。

圖2 硬件結構圖Fig.2 Hardware structure
控制板是機器人的核心部分,其實現了對傳感器、運動模塊以及數據傳輸的統一調度和控制。選用Arduino Mega 2560作為微控制板。其使用ATmega2560處理器,包含54個數字輸入/輸出口、16個模擬輸入口、4個UARTS、256 kB的閃存。同時,系統還使用功能擴展板。功能擴展板實現了對主控制板接口和功能的擴展。擴展后還包括2個總線擴展接口(即地址總線和數據總線)、1路RS-232串口、1個全功能擴展口和IIS、I2C、SPI、A/D、GPIO、串口2、外部中斷等外部接口。
①紅外傳感器。
機器人配置有一組紅外傳感器,安裝在機器人的前部,選用優創電子科技有限公司生產的TCRT5000型紅外避障模塊。該模塊有一對紅外發射和接收裝置,具有成本低、穩定性好等優點。
紅外傳感器的紅外發射二極管不斷發射紅外線,反射的紅外線由接收管接收。若反射較少或沒有反射,光敏三極管一直處于關斷狀態,模塊的輸出端為低電平。當障礙物出現在檢測范圍內時,紅外線被反射且強度足夠大,光敏三極管飽和。此時,模塊的輸出端為高電平,可完成障礙物的識別。核心控制板的模擬口與避障模塊的信號口相連,在檢測到高電平時,核心板將馬達控制數字口電平置低,機器人停止運動。
②Rplidar A1激光雷達。
機器人配置一個Rplidar A1型號激光雷達,安裝在機器人的上部。其有效探測距離約為12 m,掃描速度為2 000次/s。運行過程中,激光雷達不斷發射激光信號,反射信號由其視覺采集系統接收,經過內置信號處理器計算得到距離值以及夾角,并通過3.3 V電平串口將數據回傳至核心板。Rplidar上的連接器有5個引腳,分別是電源、地線、RX、TX以及控制掃描速度的脈沖寬度調制(pulse width modulation,PWM)。其中,PWM要求提供足夠的電流以驅動雷達電機。激光雷達在Arduino核心板控制下進行環境掃描,以獲得感知信息。系統使用外部電源為Rplidar供電。
機器人使用的ESP8266EX是常用的集成WiFi芯片之一。其在外部電路上集成了標準的數字外圍接口、天線開關、功率放大器、低噪聲接收放大器以及電源管理模塊。同時,該芯片可在主動模式、睡眠模式和深度睡眠模式下工作。僅在需要時將其喚醒,以達到能耗控制的目的。核心板通過串行接口,將激光雷達數據發送至通信模塊,由通信模塊將編碼好的HTTP POST請求通過TCP/IP發送至云端。同時,通信模塊接收云端返回的結果,將其解碼為串行數據并回傳至核心板。
云端主要用于路徑規劃中的計算任務,同時也為管理者和用戶提供Web服務。其主要由TensorFlow Serving、Web服務器和數據庫三部分構成。云端邏輯結構如圖3所示。

圖3 云端邏輯結構圖Fig.3 Logical structure on cloud
由圖3可知:TensorFlow Serving接收機器人上傳的感知數據,并返回深度Q網絡的輸出以完成導航;Web服務器將數據庫中的機器人信息和餐廳交易信息以圖形的方式實時顯示,同時對TensorFlow Serving進行版本控制;數據庫則記錄了機器人的參數信息、日志以及交易記錄。該設計采用了客戶端/服務器的架構,為用戶提供Web訪問功能。
3.1.1 TensorFlow Serving
TensorFlow Serving是一種用于部署機器學習模型的框架。該框架具有較高的靈活性,提供模型在線迭代、熱部署以及更新功能。在此,將訓練完成的深度Q網絡部署到TensorFlow Serving上,以實現機器人路徑規劃。TensorFlow Serving使用RESTful API接收外部調用,由機器人以JSON對象形式向云端發送HTTP POST請求,預處理其發送的數據后,由TensorFlow Serving端以JSON對象形式返回深度Q網絡的結果。
3.1.2 Web服務器
Web服務器采用基于Laravel框架的服務器,使用PHP語言開發。客戶端通過HTTP請求從數據庫中讀取信息,生成動態PHP頁面并返回給客戶端。客戶端數據通過Web API寫入數據庫。Web界面包括點餐界面、管理界面以及控制中心。點餐界面為客戶提供菜品選擇及結賬服務;管理界面和控制中心為餐廳運營者提供了可視化的運營狀態、數據分析以及對歷史數據的查詢和導出功能。
3.1.3 數據庫
數據庫是云端的核心部分,其關系到TensorFlow Serving和Web服務的正常工作以及機器人的正常運行。在此,采用基于MySQL的結構化語言查詢數據庫系統,數據的讀取和寫入由統一的應用程序編程接口(application programming interface,API)進行調度。數據庫中保存著許多重要的信息,如深度Q網絡的版本信息、機器人的位置信息、客戶交易信息以及內置地圖等。
機器人啟動后,初始化各模塊并與云端建立TCP/IP連接,在接收到指令后開始送餐。核心算法如下。首先,機器人通過激光雷達采集環境感知信息,并將數據發送到云端;接著,云端使用SLAM算法對感知數據進行地圖重建并預處理;最后,云端通過深度Q網絡返回機器人下一步動作。循環此過程,直到機器人到達終點。云端控制流程如圖4所示。

圖4 云端控制流程圖Fig.4 Flowchart of cloud control
為使機器人能夠準確地將食品送到指定餐桌,需要實現導航和移動定位功能。在環境中如何找出一條合理路線是機器人導航的核心問題。于清曉等提出使用射頻識別(ridio frequency identification,RFID)的方式進行導航,但其精度不高且部署復雜[10];也有人提出基于改進遺傳算法的導航,但其不適用于餐廳復雜多變的環境[11]。服務機器人使用低成本的激光雷達SLAM算法進行地圖重建,并配合DQN[12]完成導航。
使用二維平面柵格對餐廳實際環境建模。實際環境中的障礙物和可移動空間分別用柵格中的1和0代替,給定起點和終點e,算法能夠找到一條路徑p完成導航。為了簡化模型,考慮障礙物的高度、大小以及位置不變,同時考慮機器人可視區域為方形。可視區域通過SLAM地圖重建并網格化為二值圖像的方式獲得。在進行強化學習的過程中,機器人采用一走一停的方式,在上一步執行前進動作(前進、后退、左轉、右轉)a后,會收到來自環境的獎懲函數,將其作為反饋再進行下一步動作。轉移規則如式(1)所示。
(1)

Q(s,a)使用了回放記憶單元,以避免學習過程中的順序對神經網絡的訓練造成影響。學習過程包括兩個階段:執行動作和學習。在執行動作階段,僅記憶并更新所做出的動作;在學習階段,從記憶中隨機選擇動作,并以當前Q值和目標值差的平方作為損失函數進行訓練。同時,為確保訓練能使機器人能到達終點,使用了如式(2)所示的及時獎勵。
(2)
式中:pt為t時刻的機器人位置。
神經網絡的輸入是機器人目前的狀態(機器人可視范圍的柵格地圖),輸出為在該狀態下四種行為(前進,后退,左轉,右轉)對應的預測Q值。
網絡具體結構如下:第一層卷積層包括16個(3×3)的卷積核,采用SAME的補零方式,步長為1;第二層卷積層包括32個(2×2)的卷積核,步長為1。卷積層后為激活函數層,均選用線性整流函數(rectified linear unit,ReLu)為激活函數;最后一層是節點個數為4、包含60個神經元的全連接層。網絡參數使用隨機梯度下降(stochastic gradient descent,SGD)進行優化和更新。
本文采用Arduino 1.8.5編譯器、MySQL 5.7.17數據庫服務器、Python 3.6.4 編譯器、Laravel 5.1 Web服務器構架的開發環境和平臺。
為測試系統的性能,在仿真環境和實際網絡場景下進行路徑規劃及流程測試。測試環境為實際餐廳環境抽象的正方形柵格地圖模型。整體大小為9×9,單個柵欄大小為1×1。在柵格地圖上進行餐廳機器人從起點到終點的仿真路徑規劃。目標是圖中的三角形區域,機器人路徑用圓形表示,障礙物為黑色填充的柵欄。在學習過程中,為解決探索-利用難題,使用ε-貪心算法進行行為選擇:以概率ε隨機選擇行為并以1-ε選擇預測行為。試驗過程中,初始ε=1.0,后期ε=0.1。
學習過程如下。首先,獲得目前狀態(二值化的柵格地圖);接著,通過貪心算法選擇下一步動作,在獲得下一時刻狀態的同時得到立即獎賞;最后,根據轉移規則更新Q值并更新DQN參數。循環此過程至結束。為了觀察機器人在不同復雜度的障礙物設置情況下的完成情況,設置了多種地圖。測試結果表明,模型能夠通過學習規劃出合適的路徑,并且在未知地圖和較為復雜地圖上仍有較好的表現。模型生成的路徑規劃仿真如圖5所示。

圖5 路徑規劃仿真示意圖Fig.5 Path planning simulation
同時,系統基于云的智能餐廳服務系統,網絡的隨機性時延對系統各部分均有一定的影響。選擇往返時延(round-trip time,RTT)值作為系統實時控制性能的指標。其計算從云端發送到機器人端,再由機器人端返回云端的時間。云端在發出指令前記錄本地時間,收到機器人端確認時再次記錄本地時間,兩者作差得到整個系統的RRT。80次平均RRT時間為89 ms,最大為170 ms,滿足系統的實時性要求。
將云計算與深度強化學習相結合,設計基于云的餐廳服務機器人系統。通過訓練深度強化學習模型,機器人能夠在未知環境中選擇合適的路徑自主完成下一步動作,并完成送餐任務。通過構建基于云的Web服務器、數據庫和TensorFlow Serving,管理端可以實時監控機器人的運行狀態并且進行遠程操控。仿真試驗表明,機器人能夠在模環境中自主完成送餐任務,為進一步完善和開發機器人技術奠定基礎。