陳錦儒 林潔彬 張成
關(guān)鍵詞:機(jī)器人;ROS系統(tǒng);路徑規(guī)劃;自主導(dǎo)航
0 引言
隨著社會(huì)對(duì)機(jī)器人技術(shù)的要求不斷提高,移動(dòng)機(jī)器人的應(yīng)用環(huán)境復(fù)雜度逐步上升,如何提高機(jī)器人的高度自主控制性成為當(dāng)下機(jī)器人研究熱點(diǎn)。在抗擊疫情中高度自主控制的移動(dòng)機(jī)器人作為強(qiáng)大的抗疫資源,可用于定點(diǎn)空間消毒、配送食物與藥品,甚至可運(yùn)輸重要待檢物品等工作,從而減少醫(yī)護(hù)人員的接觸風(fēng)險(xiǎn)。為進(jìn)一步探究機(jī)器人的自主性技術(shù),以阿克曼結(jié)構(gòu)的小車(chē)為載體,搭配樹(shù)莓派與激光雷達(dá)設(shè)計(jì)一個(gè)具備SLAM與自主導(dǎo)航功能的移動(dòng)機(jī)器人。該移動(dòng)機(jī)器人可代替人工進(jìn)行作業(yè)的移動(dòng)裝置,具有路徑規(guī)劃、運(yùn)動(dòng)控制等功能,能夠?qū)崿F(xiàn)一般環(huán)境下全線(xiàn)范圍內(nèi)自主導(dǎo)航[1]。目前應(yīng)用于地圖的路徑規(guī)劃算法中,常用的智能算法有蟻群算法、粒子群算法以及A*算法等[2-4]。針對(duì)自主導(dǎo)航的研究,采用激光雷達(dá)實(shí)現(xiàn)地圖的構(gòu)造,在路徑規(guī)劃過(guò)程中為避免采用單一的動(dòng)態(tài)窗口算法(DWA)導(dǎo)致局部較優(yōu)路徑而并非全局最優(yōu)困境問(wèn)題,綜合運(yùn)用A*和DWA算法進(jìn)行路徑規(guī)劃,通過(guò)融合A*算法優(yōu)化局部路徑規(guī)劃算法,擴(kuò)展搜索領(lǐng)域和消除同方向多余子節(jié)點(diǎn),使移動(dòng)機(jī)器人沿著全局最優(yōu)路徑方向搜索目標(biāo)點(diǎn)[5-6]。
1 移動(dòng)機(jī)器人的基本結(jié)構(gòu)
移動(dòng)機(jī)器人采用分層結(jié)構(gòu)設(shè)計(jì),頂層負(fù)責(zé)各傳感器數(shù)據(jù)的獲取、計(jì)算以及處理,底層接收上層的數(shù)據(jù)完成機(jī)器人的自主控制。機(jī)器人實(shí)體分成三層,在自主導(dǎo)航過(guò)程中,為了保證機(jī)器人的移動(dòng)穩(wěn)定,底盤(pán)結(jié)構(gòu)采用了阿克曼轉(zhuǎn)向機(jī)構(gòu)。移動(dòng)機(jī)器人在轉(zhuǎn)向時(shí),由于左、右轉(zhuǎn)向輪的轉(zhuǎn)向半徑不同所造成的左、右轉(zhuǎn)向輪轉(zhuǎn)角不同,根據(jù)阿克曼轉(zhuǎn)向幾何設(shè)計(jì)轉(zhuǎn)向機(jī)構(gòu),利用四連桿的相等曲柄,可以使內(nèi)側(cè)輪的轉(zhuǎn)向角比外側(cè)輪大大約2~4度,使四個(gè)輪子路徑的圓心大致交會(huì)于后軸的延長(zhǎng)線(xiàn)上瞬時(shí)轉(zhuǎn)向中心,從而讓機(jī)器人順暢地轉(zhuǎn)彎。移動(dòng)機(jī)器人整體動(dòng)力由后驅(qū)動(dòng)輪輸出,為了避免在復(fù)雜環(huán)境下后驅(qū)動(dòng)輪同軸運(yùn)轉(zhuǎn),底盤(pán)加裝了轉(zhuǎn)軸避震模塊。其實(shí)物圖見(jiàn)圖1所示。
移動(dòng)機(jī)器人控制系統(tǒng)采用上位機(jī)與下位機(jī)控制相結(jié)合的方式來(lái)實(shí)現(xiàn)地圖構(gòu)建與自主導(dǎo)航[7]。上位機(jī)控制系統(tǒng)采用樹(shù)莓派4B為主控,搭載了Ubuntu18.04+ROS melodic操作系統(tǒng),接收激光雷達(dá)提供的數(shù)據(jù)并構(gòu)建地圖,從而獲取機(jī)器人的本體位姿數(shù)據(jù),實(shí)現(xiàn)移動(dòng)機(jī)器人的感知、路徑規(guī)劃,并輸出機(jī)器人的運(yùn)動(dòng)控制信息等功能。下位機(jī)控制系統(tǒng)由STM32F103RCT6 最小系統(tǒng)為主控,包含電機(jī)與電機(jī)驅(qū)動(dòng)模塊、電機(jī)編碼器、方向舵機(jī)模塊以及顯示模塊等部分組成。機(jī)器人通過(guò)下位機(jī)與上位機(jī)的數(shù)據(jù)通信,下位機(jī)獲取控制指令與機(jī)器人定位信息,輸出PWM信號(hào)給電機(jī)驅(qū)動(dòng)控制帶編碼器的電機(jī)轉(zhuǎn)動(dòng),并根據(jù)電機(jī)的速度反饋回STM32 控制器來(lái)實(shí)現(xiàn)閉環(huán)控制,從而達(dá)到機(jī)器人自主導(dǎo)航控制的效果。為了隨時(shí)監(jiān)控移動(dòng)機(jī)器人的運(yùn)行數(shù)據(jù),利用樹(shù)莓派4B的Wi-Fi功能,同步傳輸機(jī)器人數(shù)據(jù)到PC機(jī)平臺(tái),實(shí)現(xiàn)移動(dòng)機(jī)器人的遠(yuǎn)程操控和監(jiān)測(cè)。其基本結(jié)構(gòu)圖如圖2所示。
2 移動(dòng)機(jī)器人系統(tǒng)
2.1 硬件系統(tǒng)
移動(dòng)機(jī)器人硬件系統(tǒng)是實(shí)現(xiàn)環(huán)境位置的感知、路徑的規(guī)劃、運(yùn)動(dòng)控制與導(dǎo)航等功能,將整個(gè)硬件系統(tǒng)分為3層:遠(yuǎn)程操作系統(tǒng)、嵌入式控制系統(tǒng)、底層控制系統(tǒng)。移動(dòng)機(jī)器人硬件系統(tǒng)組成如圖3所示。
2.2 軟件系統(tǒng)
機(jī)器人自主導(dǎo)航控制系統(tǒng)主要包括:可視化界面、環(huán)境地圖的構(gòu)建、機(jī)器人的實(shí)時(shí)位姿信息、導(dǎo)航的路徑規(guī)劃等單元模塊。整套控制系統(tǒng)是基于ROS系統(tǒng)的基礎(chǔ)上進(jìn)行開(kāi)發(fā),主控核心采用樹(shù)莓派4B接收各傳感器返回的數(shù)據(jù)并進(jìn)行相應(yīng)的優(yōu)化處理,根據(jù)構(gòu)建的地圖信息以及機(jī)器人的位姿數(shù)據(jù)從而實(shí)現(xiàn)機(jī)器人的自主導(dǎo)航的路徑規(guī)劃,并將規(guī)劃好的路線(xiàn)數(shù)據(jù)通過(guò)串口通信的方式與STM32主控器傳輸數(shù)據(jù),驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng),實(shí)現(xiàn)自主導(dǎo)航。整個(gè)系統(tǒng)的運(yùn)動(dòng)控制軟件架構(gòu)如圖4所示。
1) 可視化界面:RVIZ是ROS的三維可視化工具,以三維方式呈現(xiàn)ROS系統(tǒng)的消息,從而將數(shù)據(jù)進(jìn)行可視化的表達(dá)。在系統(tǒng)中對(duì)機(jī)器人的各傳感器數(shù)據(jù)、構(gòu)建地圖的任何實(shí)物進(jìn)行尺寸、位置等屬性的描述與顯示,為了更加直觀還可以使用圖形化的方式呈現(xiàn),實(shí)時(shí)顯示機(jī)器人各環(huán)節(jié)傳感器的數(shù)據(jù),包括機(jī)器人的運(yùn)動(dòng)狀態(tài)、地圖環(huán)境等參數(shù)。
2) 環(huán)境地圖的構(gòu)建:機(jī)器人主要利用激光雷達(dá)對(duì)外部環(huán)境進(jìn)行全方位的掃描,獲取實(shí)時(shí)數(shù)據(jù)后運(yùn)行通Gmapping算法進(jìn)行數(shù)據(jù)的融合與處理,逐步構(gòu)建出當(dāng)前環(huán)境的全局地圖信息。
3) 機(jī)器人的實(shí)時(shí)位姿信息:機(jī)器人的位姿信息分為兩種:初始位姿已知的位姿跟蹤和初始位姿未知的全局定位。位姿跟蹤的前提是確定已知機(jī)器人的初始位姿信息,將機(jī)器人在運(yùn)動(dòng)的過(guò)程中通過(guò)觀測(cè)到的特征數(shù)據(jù)與地圖中的特征信息進(jìn)行匹配對(duì)比,求解兩者之間的差異,從而更新機(jī)器人的位姿數(shù)據(jù),達(dá)到機(jī)器人定位的效果。而位姿跟蹤通常采用擴(kuò)展卡爾曼濾波器來(lái)實(shí)現(xiàn)功能,其過(guò)程主要包括三大部分:第一部分是根據(jù)機(jī)器人的運(yùn)動(dòng)模型預(yù)測(cè)機(jī)器人的位姿;第二部分是將觀測(cè)信息與地圖進(jìn)行匹配計(jì)算;第三部分是根據(jù)預(yù)測(cè)后的機(jī)器人位姿以及匹配的特征計(jì)算機(jī)器人應(yīng)該觀測(cè)到的信息,并利用應(yīng)該觀測(cè)到的信息與實(shí)際觀測(cè)到的信息之間的差距來(lái)更新機(jī)器人的位姿。
4) 路徑規(guī)劃:針對(duì)構(gòu)建的地圖環(huán)境實(shí)現(xiàn)路徑規(guī)劃的需求與特點(diǎn),路徑規(guī)劃分為全局路線(xiàn)規(guī)劃與局部路線(xiàn)規(guī)劃兩個(gè)階段。第一階段根據(jù)全局環(huán)境數(shù)據(jù),利用一種基于混沌擾動(dòng)的改進(jìn)型蟻群算法,提高目標(biāo)跟蹤數(shù)據(jù)關(guān)聯(lián)的處理速度,根據(jù)多目標(biāo)數(shù)據(jù)關(guān)聯(lián)問(wèn)題的特點(diǎn),將問(wèn)題轉(zhuǎn)化為組合優(yōu)化問(wèn)題,引入自適應(yīng)混沌機(jī)制,建立數(shù)據(jù)關(guān)聯(lián)模型,規(guī)劃出全局最優(yōu)路線(xiàn)規(guī)劃。第二階段結(jié)合全局規(guī)劃的基礎(chǔ)上,分局部規(guī)劃,在機(jī)器人沿著所全局最優(yōu)路徑的規(guī)劃行走時(shí),同時(shí)結(jié)合機(jī)器人實(shí)時(shí)姿態(tài)信息與局部地圖的關(guān)聯(lián),針對(duì)當(dāng)前環(huán)境情況控制機(jī)器人運(yùn)動(dòng),如果在運(yùn)行過(guò)程中遇到障礙物,可協(xié)調(diào)控制策略完成局部路徑規(guī)劃算法規(guī)劃出新的路徑,繞開(kāi)障礙物回到全局規(guī)劃路徑的規(guī)劃路線(xiàn)后,繼續(xù)轉(zhuǎn)化局部路徑規(guī)劃,實(shí)現(xiàn)機(jī)器人的自主導(dǎo)航控制。
5) 電機(jī)的驅(qū)動(dòng)控制:STM32F103主控系統(tǒng)在接收到樹(shù)莓派4B發(fā)送過(guò)來(lái)的路徑規(guī)劃數(shù)據(jù)后,根據(jù)移動(dòng)方向參數(shù)以及速度控制的指令,使用PID控制算法計(jì)算出兩輪驅(qū)動(dòng)速度以及方向舵機(jī)轉(zhuǎn)向角度,并將驅(qū)動(dòng)指令下發(fā)給電機(jī)驅(qū)動(dòng)模塊,實(shí)現(xiàn)自主導(dǎo)航。
6) TF坐標(biāo)轉(zhuǎn)換:機(jī)器人的坐標(biāo)系即base_link坐標(biāo)系(機(jī)器人的機(jī)體坐標(biāo)系),odom坐標(biāo)系即里程計(jì)坐標(biāo)系,一般都是odme = base_link,map坐標(biāo)系即固定坐標(biāo)系(一般為機(jī)器人所處的大世界為同一個(gè)坐標(biāo)系),laser坐標(biāo)系即為激光雷達(dá)坐標(biāo)系。主要是實(shí)現(xiàn)機(jī)器人以上坐標(biāo)系之間的相互轉(zhuǎn)換,將輔助定位模塊得到的坐標(biāo)系的定位數(shù)據(jù)轉(zhuǎn)換成慣性坐標(biāo)系下的定位數(shù)據(jù),并將數(shù)據(jù)傳遞給Slam_Gmapping 模塊。
7) 輔助定位模塊:該模塊的工作原理是通過(guò)采集驅(qū)動(dòng)電機(jī)的編碼器反饋的信息以及其慣性測(cè)量單元的數(shù)據(jù),計(jì)算出機(jī)器人移動(dòng)距離長(zhǎng)度,再把該數(shù)據(jù)應(yīng)用到機(jī)器人的位姿信息當(dāng)中,同時(shí)將機(jī)器人的定位數(shù)據(jù)傳遞給TF坐標(biāo)轉(zhuǎn)換模塊,實(shí)現(xiàn)構(gòu)建的地圖與機(jī)器人的相融合。
3 地圖的構(gòu)建與自主導(dǎo)航控制實(shí)驗(yàn)
自主導(dǎo)航指的是機(jī)器人從起點(diǎn)出發(fā),通過(guò)感知環(huán)境信息自主識(shí)別障礙物并抵達(dá)預(yù)期目標(biāo)點(diǎn)。自主導(dǎo)航需要解決的問(wèn)題主要有環(huán)境地圖的構(gòu)建、機(jī)器人的定位以及運(yùn)動(dòng)的路徑規(guī)劃,其三者的技術(shù)關(guān)系圖見(jiàn)圖5。地圖構(gòu)建是指通過(guò)對(duì)傳感器采集的環(huán)境特征信息進(jìn)行處理繪制出的環(huán)境空間模型,進(jìn)而對(duì)數(shù)據(jù)處理構(gòu)建出環(huán)境空間模型;機(jī)器人定位是指以一種度量方式描述機(jī)器人在當(dāng)前環(huán)境下的位姿;路徑規(guī)劃是根據(jù)已知環(huán)境地圖為機(jī)器人規(guī)劃出一條最優(yōu)路徑。
3.1 環(huán)境地圖的構(gòu)建
在機(jī)器人自主導(dǎo)航技術(shù)中構(gòu)建高精度的環(huán)境地圖是很重要的一步,在ROS系統(tǒng)下驅(qū)動(dòng)激光雷達(dá)運(yùn)行Gmapping算法檢測(cè)的數(shù)據(jù)將每個(gè)柵格的狀態(tài)通過(guò)灰度值反映在柵格地圖上從而構(gòu)建出環(huán)境地圖,其效果如圖6所示。
Gmapping算法是一種基于RBpf粒子濾波算法使用2D激光雷達(dá)完成二維柵格地圖構(gòu)建的SLAM算法。RBpf粒子濾波算法將定位和建圖分離,由于在建圖過(guò)程中需要粒子數(shù)多,而且頻繁執(zhí)行重采樣,從而導(dǎo)致計(jì)算量和內(nèi)存消耗很大,粒子退化嚴(yán)重。為了解決上述問(wèn)題,使用激光雷達(dá)的觀測(cè)模型作為提議分布,Gmap?ping算法在RBpf粒子濾波算法的基礎(chǔ)上,改進(jìn)了提議分布和選擇性重采樣,減少粒子數(shù)以及重采樣的次數(shù),降低計(jì)算量和所需內(nèi)存,提高算法的運(yùn)行效率,基于RBpf粒子濾波的Gmapping算法流程圖如圖7所示。
3.2 機(jī)器人的自主導(dǎo)航實(shí)驗(yàn)
機(jī)器人自動(dòng)導(dǎo)航過(guò)程中,構(gòu)建的環(huán)境地圖更新以及機(jī)器人的導(dǎo)航都需要機(jī)器人所在的環(huán)境位姿數(shù)據(jù),需要先對(duì)機(jī)器人進(jìn)行定位,綜合構(gòu)建的地圖再進(jìn)行路徑規(guī)劃,完成自主導(dǎo)航功能。機(jī)器人定位數(shù)據(jù)采用MCL算法實(shí)現(xiàn),MCL算法將粒子分布于整個(gè)地圖模型,并且這些粒子圍繞在移動(dòng)機(jī)器人周?chē)S機(jī)器人移動(dòng),根據(jù)機(jī)器人運(yùn)動(dòng)狀態(tài)消除不正確位置處的粒子,最后剩下代表機(jī)器人正確位置處的粒子,從而利用這批粒子完成機(jī)器人的全局位姿估計(jì)。
4 結(jié)束語(yǔ)
本研究是基于ROS系統(tǒng)設(shè)計(jì)了自主導(dǎo)航機(jī)器人控制系統(tǒng),該控制系統(tǒng)包含兩大部分,環(huán)境地圖的構(gòu)建和移動(dòng)路徑的規(guī)劃。使用激光雷達(dá)獲取環(huán)境信息,運(yùn)用Gmapping算法構(gòu)建地圖模型;利用MCL算法對(duì)機(jī)器人進(jìn)行環(huán)境的位置估計(jì),對(duì)地圖進(jìn)行局部與全局的路徑規(guī)劃,從而實(shí)現(xiàn)機(jī)器人最優(yōu)的自主導(dǎo)航路線(xiàn)。通過(guò)理論分析和實(shí)驗(yàn)測(cè)試驗(yàn)證了移動(dòng)機(jī)器人的性能和控制算法的可靠性,解析了環(huán)境地圖的構(gòu)建與自主導(dǎo)航的工作原理,為移動(dòng)機(jī)器人的高度自主性的研究提供了參考,基本滿(mǎn)足機(jī)器人自主導(dǎo)航的研究要求,在復(fù)雜的環(huán)境下,自主導(dǎo)航算法還需要在后續(xù)的研究中進(jìn)一步優(yōu)化和完善。