豐宇航 蔣雯怡 王冠凌 李 旦
(安徽工程大學電氣工程學院 安徽蕪湖 241000)
四軸飛行器是以四個螺旋槳提供飛行動力的一種可歸類于直升機的飛行器[1]。因為其獨特的構造,所以可以進行豎直升空降落,空中懸浮等固定翼飛行器無法達到的特殊飛行姿態,起降方式十分自由,幾乎不受場地的限制,且可以向任意方向飛行。由于四軸飛行器具有的獨特飛行方式以及體積小巧、制作成本低、操作上手門檻低等優點,因此被各種領域所青睞。目前國內對于循跡四軸飛行器[2,3]的自主飛行的研究取得了相當大的成效,從而使循跡四軸飛行器在很多領域都有所應用。本文主要是通過OpenMV機器視覺模塊對圖像進行采集與處理,經由TI公司生產的MSP432芯片作為飛行器主控芯片來進行處理,實現了四軸飛行器可以按照地面規劃好的路徑進行自主飛行。
(一)OpenMV。OpenMV Cam H7是一款小型、低功耗,搭載輕量化的機器視覺算法庫的開源機器視覺模塊,以ARM Cortex-M7處理器STM32H743VI為核心,集成了OV7725圖像傳感器。由于內置的機器視覺算法庫提供了Python接口,因此可以通過microPython語言來調用OpenMV上的機器視覺算法庫。不同于龐大的OpenCV庫帶來的移植上困難,OpenMV可以方便、快速的達成項目設計要求。
(二)FreeRTOS。 RTOS全稱“Real Time Operating System”,中文名實時操作系統[4],是一類操作系統,例如LiteOS-M、RT-Thread以及FreeRTOS等。由于RTOS系統一般被用于嵌入式和物聯網,因此對其的要求就與PC上平常使用的Windows和Linux等操作系統不同。受嵌入式和物聯網的應用環境所限,操作系統必須對外界的信息(一般是由外設觸發的事件或者中斷)做出及時的反應,這就要操作系統必須在確定的時間內完成全部或者絕大多數的任務。這也是RTOS和Windows、Linux操作系統的最明顯區別。
FreeRTOS是RTOS系統的一種,因為FreeRTOS十分的小巧,僅從其源程序上的文件數量就可以看出比UCOS-Ⅱ和UCOS-Ⅲ要小的多,所以對硬件資源的消耗非常低,而且FreeRTOS的內核遵循MIT開源協議,因此FreeRTOS在市場中占據大量的份額,社區論壇異常活躍,官方文檔也十分齊全,這對于開發的幫助十分巨大,所以選取FreeRTOS作為四軸飛行器的操作系統。
(三)飛行器整體結構。文中四軸飛行器選取MSP432作為飛行器主控芯片,其余硬件資源有MPU9250模塊、BMP280模塊、電壓測量模塊、無線數傳、OpenMV模塊、電機調速器、無刷電機、光流模塊。首先OpenMV負責圖像的采集、處理和識別,并將識別后的結果通過串口發送給MSP432主控,再由MSP432主控[5]對該結果信息進行處理,如計算偏差、更新目標姿態、驅動電機調速器改變電機轉速等。具體飛行器整體控制圖圖10將在后面給出。飛行器整體結構如圖1所示。

圖1 飛機整體結構圖
(一)圖像處理。由于外界環境光照等其他因素的干擾,以及設備自身的誤差,會導致一些噪聲融入采集到的圖像信息中,這會對后面的目標識別產生不利的影響。因此,在獲得采集到圖像信息后,需要對圖像進行相應的處理,從而減弱圖像信息中的噪聲干擾,圖像整體處理流程如圖2所示。由于對圖像的處理會占用大量的硬件資源,為了保證控制系統的實時性和快速性,以下的操作均是在圖像大小為160x120(單位為px)下進行。

