楊海程, 鄧達(dá)強, 黃菁菁, 陳海燕, 何梓樂
(華南理工大學(xué)廣州學(xué)院,廣州510800)
在隨著室內(nèi)移動機器人應(yīng)用的興起,移動機器人產(chǎn)生多種定位方式,其常用的定位方式有:正交碼盤加陀螺儀、攝像頭定位、激光雷達(dá)定位等,每種定位方式各有優(yōu)劣?;赟LAM(simultaneous localization and mapping),即時定位與地圖構(gòu)建,機器人在自身位置不確定的條件下,在未知環(huán)境中創(chuàng)建地圖,利用地圖進(jìn)行自主定位和導(dǎo)航,而利用激光雷達(dá)作SLAM傳感器,精度很高,速度快,計算量也不大,且容易做成實時SLAM。SLAM定位通過在位置不斷移動的情況下,不斷獲取傳感器對環(huán)境感知信息,從而實現(xiàn)定位和導(dǎo)航?;邴溈思{姆輪技術(shù)的小車可以實現(xiàn)前行、橫移、斜行、旋轉(zhuǎn)及其組合等運動方式,靈活方便。兩者的高度結(jié)合,不僅增強了多方位多領(lǐng)域的應(yīng)用性,且更提高了生活日常的自動化水平。對于企業(yè)而言,從生產(chǎn)到服務(wù)層面,靈活運用其小型自動化的特色與其產(chǎn)品相融合,會提高工作效率與效績。
小車的定位問題是整個研究的重中之重,在眾多的車載傳感器中,激光雷達(dá)以其靈敏度高、準(zhǔn)確性強被廣大科研工作者所青睞。激光雷達(dá)是以發(fā)射激光束探測目標(biāo)的位置、速度等特征量的一種雷達(dá)系統(tǒng),加上SLAM技術(shù)的輔助,實現(xiàn)機器人的自主定位和導(dǎo)航。本課題研究的小車是一種基于麥克納姆輪式的四輪獨立全方位驅(qū)動,能夠?qū)崿F(xiàn)小車在平面內(nèi)任意方向的移動。首先對小車的整體構(gòu)造進(jìn)行詳細(xì)的說明,對小車控制系統(tǒng)和運動系統(tǒng)進(jìn)行設(shè)計,為小車實現(xiàn)精準(zhǔn)定位與全方位移動奠定了基礎(chǔ);其次對小車進(jìn)行運動力學(xué)的分析,對研究分析的結(jié)果進(jìn)行試驗總結(jié);最后對小車的定位與導(dǎo)航系統(tǒng)進(jìn)行研究,尋找最合適的定位系統(tǒng),從而實現(xiàn)小車的精準(zhǔn)定位。
基于激光雷達(dá)SLAM定位的麥克納姆輪小車能夠在激光雷達(dá)和SLAM定位的作用下按照程序設(shè)定的路徑進(jìn)行作業(yè)。我們可以在小車的機身增加一些作業(yè)執(zhí)行輔助工具,如機械臂、滾輪等擴充它自身的功能,由于具備無人駕駛、自動化程度高、定位準(zhǔn)確、可以連續(xù)長時間作業(yè)等特點,它可以被應(yīng)用于倉儲物流領(lǐng)域和醫(yī)療康復(fù)領(lǐng)域。
基于激光雷達(dá)SLAM定位的麥克納姆輪小車系統(tǒng)結(jié)構(gòu)圖如圖1所示。小車的整體構(gòu)造分為動力系統(tǒng)、控制系統(tǒng)、電路系統(tǒng)、定位系統(tǒng)。
小車的動力系統(tǒng)由24 V航模電池供電,4個帶編碼器的直流減速電動機,4個麥克納姆輪組成。帶編碼器的直流減速電動機能夠讀取輪子轉(zhuǎn)一圈反饋回來的脈沖數(shù),然后通過處理脈沖數(shù)據(jù)能夠知道輪子轉(zhuǎn)一圈的長度,進(jìn)而推算出輪子轉(zhuǎn)一圈小車行走的路程。
圖1 小車系統(tǒng)結(jié)構(gòu)圖
小車的電路系統(tǒng)包含1個急停開關(guān)、24 V轉(zhuǎn)12 V穩(wěn)壓模塊、4個電動機驅(qū)動器、1個主控板、1個USB轉(zhuǎn)TTL串口模塊和1個can通訊模塊。各個模塊之間合理布置又相互關(guān)聯(lián),實現(xiàn)對整車的供電。
小車的底盤整體設(shè)計如圖2所示??紤]到需要放置激光雷達(dá)、4塊直流電動機驅(qū)動、1塊STM32主控板、電腦等等,使用4個麥克納姆輪的設(shè)計。該小車底盤設(shè)計具有如下特點:1)擁有足夠的空間放置各種控制設(shè)備以及外設(shè);2)該底盤設(shè)計是全方位移動平臺,具有靈活移動的特點;3)能夠使用4個麥克納姆輪來解算出小車的里程計信息,即小車當(dāng)前的位置。
圖2 小車底盤
小車上層為手提電腦,電腦放在小車后面。里面運行ROS機器人操作系統(tǒng),激光雷達(dá)安裝在小車的正前方位置,需要給小車激光雷達(dá)一個偏移量,這里以小車的中心點為中點,往前偏移0.175 m,往上偏移0.125 m。
1)控制芯片??刂菩酒捎肧TM32F103VET6,這款單片機擁有足夠強大的內(nèi)存和功能來對小車進(jìn)行控制。STM32上有很多開源的代碼,里面很多代碼寫的很優(yōu)秀,可以在前人的基礎(chǔ)上學(xué)習(xí)控制經(jīng)驗,再進(jìn)行小車的開發(fā)。
2)操作系統(tǒng)。小車控制器操作系統(tǒng)采用ROS。ROS是開源的,提供了很多實用的工具包和軟件包,合理利用好這些軟件工具可以使得研究開發(fā)更加快速。
3)操作系統(tǒng) ROS與STM32之間的通訊。ROS是依賴于Linux系統(tǒng)的,Linux系統(tǒng)上面使用boost庫(為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱)來與STM32(嵌入式單片機)進(jìn)行通訊,通訊方式采用串口通訊,通訊校驗方式采用crc校驗(即循環(huán)冗余校驗碼)。連接電腦與單片機之間需要使用一個USB轉(zhuǎn)TTL模塊來進(jìn)行通訊。
上位機部分串口通訊配置代碼:
serial_port sp(iosev,"/dev/ttyUSB001");//設(shè)置串口名稱
sp.set_option(serial_port::baud_rate(115200));//設(shè)置波特率
sp.set_option (serial_port::flow_control(serial_port::flow_control::none));//設(shè)置控制方式
sp.set_option(serial_port::parity(serial_port::parity::none));//設(shè)置奇偶校驗
sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one));//設(shè)置停止位
sp.set_option(serial_port::character_size(8));//設(shè)置字母位數(shù)為8位
ROS與STM32通訊實測效果如圖3所示,上位機為ROS,使用串口與STM32之間進(jìn)行通訊。
圖3 ROS與STM32通訊實測
1)麥克納姆輪運動模型。麥克納姆輪的這種移動方式是基于一個有許多位于機輪周邊的輪軸的中心輪的原理,這些成角度的周邊輪軸把一部分的機輪轉(zhuǎn)向力轉(zhuǎn)化到一個機輪法向力上面,依靠各自機輪的方向和速度,從而實現(xiàn)機器人的全方位移動。運動分析見圖4。
從右上角開始定義為輪子1,逆時針方向開始,依次定義為輪子2、輪子3、輪子4、假設(shè)這4個輪子的速度分別為 wheel1、wheel2、wheel3、wheel4。以笛卡爾坐標(biāo)系為標(biāo)準(zhǔn),小車輪子向右方向的速度為Vx,小車輪子向前方向的速度為Vy,小車輪子逆時針方向的速度為Vspin(輪子的角速度)。根據(jù)麥克納姆輪的運動模型分析,可以推斷出小車的運動模型公式為:
圖4 麥克納姆輪運動分析
2)小車?yán)锍逃嫷墨@取。通過安裝在每個輪子的電動機上面的編碼器,來讀取編碼器的值,先計算出每個輪子的線速度,進(jìn)一步計算出小車整車的x方向的速度,y方向的速度和角速度。
輪子的線速度=單位時間內(nèi)采集編碼器的值×4倍頻×編碼器線速×減速比×輪子轉(zhuǎn)一圈的周長(即輪子的直徑×π)。
假設(shè)小車整車的x方向的速度為Car_Vx,y方向的速度為Car_Vy,角速度為Car_Vth,小車左右輪子之間的距離為distance_of_wheel,小車前后輪子之間的距離為axle_of_wheel,可以推斷出計算公式為:
通過STM32上面的串口通訊,將計算出來的Car_Vx,Car_Vy和Cat_Vth傳輸給上位機ROS,在上位機作進(jìn)一步的處理,可以得出小車當(dāng)前的位置信息(即里程計信息)。假設(shè)單位時間內(nèi)采集時間間隔為dt,小車整車的x方向速度,y方向速度,角速度分別為vx,vy,vth。
X方向增加的距離為delta_x=(vx*cos(th)-vy*sin(th))*dt;
Y方向增加的距離為delta_y=(vx*sin(th)+vy*cos(th))*dt;
增加的角度為delta_th=vth*dt;
X方向移動的距離為x=x+delta_x;
Y方向移動的距離為y=y+delta_y;
小車轉(zhuǎn)過的角度為th=th+delta_th。
所以利用上面的公式可以計算出小車當(dāng)前的里程計信息。
試驗結(jié)果表明,麥克納姆輪移動的方向、速度和里程的精確獲取等高度統(tǒng)一,能實現(xiàn)機器人的全方位移動。
小車激光雷達(dá)SLAM結(jié)構(gòu)由VO、后端、建圖、回環(huán)檢測組成(如圖6)。
圖5 小車通訊系統(tǒng)
采用日本北陽的激光雷達(dá),型號為UBG-04LX-F01,該雷達(dá)的掃描距離是4 m,掃描范圍240°,掃描精度±30 mm (0.06~1.00 m距離內(nèi)),可以滿足在室內(nèi)進(jìn)行建圖導(dǎo)航的要求,實物如圖7所示。
圖6 小車激光雷達(dá)與SLAM結(jié)構(gòu)示意圖
圖7 激光雷達(dá)
圖8 gmapping建圖效果
激光雷達(dá)的建圖在ROS上面有開源的建圖包gmapping,使用gmapping即可進(jìn)行地圖構(gòu)建,建圖效果如圖8。
使用遙控的方式來遙控小車在室內(nèi)環(huán)境完成地圖的構(gòu)建。在此期間,有兩個因素會影響地圖的質(zhì)量:一個是小車?yán)锍逃嫷臏?zhǔn)確性;一個是激光雷達(dá)的精度。這里假設(shè)小車不打滑的情況,使用4個麥克納姆輪來解算出小車的里程計還是比較準(zhǔn)確的。激光雷達(dá)的精度可以滿足要求,所以構(gòu)建出來的地圖質(zhì)量較好,小車在室內(nèi)的建圖如圖9所示。
圖9 小車的室內(nèi)建圖
圖10 小車的里程計數(shù)據(jù)
小車往x軸方向前進(jìn)0.5 m,上位機實時監(jiān)測到的數(shù)據(jù)如圖10所示??刂菩≤囃鵻軸方向前進(jìn)0.5 m,實時監(jiān)測到的數(shù)據(jù)為0.506 m,在誤差范圍內(nèi),里程計數(shù)據(jù)準(zhǔn)確性高。
小車的定位算法使用ROS上面開源的AMCL(自適應(yīng)蒙特卡洛定位算法),這個算法采用粒子濾波的方式來進(jìn)行機器人的定位。粒子濾波比較粗淺的來說,就是在一個地方均勻地撒一把粒子,然后通過獲取機器人的動作來移動粒子,如果機器人向前移動了1 m,所有的粒子也就向前移動1 m。然后使用每個粒子的位置信息跟觀察到的傳感器信息(激光)作對比,從而賦予每個粒子一個概率。根據(jù)生成的概率來重新生成粒子,概率越高生成的粒子越多。重復(fù)迭代之后,所有的粒子會慢慢地收斂到一起,機器人的位置也就能推算出來了。小車的AMCL定位算法測試效果如圖11所示。
圖11 AMCL定位算法
圖12 小車的室內(nèi)定位
小車的定位主要用到AMCL算法輸出的定位坐標(biāo),主要為x,y的坐標(biāo)和角度。然后通過串口通訊將坐標(biāo)信息發(fā)送 給 STM32,STM32上面作運動控制處理,先將小車的角度扭轉(zhuǎn)過來,再將小車移動到ROS上位機發(fā)送過來的x和y的坐標(biāo),從而實現(xiàn)小車的室內(nèi)定位。小車的室內(nèi)定位測試效果如圖12所示。
圖13 ROS上位機監(jiān)控效果
圖14 ROS上位機輸出坐標(biāo)信息
如圖13所示的是ROS上位機進(jìn)行實時監(jiān)控的小車定位效果圖,深色部分為障礙物的膨脹區(qū)域,箭頭為小車的定位目標(biāo)點,線表示小車的定位移動線路。
小車定位時候上位機實時監(jiān)測到的輸出定位坐標(biāo)如圖14所示,position為輸出的x,y坐標(biāo),direction為旋轉(zhuǎn)角度。小車的定位坐標(biāo)信息是實時更新的,定位坐標(biāo)信息在誤差范圍內(nèi)。
試驗結(jié)果表明,通過AMCL算法得出的定位坐標(biāo)達(dá)到擬合的統(tǒng)一性和準(zhǔn)確性,使室內(nèi)小車的位置和移動都得以科學(xué)化地控制。但在試驗中,由于激光雷達(dá)的建圖和AMCL算法的精確度不夠,導(dǎo)致幾次試驗結(jié)果超出誤差范圍,這表明,試驗結(jié)果的精準(zhǔn)離不開試驗過程控制的準(zhǔn)確無誤。
本文系統(tǒng)地介紹了基于激光雷達(dá)和SLAM定位的麥克納姆輪小車研究的整體框架以及實現(xiàn)方式。在多次試驗測試中,麥克納姆輪小車展示了其小車?yán)锍逃嫷臏?zhǔn)確性和地圖質(zhì)量構(gòu)建的完整和準(zhǔn)確,使得其定位達(dá)到準(zhǔn)確、快速、標(biāo)準(zhǔn),能靈活地完成指定目標(biāo)的整體運行?;赟LAM算法和激光雷達(dá)的聯(lián)合,是麥克納姆輪小車運行的準(zhǔn)確性和靈活性的新階段,同樣也是自主移動機器人發(fā)展在形式上的創(chuàng)新。該項目的研究成果將對物流搬運、搭載上機械臂等領(lǐng)域的應(yīng)用有著科學(xué)的意義。
本文以麥克納姆輪小車的定位和導(dǎo)航的精確度研究為核心,靈活運用SLAM算法的理論依據(jù)和準(zhǔn)確地構(gòu)建激光雷達(dá)圖,兩者的結(jié)合為小車定位的精確度提供了強有力的基礎(chǔ)。該研究的成果將對倉儲物流領(lǐng)域和醫(yī)療康復(fù)等領(lǐng)域的自主化水平有一定標(biāo)準(zhǔn)化、科學(xué)化的提升。同樣,該研究在試驗測試中存在一定的不確定性,此不確定性也表明對SLAM算法的掌握不夠深入,但經(jīng)過多次的試驗測試,該不足之處已在慢慢改正,可為未來試驗提供經(jīng)驗參考。