趙宇琛
(武漢大學 動力與機械學院,武漢 430072)
隨著現代科技的快速發展,室內機器人已經越來越多的走進了人們日常的生活中,為人們完成一系列的任務,給人們帶來了很多的便利,為了實現更多的功能,人們對室內機器人技術的要求越來越高。機器人的室內定位導航技術是室內移動機器人領域的重要成果,通過定位導航技術,移動機器人可以更精準。
隨著機器人技術的飛速發展,工業機器人被廣泛應用于航空航天、軍事技術、醫療衛生等多個高科技領域,為人們的生活提供了很多的便利,經過這些年的發展,室外的定位技術已經日趨成熟,GPS導航系統已經非常的完備,有著一整套的體系。但是室內由于受到空間環境等多方面因素的限制,在靈敏度等方面要求更高,并且還要克服室內一些不確定因素的干擾,因此室內定位導航技術還存在很大的發展空間。對室內移動機器人的導航定位需要考慮四個方面:位置,實時姿態,目的和路徑。要想精準的完成任務,準確的定位并確定機器人的姿態是至關重要的,然后找到最合適的路徑,使移動機器人能夠在最短的時間內完成任務,這是室內定位技術需要發展的方向。
2.1.1 超聲波網絡定位方法
利用超聲波測距傳感器可以計算得出機器人到前方障礙物或者參照物的絕對距離,其原理和實物如圖1所示。

圖1 超聲波測距原理圖
兩個探頭分別發射和接收超聲波,聲波在空氣中傳播的距離為L,聲波在空氣中傳播的速度為ν,超聲波在空氣中的傳播時耗為Δt,發射器和接收器之間的距離L如式(1)所示。

超聲波網絡定位方法,顧名思義需要在機器人四周分別布置超聲波發射器,室內空間天花板上需裝備至少3個信標,即超聲波接收器。通過計算機器人到每一個固定信標的不同距離,以精確獲得機器人當前所處位置。超聲波網絡定位示意圖如圖2所示。機器人根據這些傳感器回傳的數據進行計算分析,然后控制伺服電機以使機器人精確完成后續動作。

圖2 超聲波網絡定位示意圖
圖中A、B、C為信標,坐標分別為(xA,yA,h),(xB,yB,h),(xC,yC,h)設機器人坐標為(x,y,h),機器人到LA個信標的距離分別為LA,LB,LC,則求解機器人坐標的方程式如2所示。

超聲波接收器和超聲波發射器之間通過無線信號進行通信。當超聲波發射器發射超聲波,并將發射無線信號出發超聲波接收器開始計時。當超聲波接收器接收到超聲波信號后,停止計時,得到超聲波傳播時耗Δt,通過式(1)可以計算出每一個信標和機器人之間的距離L。該方法原理十分簡單,只是在室內會受到各種信號的干擾,會影響到超聲波的質量,從而影響傳感器的精度。
2.1.2 激光傳感器定位方法
利用激光的反射通過時間差來測量到障礙物的距離實現相對定位,其激光反射測距原理圖如圖3所示。它可以裝在輪式機器人的車身外側,通過掃描場地上的擋邊,得到兩次的時間差,那么就可以利用這個時間差編寫程序來計算距離。當然如果想要保證每次出發的位置不變也可以用到它來重復定位,效果也比較的好,算法相對簡單。但是激光測距容易觸發其他機器人上激光原件工作并且也容易受到外界的信號干擾,這樣就容易產生較大的誤差,所以這種測量方法也有著一定的環境的局限性。

圖3 激光反射測距原理圖
相對定位都要借助確定的物體作為參考,容易受到環境的干擾,精度便會大打折扣,這對于移動機器人是一個致命的問題,因此想要考慮一下全場把握的辦法,從整體上來確定機器人的位置,下面再來討論一下有關絕對定位的方法。
2.2.1 機器視覺絕對定位
視覺導航技術在輪式機器人上安裝攝像頭,通過它拍攝場地圖片并且對圖像進行處理。機器人在行進過程中,拍攝圖片與全部場地圖片進行比對,確定當前位置,從而完成機器人定位。移動機器人依靠視覺來感知環境,通過對攝像頭的數據進行分析、比對、處理便可以獲得當前移動機器人的位置。整體框架如圖4所示。

