馮毅烽 ,鐘小華 ,鄭梓琪 ,麥鈞俊 ,張春瑩
(廣東白云學院機電工程學院,廣東 廣州 510450)
目前市面上的智能送餐系統(tǒng)一般使用超寬帶(Ultra Wide Band, UWB)技術的室內(nèi)無線定位系統(tǒng),或者使用激光雷達配合ROS 機器人操作系統(tǒng)[1]。UWB 通信技術的精度較高,但不能很好地規(guī)劃出最短路線實現(xiàn)自動避障;而使用激光雷達配合ROS 機器人操作系統(tǒng)[2]的適用性較強、效率較高,但不能自動標記用戶的位置,只能實現(xiàn)簡單的建圖,無法滿足美食城多商家共用送餐機器人的需求。因此,本文基于美食城這一環(huán)境復雜、顧客位置不定、服務需求量大、商家多的特定環(huán)境,設計開發(fā)了基于ROS 與UWB的美食城送餐機器人系統(tǒng)[3]。
送餐機器人的主要結(jié)構(gòu)由觸摸屏、餐牌回收收納盒、上下雙層送餐托盤、激光雷達、機器人本體及對應的核心控制板和上位機等一系列軟硬件組成。機器人通過兩組麥克納姆輪實現(xiàn)送餐機器人的全向移動,通過激光雷達配合UWB 實現(xiàn)餐品的投送和回收。機器人的主要結(jié)構(gòu)示意圖如圖1所示。
圖1 送餐機器人整體結(jié)構(gòu)設計
送餐機器人控制系統(tǒng)的硬件組成主要包括上位機遠程控制臺(PC)、2 組UWB 基站、激光雷達、中繼機樹莓派微型電腦、下位機核心控制板STM32、電源供電模塊等,具體如圖2所示。
圖2 送餐機器人硬件結(jié)構(gòu)圖
上位機遠程控制臺(PC)使用Ubuntu 18.04 系統(tǒng)與QT,可實現(xiàn)機器人的運動監(jiān)控,顯示機器人任務列表信息,與中繼機使用無線網(wǎng)絡通信。
中繼機樹莓派微型電腦搭載Ubuntu 18.04 系統(tǒng)與ROS 操作系統(tǒng)[4],可實現(xiàn)簡單運算并接收激光雷達的數(shù)據(jù),將點餐任務信息通過Wi-Fi 無線網(wǎng)絡通信發(fā)送給上位機PC,將數(shù)據(jù)通過uart 串口先發(fā)送至下位機STM32,控制兩組電機實現(xiàn)全向運動。
下位機核心控制板STM32 通過SPI 協(xié)議與電機驅(qū)動C620 通信,并發(fā)送相對應的PWM 信號脈寬值,通過CAN 總線控制電機轉(zhuǎn)向和變速,使送餐機器人按照控制要求運動。UWB 機器人標簽通過無線載波通信和UWB 模塊進行通信,并且將接收到的位置信息通過串口發(fā)送給核心控制板STM32,再通過串口發(fā)送位置數(shù)據(jù)給中繼機樹莓派,使送餐機器人能準確定位。
送餐機器人軟件系統(tǒng)包括遠程控制臺軟件設計、UWB 室內(nèi)定位程序、人機交互程序、機器人建圖與導航程序。UWB 室內(nèi)定位程序負責對機器人在ROS地圖上進行定位;人機交互程序負責幫助用戶查看點餐信息,方便商家和用戶確認送餐信息;機器人建圖與導航程序負責在ROS 建立二維地圖以及根據(jù)UWB定位標簽進行導航。
遠程控制臺作為送餐機器人的服務端,能夠?qū)崿F(xiàn)機器人的運動監(jiān)控,顯示機器人任務列表信息以及存儲客戶端用戶點餐信息;商家電腦的點餐軟件設計由商家客戶端和用戶客戶端組成。
通過QT 軟件進行UI 界面設計,用戶客戶端界面如圖3 所示,QT 開發(fā)語言基于C/C++,能大大降低匯編的難度,使用的函數(shù)難度較低,指令的可讀性也比較強[5]。用戶可以根據(jù)自己的愛好進行點餐,同時商家需要選擇該訂單的餐牌號并把對應的餐牌交給顧客。送餐任務數(shù)量由訂單內(nèi)的餐品數(shù)量和訂單數(shù)決定,進入任務狀態(tài)后,機器人會通過基站位置定位送餐地點,準確快速地完成送餐,并進入下一個訂單任務。
圖3 用戶客戶端設計界面
室內(nèi)定位采用TOA 算法計算兩個設備之間的距離,TOA 測距方法屬于雙向測距技術,其原理是用信號在兩個異步收發(fā)器間傳輸?shù)臅r間乘以傳輸?shù)乃俣?,計算出兩個異步收發(fā)器之間的距離[6]。單邊雙向測距的流程為數(shù)據(jù)信號從發(fā)送端發(fā)出并記錄時間T1,接收端接收到數(shù)據(jù)信號記錄時間T2,接收端發(fā)送應答信號記錄時間T3,發(fā)送端接收到應答信號記錄時間T4。發(fā)送端發(fā)送與接收的時間差為T4 減去T1,接收端發(fā)送與接收的時間差為T3 減去T2。發(fā)送端與接收端的距離為發(fā)送端發(fā)送與接收的時間差減去接收端發(fā)送與接收的時間差然后乘以傳播速度。
本文采用的是雙邊雙向測距技術。假設有A、B兩個設備,雙邊雙向測距技術就是在以A 設備作為發(fā)送端、B 設備作為接收端進行一次單邊雙向測距后,再以A 設備作為發(fā)送端發(fā)送一次數(shù)據(jù)給B 設備。很明顯,雙邊雙向測距技術會比單邊雙向測距技術花費的時間更長,但是其精度會比單邊雙向測距更高。
本設計把UWB 模塊分為標簽和基站,其中,用來建立坐標軸的基站有3 個,用來作為坐標點的標簽有2 個,如圖4 所示。通過基站0(0,y0)、基站1(x1,0)、基站2(x2,0)建立笛卡爾直角坐標系,在直角坐標系中,機器人坐標為(x3,y3),用戶坐標為(x4,y4),再通過TOA 算法得到機器人和用戶的實際坐標數(shù)據(jù):
圖4 UWB室內(nèi)定位模塊擺放位置圖
基站就是雙邊雙向測距中的接收端,所以如果UWB 模塊被劃分為基站就會執(zhí)行循環(huán)等待標簽數(shù)據(jù),在接收到消息后判斷數(shù)據(jù)是否正常,判斷數(shù)據(jù)正常后會把數(shù)據(jù)存進數(shù)組里并讀取時間節(jié)點;接著設置最終消息接收的預期延遲和超時,把要發(fā)送的數(shù)據(jù)寫入DW1000,配置發(fā)送幀控制寄存器,設置發(fā)送方式并發(fā)送信息回應標簽;再次循環(huán)等待標簽數(shù)據(jù),判斷數(shù)據(jù)是否正常,把數(shù)據(jù)存進數(shù)組里,讀取時間節(jié)點。標簽發(fā)送的數(shù)據(jù)里面會包含時間節(jié)點信息,配合基站自身讀取的時間節(jié)點,通過上述的TOF 雙邊雙向測距原理計算出基站與標簽的距離。每個基站計算完距離后又會通過DW1000 把距離數(shù)據(jù)發(fā)送給標簽,標簽再匯總與3 個基站之間的距離并發(fā)送給基站0,基站0 會通過加權三角形質(zhì)心定位算法得到標簽在室內(nèi)地圖坐標系下的坐標,并通過串口發(fā)送出去[1]。
標簽就是雙邊雙向測距中的發(fā)送端。所有的標簽會由一個主標簽管理,每個標簽要想進行測距就必須先向主標簽發(fā)送申請,主標簽進行申請排序并逐個通過申請[7]。這樣做原因是,每個標簽都會與基站TOF 算法測距,如果某個標簽與基站0 雙邊雙向測距進行到一半,另外一個標簽又發(fā)送數(shù)據(jù)給基站0,就會導致整個UWB 室內(nèi)定位系統(tǒng)發(fā)生混亂。在每個標簽通過申請后會先設置接收事后延誤和超時,把當前時間節(jié)點寫入要發(fā)送數(shù)據(jù)的數(shù)組中,把要發(fā)送的數(shù)據(jù)寫入DW1000,配置發(fā)送幀控制寄存器,設置發(fā)送方式并發(fā)送數(shù)據(jù)給基站,循環(huán)等待基站數(shù)據(jù)。接收到基站數(shù)據(jù)后,再一次按相同的流程發(fā)送數(shù)據(jù)給基站[2]。
機器人人機交互界面在中繼機樹莓派觸摸屏上顯示,使用QT 開發(fā)語言進行設計,如圖5 所示。其中,數(shù)字1~4 代表1~4 號餐格。當有送餐任務時,數(shù)字后就會顯示對應餐品。使用人機交互模塊可以研究系統(tǒng)與用戶之間的交互關系,提高系統(tǒng)的可用性和用戶友好性。
圖5 人機交互界面
使 用ROS 中所提供的AMCL 與Move base 功能包來實現(xiàn)定位和路徑規(guī)劃功能。首先,控制機器人在牛場環(huán)境中運動,使用Cartographer 算法建立牛場環(huán)境地圖,作為全局代價地圖。其次,機器人根據(jù)主機PC 或手機App 下發(fā)目標點,使用Dijkstra 算法進行全局路徑規(guī)劃,計算機器人到目標位置的最佳路線,并將其作為機器人的全局路線。最后,在機器人實際作業(yè)時,為了避免機器人與可能出現(xiàn)的動態(tài)障礙物發(fā)生碰撞,根據(jù)激光雷達實時數(shù)據(jù)引入本地代價地圖,由local planner 模塊通過Dynamic Windows Approaches算法計算躲避的多條軌跡,對于每條模擬的運動軌跡分別計算軌跡上是否存在障礙物以及與障礙物距離的分值CostsObstacle、軌跡上點與局部參考路徑最近距離的分值CostsPath、軌跡上點與局部參考路徑終點最近距離的分值CostsGoal[8],綜合評分計算公式為:
式中,α、β、Γ表示各評分標準的權重值。
其權重值取決于機器人所側(cè)重的性能,通過試驗,α、β、Γ的取值分別為0.07、0.35 和3。全局地圖模型如圖6 所示,地圖最下角的框表示機器人的初始位置,最左邊的框表示3 個商家的位置,3 個圓點表示3 個UWB 基站的位置,中間兩個大框表示餐桌和椅子的位置。
圖6 全局地圖模型
通過R p l i d a t A l 激光雷達收集環(huán)境數(shù)據(jù),Gmapping 算法處理收集到的環(huán)境數(shù)據(jù),通過ROS 機器人操作系統(tǒng)構(gòu)建出SLAM 地圖,UWB 模塊對機器人進行定位然后在地圖上顯示坐標,ROS 機器人操作系統(tǒng)會根據(jù)UWB 模塊定位好點的坐標,再結(jié)合實際的環(huán)境數(shù)據(jù)計算出最短距離,然后快速地移動并實時更新數(shù)據(jù),調(diào)整機器人的行動狀態(tài)[9-10]。
本文設計了一個基于ROS 與UWB 的送餐機器人系統(tǒng)[11-13],分別從硬件系統(tǒng)總框架和系統(tǒng)的控制軟件設計兩個部分進行了介紹。投入試驗后,發(fā)現(xiàn)該系統(tǒng)有如下優(yōu)點:1)能獲取顧客的位置,并識別障礙物,解決了美食城環(huán)境復雜、顧客位置不定的問題。2)能計算出每次送餐距離最近的顧客位置,使機器人送餐有很高的效率。3)一臺機器人可供多位商家使用,并且有多個放餐位,具有較高的經(jīng)濟效益。4)有輔助回收餐具的功能。綜上,該系統(tǒng)符合美食城的環(huán)境,并且效率較高,可創(chuàng)造較高的經(jīng)濟效益,具有良好的應用前景。