王博瑋,陸中成
(華東理工大學(xué)信息科學(xué)與工程學(xué)院,上海 200237)
隨著社會的發(fā)展,老齡化人口比例不斷提升。一方面,老年人在日常活動中需要某些幫助;另一方面,勞動力的減少也使許多行業(yè)迫切找到能代替人力的自動化方案。因此,開發(fā)、研究服務(wù)機器人具有重要的社會意義和廣泛的經(jīng)濟價值。近年來,服務(wù)型機器人的廣泛需求引起研究者的極大關(guān)注,包括用于人群引導(dǎo)的服務(wù)機器人[1]、能和老年人溝通交流的智能機器人[2]以及家庭服務(wù)機器人[3]。在餐飲業(yè),智能服務(wù)機器人有著更廣泛的需求空間。人力成本的不斷上升,促使許多餐廳都尋求服務(wù)機器人的替代方案。隨著傳感器技術(shù)、云技術(shù)以及人工智能的高速發(fā)展,智能餐廳服務(wù)機器人已經(jīng)涌現(xiàn)出許多具有代表性的應(yīng)用。2016年,新加坡已開發(fā)機器人送餐服務(wù),但還需要使用固定軌道以及人類輔助,自動化程度不高。Cheong等[4]提出了基于模塊化的餐廳服務(wù)機器人設(shè)計方法,提高了自動化系統(tǒng)的效率。蔡俊杰等[5]設(shè)計了以微控制器MSP430F543為核心的餐廳服務(wù)機器人控制系統(tǒng)。然而,截至目前,國內(nèi)外研發(fā)的服務(wù)型機器人總體自動化程度不高。此外,本地資源的局限性以及導(dǎo)航算法的弱遷移性,限制了機器人技術(shù)的發(fā)展。
云技術(shù)的發(fā)展給智能機器人的研究提供了更多的思路和方法。云技術(shù)是指通過網(wǎng)絡(luò),彈性、動態(tài)地分配相應(yīng)資源,以支持本地難以完成的作業(yè)。這類資源包括計算資源、儲存資源以及軟件服務(wù)。使用云框架搭建機器人系統(tǒng),擴展了資源的利用度,豐富了本地的功能,也為設(shè)計更復(fù)雜的機器人系統(tǒng)提供了可能。另外,人工智能的發(fā)展也給服務(wù)機器人領(lǐng)域帶來了更多的驅(qū)動力。Mohammadi等[6]使用基于對抗生成式網(wǎng)絡(luò)(generative adversarial networks,GAN)完成機器人的路徑規(guī)劃任務(wù),其生成的路徑達到了89%的平均主觀意見分(mean opinion scores,MOS)。Maiettini等[7]提出將快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(region-convolutional neural network,R-CNN)和FALKON結(jié)合的方法完成機器人目標識別任務(wù),加快機器人適應(yīng)環(huán)境的過程。顯然,為更好地提高服務(wù)機器人的智能化程度,結(jié)合云和人工智能的優(yōu)勢設(shè)計餐廳服務(wù)機器人系統(tǒng)是非常有必要的。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure
機器人群由一組智能送餐機器人構(gòu)成,負責(zé)餐廳的送餐任務(wù)。其主要工作過程如下:首先,機器人通過通信模塊,將由傳感器模塊采集到的感知信息上傳到云端;接著,由云端計算模型結(jié)果并返回;最后,機器人核心板根據(jù)返回的動作控制馬達,以完成運動。
云端為上層用戶,主要由數(shù)據(jù)庫、Web服務(wù)器和TensorFlow Serving[8]組成。其采用Linux系統(tǒng)下的Python語言開發(fā),便于系統(tǒng)的移植和功能擴展。云端通過網(wǎng)絡(luò)接收來自餐廳的實時數(shù)據(jù)和機器人的感知數(shù)據(jù),并據(jù)此實現(xiàn)機器人的路徑規(guī)劃,以控制機器人完成送餐作業(yè);同時,通過Web服務(wù)對遠程用戶提供餐廳管理和點餐服務(wù)功能。
遠程用戶又稱遠程單元,由客戶端和管理端構(gòu)成。客戶端通過移動終端完成點餐、評價等功能,數(shù)據(jù)通過云端返回到餐廳。管理端授權(quán)用戶可通過瀏覽器登錄系統(tǒng),分析實時數(shù)據(jù)或遠程操控服務(wù)機器人。
為使系統(tǒng)各部分能夠協(xié)調(diào)正常運行,需要選擇合適的計算資源和組網(wǎng)方式。由本地處理器實現(xiàn)服務(wù)機器人的計算功能,會使得計算能力受到限制,無法完成計算密集型任務(wù)[9]。在此,基于TCP/IP的HTTP傳輸協(xié)議,構(gòu)建以云為中心的統(tǒng)一系統(tǒng),將計算、儲存功能置于云上,使得最小系統(tǒng)能夠完成后續(xù)的復(fù)雜計算任務(wù),解決了同步定位與地圖構(gòu)建(simultaneous localization and mapping,SLAM)、深度Q網(wǎng)絡(luò)(deep Q-network,DQN)計算復(fù)雜性和機器人系統(tǒng)資源有限性之間的矛盾,同時可對外提供Web服務(wù)。
機器人的總體設(shè)計遵循模塊化設(shè)計的原則,整機主要由核心控制板、馬達及碼盤、充電電池、傳感器模塊和通信芯片構(gòu)成。送餐機器人以Arduino Mega 2560作為核心控制板。馬達用于在核心指令控制下實現(xiàn)機器人的運動。充電電池為其他模塊提供電能。紅外傳感器模塊用于機器人對障礙物的識別。Rplidar A1激光雷達用于生成動態(tài)地圖。ESP8266EX WiFi通信芯片用于實現(xiàn)基于TCP/IP的通信。機器人硬件結(jié)構(gòu)如圖2所示。
為了確保作者的合法權(quán)益不受侵害,請廣大讀作者注意辨明真?zhèn)?,謹防上?dāng)受騙?!吨袊C形外科雜志》編輯部將依法追究冒充編輯部開設(shè)網(wǎng)站、征集稿件、亂收費的相關(guān)機構(gòu)和個人。
圖2 硬件結(jié)構(gòu)圖Fig.2 Hardware structure
控制板是機器人的核心部分,其實現(xiàn)了對傳感器、運動模塊以及數(shù)據(jù)傳輸?shù)慕y(tǒng)一調(diào)度和控制。選用Arduino Mega 2560作為微控制板。其使用ATmega2560處理器,包含54個數(shù)字輸入/輸出口、16個模擬輸入口、4個UARTS、256 kB的閃存。同時,系統(tǒng)還使用功能擴展板。功能擴展板實現(xiàn)了對主控制板接口和功能的擴展。擴展后還包括2個總線擴展接口(即地址總線和數(shù)據(jù)總線)、1路RS-232串口、1個全功能擴展口和IIS、I2C、SPI、A/D、GPIO、串口2、外部中斷等外部接口。
①紅外傳感器。
機器人配置有一組紅外傳感器,安裝在機器人的前部,選用優(yōu)創(chuàng)電子科技有限公司生產(chǎn)的TCRT5000型紅外避障模塊。該模塊有一對紅外發(fā)射和接收裝置,具有成本低、穩(wěn)定性好等優(yōu)點。
紅外傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,反射的紅外線由接收管接收。若反射較少或沒有反射,光敏三極管一直處于關(guān)斷狀態(tài),模塊的輸出端為低電平。當(dāng)障礙物出現(xiàn)在檢測范圍內(nèi)時,紅外線被反射且強度足夠大,光敏三極管飽和。此時,模塊的輸出端為高電平,可完成障礙物的識別。核心控制板的模擬口與避障模塊的信號口相連,在檢測到高電平時,核心板將馬達控制數(shù)字口電平置低,機器人停止運動。
②Rplidar A1激光雷達。
機器人配置一個Rplidar A1型號激光雷達,安裝在機器人的上部。其有效探測距離約為12 m,掃描速度為2 000次/s。運行過程中,激光雷達不斷發(fā)射激光信號,反射信號由其視覺采集系統(tǒng)接收,經(jīng)過內(nèi)置信號處理器計算得到距離值以及夾角,并通過3.3 V電平串口將數(shù)據(jù)回傳至核心板。Rplidar上的連接器有5個引腳,分別是電源、地線、RX、TX以及控制掃描速度的脈沖寬度調(diào)制(pulse width modulation,PWM)。其中,PWM要求提供足夠的電流以驅(qū)動雷達電機。激光雷達在Arduino核心板控制下進行環(huán)境掃描,以獲得感知信息。系統(tǒng)使用外部電源為Rplidar供電。
機器人使用的ESP8266EX是常用的集成WiFi芯片之一。其在外部電路上集成了標準的數(shù)字外圍接口、天線開關(guān)、功率放大器、低噪聲接收放大器以及電源管理模塊。同時,該芯片可在主動模式、睡眠模式和深度睡眠模式下工作。僅在需要時將其喚醒,以達到能耗控制的目的。核心板通過串行接口,將激光雷達數(shù)據(jù)發(fā)送至通信模塊,由通信模塊將編碼好的HTTP POST請求通過TCP/IP發(fā)送至云端。同時,通信模塊接收云端返回的結(jié)果,將其解碼為串行數(shù)據(jù)并回傳至核心板。
云端主要用于路徑規(guī)劃中的計算任務(wù),同時也為管理者和用戶提供Web服務(wù)。其主要由TensorFlow Serving、Web服務(wù)器和數(shù)據(jù)庫三部分構(gòu)成。云端邏輯結(jié)構(gòu)如圖3所示。
圖3 云端邏輯結(jié)構(gòu)圖Fig.3 Logical structure on cloud
由圖3可知:TensorFlow Serving接收機器人上傳的感知數(shù)據(jù),并返回深度Q網(wǎng)絡(luò)的輸出以完成導(dǎo)航;Web服務(wù)器將數(shù)據(jù)庫中的機器人信息和餐廳交易信息以圖形的方式實時顯示,同時對TensorFlow Serving進行版本控制;數(shù)據(jù)庫則記錄了機器人的參數(shù)信息、日志以及交易記錄。該設(shè)計采用了客戶端/服務(wù)器的架構(gòu),為用戶提供Web訪問功能。
3.1.1 TensorFlow Serving
TensorFlow Serving是一種用于部署機器學(xué)習(xí)模型的框架。該框架具有較高的靈活性,提供模型在線迭代、熱部署以及更新功能。在此,將訓(xùn)練完成的深度Q網(wǎng)絡(luò)部署到TensorFlow Serving上,以實現(xiàn)機器人路徑規(guī)劃。TensorFlow Serving使用RESTful API接收外部調(diào)用,由機器人以JSON對象形式向云端發(fā)送HTTP POST請求,預(yù)處理其發(fā)送的數(shù)據(jù)后,由TensorFlow Serving端以JSON對象形式返回深度Q網(wǎng)絡(luò)的結(jié)果。
3.1.2 Web服務(wù)器
Web服務(wù)器采用基于Laravel框架的服務(wù)器,使用PHP語言開發(fā)。客戶端通過HTTP請求從數(shù)據(jù)庫中讀取信息,生成動態(tài)PHP頁面并返回給客戶端??蛻舳藬?shù)據(jù)通過Web API寫入數(shù)據(jù)庫。Web界面包括點餐界面、管理界面以及控制中心。點餐界面為客戶提供菜品選擇及結(jié)賬服務(wù);管理界面和控制中心為餐廳運營者提供了可視化的運營狀態(tài)、數(shù)據(jù)分析以及對歷史數(shù)據(jù)的查詢和導(dǎo)出功能。
3.1.3 數(shù)據(jù)庫
數(shù)據(jù)庫是云端的核心部分,其關(guān)系到TensorFlow Serving和Web服務(wù)的正常工作以及機器人的正常運行。在此,采用基于MySQL的結(jié)構(gòu)化語言查詢數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)的讀取和寫入由統(tǒng)一的應(yīng)用程序編程接口(application programming interface,API)進行調(diào)度。數(shù)據(jù)庫中保存著許多重要的信息,如深度Q網(wǎng)絡(luò)的版本信息、機器人的位置信息、客戶交易信息以及內(nèi)置地圖等。
機器人啟動后,初始化各模塊并與云端建立TCP/IP連接,在接收到指令后開始送餐。核心算法如下。首先,機器人通過激光雷達采集環(huán)境感知信息,并將數(shù)據(jù)發(fā)送到云端;接著,云端使用SLAM算法對感知數(shù)據(jù)進行地圖重建并預(yù)處理;最后,云端通過深度Q網(wǎng)絡(luò)返回機器人下一步動作。循環(huán)此過程,直到機器人到達終點。云端控制流程如圖4所示。
圖4 云端控制流程圖Fig.4 Flowchart of cloud control
為使機器人能夠準確地將食品送到指定餐桌,需要實現(xiàn)導(dǎo)航和移動定位功能。在環(huán)境中如何找出一條合理路線是機器人導(dǎo)航的核心問題。于清曉等提出使用射頻識別(ridio frequency identification,RFID)的方式進行導(dǎo)航,但其精度不高且部署復(fù)雜[10];也有人提出基于改進遺傳算法的導(dǎo)航,但其不適用于餐廳復(fù)雜多變的環(huán)境[11]。服務(wù)機器人使用低成本的激光雷達SLAM算法進行地圖重建,并配合DQN[12]完成導(dǎo)航。
使用二維平面柵格對餐廳實際環(huán)境建模。實際環(huán)境中的障礙物和可移動空間分別用柵格中的1和0代替,給定起點和終點e,算法能夠找到一條路徑p完成導(dǎo)航。為了簡化模型,考慮障礙物的高度、大小以及位置不變,同時考慮機器人可視區(qū)域為方形??梢晠^(qū)域通過SLAM地圖重建并網(wǎng)格化為二值圖像的方式獲得。在進行強化學(xué)習(xí)的過程中,機器人采用一走一停的方式,在上一步執(zhí)行前進動作(前進、后退、左轉(zhuǎn)、右轉(zhuǎn))a后,會收到來自環(huán)境的獎懲函數(shù),將其作為反饋再進行下一步動作。轉(zhuǎn)移規(guī)則如式(1)所示。
(1)
Q(s,a)使用了回放記憶單元,以避免學(xué)習(xí)過程中的順序?qū)ι窠?jīng)網(wǎng)絡(luò)的訓(xùn)練造成影響。學(xué)習(xí)過程包括兩個階段:執(zhí)行動作和學(xué)習(xí)。在執(zhí)行動作階段,僅記憶并更新所做出的動作;在學(xué)習(xí)階段,從記憶中隨機選擇動作,并以當(dāng)前Q值和目標值差的平方作為損失函數(shù)進行訓(xùn)練。同時,為確保訓(xùn)練能使機器人能到達終點,使用了如式(2)所示的及時獎勵。
(2)
式中:pt為t時刻的機器人位置。
神經(jīng)網(wǎng)絡(luò)的輸入是機器人目前的狀態(tài)(機器人可視范圍的柵格地圖),輸出為在該狀態(tài)下四種行為(前進,后退,左轉(zhuǎn),右轉(zhuǎn))對應(yīng)的預(yù)測Q值。
網(wǎng)絡(luò)具體結(jié)構(gòu)如下:第一層卷積層包括16個(3×3)的卷積核,采用SAME的補零方式,步長為1;第二層卷積層包括32個(2×2)的卷積核,步長為1。卷積層后為激活函數(shù)層,均選用線性整流函數(shù)(rectified linear unit,ReLu)為激活函數(shù);最后一層是節(jié)點個數(shù)為4、包含60個神經(jīng)元的全連接層。網(wǎng)絡(luò)參數(shù)使用隨機梯度下降(stochastic gradient descent,SGD)進行優(yōu)化和更新。
本文采用Arduino 1.8.5編譯器、MySQL 5.7.17數(shù)據(jù)庫服務(wù)器、Python 3.6.4 編譯器、Laravel 5.1 Web服務(wù)器構(gòu)架的開發(fā)環(huán)境和平臺。
為測試系統(tǒng)的性能,在仿真環(huán)境和實際網(wǎng)絡(luò)場景下進行路徑規(guī)劃及流程測試。測試環(huán)境為實際餐廳環(huán)境抽象的正方形柵格地圖模型。整體大小為9×9,單個柵欄大小為1×1。在柵格地圖上進行餐廳機器人從起點到終點的仿真路徑規(guī)劃。目標是圖中的三角形區(qū)域,機器人路徑用圓形表示,障礙物為黑色填充的柵欄。在學(xué)習(xí)過程中,為解決探索-利用難題,使用ε-貪心算法進行行為選擇:以概率ε隨機選擇行為并以1-ε選擇預(yù)測行為。試驗過程中,初始ε=1.0,后期ε=0.1。
學(xué)習(xí)過程如下。首先,獲得目前狀態(tài)(二值化的柵格地圖);接著,通過貪心算法選擇下一步動作,在獲得下一時刻狀態(tài)的同時得到立即獎賞;最后,根據(jù)轉(zhuǎn)移規(guī)則更新Q值并更新DQN參數(shù)。循環(huán)此過程至結(jié)束。為了觀察機器人在不同復(fù)雜度的障礙物設(shè)置情況下的完成情況,設(shè)置了多種地圖。測試結(jié)果表明,模型能夠通過學(xué)習(xí)規(guī)劃出合適的路徑,并且在未知地圖和較為復(fù)雜地圖上仍有較好的表現(xiàn)。模型生成的路徑規(guī)劃仿真如圖5所示。
圖5 路徑規(guī)劃仿真示意圖Fig.5 Path planning simulation
同時,系統(tǒng)基于云的智能餐廳服務(wù)系統(tǒng),網(wǎng)絡(luò)的隨機性時延對系統(tǒng)各部分均有一定的影響。選擇往返時延(round-trip time,RTT)值作為系統(tǒng)實時控制性能的指標。其計算從云端發(fā)送到機器人端,再由機器人端返回云端的時間。云端在發(fā)出指令前記錄本地時間,收到機器人端確認時再次記錄本地時間,兩者作差得到整個系統(tǒng)的RRT。80次平均RRT時間為89 ms,最大為170 ms,滿足系統(tǒng)的實時性要求。
將云計算與深度強化學(xué)習(xí)相結(jié)合,設(shè)計基于云的餐廳服務(wù)機器人系統(tǒng)。通過訓(xùn)練深度強化學(xué)習(xí)模型,機器人能夠在未知環(huán)境中選擇合適的路徑自主完成下一步動作,并完成送餐任務(wù)。通過構(gòu)建基于云的Web服務(wù)器、數(shù)據(jù)庫和TensorFlow Serving,管理端可以實時監(jiān)控機器人的運行狀態(tài)并且進行遠程操控。仿真試驗表明,機器人能夠在模環(huán)境中自主完成送餐任務(wù),為進一步完善和開發(fā)機器人技術(shù)奠定基礎(chǔ)。