小型無人機在航拍、災害救援、防火等領域得到廣泛運用,但是無人機操作復雜,尤其是控制飛行姿態平穩、航線準確和降落平滑,對地面人員的操作水平要求較高。操作問題容易造成無人機的飛行事故,嚴重時會損壞飛機機體及機上設備,也會危害對地面人員及財產安全。因此,需要平衡儀輔助地面操作人員控制飛機的姿態和航跡。
FPGA對數據并行處理,使用相同算法時與CPU相比,計算速度高,影響速度快,適合數據密集、重復性高的工作。FPGA在邏輯上具有高度靈活性,對各種通訊協議具有良好的兼容性,也可根據各種控制系統制定數據輸出格式。FPGA架構飛控具有較大優勢,但由于FPGA設計難度較高,開發流程繁瑣,開發周期長,影響FPGA架構飛控的應用和普及。本文針對上述問題提出了一種基于Xllinx Vivado HLS工具的FPGA架構飛控的快捷開發方法,并將該方法應用于四旋翼飛行器平衡儀的設計上。
1平衡儀介紹
平衡儀用于提高無人機飛行的穩定性。無人機的穩定性包括橫向穩定性、縱向穩定性和航向穩定性,分別表示無人機在橫滾、俯仰和航向上恢復原始狀態的能力。通過使用平衡儀輔助地面人員操縱無人機,可精確控制無人機的飛行姿態。
本平衡儀包括慣性測量單元:使用三軸加速度計、三軸陀螺儀和三軸磁力計測量無人機物理運動狀態;數據處理單元:平衡儀系統的核心,用來計算無人機當前姿態并控制控制機械執行結構調整無人機姿態。平衡儀結構如圖1所示。
本平衡儀算法分為姿態解算算法和控制算法。
姿態解算算法用于得到當前無人機飛行姿態,當前姿態用俯仰角、橫滾角和方向角表示,姿態解算算法的核心為四元數法。平衡儀軟件流程如圖2所示,系統上電后對處理器和傳感器進行初始化。使用加速度計補償陀螺儀的漂移,進行數據融合得到誤差四元數,計算得到當前四元數后,計算得到當前姿態角。對遙控信號解碼后可得到目標姿態角,與當前姿態角一起通過PD算法得到控制量的輸出。
?
2 Xllinx Vivado HLS介紹
當今無線、醫療、軍用產品和消費類產品應用中使用的高級算法比以往更加復雜,加上緊迫的開發和驗證計劃,即最有經驗的RTL開發團隊都感到極具挑戰。Vivado Design Suite Vivado高層次綜合可將CC++和System C 規范直接引入Xllinx All Programmable 器件,無需手動創建RTL,從而加速了IP創建。Vivado高層次綜合支持ISE和Vivado設計環境,使系統工程師和設計架構師能以更快速的方式創建IP 。
早探索了具有不同設計需求和多種微架構后,Vivado HLS (High-Level Syn thesis)能直接將CC++和System C 轉換為VHDL 或Verilog的RTL級,從而加速了設計的實現和驗證,功能仿真可以通過C語言執行,這相比VHDL 和Verilog仿真加速超過了一個數量級。Vivado HLS提供給設計人員和架構師一個更快,更可靠的方法進行高品質設計。
3 設計思路
通過上述分析,使用Xllinx Vivado HLS套件時需要以已有C語言實現后仿真的飛控核心代碼為基礎,整合為Xllinx Vivado HLS套件所需結構,完成功能仿真后,通過高級綜合工具轉換為對應IP核,在EDK套件中配置后生成對應比特流文件。
3.1 C語言代碼調整
C語言平臺調試方便,可通過在線調試查看變量數值,對數據格式支持性好,代碼編譯數度較快,可使用ARM對飛控算法框架做功能仿真。飛控框架驗證合理后,需要對C語言代碼做調整,包括一下幾個方面:1整理飛控算法的程序結構。平衡儀核心代碼主要分為傳感器數據的預處理、和姿態角解算、控制量計算等部分。將這些功能整合到一個函數FC中,使用統一的輸入輸出變量。2整理飛控算法的輸入輸出變量。根據HLS工具對數據格式的要求,輸入變量使用值傳遞方法,輸出變量和輸入輸出變量使用指針傳遞方法。此處輸入變量包括傳感器數據、遙控信號值和控制參數。輸出信號包括飛機的控制信號、姿態角和一部分狀態值。3調整非關鍵信號的數據格式。目前Xllinx Zynq系列芯片普遍有對浮點數處理的專用DSP單元,對浮點數有良好的支持。但DSP單元數量有限,對于對響應時間具有苛刻要求的系統中,可采用部分點數運算部分定點運算的方法。對于精度要求高的變量或者關鍵變量,如四元數,采用浮點數計算;對于對要求不高且對系統影響不大的信號,如遙控信號值,采用定點運算的方法。
3.2HLS使用
在HLS中建立工程,選擇正確的目標芯片,添加所有的C語言文件,在工程的Top Function中填寫算法的頂層函數名稱,本例中為FC。運行C Syn thesis,調試提示的警告和錯誤。可通過添加Testbench軟件仿真飛控算法的C語言程序。
例如測試姿態解算功能時,需要使用預先采樣的傳感器數值驗算算法計算得到的姿態值是否準確、響應是否及時。建立Testbench文件,定義預先存儲的傳感器實驗數據和FC函數對應的輸入輸出變量,在main函數中按照傳感器采樣順序和數據格式將傳感器數據依次送入FC函數,使用Simulation工具仿真驗證實驗結果。
使用C Syn thesis工具對FC函數進行綜合,綜合后可查看綜合報表,包括各種資源的預計使用情況。例如在設計中發現LNT預計使用量超過實際數量后使用率過高,查看是在何處使用了大量的LUT,可試圖采用模塊分時復用的方法解決問題。打開此函數對應的C文件,在Directive欄中選擇對應函數,點擊右鍵選擇Insert Directive在彈出的對話框中Directive選項為NLINE。也可通過輸入腳本“set_directive_in line函數名”,再次運行C語言的綜合,查看資源使用情況。
代碼調試完成后使用Export RTL,選擇Pcore for EDK格式,生成飛控核心算法對應的IP核。
3.3EDK配置
在EDK中添加生成的飛控核心算法IP核路徑,并將此IP核添加至相應的工程中。編寫配置相應的輸入輸出IP核,在平衡儀設計中,需要編寫配置以下模塊:
機械執行機構控制驅動模塊:目前小型無人機電機和舵機控制多以脈寬調制信號為主,此模塊功能為將飛控核心模塊計算出的油門、升降、橫滾和方向等控制量轉換為對應的控制信號,并通過芯片管腳輸出。將此模塊添加至EDK工程中后,編寫對應的MPD文件,配置對應的輸入輸出端口,如配置由飛控核心模塊傳入的吸納后端口為輸入,寬度為32位;輸出到機械控制機構的信號端口為輸出,默認為1位.MPD文件配置完成后在Ports標簽轉中將此模塊的端口與飛控核心模塊對應的信號連接。
遙控接收機信號解碼模塊:此平衡儀中使用的遙控接收機信號采用6通道脈寬調制信號,周期約為22ms,脈寬從1~2ms分別代表該通道信號從最小到最大的信號量。將此模板添加至EDK工程中后,編寫對應的MPD文件,配置對應的輸入輸出端口,6個通道信號定義為輸入,寬度默認為2;解碼后的6路信號定義為輸出,信號寬度為32.MPD文件配置完成后在Ports標簽中將此模塊的端口與飛控核心模塊對應的信號連接。傳感器讀寫模塊:此平衡儀例子中使用的傳感器接口均為I*2C總線,可共用一組總線接口。此模塊功能為通過IC總線初始化傳感器并按照一定采樣時間讀取傳感器數據。將此模塊添加至EDK工程中后,編寫對應的MPD文件,具體過程同上一模塊類似。其中IC總線的SDA線為輸入輸出類型,編寫MPD文件時注意使用輸入、輸出和門控的形式表示輸入輸出出口。MPD文件配置完成后在Ports標簽中將此模塊的端口與飛控核心模塊對應的信號連接。
4實現與結果
在完成代碼編寫和仿真試調后,生成比特流文件。為驗證此方法生成IP核的有效性,將其應用到基于Xilinx Zynq-7000擴展式處理平臺(EPP)的ZedBoard中。為了直觀比較數據準確性,添加了串口IP核將傳感數據和解算的姿態角打印到PC端。將傳感器數據送入原始C語言實現的核心代碼中,將仿真得到的姿態角與FPGA中得到的姿態角對照發現姿態角計算準確,響應較高。
為了直觀比較運算時間,配置FPGA一個管腳輸出Busy信號表示實際運算的時間。每次運算開始時Busy管腳置高電平。在ARM平臺中實現的飛控系統也配置一個類似管腳用于輸出飛控實際運算的時間。比較兩個管腳輸出信號高電平的寬度,如圖3所示,ARM平臺實現此算法需要超過1ms的時間,而FPGA平臺實現此算法僅需約7μs,如圖4所示,硬件加速超過了兩個數量級,具有較大優勢。
?
?
為驗證此方法的可靠性,將此系統應用在一個四旋翼飛行器中。經過實際飛行測試,如圖5所示,飛行器飛行穩定,適合實際飛行測試,如圖5所示,飛行器飛行穩定,適合完成多種目視范圍飛行任務,該飛行系統具有較高的可靠性。
?
5 結束語
本文介紹了一種基于FPGA的小型無人機飛控系統的開發方法,借助Xilinx Vivado HLS工具,將已有的C語言平臺的飛控核心代碼轉換為FPGA平臺的IP核。此方法的特點是開發難度低、流程簡便、周期短,生成的IP核運行速度與ARM平臺相比提高了兩個數量級,且精度沒有降低。本文以算法較簡單的平衡儀為例驗證了此方法的可行性,在處理更加復雜的導航算法和控制算法時,FPGA平臺更將凸顯出其處理速度快的優勢,此方法可在基于FPGA的飛控系統開發過程中得到廣泛的應用。在后續的改進方法中,將更加注重資源的使用情況,合理利用邏輯資源。
參考文獻
[1]霍新宇.關于無人機在森林防火監測方面的探究[J].科技與創新,2014(7):128-130.
[2]喻少林.基于 DSP+FPGA的微小型無人機飛控計算機研究[D].杭州:浙江大學,2011.
[3] 張鵬翼.紅外傳感器在無人機姿態平衡系統中的應用[J].電光與控制,2007,14(6):170-172.
[4] 張天光.捷聯慣性導航技術[M].北京:國防工業出版社,2007.
[5] 徐玉.微小型無人機飛控平臺與姿態融合算法研究[D]. 杭州:浙江大學,2008.
[6] 秦永元.慣性導航[M].北京:科學出版社,2006.
[7] 胡壽松.自動控制原理[M].北京:科學出版社,2001.
[8] Xilinx.Vivado design suite user guide[M].San Jose:Xilinx,2013.
[9] Xilinx.Vivado design suite tutorial[M].San Jose:Xilinx,2013.
[10]何賓.Xilinx FPGA設計權威指南 Vivado集成設計環境[M].北京:清華大學出版社,2014.
?
評論
查看更多