圖2 圖像處理流程
(二)圖像灰度化。同灰度圖不同,彩色圖像含有顏色信息,受限于飛行器搭載的硬件資源,為了保證四軸飛行器的控制效果,將采集的彩圖處理為灰度圖,即色彩值轉化為亮度值,以降低圖像處理對資源的占用,保證算法識別的實時性。為了更加明顯的看到在識別中彩色圖像和灰度圖像對幀數的影響,這里使用運算量較大的Apriltag識別來展示。通過OpenMV IDE可以清楚的看到,關于彩色圖像和灰度圖像對于幀數的影響,其中圖3是灰度圖和幀數,圖中處理后的灰度圖的灰度級別為256,圖4是原圖(RGB565彩色圖像)和幀數。由于連接到OpenMV IDE進行圖像傳輸顯示會大幅度丟失幀率,因此這里只是作為對比展示,后面在實際飛行中,并不會將圖像傳到地面站上進行顯示,以提高算法識別的實時性。

圖3 灰度圖

圖4 原圖(彩色圖)
(三)圖像腐蝕與膨脹處理。在實際中,由于環境條件的影響,地面上的黑色線條可能會有破損,或者因為光線的影響,導致OpenMV拍攝到的黑色線條有缺陷。因此需要對拍攝到圖像進行修補處理。首先需要對拍攝到的灰度圖圖5進行二值化處理,二值化是通過設定閾值范圍的方法將灰度圖里面的所有像素點的像素值設置為兩個指定的值,一般是0和255。其結果如圖6所示。從圖像中可以清晰的看到,圖像信息中包含的噪點對二值化后目標提取的干擾,因此需要對圖像進行腐蝕膨脹處理[6,7]來消除噪點,效果如圖7,腐蝕是提取卷積核覆蓋的區域內的最小像素值,替代錨點位置的像素值,一般選取卷積核的中心為錨點。相反的,膨脹是提取卷積核覆蓋的區域內的最大像素值,替代錨點位置的像素值。這里腐蝕算法使用的核為3X3的卷積核,膨脹算法使用的是5X5的卷積核。式(1)分別為腐蝕和膨脹算法所使用的卷積核。


圖5 灰度圖

圖6 二值化

圖7 腐蝕膨脹
通過上面的圖像處理,已經得到圖像信息較好的路徑二值化圖像,通過對圖像進行線性回歸[8,9],即可擬合出路徑引導線并獲得其參數,如圖8所示。通過將其與圖像垂直中心線進行運算即可得到偏差eθ和eρ,其中eθ是直線與圖像垂直中心線的夾角,右偏為正,左偏為負,eρ為直線與圖像垂直中心線的距離。根據得到的角度和距離誤差信息,來對更新四軸飛行器的目標姿態[10]。本文設置了角度-角速度的串級控制器來作為四軸飛行器所使用的控制器,采用模糊PID設計角度外環。

圖8 線性回歸
(一)模糊PID控制原理。PID算法是以偏差的比例、積分和微分進行控制的控制算法,廣泛應用于連續控制系統,是最為成熟的一種連續系統控制算法。連續控制系統的理想PID控制規律為:

式中,KP為比例增益系數;TI是積分時間常數;TD是微分時間常數,u(t)為控制器輸出的控制信號,e(t)為期望值與輸入信號之間的誤差。
由于嵌入式微處理器使用的是數字電路,無法直接處理模擬量,所以PID控制律需要離散化。位置式PID就是離散得到一種形式,其式為:

式中,u(k)為第k個采樣點處控制器的輸出值;e(k)為第k個采樣點的差值;∑e(i)是誤差的累計;Kp、Ki、Kd分別為比例、積分和微分系數。
模糊控制對信號的模糊處理會導致控制系統的準確性和快速性下降。為了解決這一問題,設計了模糊PID控制器,結構如圖9。通過將模糊控制與傳統PID控制相結合,由模糊控制器根據誤差e和誤差變化量ec來調整PID控制器Kp、Ki、Kd的值,再由PID控制器進行控制。由于是模糊PID控制器是建立了誤差e和誤差改變量ec與傳統PID的Kp、Ki、Kd系數之間聯系,并沒有直接對系統的輸出產生影響,從而避免了模糊控制帶來的對系統的靜態特性和穩態特性的影響[11]。模糊PID控制器的本質是依據輸入誤差e和誤差改變量ec,然后根據模糊原理,實時調整PID控制器的參數,來適應不同的情況。

