夏 田,張大為,代斌斌
(陜西科技大學(xué),西安 710021)
服務(wù)機(jī)器人是新興的一類智能機(jī)器人,其可以自主工作或全自主工作。通過(guò)智能化的工作以及網(wǎng)絡(luò)技術(shù)的相互融合,從而促進(jìn)人類生活的便捷、智能化[1,2]。在技術(shù)的不斷發(fā)展中,服務(wù)型智能機(jī)器人的功能被逐步完善,可以勝任不同的任務(wù)[3]。
針對(duì)現(xiàn)有送餐機(jī)器人的軌跡固定、空間要求高、容易產(chǎn)生人機(jī)干涉的問(wèn)題,本文提出了一種基于麥克納姆輪的在餐廳天花板層運(yùn)行的送餐機(jī)器人;建立送餐機(jī)器人硬件控制平臺(tái),使用機(jī)器人操作系統(tǒng)ROS和編程語(yǔ)言C++搭建軟件平臺(tái);進(jìn)行實(shí)時(shí)地圖構(gòu)建定位與路徑規(guī)劃仿真,結(jié)果證明機(jī)器人可以較好實(shí)現(xiàn)送餐機(jī)器人的相關(guān)功能,顯著提高了送餐作業(yè)的效率。
全向移動(dòng)送餐機(jī)器人的主要結(jié)構(gòu)由1.蝸輪繩輥聯(lián)接架2.蝸輪;3.升降電機(jī)聯(lián)軸器;4.蝸輪繩輥連接軸;5.升降電機(jī);6、升降電機(jī)架;7.定滑輪;8.滑輪架;9.上托架;10.蝸桿;11.升降繩孔;12.升降繩;13.餐盤;14、限位孔;15.鋁合金型材;16.麥克納姆輪;17.輪組電機(jī)及對(duì)應(yīng)的核心控制板和上位機(jī)等一系列軟硬件組成組成。機(jī)器人的主要結(jié)構(gòu)示意圖如圖1所示。
圖1 送餐機(jī)器人主要結(jié)構(gòu)示意圖
全向移動(dòng)送餐機(jī)器人的送餐工作原理如圖2所示,機(jī)器人通過(guò)兩組麥克納姆輪16實(shí)現(xiàn)在天花板層的全向移動(dòng),通過(guò)升降結(jié)構(gòu)實(shí)現(xiàn)餐品的投送和回收。此方式可以隔絕人機(jī)干涉,增加機(jī)器人的靈活性,送餐效率大幅度提升的同時(shí)降低了運(yùn)行風(fēng)險(xiǎn)。
為準(zhǔn)確完成送餐機(jī)器人作業(yè),對(duì)送餐機(jī)器人的總體控制系統(tǒng)流程做出如下設(shè)計(jì)。
1)送餐任務(wù)開始,人工核對(duì)待送餐品和目標(biāo)點(diǎn)并將其放在已收回餐盤上,之后選擇自動(dòng)或手動(dòng)模式。
2)自動(dòng)模式下,機(jī)器人上電開機(jī)并在遠(yuǎn)程pc指令控制下,根據(jù)預(yù)設(shè)路徑規(guī)劃算法計(jì)算出軌跡,隨后下位機(jī)STM32驅(qū)動(dòng)輪組電機(jī)運(yùn)行,激光雷達(dá)反饋行駛路徑與位置并修正,遇障礙時(shí),通過(guò)激光雷達(dá)重新規(guī)劃軌跡。到達(dá)目標(biāo)點(diǎn)餐盤投送食物,待取餐后收回,隨后返回起始點(diǎn)等待指令。
3)手動(dòng)模式下,將已通過(guò)中繼機(jī)樹莓派解析的遠(yuǎn)程控制pc發(fā)布的鍵盤指令發(fā)送給下位機(jī)STM32,其運(yùn)行對(duì)應(yīng)的電機(jī)驅(qū)動(dòng)程序?qū)崿F(xiàn)機(jī)器人手動(dòng)控制下的全向移動(dòng)、送收餐盤。送餐完成后手動(dòng)返回初始位置等待任務(wù)。
送餐機(jī)器人的控制系統(tǒng)硬件組成主要包括上位機(jī)遠(yuǎn)程控制pc、中繼機(jī)樹莓派微型電腦、下位機(jī)核心控制板STM32、激光雷達(dá)、輪組,餐盤升降電機(jī)及對(duì)應(yīng)驅(qū)動(dòng)模塊、電機(jī)編碼器等。
機(jī)器人控制系統(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。
圖2 控制系統(tǒng)硬件結(jié)構(gòu)框圖
上位機(jī)遠(yuǎn)程控制pc安裝Ubuntu 16.04系統(tǒng)與ROS操作系統(tǒng),實(shí)現(xiàn)運(yùn)動(dòng)控制、實(shí)時(shí)地圖構(gòu)建與定位、軌跡規(guī)劃導(dǎo)航、避障算法構(gòu)建等復(fù)雜數(shù)據(jù)處理,其與中繼機(jī)使用無(wú)線網(wǎng)絡(luò)通訊。
中繼機(jī)樹莓派微型電腦安裝Ubuntu 16.04系統(tǒng)與ROS操作系統(tǒng)。實(shí)現(xiàn)簡(jiǎn)單運(yùn)算并接收激光雷達(dá)數(shù)據(jù),將數(shù)據(jù)通過(guò)uart串口線發(fā)送至下位機(jī)STM32實(shí)現(xiàn)輪組、餐盤升降電機(jī)的控制。
下位機(jī)核心控制板STM32通過(guò)串口與各電機(jī)通訊,得到對(duì)應(yīng)PWM信號(hào)脈寬值,并發(fā)送給電機(jī)驅(qū)動(dòng)C620,其通過(guò)CAN總線控制電機(jī)轉(zhuǎn)向和轉(zhuǎn)速,使機(jī)器人按照控制要求運(yùn)動(dòng)。
機(jī)器人的軟件控制系統(tǒng)部分由上位機(jī)、中繼機(jī)、下位機(jī)對(duì)應(yīng)控制程序構(gòu)成,自動(dòng)模式下由預(yù)設(shè)程序控制機(jī)器人,手動(dòng)模式下由人工在上位機(jī)實(shí)現(xiàn)控制。
機(jī)器人的軟件控制系統(tǒng)流程如圖3所示。
圖3 機(jī)器人軟件控制系統(tǒng)流程圖
上位機(jī)控制程序主要有底盤目標(biāo)點(diǎn)發(fā)布程序、運(yùn)動(dòng)控制程序、運(yùn)動(dòng)模型解算與位置反饋程序。當(dāng)送餐開始時(shí),上位機(jī)將控制指令通過(guò)無(wú)線網(wǎng)絡(luò)發(fā)送給中繼機(jī),上位機(jī)與中繼機(jī)都安裝了ROS操作系統(tǒng),利用系統(tǒng)中已有的工具、協(xié)議完成機(jī)器人的算法編程和仿真。中繼機(jī)將接收到的相關(guān)指令進(jìn)行解析并遞送給下位機(jī)。
中繼機(jī)樹莓派微型電腦通過(guò)rosserial協(xié)議將解析的運(yùn)動(dòng)指令以串口通訊遞送至下位機(jī)STM32,使下位機(jī)實(shí)現(xiàn)對(duì)應(yīng)電機(jī)的控制。
下位機(jī)控制程序主要包括電機(jī)控制程序、ROS串口通訊,機(jī)器人位姿讀取程序。電機(jī)控制,由于送餐機(jī)器人采用麥克納姆輪組,只需要控制各輪的速度和轉(zhuǎn)向即可實(shí)現(xiàn)機(jī)器人的全向移動(dòng)。通過(guò)PWM脈寬調(diào)制控制輪組電機(jī)實(shí)現(xiàn)轉(zhuǎn)速和轉(zhuǎn)向的調(diào)節(jié),根據(jù)脈寬和速度的映射關(guān)系圖可以得到PWM脈寬對(duì)應(yīng)的電機(jī)的速度和轉(zhuǎn)向,如圖4所示。與ROS串口通訊同樣是通過(guò)rosserial協(xié)議實(shí)現(xiàn)的[4]。在Windows環(huán)境下應(yīng)用MDK5軟件,C/C++語(yǔ)言完成下位機(jī)STM32的開發(fā)。
圖4 脈寬和速度的映射關(guān)系
機(jī)器人的主要控制圖如圖5所示。
圖5 送餐機(jī)器人主要控制圖
送餐機(jī)器人主要算法包括運(yùn)動(dòng)底盤的SLAM和路徑規(guī)劃。在SLAM中,建圖采用gmapping算法[5];定位采用蒙特卡羅算法[6]。全局路徑規(guī)劃使用基于柵格地圖上的A*算法[7];局部路徑規(guī)劃算法使用ROS機(jī)器人操作系統(tǒng)中的DWA算法。
在上位機(jī)遠(yuǎn)程控制pc中,根據(jù)送餐機(jī)器人需要的參數(shù)配置slam_gmapping節(jié)點(diǎn)如表1所示。
表1 “slam_gmapping” 節(jié)點(diǎn)部分參數(shù)設(shè)置
啟動(dòng)后發(fā)布機(jī)器人狀態(tài)信息,啟動(dòng)鍵盤控制、gmapping SLAM節(jié)點(diǎn),使用激光雷達(dá)更新地圖最終獲得完整地圖信息,建圖仿真如圖6所示,地圖中設(shè)置了墻壁等固有障礙,機(jī)器人最終完成地圖掃描構(gòu)建。
圖6 機(jī)器人建圖仿真
在已有靜態(tài)柵格地圖上使用ROS中Amcl工具包進(jìn)行蒙特卡羅定位仿真,其節(jié)點(diǎn)參數(shù)如表2所示。機(jī)器人啟動(dòng)建立相關(guān)節(jié)點(diǎn)后啟動(dòng)Amcl。蒙特卡羅定位過(guò)程如圖7所示,可以看出粒子樣本點(diǎn)收斂,定位趨于準(zhǔn)確,地圖右下角邊框處線為實(shí)時(shí)雷達(dá)掃描范圍。
圖7 蒙特卡羅定位過(guò)程
表2 “Amcl”節(jié)點(diǎn)部分參數(shù)設(shè)置
此部分利用ROS中move_base功能包仿真,全局地圖模型如圖8所示;全局路徑規(guī)劃與導(dǎo)航如圖9所示;避障地圖如圖10所示;避障過(guò)程如圖11所示。
圖8 全局地圖模型
圖9 全局路徑規(guī)劃與導(dǎo)航
圖10 避障地圖
由圖9可見,機(jī)器人成功規(guī)劃出全局路徑并移動(dòng);由圖10及圖11可見,設(shè)置了臨時(shí)的墻壁障礙,機(jī)器人在沿著已規(guī)劃路徑上運(yùn)行時(shí)發(fā)現(xiàn)障礙并進(jìn)行局部路徑規(guī)劃實(shí)現(xiàn)避障,完成行走過(guò)程。
圖11 避障過(guò)程
由仿真結(jié)果可知,使用上述算法設(shè)計(jì)的全向移動(dòng)送餐機(jī)器人可以準(zhǔn)確實(shí)現(xiàn)實(shí)時(shí)地圖構(gòu)建與定位、路徑規(guī)劃等功能,在工作環(huán)境中有障礙物等影響因素時(shí),機(jī)器人可以通過(guò)避障算法進(jìn)行局部路徑規(guī)劃避障,從而較好地完成送餐任務(wù)。
本文詳細(xì)闡述了全向移動(dòng)送餐機(jī)器人的主要結(jié)構(gòu)、工作原理,并根據(jù)其控制要求,以STM32和中繼機(jī)樹莓派作為核心控制器,使用上位機(jī)pc進(jìn)行遠(yuǎn)程操作,建立送餐機(jī)器人控制的硬件平臺(tái)。采用Ubuntu mate 16.04作為嵌入式操作系統(tǒng),同時(shí)使用機(jī)器人操作系統(tǒng)ROS和編程語(yǔ)言C++搭建系統(tǒng)的軟件平臺(tái)。利用ROS和相關(guān)算法進(jìn)行仿真,結(jié)果表明所述送餐機(jī)器人能夠完成全向移動(dòng),實(shí)時(shí)地圖構(gòu)建與定位,避障等送餐相關(guān)功能,驗(yàn)證了控制系統(tǒng)的可行性。該設(shè)備具有結(jié)構(gòu)簡(jiǎn)單、易于維修、適用性強(qiáng)等優(yōu)點(diǎn),減少了人機(jī)干涉及服務(wù)員與顧客的直接接觸。