崔曉康+高潤秋+王芮+莊志鵬

【摘 要】本文主要是介紹基于二值化攝像頭OV7725四旋翼自動追蹤目標的控制研究。本案例采用STM32F407RBT6作為整個系統的主控板,采用SBUS協議對四旋翼進行控制。MK60DN512ZVLQ10作為圖像處理的處理芯片,把攝像頭采集到的圖像硬件化為二值圖像后,再回傳信息給STM32F407做控制處理。除此之外,STM32F407上還外接超聲波,電子羅盤,LC12S外設模組用來控制四旋翼的高度,方位。
【關鍵詞】MK60;STM32;Pixhawk飛控板;LC12S;SBUS協議;OV7725
一、引言
四旋翼飛行器一直以來都是國內外航空領域類研究的熱點,四旋翼與其他多旋翼相比,控制直觀,只需要控制四個電機調節螺旋槳的轉速進而平衡四個螺旋槳的升力來實現空中準確懸停和精確飛行[1]。導航系統是四旋翼組成的關鍵部分,它分為室外導航,室內導航和慣性導航。對于室外導航,可以通過GPS來實現四旋翼的室外定位,巡航等功能。對于室內導航,我們主要采用視覺導航。由于四旋翼由STM32F407控制,其最大速率只有168Mhz,不能夠用采用一般圖像處理算法,因此我們選用具有硬件二值化的攝像頭來完成視覺導航。慣性導航,主要用于檢測四旋翼飛行器自身姿態進而穩定自身姿態。對于上述三種導航方式,我們需要根據實際的需要做具體的調整。
二、系統設計原理框圖
STM32F407時ST公司2012年初推出的基于ARM Cortex-M4內核,具有浮點運算能力的高性能32位處理器,也采用成熟的90nmNVM工藝,自適應實時閃存加速器(ART加速器)以及多層總線協議[2]。改芯片主頻可以達到168Mhz,擁有豐富的USART,I2C,SIP,CAN,ADC ,TIM,GPIO等外設接口并且與其他Cortex-M系列兼容。在整個四旋翼控制系統中,HC-SR04配合光流模塊實現四旋翼的定高定點;通過JTAG接口,實現STM32F407代碼調試和燒錄;USART2與LC12S無線透傳模塊相連,用于回傳STM32F407的SBUS通道參數,飛行高度,羅盤數據回傳到上位機,上位機也可以向STM32F407下發控制指令;MK60將圖像二值化后,把所需的信息回傳到STM32F407主控板上;通過I2C接口,主控板讀取GY-29電子羅盤數據,確認飛機航偏角;最后主控板通過軟件模擬SBUS協議將通道控制數據下發到Pixhaw飛控板。
三、軟件設計
系統軟件設計全部采用C語言開發,主控板STM32F40在Keil4.70集成開發環境使用STM32F4xx_StdPeriph_lib v1.0.2.7 標準庫進行開發,圖像處理板MK60在IAR6.0下進行開發,采用野火嵌入式工作室建立的野火Kinetis庫。采用固件庫進行開發,開發效率高,代碼可讀性強。
(一)主控板STM32控制流程圖
首先初始化STM32中斷向量控制器,配置各個外設中斷優先級;將PA0設置成輸出,通過軟件模擬SBUS協議發送數據;軟件初始化USART2,USART3,USART2作為主控板STM32數據回傳口以及緊急指令接受口,USART3則用來與MK60通信;在解鎖前,先讀取GY-29磁偏角,其值為四旋翼初始方向角度;定時器2配置成輸入捕獲模式,PB3配置成定時器2輸入捕獲引腳,用來捕獲超聲波的數據脈沖。;定時器3配置成定時模式,用于控制四旋翼飛行總時間。在完成飛行控制流程算法如下:
第一步:四旋翼解鎖;第二步:四旋翼起飛定高;第三步:四旋翼定高定點結束,開啟定時器,等待串口3收到攝像頭指令;第四步:對方向向量進行處理,修改飛機通道控制參數;第五步:通過SBUS協議將通道控制數據發送到Pixhaw飛控板。
(二)MK60控制流程圖
MK60設置中斷向量控制表,初始化ADC,配置串口0,串口2,串口0用來與上位通信,串口2用來與主控板STM32通信。做圖像處理算法時,首先是要配置像素點的有限范圍,硬件二值化攝像頭的相對閾值;第二步是設置圖像原點坐標;第三步讀取圖像,每讀取完一幀圖像進行行掃描,找出閾值內黑點;第四步計算方向向量,然后將該幀方向向量發送給主控板。
四、四旋翼飛行測測試結果
本次飛行是獨立于遙控器飛行。在整個過程中,四旋翼運行平穩,能夠很好的識別黑色物體,并懸在物體上方一米處,當移動貼有黑圓的板子時,飛機跟著物體前行,直到定時結束降落。本次實驗飛行動作流程,四旋翼沒有出現失控等情況。
五、結語
本文通過理論和實際飛行效果實現了四旋翼的自動追蹤。對于微處理器,采用二值化攝像頭進行圖像處理方式是一種很實用的機器視覺處理方式。本文所描述的追蹤處理算法是基于二值化圖像,我們下一步的工作方向可以朝著對彩色圖像進行處理,實現四旋翼在復雜環境下的自動追蹤。
【參考文獻】
[1] 四旋翼飛行器軌跡及運動目標跟蹤控制研究;張佳;燕山大學;2016
[2] STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx基ARM內核的32位高MCU參考手冊;ST公司;2012
[3] K60 Sub-Family Reference Manual Supports: MK60DN256ZVLQ10, MK60DX256ZVLQ10,MK60DN512ZVLQ10, MK60DN256ZVMD10, MK60DX256
ZVMD10,MK60DN512ZVMD10
[4]Document Number: K60P144M100SF2RM;2011