楊寒石,張楚晗
(黑龍江大學(xué),黑龍江哈爾濱 150000)
目前大部分無人機(jī)使用GPS 的定位技術(shù)進(jìn)行控制路線,基于視覺導(dǎo)航進(jìn)行控制旋翼無人機(jī),要求旋翼無人機(jī)的前部和底部安裝攝像頭進(jìn)行圖像采集。
重點(diǎn)介紹無人機(jī)的慣導(dǎo)和氣壓硬件,旋翼無人機(jī)在飛行過程中會有不同的姿態(tài),在測量姿態(tài)的過程中用到慣導(dǎo)中的加速計(jì)和陀螺儀,如圖1 所示,假設(shè)在無人機(jī)飛行過程中飛機(jī)的傾斜角度為θ,則在X 軸的加速度為X=-gsinθ,Z 軸的加速度為Z=gcosθ,可以得到θ=arctan(-X/Z)。但是在無人機(jī)飛行過程中由于環(huán)境因素導(dǎo)致加速不穩(wěn)定,則需要陀螺儀進(jìn)行角速度ω 的測試,其中θ 和ω 的關(guān)系可以通過來計(jì)算,所以在估算飛機(jī)傾斜角度的時(shí)候需要加速計(jì)和陀螺儀密切配合。
在物理學(xué)中可以通過大氣壓來估計(jì)無人機(jī)飛行的高度公式為-ρgdh=dP(2.1),理想氣體方程為ρRT=MP(2.2),其中ρ 為密度,g 為加速度,P 為氣壓,R 是常數(shù),T 是飛行溫度,M 是摩爾質(zhì)量,可以得出h=-RTdP/gMPd(2.3),則可以通過無人機(jī)測量出的飛行數(shù)據(jù),得到無人機(jī)飛行的高度。
參考姿態(tài)和通過算法計(jì)算的的姿態(tài)相減,可以得到具體的Δα 和Δα,無人機(jī)的參考姿態(tài)是人工輸入,將Δα、Δα 輸入到姿態(tài)控制器中,主要是為了讓無人機(jī)的實(shí)際角度盡量接近參考姿態(tài),姿態(tài)控制器將數(shù)據(jù)輸入到無人機(jī)中,控制飛機(jī)。
現(xiàn)在市面上的無人機(jī)都是基于GPS 的,提前設(shè)定好信號,然后通過GPS 進(jìn)行控制,然后通過遙控?zé)o人機(jī),無人機(jī)接收到信號后進(jìn)行返航,或者設(shè)定好具體路線后,進(jìn)行返航。
重點(diǎn)介紹無人機(jī)的控制算法,無人機(jī)通過投影的方法來獲取具體的偏移量,然后可以通過偏移量來計(jì)算無人機(jī)需要進(jìn)行姿態(tài)控制時(shí)偏移的大小,控制無人機(jī)的角度和速度,在控制角度和速度的時(shí)候通過控制器進(jìn)行輸出,輸出具體的基本信息,無人機(jī)控制算法最重要的一點(diǎn)就是進(jìn)行定點(diǎn)控制,定點(diǎn)控制需要使用PID 控制器,具體的控制圖如圖1 所示。
假設(shè)無人機(jī)底部攝像頭捕獲的圖像中僅有一個地標(biāo),無人機(jī)參照這個地標(biāo)進(jìn)行定點(diǎn)懸停,則需要在圖像處理模塊中計(jì)算無人機(jī)機(jī)身投影點(diǎn)與地標(biāo)的相對位置ΔS=(Sx,Sy),然后由PID控制器分別對Sx,Sy做PID 控制,更新結(jié)果得到參考俯仰角、橫滾角,之后的對于姿態(tài)的內(nèi)環(huán)控制由旋翼無人機(jī)機(jī)載的嵌入式系統(tǒng)完成,即有公式(1)。
圖1 基于圖像的無人機(jī)控制圖
飛機(jī)的高度控制也是很重要的一個參數(shù),在飛機(jī)高度控制中一般采取兩個方案:
(1)飛機(jī)可以安裝一個高度測量機(jī),根據(jù)氣壓進(jìn)行推算出飛機(jī)目前的高度,測量出飛機(jī)目前的高度后和參考高度作差可以計(jì)算出偏移量,然后進(jìn)行PID 控制,輸出的具體參數(shù)可以調(diào)節(jié)飛機(jī)的高度做內(nèi)環(huán)控制。
(2)使用飛機(jī)的攝像頭進(jìn)行拍照,拍照后能夠計(jì)算物體的面積,計(jì)算出來的面積和物體的實(shí)際面積進(jìn)行比較,引入一個參考面積,如果計(jì)算出的面積大,說明飛機(jī)需要上升,如果計(jì)算出的面積小需要進(jìn)行下降,參考面積可以人工設(shè)置,也可以是飛機(jī)在特定高度拍照的面積,然后通過參考面積來控制飛機(jī)的飛行高度,例如在300 m 巡航是飛機(jī)拍攝的物體A 面積是100 m2,如果現(xiàn)在飛機(jī)拍照的照片是200 m2說明飛機(jī)還沒飛到300 m 的高度,需要提高高度,如果拍照的是50 m2,說明飛機(jī)飛機(jī)的高度高于300 m,需要降低高度。需要注意的是,如前文所闡述的,物體的實(shí)際長度與像素點(diǎn)長度、無人機(jī)高度成正比,則可知物體的實(shí)際面積將會與像素點(diǎn)的面積與無人機(jī)高度的平方成正比,則可知物體的實(shí)際面積將會與像素點(diǎn)的面積與無人機(jī)高度的平方成正比。于是我們根據(jù)面積計(jì)算高度差時(shí)需要先對圖像中地標(biāo)面積與參考面積開平方根,再作差進(jìn)行PID 控制,即得出式(2)。
此外,飛機(jī)的底部是有一個攝像頭的,攝像頭可以拍攝圖片,并且可以運(yùn)用光流算法估算飛機(jī)的速度,因此可以在姿態(tài)控制和位置控制之間再加一個速度控制,能夠控制飛機(jī)速度,控制框圖如圖2所示。
通過參考速度的方案能夠很好地控制飛機(jī)的姿態(tài),但是也有一些問題,例如會帶來工作量的增加,因?yàn)橐粋€PID 控制器中就至少有三個參數(shù),分別是比例、積分和微分;并且PID 的控制不是特別準(zhǔn)確,因?yàn)樵诳刂频臅r(shí)候可能由于速度或者角度問題導(dǎo)致速度過快,或者角度偏移過大,導(dǎo)致飛機(jī)異常,所以為了飛機(jī)正常飛行,需要針對角度和速度進(jìn)行限制,在限制的時(shí)候需要加入一些控制飛機(jī)飛行角度和速度的算法,另外,由于旋翼無人機(jī)的物理特性表示其系統(tǒng)為非線性系統(tǒng),從理論上來說可以考慮使用非線性控制算法進(jìn)行控制。
在無人機(jī)返航中需要用到融合圖像和航速的算法進(jìn)行設(shè)計(jì),通過光流法可以預(yù)測飛機(jī)的速度,然后通過對速度積分來獲取飛機(jī)的位置,能夠獲取比較準(zhǔn)確的相對位置,雖然獲取了位置,但是在飛機(jī)飛行過程中肯定會有一些誤差,例如漂移導(dǎo)致的飛行誤差,所以只根據(jù)速度積分獲取的信息肯定不準(zhǔn)確。可以依靠圖片的關(guān)鍵幀來獲取路徑,通過關(guān)鍵幀來獲取肯定能夠獲取比較準(zhǔn)確的位置信息,但是由于照片拍攝的間隔時(shí)間可能過長,導(dǎo)致信息不準(zhǔn)確,如果降低拍攝間隔,就會導(dǎo)致照片特別多,浪費(fèi)存儲空間。針對這兩種方案進(jìn)行了整合,在去目的地時(shí),根據(jù)速度積分進(jìn)行測算,并且攝像頭會進(jìn)行拍照,將照片進(jìn)行存儲,來分析相對位置;在從目的地返回時(shí),飛機(jī)首先根據(jù)去程時(shí)記錄的關(guān)鍵幀到達(dá)關(guān)鍵幀附件,然后根據(jù)參考圖像進(jìn)行懸停。然后一直重復(fù)這個過程到達(dá)起始點(diǎn)。
在程序的頂層控制中,采用狀態(tài)機(jī)的控制方法,具體的流程如圖3 所示。在定義過程中文中的0 代表去目的地的記錄狀態(tài),數(shù)字1 代表根據(jù)速度進(jìn)行導(dǎo)航的狀態(tài),狀態(tài)2 為無人機(jī)基于圖像匹配進(jìn)行懸停的狀態(tài)。初始時(shí)控制程序處于狀態(tài)0,此時(shí)人為遙控?zé)o人機(jī)或根據(jù)事先預(yù)定的位置關(guān)鍵點(diǎn)控制無人機(jī)前進(jìn),如果到達(dá)終點(diǎn)則轉(zhuǎn)為狀態(tài)2,否則持續(xù)狀態(tài)0;在狀態(tài)2 下不停地與參考圖像進(jìn)行匹配,如果匹配結(jié)果非常接近,即旋轉(zhuǎn)角與偏移向量都足夠小,則轉(zhuǎn)為狀態(tài)1,否則持續(xù)狀態(tài)2;在狀態(tài)1 下不停地用里程計(jì)與關(guān)鍵幀之間的參考位移進(jìn)行比較,如果到達(dá)了下一關(guān)鍵幀附近,則轉(zhuǎn)到狀態(tài)2,否則持續(xù)執(zhí)行狀態(tài)1。
圖2 基于圖像和速度的無人機(jī)控制圖
圖3 自主返航狀態(tài)機(jī)控制方法
圖4 自主返航流程
返航過程中的算法流程如圖4 所示,用一個狀態(tài)機(jī)控制器控制無人機(jī)在狀態(tài)1 基于速度導(dǎo)航和狀態(tài)2 基于圖像匹配懸停之間切換。初始時(shí)index=n,無人機(jī)進(jìn)入狀態(tài)2。
首先介紹無人機(jī)的基礎(chǔ)模型,然后分析具體無人機(jī)在姿態(tài)控制和返航中需要使用到無人機(jī)的硬件設(shè)備,并且重點(diǎn)研究飛行中的算法控制。完成飛機(jī)具體的姿態(tài)控制和飛行軌跡的設(shè)定。