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