圖4 整體框架
根據圖4可以把全向視覺分為兩個步驟,首先在線下把每一種不同的顏色進行拍照獲取,從而把采集的數據進行特征的提取,分析完后把每一種顏色都設置一個范圍邊界,即閾值,并存儲于自帶flash。當運用到具體的場地時,就可以根據攝像頭采集到的視覺信息進行圖像分割,并與場地圖像信息對比,完成定位。
2.2.2 碼盤與陀螺儀結合定位
輪式機器人與地面緊密接觸,所以可以在車上裝上碼盤,通過自身坐標系,碼盤定位坐標系以及場地坐標系這三個坐標系進行坐標解算,從而實現全場定位。具體的原理與結構如圖5所示。

圖5 輪式機器人結構
這個是垂直碼盤的三維模型,兩個碼輪的信號,這兩路信號是周期性變化的方波,便可以實現雙向定位的控制。輪子每轉動一圈,編碼器便可以輸出相應數量的脈沖,通過累加脈沖數就可以不斷更新碼盤走過的距離。基于此,可以在程序里設置兩個計數器分別記錄兩個碼盤的脈沖數,把脈沖數轉化成計數器記錄的次數,其Keil里的程序如圖6所示。

圖6 將脈沖數轉化為計數器記錄的次數
當得到兩個碼盤所輸出的脈沖數后,便可以通過標定輪子的輪徑系數算出碼盤走過的距離,求解公式如式(3)所示。

其中CM_PER_CNT1和CM_PER_CNT2代表的是兩個碼盤的輪徑系數,也就是編碼器發出一個脈沖時輪子轉動的距離。
由此我們便知道了定位系統的位移量,而下一步便是把定位系統坐標系和輪式機器人自身坐標系統一起來,轉化成機器人的上帶有增量式編碼器,上面有四個接口,分別代表GND,A相與B相以及5V電壓,當輪式機器人運動時,碼盤輪子轉動會帶動編碼器A相和B相輸出兩路相位相差90°位移。該算法如式(4)所示。

其中V1,Vy為沿自身坐標系機器人的速度(cm/s),L為自身坐標系原點到定位系統坐標系原點距離,α為向量Vx轉向向量L的夾角,順負逆正,β為向量Vx轉向向量V1的夾角,也是順負逆正,兩者均為弧度制表表示。繪制下圖7來表示該算法:

圖7 算法圖示
那么輪式機器人在自身坐標系中的位移便可以用下式(5)所示:

其中x_del和y_del表示的是輪式機器人在自身坐標系中的位移量。
輪式機器人在具體的場地中運動時,其自身的姿態會發生變化,這導致其自身坐標系和場內坐標系并不統一,要想了解機器人在場內的坐標,還得把自身坐標系與場地坐標系做矩陣變換,其矩陣變換公式如式(6)所示:

其中θ為姿態角,定義為Vx轉向 Vx的弧度。
根據這兩個矩陣變換就可以把輪式機器人在場內兩坐標軸上的位移通過碼盤的位移轉化而成,可以利用增量式更新不斷更新坐標,設起始坐標(輪式機器人在出發區擺放時的狀態)為X0,Y0,Angle0,ΔX,ΔY為機器人在一段時間內沿場地坐標系走過的位移,因此實時坐標如式(7)所示:

由此便解決了沿直線行走的問題,剩下的還有轉動角度的問題,那就需要用到光纖陀螺儀,這是一種專門用來測角度的裝置,基于角動量守恒的原理,光纖陀螺儀可獲得水平面內輪式機器人轉動的角速度,然后通過測量到的旋轉的角速度進行積分運算便可以得出轉過角度的增量,再利用增量式更新得出最后的角度。這樣就能最終定出輪式機器人在場內具體的坐標及其轉過的角度。
這種定位方式跟碼盤初始的位置密切相關,不同的安裝位置對應的距離L,夾角α和夾角β不同,那么每一次都要重新賦值,并且在走直線的時候經常會存在橫向的偏差,這是因為在安裝的時候存在著一定的安裝誤差,導致輪式機器人出發的時候是在沿著一條傾斜的直線移動,于是需要不斷調整安裝誤差角來測試其準確性。一般來說光纖陀螺儀的精度較高,通過調整正反轉的積分系數可以把轉動一圈360°的誤差控制在2~3°,直線走10m橫向偏差可以在3mm以內,因此這種方法能夠廣泛使用在輪式機器人的定位上。
綜上所述,輪式機器人采用絕對定位的方式要比相對定位更加準確,不過絕對定位的算法較為復雜,這樣才能保證得到更高的精度,但是就需要運算能力強的MCU。
四足機器人不同于輪式機器人緊貼地面,它會在空間的三個平面內運動,所以姿態比較復雜,不僅僅包括XoY平面內的轉角,還有XoZ和YoZ這兩個平面內轉過的角度,于是我們就需要能夠測量這三個面角度的裝置,所以得用到帶有三軸陀螺儀的裝置。本文所使用的是MPU6050,這是一種可以集成在單片機上的功能單元,帶有三軸的陀螺儀和三軸的加速度計,可以確定三軸的角速度和三軸的加速度,因為加速度計的精度并不很高,所以一般來說并不用它來積分得到位移,而是單純的做數據的融合來得到角度。在MPU6050的內部用到了dmp庫的自帶四元數算法用來解算歐拉角,包括橫滾角,俯仰角和偏航角,便能夠得到三軸的轉角,進而得到其姿態,具體算法如式(8)所示:

