六旋翼無人機自動巡航與避障研究

為解決多旋翼飛機在飛行過程中所遇到的自動巡航以及避障問題提出能夠切實可行的思路,通過光流傳感器的測距原理以及超聲波測距模塊測距理論,構成一整套綜合的測距模塊,再通過飛控板控制進行避障;同時再通過機超視距飛行以及飛控板的特有的油門行程鎖定以及定高的功能,構成一套完整的自動巡航的系統,針對于飛機所使用的2.4Ghz的發射機越障效果較差的弊端完成研究的自動巡航的任務。
本文重點在于民用無人機以及工業無人機的研究,主要是通過針對于自動巡航和避障進行研究。如在4m以下高度精確度0.1m以內自動巡航以及4m以上通過GPS以及氣壓計定高精確度0.2m以內進行巡航作業。以及使用已有的優秀感知障礙物的算法,綜合HC-SR04和光流傳感器同時進行作業完成障礙物的感知,防止在飛行途中遇障礙物發生碰撞。
apm飛控板
APM飛控板就是本研究使用的飛控板,apm是由DIY DRONE公司研制的一種開源飛控板,開源顧名思義是開放源代碼,使用者可以利用自己所掌握的電子知識對飛控板進行改造。所編寫的程序由于其本身的adurino型號芯片可以直接利用C語言編寫程序,編譯方便。
飛控板硬件
apm飛控板的主核是adurino mega 2560型芯片,這種芯片能夠直接與USB相連并燒錄程序(燒錄器與飛控板合為一體),當然其作為燒錄器的功能被淡化了,不再需要使用一定特性的下載燒錄板(如usbasp下載器等)。
apm飛控板是通過電子調速器模擬電源或者是usb供電(圖1),供電電壓統一為5V。apm的氣壓計受干擾比較大,所以要使用黑色或者是冷色調海綿進行覆蓋。把原先的直針接頭更換成了彎針接頭,更好地適應了F550內部比較狹小的空間。此飛控板上的電路設計比較合理,一個短接JP1接頭已經在被默認是焊斷的,適合外接大量傳感器的飛機硬件要求。
飛控板固件

圖1 apm飛控板電路實物圖
固件部分選用apm的hexa X型固件,這種固件是適用于六軸飛行器的。X型飛行模式也屬于現在比較主流的六旋翼飛行方式。本研究所選用的是3.2.1固件,但穿插進了適用于apm飛控板的HC-SR04超聲波測距模塊的程序,結合其本身多數用戶的體驗升級,飛行穩定性也有較大的提高。其次為了控制在室內大空間的飛行無法搜索到GPS的問題,將自檢模塊中的GPS自檢去除,即為有無GPS飛行器均可升空飛行,但是GPS的工作不會被中斷。
Failsafe(圖2failsafe輸出檢測端與正常電子調速器信號輸出端一致)功能也屬于比較重要的功能之一,飛機失控是事故,而failsafe就像一把保險的鑰匙一樣。同樣failsafe解鎖之后在usb供電的情況下還可以用于校驗輸出的是否正常的問題,不僅如此,failsafe還可以嚴格監控電源電量的問題,很好地避免了聽不到報警聲的問題出現。
飛控板地面站
開源飛控的精髓也可以說就是在地面站上面,地面站的豐富度大大提高,可以進行開發者選項的操作。Mission planner屬于本飛控板可以使用連接以及燒錄程序的重要應用程序,在安卓操作系統中也有類似的程序叫Droidplanner,添加了一個check的清單,主要是避免了在飛行之前沒有檢測清晰而發生的不必要的飛行麻煩。
每一次飛行中飛機的動向至關重要,模式的調整也顯得很重要(比如這名模友就沒有安裝數據傳輸模型,所以沒有察覺到飛機的模式突然發生了改變,險些發生飛行慘劇)。

圖2 failsafe自檢端口與輸出端口共用

圖3 傳感器工作原理