圖9 模糊PID控制器結構圖
(二)模糊規則建立。由于輸入的信號量是連續量,因此需要對輸入進行模糊化[12]。以四軸飛行器與地面飛行引導線的角度誤差為例,四軸飛行器與地面飛行引導線的角度誤差e和角度誤差改變量ec是模糊控制器的輸入,輸出是PID參數的增量:?kp、?ki、?kd,變化范圍由工程經驗決定。設輸入的模糊子集為{負大,負中,負小,零,正小,正中,正大},對應為{NB,NM,NS,ZO,PS,PM,PB},隸屬函數采用三角隸屬度函數,完成了輸入的模糊化后,就需要建立模糊規則表[13,14](見表1-表3)。

表1 Kp的模糊規則庫

表2 Ki的模糊規則庫

表3 Kd的模糊規則庫
經過模糊推理,將得到的增量?Kp、?Ki、?Kd,疊加到Kp、Ki、Kd的初始值上,從而得到最終的Kp、Ki、Kd參數的值。因此有式(4)。

式中,?Kp、?Ki、?Kd為模糊推理得到的增量;Kp0、Ki0、Kd0為PID參數的初始值;Kp、Ki、Kd為目標值。
(三)模糊PID控制器設計。以線性回歸得到直線與圖像垂直中心線的角度偏差eθ為例,來設計控制器。令模糊控制器輸入為偏差e和偏差變化率ec,輸出為?kp、?ki、?kd。
1.輸入e:基本論域為[-90,+90];離散論域為{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};模糊化公式為式(5);模糊子集為{NB,NM,NS,ZO,PS,PM,PB} 。
2.輸入ec:基本論域為[-135,135];離散論域為{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};模糊化公式為式(5);模糊子集同步驟1

3.輸出量?kp、?ki、?kd:基本論域分別為[-0.5,0.5]、[-0.07,0.07]、[-4,4];離散論域為{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}。解模糊化采用重心法,公式為式(6);模糊子集同步驟1。

式中,uw為控制量的精確值,uB′(uj)表示輸出量模糊集合B′中第j個元素uj所對應的隸屬度。
根據離散論域和隸屬函數對e、ec模糊化,分別得到對應模糊子集的值,經過模糊推理,得到模糊子集中?kp、?ki、?kd的值和對應的隸屬值,解模糊化得到輸出量uw。通過將 ?kp、?ki、?kd分別與Kp0、Ki0、Kd0疊加獲得Kp、Ki、Kd。再由修正后的PID控制器,輸出內環的期望,內環輸出控制量,完成四軸飛行器姿態的調整。飛行器循跡整體控制圖如圖10所示。

圖10 飛行器整體控制圖
在自主搭建的無人機平臺上進行相關試驗。因為是對飛行器循跡控制,不涉及高度大幅度變化,所以設定飛行器高度為1.5m,給定飛行器的俯仰角pitch=5°,保證飛行器一直向前飛。
通過無線數傳可以將線性規劃出的直線與圖像垂直中心線的角度和距離發送到地面站。從圖11可以看出飛行器對路徑的追蹤效果,飛行器相對黑線的位置偏差大約在50個像素點內,可以完成對地面黑線的循跡飛行。

圖11 地面黑線距離圖像中線像素點的偏差量
本文設計了使用模糊PID控制器的四旋翼自主循跡控制系統,通過灰度、二值化和腐蝕膨脹預處理,線性回歸提取出導航線,最終得到偏差量。設計了角度-角速度的級聯控制,控制器分別由模糊PID和位置PID構成,并以偏航角為例說明了設計流程。最后根據實際飛行中,無線數傳返回的數據,驗證了飛行器能夠完成自主循跡飛行。