其中,pitch為俯仰角,roll為橫滾角,yaw為偏航角。
但是由于重力沿z軸方向,所以會導致在XoY平面的偏航角yaw讀出的數據不準確,會有一定的誤差,具體表現為隨著時間變化有一定的累積效應,30s后大概會有八九度的偏差,這樣會給姿態的確定帶來很大的影響。因此需要加入補償來補償這個差距,不過偏航角的誤差跟時間有著一定變化關系,所以補償需要寫入主函數循環語句里面并且要寫成跟時間變化有著確定函數關系的表達式。經過補償之后,偏航角的精度可以達到誤差在一兩度以內,這樣就可以知道每時每刻四足機器人的姿態。但是這種方法適用于具體的偏差值,并不是通用的,要想找到通用的只用調節特定的參數就能調整偏航角的辦法,還需要再算法上下功夫。
在確定了姿態以后,下一步便是確定出四足機器人的位置,其中有一種方法是想通MPU6050上的三軸加速度計進行二次積分得到位移,但三軸加速度的波形如圖8所示。

圖8 三軸加速度計的輸出波形圖
這是模擬四足的運動在線下對MPU6050的加速度計進行的測試,其中 Series1-Series3代表了x,y,z三軸的加速度的波形,這是大概運動30s后得到的曲線,可以發現誤差還是比較大,其中z軸的加速度有大概20的誤差,積分會導致誤差的累計,而位移需要通過加速度進行二次積分得到,所以如果通過這種方式得到位移精度會非常的差,應該換成另外的裝置。
但是考慮到四足機器人在運動的時候整個部分會上下抖動,如果傳感器與四足機器人固連,那么傳感器便無法接收到準確的信號,所以要想辦法讓定位裝置一直位于同一個平面內,可以在機器人身體的下部裝上一個云臺,在上面放上激光雷達,保證雷達在一個平面內來用于定位。具體的裝置如圖9所示。

圖9 激光雷達
激光雷達是一種用來測量距離和速度的雷達系統,它通過向目標發射探測信號,然后將接收到的從目標反射回來的信號與發射信號進行比較,作適當處理后,就可以獲得目標的有關信息,獲得目標的距離姿態等信息。它的激光束能夠覆蓋240°的范圍,通過它在四足機器人上掃三邊的障礙便可以獲得機器人的相對位置,但是這個方法也存在很多缺陷,比如識別障礙物的時候對激光雷達的幀率要求比較的高,如果識別的幀率不夠,那么就無法清晰的確認相對的位置信息。還有就是云臺的機械結構設計也是十分重要的,如何保證四足機器人在各種姿態下運動的時候,它都能保證自身維持在同一個平面是一個有待解決的問題。
四足機器人因其姿態一直在發生著變化,對其定位的要求更加的苛刻,目前所提到的一些方法都存在各自的缺點,還需要不斷地完善與改進,找到更加簡便高效的方法。
室內由于受到環境場所的限制,找到精度較高的定位方法并不是一件十分容易事,通過的對移動機器人的研究我們可以發現:要想提高精度首先要保證傳感器的精度,其次要保證定位方案的合理性,本文認為全局定位方式應該是我們未來主要的研究方向,在現有的方式中找出問題不斷改進,不斷完善提高定位精度。