圖4 超聲波模塊工作程序框圖
飛控板配套裝備
飛控板配套的螺旋槳、電機、電調選擇也是十分重要的,電機的選擇和螺旋槳至關重要首先是電機KV值:大KV配小槳,小KV配大槳。KV值是每1V的電壓下電機每分鐘空轉的轉速,例如KV800,在1V的電壓下空轉轉速是800轉/ min。10V的電壓下是8000轉/min的空轉轉速。繞線匝數多的,KV值低,最高輸出電流小,但扭力大。繞線匝數少的,KV值高,最高輸出電流大,但扭力小。KV值越小,同等電壓下轉速越低,扭力越大,可帶更大的槳。KV值越大,同等電壓下轉速越高,扭力越小,只能帶小槳。相對的說KV值越小,效率就越高。其次要考慮電調和電機,電調出于安全考慮其電流必須大于電機最大電流,保證不會電機停車。
電子調速器是由mos管和單片機統一組合后的一種電路,主要在于能夠將所接受的電信號轉化成控制電機的輸入電壓的信號,進而控制電機轉速的裝置。
電子調速器要油門航程校準,使得六個電機轉速轉動幅度同步。
超聲波測距傳感器避障模塊
超聲波測距傳感器模塊簡介
Hc-sr04型超聲波模塊適用方便只需要四個接頭就可以完成全部實驗所需,供電在5v以內,最遠可以達到4m的精準測量,但不巧的是HC-SR04的測距是使用TTL脈沖波的,但是apm飛控板本身并不識別這一種脈沖波,所以就要使用arduino pro mini型單片機進行更改其信號模式,方可使得apm飛控板能進行識別。
超聲波測距傳感器模塊工作原理:
超聲波傳感器首先會發出脈沖波(如圖3),根據聲波所具有的波的特性,觸碰到障礙物就會反彈,這是本身在HC-SR04中的單片機就會接收到這一信號,根據返回信號與發出信號的時間差就可以得出障礙物與飛機的距離,同時本身在已經與HC-SR04焊接好的arduino pro mini型單片機就會把所需要的信號轉化成apm飛控板可以識別的信號,同時apm飛控板利用這一信號得出自己與障礙物的距離,直接將自己的狀態信息切換到定點模式(Poshold)當障礙物消失之后或是規避障礙物之后才會取消這一模式。這期間的穩定主要是通過已有的加速度計的校準數據的提取直接對飛行端口輸出行程進行更改,保證其穩定性。(如圖4)
超聲波測距傳感器避障模塊改造
arduino pro mini型單片機是arduino旗下又一成功力作,這一種類型的單片機配合上Hc-sr04就可以進行精準測距,價格也相對來說比較便宜。同時可以利用ftdi下載小板直接進行連接。
這里的模塊整合包括了組裝和調試組裝需要將整個Hc-sr04的板子出口除VCC和GND兩個接口以外的與arduino pro mini小板上的 trig連同echo連接在一起,再將arduino pro mini小板上的scl與sda兩個連接在I2c接口上,考慮到本身羅盤就已經占據了I2C接口的大部分,所以就利用到了apm原本的數據接口A0來連接。
由于整架飛機是多旋翼構造,多個螺旋槳工作時噪音會比較大,這樣的噪音可以通過濾波軟件出去,即便沒有軟件的時候測距雖然能照常進行但是整個精度與范圍也會大打折扣。調試之前要將程序燒錄,把arduino pro mini和ftdi小板焊接在一起。至于先前已經在apm的程序里面加入了超聲波測距這一選項,則在調參的過程中可以直接利用apm地面站即可。再打開全面調參菜單中RNGFND_TYPE的修改為2:APM2-MaxbotixI2c,RNGFND_MAX_CM中設置最大距離為500(留出一定的空余),將RNGFND_ MIN_CM設置為4,即為最小值,通過GAIN可以索要調整高度的值。超聲波測距模塊相比于氣壓計利用了海拔高度引起氣壓變化而進行定高成熟了許多,這種氣壓測高的方式在低速狀態下比較通用,但是飛機馬達聲噪音影響太過明顯,同時設計者在最開始就沒有很好的考慮到飛機本身所具有的特性,而在較快的空速條件下,又因為上下流體氣壓差而使得整部機器出現了較大的偏差。但是裝備了超聲波模塊會使得整架飛機的測距避障功能得到了一定的提升局限性還是比較大,比如上方的超聲波無法進行有效的安裝,測距效果也不是甚好,包括側面的飛行也沒有達到一個很好的測距避障效果,現在良好的效果也就只有側下方以及正下方的測距避障效果比較好,但是如果距離落差極大或者是突然的斷崖式陡增或者是陡降現在都沒有很好的方式得以解決我個人認為應該有一套能活動的超聲波測距模塊效果會更好,如在上10米多高的墻壁或者陡崖的時候超聲波傳感器從向下看一直移動到向上看,這一點可以利用舵機完成。

圖5 成品圖

