趙宇琛
(武漢大學(xué) 動(dòng)力與機(jī)械學(xué)院,武漢 430072)
隨著現(xiàn)代科技的快速發(fā)展,室內(nèi)機(jī)器人已經(jīng)越來越多的走進(jìn)了人們?nèi)粘5纳钪?,為人們完成一系列的任?wù),給人們帶來了很多的便利,為了實(shí)現(xiàn)更多的功能,人們對(duì)室內(nèi)機(jī)器人技術(shù)的要求越來越高。機(jī)器人的室內(nèi)定位導(dǎo)航技術(shù)是室內(nèi)移動(dòng)機(jī)器人領(lǐng)域的重要成果,通過定位導(dǎo)航技術(shù),移動(dòng)機(jī)器人可以更精準(zhǔn)。
隨著機(jī)器人技術(shù)的飛速發(fā)展,工業(yè)機(jī)器人被廣泛應(yīng)用于航空航天、軍事技術(shù)、醫(yī)療衛(wèi)生等多個(gè)高科技領(lǐng)域,為人們的生活提供了很多的便利,經(jīng)過這些年的發(fā)展,室外的定位技術(shù)已經(jīng)日趨成熟,GPS導(dǎo)航系統(tǒng)已經(jīng)非常的完備,有著一整套的體系。但是室內(nèi)由于受到空間環(huán)境等多方面因素的限制,在靈敏度等方面要求更高,并且還要克服室內(nèi)一些不確定因素的干擾,因此室內(nèi)定位導(dǎo)航技術(shù)還存在很大的發(fā)展空間。對(duì)室內(nèi)移動(dòng)機(jī)器人的導(dǎo)航定位需要考慮四個(gè)方面:位置,實(shí)時(shí)姿態(tài),目的和路徑。要想精準(zhǔn)的完成任務(wù),準(zhǔn)確的定位并確定機(jī)器人的姿態(tài)是至關(guān)重要的,然后找到最合適的路徑,使移動(dòng)機(jī)器人能夠在最短的時(shí)間內(nèi)完成任務(wù),這是室內(nèi)定位技術(shù)需要發(fā)展的方向。
2.1.1 超聲波網(wǎng)絡(luò)定位方法
利用超聲波測距傳感器可以計(jì)算得出機(jī)器人到前方障礙物或者參照物的絕對(duì)距離,其原理和實(shí)物如圖1所示。
圖1 超聲波測距原理圖
兩個(gè)探頭分別發(fā)射和接收超聲波,聲波在空氣中傳播的距離為L,聲波在空氣中傳播的速度為ν,超聲波在空氣中的傳播時(shí)耗為Δt,發(fā)射器和接收器之間的距離L如式(1)所示。
超聲波網(wǎng)絡(luò)定位方法,顧名思義需要在機(jī)器人四周分別布置超聲波發(fā)射器,室內(nèi)空間天花板上需裝備至少3個(gè)信標(biāo),即超聲波接收器。通過計(jì)算機(jī)器人到每一個(gè)固定信標(biāo)的不同距離,以精確獲得機(jī)器人當(dāng)前所處位置。超聲波網(wǎng)絡(luò)定位示意圖如圖2所示。機(jī)器人根據(jù)這些傳感器回傳的數(shù)據(jù)進(jìn)行計(jì)算分析,然后控制伺服電機(jī)以使機(jī)器人精確完成后續(xù)動(dòng)作。
圖2 超聲波網(wǎng)絡(luò)定位示意圖
圖中A、B、C為信標(biāo),坐標(biāo)分別為(xA,yA,h),(xB,yB,h),(xC,yC,h)設(shè)機(jī)器人坐標(biāo)為(x,y,h),機(jī)器人到LA個(gè)信標(biāo)的距離分別為LA,LB,LC,則求解機(jī)器人坐標(biāo)的方程式如2所示。
超聲波接收器和超聲波發(fā)射器之間通過無線信號(hào)進(jìn)行通信。當(dāng)超聲波發(fā)射器發(fā)射超聲波,并將發(fā)射無線信號(hào)出發(fā)超聲波接收器開始計(jì)時(shí)。當(dāng)超聲波接收器接收到超聲波信號(hào)后,停止計(jì)時(shí),得到超聲波傳播時(shí)耗Δt,通過式(1)可以計(jì)算出每一個(gè)信標(biāo)和機(jī)器人之間的距離L。該方法原理十分簡單,只是在室內(nèi)會(huì)受到各種信號(hào)的干擾,會(huì)影響到超聲波的質(zhì)量,從而影響傳感器的精度。
2.1.2 激光傳感器定位方法
利用激光的反射通過時(shí)間差來測量到障礙物的距離實(shí)現(xiàn)相對(duì)定位,其激光反射測距原理圖如圖3所示。它可以裝在輪式機(jī)器人的車身外側(cè),通過掃描場地上的擋邊,得到兩次的時(shí)間差,那么就可以利用這個(gè)時(shí)間差編寫程序來計(jì)算距離。當(dāng)然如果想要保證每次出發(fā)的位置不變也可以用到它來重復(fù)定位,效果也比較的好,算法相對(duì)簡單。但是激光測距容易觸發(fā)其他機(jī)器人上激光原件工作并且也容易受到外界的信號(hào)干擾,這樣就容易產(chǎn)生較大的誤差,所以這種測量方法也有著一定的環(huán)境的局限性。
圖3 激光反射測距原理圖
相對(duì)定位都要借助確定的物體作為參考,容易受到環(huán)境的干擾,精度便會(huì)大打折扣,這對(duì)于移動(dòng)機(jī)器人是一個(gè)致命的問題,因此想要考慮一下全場把握的辦法,從整體上來確定機(jī)器人的位置,下面再來討論一下有關(guān)絕對(duì)定位的方法。
2.2.1 機(jī)器視覺絕對(duì)定位
視覺導(dǎo)航技術(shù)在輪式機(jī)器人上安裝攝像頭,通過它拍攝場地圖片并且對(duì)圖像進(jìn)行處理。機(jī)器人在行進(jìn)過程中,拍攝圖片與全部場地圖片進(jìn)行比對(duì),確定當(dāng)前位置,從而完成機(jī)器人定位。移動(dòng)機(jī)器人依靠視覺來感知環(huán)境,通過對(duì)攝像頭的數(shù)據(jù)進(jìn)行分析、比對(duì)、處理便可以獲得當(dāng)前移動(dòng)機(jī)器人的位置。整體框架如圖4所示。
圖4 整體框架
根據(jù)圖4可以把全向視覺分為兩個(gè)步驟,首先在線下把每一種不同的顏色進(jìn)行拍照獲取,從而把采集的數(shù)據(jù)進(jìn)行特征的提取,分析完后把每一種顏色都設(shè)置一個(gè)范圍邊界,即閾值,并存儲(chǔ)于自帶flash。當(dāng)運(yùn)用到具體的場地時(shí),就可以根據(jù)攝像頭采集到的視覺信息進(jìn)行圖像分割,并與場地圖像信息對(duì)比,完成定位。
2.2.2 碼盤與陀螺儀結(jié)合定位
輪式機(jī)器人與地面緊密接觸,所以可以在車上裝上碼盤,通過自身坐標(biāo)系,碼盤定位坐標(biāo)系以及場地坐標(biāo)系這三個(gè)坐標(biāo)系進(jìn)行坐標(biāo)解算,從而實(shí)現(xiàn)全場定位。具體的原理與結(jié)構(gòu)如圖5所示。
圖5 輪式機(jī)器人結(jié)構(gòu)
這個(gè)是垂直碼盤的三維模型,兩個(gè)碼輪的信號(hào),這兩路信號(hào)是周期性變化的方波,便可以實(shí)現(xiàn)雙向定位的控制。輪子每轉(zhuǎn)動(dòng)一圈,編碼器便可以輸出相應(yīng)數(shù)量的脈沖,通過累加脈沖數(shù)就可以不斷更新碼盤走過的距離?;诖?,可以在程序里設(shè)置兩個(gè)計(jì)數(shù)器分別記錄兩個(gè)碼盤的脈沖數(shù),把脈沖數(shù)轉(zhuǎn)化成計(jì)數(shù)器記錄的次數(shù),其Keil里的程序如圖6所示。
圖6 將脈沖數(shù)轉(zhuǎn)化為計(jì)數(shù)器記錄的次數(shù)
當(dāng)?shù)玫絻蓚€(gè)碼盤所輸出的脈沖數(shù)后,便可以通過標(biāo)定輪子的輪徑系數(shù)算出碼盤走過的距離,求解公式如式(3)所示。
其中CM_PER_CNT1和CM_PER_CNT2代表的是兩個(gè)碼盤的輪徑系數(shù),也就是編碼器發(fā)出一個(gè)脈沖時(shí)輪子轉(zhuǎn)動(dòng)的距離。
由此我們便知道了定位系統(tǒng)的位移量,而下一步便是把定位系統(tǒng)坐標(biāo)系和輪式機(jī)器人自身坐標(biāo)系統(tǒng)一起來,轉(zhuǎn)化成機(jī)器人的上帶有增量式編碼器,上面有四個(gè)接口,分別代表GND,A相與B相以及5V電壓,當(dāng)輪式機(jī)器人運(yùn)動(dòng)時(shí),碼盤輪子轉(zhuǎn)動(dòng)會(huì)帶動(dòng)編碼器A相和B相輸出兩路相位相差90°位移。該算法如式(4)所示。
其中V1,Vy為沿自身坐標(biāo)系機(jī)器人的速度(cm/s),L為自身坐標(biāo)系原點(diǎn)到定位系統(tǒng)坐標(biāo)系原點(diǎn)距離,α為向量Vx轉(zhuǎn)向向量L的夾角,順負(fù)逆正,β為向量Vx轉(zhuǎn)向向量V1的夾角,也是順負(fù)逆正,兩者均為弧度制表表示。繪制下圖7來表示該算法:
圖7 算法圖示
那么輪式機(jī)器人在自身坐標(biāo)系中的位移便可以用下式(5)所示:
其中x_del和y_del表示的是輪式機(jī)器人在自身坐標(biāo)系中的位移量。
輪式機(jī)器人在具體的場地中運(yùn)動(dòng)時(shí),其自身的姿態(tài)會(huì)發(fā)生變化,這導(dǎo)致其自身坐標(biāo)系和場內(nèi)坐標(biāo)系并不統(tǒng)一,要想了解機(jī)器人在場內(nèi)的坐標(biāo),還得把自身坐標(biāo)系與場地坐標(biāo)系做矩陣變換,其矩陣變換公式如式(6)所示:
其中θ為姿態(tài)角,定義為Vx轉(zhuǎn)向 Vx的弧度。
根據(jù)這兩個(gè)矩陣變換就可以把輪式機(jī)器人在場內(nèi)兩坐標(biāo)軸上的位移通過碼盤的位移轉(zhuǎn)化而成,可以利用增量式更新不斷更新坐標(biāo),設(shè)起始坐標(biāo)(輪式機(jī)器人在出發(fā)區(qū)擺放時(shí)的狀態(tài))為X0,Y0,Angle0,ΔX,ΔY為機(jī)器人在一段時(shí)間內(nèi)沿場地坐標(biāo)系走過的位移,因此實(shí)時(shí)坐標(biāo)如式(7)所示:
由此便解決了沿直線行走的問題,剩下的還有轉(zhuǎn)動(dòng)角度的問題,那就需要用到光纖陀螺儀,這是一種專門用來測角度的裝置,基于角動(dòng)量守恒的原理,光纖陀螺儀可獲得水平面內(nèi)輪式機(jī)器人轉(zhuǎn)動(dòng)的角速度,然后通過測量到的旋轉(zhuǎn)的角速度進(jìn)行積分運(yùn)算便可以得出轉(zhuǎn)過角度的增量,再利用增量式更新得出最后的角度。這樣就能最終定出輪式機(jī)器人在場內(nèi)具體的坐標(biāo)及其轉(zhuǎn)過的角度。
這種定位方式跟碼盤初始的位置密切相關(guān),不同的安裝位置對(duì)應(yīng)的距離L,夾角α和夾角β不同,那么每一次都要重新賦值,并且在走直線的時(shí)候經(jīng)常會(huì)存在橫向的偏差,這是因?yàn)樵诎惭b的時(shí)候存在著一定的安裝誤差,導(dǎo)致輪式機(jī)器人出發(fā)的時(shí)候是在沿著一條傾斜的直線移動(dòng),于是需要不斷調(diào)整安裝誤差角來測試其準(zhǔn)確性。一般來說光纖陀螺儀的精度較高,通過調(diào)整正反轉(zhuǎn)的積分系數(shù)可以把轉(zhuǎn)動(dòng)一圈360°的誤差控制在2~3°,直線走10m橫向偏差可以在3mm以內(nèi),因此這種方法能夠廣泛使用在輪式機(jī)器人的定位上。
綜上所述,輪式機(jī)器人采用絕對(duì)定位的方式要比相對(duì)定位更加準(zhǔn)確,不過絕對(duì)定位的算法較為復(fù)雜,這樣才能保證得到更高的精度,但是就需要運(yùn)算能力強(qiáng)的MCU。
四足機(jī)器人不同于輪式機(jī)器人緊貼地面,它會(huì)在空間的三個(gè)平面內(nèi)運(yùn)動(dòng),所以姿態(tài)比較復(fù)雜,不僅僅包括XoY平面內(nèi)的轉(zhuǎn)角,還有XoZ和YoZ這兩個(gè)平面內(nèi)轉(zhuǎn)過的角度,于是我們就需要能夠測量這三個(gè)面角度的裝置,所以得用到帶有三軸陀螺儀的裝置。本文所使用的是MPU6050,這是一種可以集成在單片機(jī)上的功能單元,帶有三軸的陀螺儀和三軸的加速度計(jì),可以確定三軸的角速度和三軸的加速度,因?yàn)榧铀俣扔?jì)的精度并不很高,所以一般來說并不用它來積分得到位移,而是單純的做數(shù)據(jù)的融合來得到角度。在MPU6050的內(nèi)部用到了dmp庫的自帶四元數(shù)算法用來解算歐拉角,包括橫滾角,俯仰角和偏航角,便能夠得到三軸的轉(zhuǎn)角,進(jìn)而得到其姿態(tài),具體算法如式(8)所示:
其中,pitch為俯仰角,roll為橫滾角,yaw為偏航角。
但是由于重力沿z軸方向,所以會(huì)導(dǎo)致在XoY平面的偏航角yaw讀出的數(shù)據(jù)不準(zhǔn)確,會(huì)有一定的誤差,具體表現(xiàn)為隨著時(shí)間變化有一定的累積效應(yīng),30s后大概會(huì)有八九度的偏差,這樣會(huì)給姿態(tài)的確定帶來很大的影響。因此需要加入補(bǔ)償來補(bǔ)償這個(gè)差距,不過偏航角的誤差跟時(shí)間有著一定變化關(guān)系,所以補(bǔ)償需要寫入主函數(shù)循環(huán)語句里面并且要寫成跟時(shí)間變化有著確定函數(shù)關(guān)系的表達(dá)式。經(jīng)過補(bǔ)償之后,偏航角的精度可以達(dá)到誤差在一兩度以內(nèi),這樣就可以知道每時(shí)每刻四足機(jī)器人的姿態(tài)。但是這種方法適用于具體的偏差值,并不是通用的,要想找到通用的只用調(diào)節(jié)特定的參數(shù)就能調(diào)整偏航角的辦法,還需要再算法上下功夫。
在確定了姿態(tài)以后,下一步便是確定出四足機(jī)器人的位置,其中有一種方法是想通MPU6050上的三軸加速度計(jì)進(jìn)行二次積分得到位移,但三軸加速度的波形如圖8所示。
圖8 三軸加速度計(jì)的輸出波形圖
這是模擬四足的運(yùn)動(dòng)在線下對(duì)MPU6050的加速度計(jì)進(jìn)行的測試,其中 Series1-Series3代表了x,y,z三軸的加速度的波形,這是大概運(yùn)動(dòng)30s后得到的曲線,可以發(fā)現(xiàn)誤差還是比較大,其中z軸的加速度有大概20的誤差,積分會(huì)導(dǎo)致誤差的累計(jì),而位移需要通過加速度進(jìn)行二次積分得到,所以如果通過這種方式得到位移精度會(huì)非常的差,應(yīng)該換成另外的裝置。
但是考慮到四足機(jī)器人在運(yùn)動(dòng)的時(shí)候整個(gè)部分會(huì)上下抖動(dòng),如果傳感器與四足機(jī)器人固連,那么傳感器便無法接收到準(zhǔn)確的信號(hào),所以要想辦法讓定位裝置一直位于同一個(gè)平面內(nèi),可以在機(jī)器人身體的下部裝上一個(gè)云臺(tái),在上面放上激光雷達(dá),保證雷達(dá)在一個(gè)平面內(nèi)來用于定位。具體的裝置如圖9所示。
圖9 激光雷達(dá)
激光雷達(dá)是一種用來測量距離和速度的雷達(dá)系統(tǒng),它通過向目標(biāo)發(fā)射探測信號(hào),然后將接收到的從目標(biāo)反射回來的信號(hào)與發(fā)射信號(hào)進(jìn)行比較,作適當(dāng)處理后,就可以獲得目標(biāo)的有關(guān)信息,獲得目標(biāo)的距離姿態(tài)等信息。它的激光束能夠覆蓋240°的范圍,通過它在四足機(jī)器人上掃三邊的障礙便可以獲得機(jī)器人的相對(duì)位置,但是這個(gè)方法也存在很多缺陷,比如識(shí)別障礙物的時(shí)候?qū)す饫走_(dá)的幀率要求比較的高,如果識(shí)別的幀率不夠,那么就無法清晰的確認(rèn)相對(duì)的位置信息。還有就是云臺(tái)的機(jī)械結(jié)構(gòu)設(shè)計(jì)也是十分重要的,如何保證四足機(jī)器人在各種姿態(tài)下運(yùn)動(dòng)的時(shí)候,它都能保證自身維持在同一個(gè)平面是一個(gè)有待解決的問題。
四足機(jī)器人因其姿態(tài)一直在發(fā)生著變化,對(duì)其定位的要求更加的苛刻,目前所提到的一些方法都存在各自的缺點(diǎn),還需要不斷地完善與改進(jìn),找到更加簡便高效的方法。
室內(nèi)由于受到環(huán)境場所的限制,找到精度較高的定位方法并不是一件十分容易事,通過的對(duì)移動(dòng)機(jī)器人的研究我們可以發(fā)現(xiàn):要想提高精度首先要保證傳感器的精度,其次要保證定位方案的合理性,本文認(rèn)為全局定位方式應(yīng)該是我們未來主要的研究方向,在現(xiàn)有的方式中找出問題不斷改進(jìn),不斷完善提高定位精度。