徐曉丹,鄧 鵬,袁雙全,桂逸凡
(荊楚理工學院 電子信息工程學院,湖北 荊門 448000)
隨著國家的日益強盛,科技飛速發(fā)展,新興科技不斷涌現(xiàn),四旋翼無人機的出現(xiàn)便是眾多高科技中的杰出代表。四旋翼無人機主要由4 個槳葉交叉形成十字結構,通過槳葉旋轉提供升力進行飛行,遙控器控制其飛行方向。四旋翼無人機控制系統(tǒng)國外早有研究,一些著名高校和創(chuàng)業(yè)公司都有四旋翼無人機控制系統(tǒng)的自主研發(fā),利用相關的控制算法,結合多個傳感器建立具有獨特控制性。四旋翼無人機結構簡單,具有橫滾、俯仰、偏航、懸停、垂直等多種飛行模式,很大程度上滿足了用戶的需求??刂葡到y(tǒng)的作用在四旋翼無人機的飛行過程中十分關鍵[1,2]。在本文中,以MSP432 微控制器為核心,利用MPU6050 傳感器采集四旋翼無人機的姿態(tài)數據,改進傳統(tǒng)PID 控制算法,完成四旋翼無人飛行器飛行控制系統(tǒng)設計。
本文的四旋翼無人機主要由MSP432 單片機、遙控器、控制器、傳感器、IMU 解算單元、電源以及其他組件組成。MSP432 作為飛行控制器,接收傳感器提供的信息進行分析和判斷,輸出PWM,控制4 個電機的轉動,控制飛行器的飛行姿態(tài)。傳感器模塊包括IMU 解算單元、高度感應器、水平感應器、巡線感應器等,傳感器給出無人機姿態(tài)信息、陀螺儀值、高度值等,通過解算后融入到整個IMU 飛控單元中,得到無人機在空間中的一個相對穩(wěn)定的位置,無人機下一步的飛行方向在接收到位置信息之后進行控制。遙控器負責把遙控信息輸入到控制器中,實現(xiàn)一鍵起飛功能,必要時還可以切換至手動控制狀態(tài)。系統(tǒng)整體框圖如圖1。
圖1 系統(tǒng)整體框圖Fig.1 Overall system block diagram
系統(tǒng)硬件主要由F260-T432 底板、傳感器模塊、控制器、遠程控制器、馬達控制等幾大部分構成。Open MV 作為巡線控制器的數據來源控制整個無人機飛行。IMU 解算單元解算出信息后,首先給姿態(tài)控制器去控制無人機穩(wěn)定飛行,還會給出水平信息,與光流數據融合后控制水平控制器。高度控制器根據激光模塊測出距離后將數據進行融合,控制無人機飛行高度。
F260-T432 底板搭載TI 公司的MSP432 系列開發(fā)板[3,4]。飛行控制器使用MSP432P401R 核心板作為主控,MSP432主要應用于對功耗和性能要求都比較嚴苛的應用領域,其主要由F260-T432 底板、傳感器模塊、控制器、遠程控制器、馬達控制等幾大部分構成。MSP432 中的MCU 是32位,相較于16 位RISC(精簡指令集)的MSP430 單片機,MSP432 單片機采用32 位RISC,性能有很大提升,具有強大的處理能力,極低功耗,豐富的芯片外設和高效靈活的開發(fā)環(huán)境。作為一個極低功耗、高性能的MCU,MSP432單片機的應用前景十分廣闊。
傳感器模塊由IMU 解算單元、高度傳感器、水平傳感器和巡線傳感器組成,給無人機提供所有傳感信息。在IMU 求解單元中,得到了3 種信息:加速度信息、陀螺儀信息和糾正無人機飛行姿態(tài)的溫度信息。陀螺儀信息用來被矯正,溫度信息用來做恒溫控制,IMU 解算利用MPU6050 采集四旋翼無人機的姿態(tài)數據,以相對平穩(wěn)的姿勢使無人機在空中飛行;高度傳感器由氣壓計和紅外激光傳感器組成,實現(xiàn)定高功能,讓無人機穩(wěn)定飛行在某一確定高度;水平傳感器搭載匿名光流模塊,通過水平速度、垂直速度的識別,實現(xiàn)無人機定點懸停、定高等功能。水平傳感器由一個異步串口總線用來連接其他控制器,一個USB 口用來連接上位機,方便調參;巡線傳感器采用OpenMV3 攝像頭模塊,OpenMV3 攝像頭能進行機器視覺識別,實現(xiàn)無人機循跡功能。通過Micropython 語言,實現(xiàn)想要的邏輯的攝像頭內置圖像處理算法,使用外置終端觸發(fā)拍攝或執(zhí)行算法都很容易,還能利用算法的結果控制I/O引腳。圖2為傳感器模塊圖。
圖2 傳感器模塊圖Fig.2 Sensor module diagram
姿態(tài)控制器包括高度控制器、水平控制器和巡線控制器[5-7]。姿態(tài)控制器是最基本的控制器,讓無人機以一個相對穩(wěn)定的姿態(tài)在空中飛行;高度控制器可以實現(xiàn)測高功能,使無人機穩(wěn)定地飛行在一定的預期高度上;水平控制器根據光流數據控制無人機水平方向,向左向右或是保持不變;巡線控制器根據Open MV 傳回來的信息實現(xiàn)巡線控制。
本設計采用T8F8 遙控器,內置發(fā)射機,傳輸頻率為2.4GHz,適配R8F8 接收機,采用S-BUS 信號輸出,其他通道能輸出對應PWM 信號,方便配合其他傳感器使用。
遙控器的兩種模式:姿態(tài)模式與定點模式[8]。姿態(tài)模式中,由油門直接控制,Pitch 控制俯仰角度,Roll 控制橫滾角度,Yaw 控制航向角度;在定點模式中,高度信息由油門來控制,遙控器模塊圖如圖3。
圖3 遙控器模塊圖Fig.3 Remote control module diagram
本設計選取了一種以無人機穩(wěn)定飛行為目標的無刷電動機作為無人機動態(tài)源,無刷直流馬達適合四旋翼飛機,其體積小、效率高、穩(wěn)態(tài)轉速誤差小。無刷電機要進行驅動,無刷電機的驅動相對來說比較復雜,需要單獨的MCU控制三相橋驅動。遙控器和巡線控制器分別控制姿態(tài)和水平控制器。根據速度采樣定理,電機控制模式采用400Hz的PWM 波控制電機,能精準控制電機。
軟件部分主要通過地面控制實現(xiàn)其飛行控制,四旋翼無人機的姿態(tài)信息、控制解算、姿態(tài)控制3 大模塊形成閉合的控制回路,保證了即使在外界環(huán)境的干擾下也能快速反應,進行自我調節(jié),確保穩(wěn)定飛行。
MPU6050 姿態(tài)信息采集沒有組合式陀螺儀與加速器軸間差的問題,安裝空間相對于多組件方案有所減小。6 軸傳感器MPU6050 是整合6 軸運動處理的組件,內帶3 軸陀螺儀和3 軸加速計,利用II C 接口將全6 軸進行整合,并利用自帶的數字運動處理器DMP 硬件加速引擎與外接磁力傳感器相結合。
無人機姿態(tài)解算有歐拉角、方向余弦、四元數等,它們各有優(yōu)缺點。歐拉角法在計算時存在90°奇點,存在一個超越函數,難以計算。方向余弦法狀態(tài)維數高,求解時會產生歪斜、飄移等誤差,計算量大,效率低。旋轉矢量法的雙值性,在解算時會產生誤差,產生奇異矩陣。這幾種姿態(tài)解算方法中,四元數法變復雜的三角函數運算為簡單的線性化系統(tǒng),具有計算量小、精度高,可避免奇異性等優(yōu)勢。
為了更好地描述無人機在空間中的位置,如圖4,建立慣性坐標系E 和機體坐標系B。
圖4 慣性坐標系E和機體坐標系BFig.4 Inertial coordinate system E and body coordinate system B
根據無人機飛行時4 個槳葉不同的旋轉順序,分別對應不同的旋轉矩陣,依據偏航角Ψ、俯仰角θ、橫滾角φ的順序,分別繞OEZE-OEYE-OEXE旋轉,依次旋轉的矩陣連乘就得到了旋轉矩陣REB。
矩陣REB的轉置矩陣REB就是將機體坐標系B 轉換成慣性坐標系E:
當θ=±π/2 時:
此時橫滾角的旋轉軸與偏航角的旋轉軸發(fā)生重合,失去了一個自由度。把四元數和歐拉角聯(lián)系起來就可以,表示其旋轉為:
旋轉矩陣表示為:
聯(lián)立式(1)和式(5)得:
PID 算法原理簡單,通過調整3 個單元的增益Kp,Ki,Kd實現(xiàn)其特性,魯棒性強,控制精度相對較高,傳統(tǒng)PID控制算法適用于線性且動態(tài)特性不隨時間變化的系統(tǒng),PID控制律算法表示為:
其中,Kp為比例增益,Ki為積分增益,Kd為微分增益,u(t)為控制量(控制器輸出),e(t)為被控量與給定值的誤差[9]。
PID 控制適用于許多控制問題,在參數調整好后具有不錯的效果,然而在一些應用下效果不佳,通常無法提供最佳的控制。PID 控制的主要問題在于其是線性對稱的,在非線性的系統(tǒng)中,其效果可能會有變化。由于無人機屬于非線性不穩(wěn)定系統(tǒng),在實際飛行環(huán)境不確定情況下,傳統(tǒng)PID 控制器無法適應四軸飛行器的非線性系統(tǒng)。本文改進傳統(tǒng)PID 算法,引進串級PID 控制器控制無人機的飛控系統(tǒng)。
將兩個PID 控制器組合在一起就是串級PID 控制器,外環(huán)控制器的輸出賦給內環(huán)控制器的輸入,減小誤差,滿足非線性條件。內部的PID 控制器直接對目標值進行控制,外部的PID 控制器用來快速逼近目標值。與傳統(tǒng)PID 控制算法相比較,串級PID 控制使時間常數減小,振蕩周期縮短,提高系統(tǒng)的運行效率,增強飛控系統(tǒng)的穩(wěn)定性。圖5是串級PID 控制的原理圖。
圖5 串級PID控制原理圖Fig.5 Schematic diagram of cascade PID control
串級PID 控制器在使用時,外環(huán)控制無人機的姿態(tài)角,達到超前控制的快速響應;內環(huán)作為角速度環(huán)控制無人機,實現(xiàn)對角速度的控制,提高無人機的飛行穩(wěn)定性。
在串級PID 控制系統(tǒng)建立后,利用MATLAB 對四旋翼無人機進行仿真控制,利用PID Tuner 工具箱整定參數并進行對比驗證。調試串級PID 時先把外環(huán)去除,將外環(huán)比例增益Kp設置成1。在調整內環(huán)Kp時將Kp逐漸增大,再撥動飛機,此時飛機會逐漸開始震蕩,當飛機能快速震蕩以后,再緩慢調小Kp,將震蕩減小。接著調整內環(huán)Kd,緩慢增加Kd,直到飛機抖動逐漸減小,如果增加到一定程度,再次出現(xiàn)震蕩,則表示Kd過大,此時只要減小Kd,使飛機保持輕微震蕩即可。再調整內環(huán)Ki(方法同Kd),緩慢增加Ki,直到消除最后輕微震蕩,此時飛機可以快速抵抗角度偏移。
在整定外環(huán)Kp時,緩慢增大外環(huán)Kp,直到飛機能快速響應打舵,并且使飛機不再震蕩。內環(huán)Kp,Ki,Kd大了都會震蕩,且震蕩頻率p 圖6 PID Tuner工具箱參數整定圖Fig.6 Parameter setting diagram of PID Tuner toolbox 通過在MATLAB 上仿真PID,基本了解串級PID 的實際作用。Kp要選取合適值,過大會產生震蕩,過小會產生超常量,從小到大調節(jié)緩慢。太大的Kd值會導致毛刺抖動,太小則會出現(xiàn)異常。Ki值大了后,雖然調節(jié)很快,但也會產生過沖,出現(xiàn)尖峰脈沖,小了導致調節(jié)很慢,可能無法調試達到穩(wěn)定狀態(tài)。 總結以上三點,得出以下規(guī)律:在調試PID 時,Kp從小到大調試,Kd從小到大調試,Ki從小到大調試。每次只調一個參數,直到最滿意的時候,再調下個參數。表1給出了PID 的參數。 表1 PID參數Table 1 PID Parameters 首次飛行前,需要檢測傳感器數據是否正常,姿態(tài)解算是否正常以及電機轉向和槳葉是否正常。檢測傳感器數據是否正常主要檢查加速度計和陀螺儀數據是否出現(xiàn)全部數據為0 的情況,傳感器靜態(tài)校正后數據是否剛好滿量程。電機轉向檢查是否正常,根據發(fā)電機轉向俯視飛機右上角電機逆時針轉動為標準,由于相鄰電機具有相反轉向,對角電機具有相同轉向,所以電機序號要與定義的相同。 利用MATLAB 進行模擬,驗證PID 控制系統(tǒng)效果,選擇四旋翼無人機的內部變量配置見表2。 表2 四旋翼無人機內部變量配置Table 2 Internal variable configuration of quadrotor UAV 本文研究的四旋翼無人機,以MSP432 微控制器為核心,結合硬件和軟件分析實驗,通過MPU6050 傳感器信息采集與數據處理,結合無人機飛行姿態(tài),改進傳統(tǒng)的PID控制算法。四旋翼無人機完成飛控系統(tǒng)設計采用MATLAB仿真模擬進行參數整定,實現(xiàn)姿態(tài)探測。通過多次對無人機的飛行控制系統(tǒng)測試和試驗,驗證了基于MSP432 單片機的四旋翼無人機控制系統(tǒng)的可行性。4 姿態(tài)飛行測試
5 結語