圖6 成品圖
光流測距傳感器
光流測距傳感器簡介
光圈為3.6的定焦鏡頭能在30~1000cm進行拍攝作業,旨在與超聲波測距模塊進行避障使用,當然它也有不能向上進行探測,這里面的光流傳感器主要還是依托apm飛控板開發的,主要是以圖像捕捉為主的一種測距避障新模式,當然在30cm以內傳感器將會進入無法對焦的尷尬境地,所以當30cm以內時我設置了光流傳感器自動關閉的選項。同樣傳感器一旦裝備必須固定不得旋轉(圖6成品圖)
光流測距傳感器工作原理
光流法檢測運動物體的基本原理是:給圖像中的每一個像素點賦予一個速度矢量,這就形成了一個圖像運動場,在運動的一個特定時刻,圖像上的點與三維物體上的點一一對應,這種對應關系可由投影關系得到,根據各個像素點的速度矢量特征,可以對圖像進行動態分析。總體來說這種方法的最好應用領域就是鼠標光流測距控制計算機。光流傳感器與apm結合情況下的測距功能主要來自于兩方面,第一種是平穩狀態下的測距模式,就像是鼠標的光流測距是一樣的不同的情況下會出現不同的光流值(如圖7,水平測量);
第二種模式:是彌補出現的偏差角問題我們彌補飛行器側傾和俯仰變化在這幅圖中我們可以發現飛行器的側傾和俯仰的變化也將導致傳感器返回值的變化。與橫向運動的計算不同,這些都不依賴于可見物體的距離。在下面的圖片中,可以看到的飛行器已經側傾了10度,但第一張圖中視角中心的兩個花都移到了第二張圖片的視角邊緣。那么就要進行校準,直接讀取已知的apm飛控的傾斜角度在減去已有的傾斜角再求tan值完成校準彌補偏差角。(如圖8)
自動巡航的工作原理
自動巡航利用的是GPS和已有的油門航程數據進行巡航作業。(圖9程序框圖)
自動巡航的操作
飛機所處狀態必須是auto的狀態,而且整個飛行過程中必須按照已經寫好的腳本進行飛行,同樣自動模式種只會考慮GPS所提供的經緯度不會考慮任何情況下的高度參數,所以一定要注意飛行高度不要過高,否則飛機高度的改變量將由仍在6m以上工作的氣壓計進行定高,而且氣壓計的參數不穩定,出現10m以上的高度上下變化不是不可能。有兩種方法進入自動模式:在空中或者在地面上。如果飛行員要從地面使用自動模式起飛,有個特殊的安全裝置防止任務腳本執行,直到飛行員解鎖然后首次抬高油門。這是為了防止在不小心碰到模式開關時飛行器就起飛了。從地面使用自動模式起飛時,那么最近一次的定高油門值作為油門控制的基準。一旦飛行器起飛就會飛向第一個目標高度,然后開始執行之后的任務腳本。當飛行員已經在空中的時候切換到自動模式,會使飛行器前往第一個目標高度,然后開始執行當前的任務腳本。

圖7 水平測量

圖8 偏差角彌補

圖9 自動巡航的程序框圖
但任務一旦結束,飛機一旦完成任務時不會再飛回來的,一定要下達RTL的命令并先前設定好家的位置。直到通過模式開關重新獲得控制時飛機才會飛回來。如果想要你的飛行器飛回到家,可以添加一個RTL(回家)命令結束當前的任務腳本。如果想要手動降落然后鎖定電機(比預編程的自動降落命令更好),必須切換到自穩模式。
在任務腳本最后位置的RTL或是自動降落會強制降落然后停止電機。不能在自動模式手動降落(否則直接鎖死),除非已配置以上兩個選項之一,因為油門搖桿控制高度(高度也可以先前預設定),并不是直接控制電機。
利用光流傳感器以及超聲波傳感器的測距式避障模塊組合與apm開源飛控板組合較為成功也達到了前期目的,使得在正下方以及正前方的障礙物能夠成功地被感知,能夠在一定條件下為學校大型活動進行航拍作業。即便在研究過程中有一些美中不足,比如說如人機的避障模塊無上仰工作,面對落差較大的障礙物就會無能為力,在某些極端天氣情況下無法正常飛行,有的時候也不能完全做到100%的避障效果,但是總體來說效果還是客觀的,至少解決了飛控上的避障與自主巡航聯動操作的一大難關。
通過對于HC-SR04的知識應用以及光流傳感器測距功能的學習與編寫。包括將所得數據輸入到控制端,再從控制端提取加速度計數據以及已有命令再執行,最后完成避障的工作。本方法規避了很多由于機械故障而引起的飛行事故。總體來說整架飛機的實用性,解決問題的方便性,可操作性都是較為優秀的。
10.3969/j.issn.1001- 8972.2016.18.018