盧艷軍,吳金宇
(沈陽航空航天大學(xué) 自動(dòng)化學(xué)院,遼寧 沈陽 110136)
四旋翼飛行器結(jié)構(gòu)簡單、操作方便、價(jià)格低廉,有較強(qiáng)的操控性與機(jī)動(dòng)性,能夠垂直起降和懸停,因而廣泛應(yīng)用于軍事和民用領(lǐng)域[1]。四旋翼飛行器通過調(diào)節(jié)4個(gè)電機(jī)的轉(zhuǎn)速實(shí)現(xiàn)6種飛行狀態(tài),屬于一種欠驅(qū)動(dòng)系統(tǒng)[2]。四旋翼飛行器自主飛行控制的關(guān)鍵之一在于獲取準(zhǔn)確的飛行姿態(tài)數(shù)據(jù)。目前,針對(duì)旋翼飛行器姿態(tài)測(cè)量、控制、姿態(tài)解算和姿態(tài)數(shù)據(jù)融合等內(nèi)容的研究較多[3-5],對(duì)初學(xué)者來說很難通過這些文獻(xiàn)了解旋翼飛行器姿態(tài)角的變化;而使用地面站監(jiān)測(cè)系統(tǒng)獲取姿態(tài)信息比較繁瑣,不適用于初學(xué)者進(jìn)行簡單的姿態(tài)測(cè)量與觀察[6]。因此,設(shè)計(jì)開發(fā)旋翼飛行器姿態(tài)測(cè)量實(shí)驗(yàn)系統(tǒng)很必要。本文以自主設(shè)計(jì)開發(fā)的四旋翼飛行器控制系統(tǒng)為平臺(tái),設(shè)計(jì)一種基于LabVIEW虛擬儀器的姿態(tài)測(cè)量實(shí)驗(yàn)系統(tǒng),實(shí)時(shí)采集飛行器的姿態(tài)數(shù)據(jù)并顯示,為學(xué)生提供了一個(gè)可以根據(jù)自己的設(shè)計(jì)完成與姿態(tài)測(cè)量和解算等相關(guān)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)平臺(tái)。
該實(shí)驗(yàn)系統(tǒng)以自主開發(fā)的四旋翼飛行控制系統(tǒng)為平臺(tái),系統(tǒng)的硬件組成如圖1所示。
圖1 飛控系統(tǒng)的結(jié)構(gòu)框圖
(1) 主控單元。主控單元采用基于ARM Cortex-M4內(nèi)核的STM32F407處理器,具有SPI、IIC、ADC等豐富的外設(shè),并新增加了硬件FPU以及DSP指令,尤其適用于浮點(diǎn)計(jì)算或DSP處理應(yīng)用。該處理器最高工作頻率可達(dá)168 MHz,并且功耗低、運(yùn)算速度快、穩(wěn)定性好,完全滿足四旋翼飛行器的控制需求[7]。
(2) 姿態(tài)測(cè)量單元。由陀螺儀與加速度計(jì)MPU6500、磁力計(jì)AK8975構(gòu)成姿態(tài)測(cè)量單元。MPU6500和AK8975都支持IIC通信協(xié)議,且通過其自帶的數(shù)字運(yùn)動(dòng)處理器DMP硬件加速引擎,可向應(yīng)用端輸出完整的9軸姿態(tài)融合演算數(shù)據(jù),為飛行器提供航向、橫滾、俯仰等姿態(tài)和航行信息[2]。
(3) 高度測(cè)量單元。采用氣壓計(jì)傳感器MS5611進(jìn)行飛行器高度測(cè)量。其內(nèi)部包含一個(gè)高線性壓力傳感器和一個(gè)24位AD轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間小于8 ms,測(cè)量精度達(dá)到10 cm,測(cè)量范圍為10~1 200 Mbar。
(4) 通信單元。主要包括調(diào)試接口電路、傳感器數(shù)據(jù)通信電路、遙控器信號(hào)的接收電路,并且預(yù)留出地面站通信接口和其他擴(kuò)展功能的通信接口。
(5) 電源單元。采用分離式供電結(jié)構(gòu),方便為不同電壓需求的器件供電。
姿態(tài)數(shù)據(jù)融合是飛行器飛行的關(guān)鍵技術(shù)之一。數(shù)據(jù)融合速度和精確度對(duì)飛行器飛行的可靠性和穩(wěn)定性尤為重要。鑒于系統(tǒng)所使用加速度計(jì)和陀螺儀的固有特性,本系統(tǒng)采用四元數(shù)法進(jìn)行姿態(tài)估計(jì),并用互補(bǔ)濾波方法進(jìn)行姿態(tài)數(shù)據(jù)融合。此方法對(duì)傳感器精度要求相對(duì)較低,且計(jì)算量較小[8-9]。
四旋翼飛行器的姿態(tài)測(cè)量需借助如圖2所示的多旋翼飛行器四自由度實(shí)驗(yàn)臺(tái)進(jìn)行,實(shí)驗(yàn)過程如下。
圖2 多旋翼飛行器四自由度實(shí)驗(yàn)臺(tái)
將四旋翼飛行器固定在實(shí)驗(yàn)臺(tái)上,通過遙控器發(fā)射命令數(shù)據(jù)到飛行器,使其發(fā)生姿態(tài)的改變。此時(shí)MPU6050姿態(tài)傳感器開始進(jìn)行測(cè)量,并將三軸陀螺儀和三軸加速度計(jì)的原始數(shù)據(jù)通過IIC通信方式傳送到主控芯片,再對(duì)數(shù)據(jù)進(jìn)行姿態(tài)解算,并采用四元數(shù)表示法得出飛行器的姿態(tài)角數(shù)據(jù)(也可使用MPU6050的DMP進(jìn)行姿態(tài)解算并直接傳送出姿態(tài)數(shù)據(jù))[10]。通過串口通信將所得到的姿態(tài)角數(shù)據(jù)傳送到PC機(jī)端進(jìn)行上位機(jī)顯示,利用虛擬儀器LabVIEW將所上傳的數(shù)據(jù)進(jìn)行波形數(shù)據(jù)顯示、表盤數(shù)據(jù)顯示和三維動(dòng)態(tài)顯示,從而完成飛行器的數(shù)據(jù)采集,如圖3所示。
圖3 姿態(tài)數(shù)據(jù)測(cè)量系統(tǒng)結(jié)構(gòu)框圖
LabVIEW是美國國家儀器(NI)公司創(chuàng)新軟件產(chǎn)品。與其他計(jì)算機(jī)語言相比,LabVIEW顯著的特點(diǎn)是編程時(shí)基本不寫程序代碼,而是用圖標(biāo)、連線構(gòu)成的流程圖,被稱為G語言。LabVIE可增強(qiáng)用戶構(gòu)建自己的科學(xué)和工程系統(tǒng)能力,既方便操作,又大大提高了工作效率,是工程上常用來開發(fā)上位機(jī)的軟件[11]。
對(duì)下位機(jī)的數(shù)據(jù)采用串行通信方式。在LabVIEW中,串口操作是通過VISA驅(qū)動(dòng)與四旋翼主控板進(jìn)行實(shí)時(shí)通信,不斷地接收姿態(tài)數(shù)據(jù)。VISA是調(diào)用低層驅(qū)動(dòng)器的高層API,本身不具有編程能力,需要手動(dòng)進(jìn)行安裝驅(qū)動(dòng)[12]。在程序部分,分別用到VISA配置函數(shù)、VISA讀取函數(shù)和VISA關(guān)閉。
VISA配置函數(shù)對(duì)串口的參數(shù)進(jìn)行配置,本設(shè)計(jì)中串口波特率為9600,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)位。
VISA讀取函數(shù)作為數(shù)據(jù)采集的關(guān)鍵部分,將緩沖區(qū)中的數(shù)據(jù)進(jìn)行讀取并存儲(chǔ)到PC機(jī)的內(nèi)存中,同時(shí)需設(shè)定所讀數(shù)據(jù)的字節(jié)數(shù)。
VISA關(guān)閉是指當(dāng)結(jié)束數(shù)據(jù)上傳時(shí),對(duì)串口進(jìn)行關(guān)閉。整個(gè)過程設(shè)置完畢后,需在程序外添加while循環(huán)來進(jìn)行對(duì)姿態(tài)數(shù)據(jù)的連續(xù)讀取。
當(dāng)上位機(jī)通過串口采集到下位機(jī)上傳的姿態(tài)數(shù)據(jù)后,要對(duì)上傳的數(shù)據(jù)進(jìn)行處理。所采集的數(shù)據(jù)是以字符串形式存儲(chǔ)到緩沖區(qū)中,由于要對(duì)數(shù)據(jù)進(jìn)行分開顯示,故采用匹配模式(Math Pattern)通過設(shè)置正則表達(dá)式對(duì)緩沖區(qū)里串口采集的字符串進(jìn)行截取。本文中,上傳的數(shù)據(jù)分別是四旋翼的俯仰角、橫滾角和航向角的角度值,所接收的數(shù)據(jù)均為字符串形式,需通過分?jǐn)?shù)/指數(shù)字符串至數(shù)值轉(zhuǎn)換(Fract/Exp string To Number)將字符串?dāng)?shù)據(jù)轉(zhuǎn)換為數(shù)值存入數(shù)組中,再使用抽取一維數(shù)組(Decimate 1D Array)控件將數(shù)據(jù)進(jìn)行分離并顯示。當(dāng)使用表盤控件讀取數(shù)據(jù)時(shí),需用索引數(shù)組(Index Array)轉(zhuǎn)化為數(shù)值方可進(jìn)行顯示[13]。
本系統(tǒng)的顯示分為數(shù)據(jù)顯示和三維動(dòng)態(tài)顯示,數(shù)據(jù)顯示又分為表盤顯示和波形顯示。表盤顯示可以很直觀地讀取飛行器姿態(tài)的相關(guān)參數(shù),便于使用者快速觀察姿態(tài)數(shù)據(jù);而在波形顯示中,波形圖表控件和波形圖控件是兩種最為常見的顯示數(shù)據(jù)控件,兩者區(qū)別在于波形圖表控件能夠顯示歷史數(shù)據(jù),將新得到的數(shù)據(jù)追加到原有數(shù)據(jù)上進(jìn)行顯示,而波形圖控件不能對(duì)歷史數(shù)據(jù)進(jìn)行保存,只能一次性顯示完整波形。本程序?yàn)榱藢?shí)時(shí)觀察姿態(tài)角數(shù)據(jù),并進(jìn)行存儲(chǔ)與對(duì)比分析,所以選擇波形圖表控件來顯示,詳見圖4。
圖4 上位機(jī)數(shù)據(jù)顯示部分程序
在三維動(dòng)態(tài)顯示部分,通過調(diào)用子VI控件進(jìn)行顯示,其好處是能方便地對(duì)同一段程序調(diào)用多次而無需多次編程,使程序的維護(hù)更方便。本設(shè)計(jì)將子VI控件設(shè)定為一個(gè)對(duì)圖形的大小、位置等參數(shù)進(jìn)行設(shè)置的控件[14-15],而讀取的動(dòng)態(tài)模型是通過SolidWorks軟件所做的四旋翼模型圖,并保存為97版wrl格式才可在LabVIEW中進(jìn)行讀取,設(shè)置過程如圖5所示。
圖5 上位機(jī)三維動(dòng)態(tài)顯示調(diào)用子VI程序
動(dòng)態(tài)模型所旋轉(zhuǎn)的角度是通過讀取姿態(tài)角來確定的,所設(shè)計(jì)的子VI控件的3個(gè)輸入部分是圍繞3個(gè)軸轉(zhuǎn)動(dòng)的角度。在鏈接時(shí)需注意將角度值除以57.3轉(zhuǎn)化為弧度值方可進(jìn)行顯示。設(shè)置過程如圖6所示。
圖6 上位機(jī)三維動(dòng)態(tài)顯示部分程序
通過設(shè)計(jì)的LabVIEW程序?qū)ο挛粰C(jī)上傳的姿態(tài)數(shù)據(jù)進(jìn)行采集,所設(shè)計(jì)的用戶界面如圖7所示。上方為3個(gè)姿態(tài)角的表盤與數(shù)值顯示,可以直觀地讀取所要的姿態(tài)角數(shù)值;下方為3個(gè)姿態(tài)角的波形顯示圖表,適用于對(duì)數(shù)據(jù)的宏觀分析;左上方為串口參數(shù)設(shè)置輸入控件、讀取開關(guān)和當(dāng)前時(shí)間顯示;左下方為三維動(dòng)態(tài)顯示圖,是對(duì)四旋翼飛行器姿態(tài)的模擬顯示。
圖7 上位機(jī)LabVIEW用戶界面
在起始階段,對(duì)飛行器不加任何控制時(shí),飛行器處于水平位置狀態(tài),讀取的3個(gè)姿態(tài)角度均為零度左右。當(dāng)對(duì)飛行器發(fā)送控制信號(hào)時(shí),飛行器發(fā)生姿態(tài)變化,上位機(jī)中表盤與波形進(jìn)行相應(yīng)的顯示并存儲(chǔ),圖中三維模型也會(huì)發(fā)生與飛行器相同的姿態(tài)變化,便于使用者的觀察與分析。四旋翼飛行器姿態(tài)角數(shù)據(jù)波形如圖8所示。結(jié)果表明姿態(tài)角數(shù)據(jù)采集上位機(jī)軟件系統(tǒng)工作穩(wěn)定,測(cè)量誤差較小,可進(jìn)行長時(shí)間的數(shù)據(jù)采集。
圖8 四旋翼飛行器姿態(tài)角數(shù)據(jù)波形圖
飛行器的姿態(tài)數(shù)據(jù)是其飛行的重要參數(shù)?;贚abVIEW的四旋翼姿態(tài)測(cè)量實(shí)驗(yàn)系統(tǒng)可對(duì)飛行器的姿態(tài)數(shù)據(jù)進(jìn)行長時(shí)間連續(xù)采集并生成波形和三維動(dòng)態(tài)顯示圖,方便學(xué)生對(duì)飛行器姿態(tài)進(jìn)行測(cè)量與分析。通過多次實(shí)驗(yàn)測(cè)試證明本系統(tǒng)測(cè)試精度高、系統(tǒng)響應(yīng)靈敏、操作簡單、實(shí)用性強(qiáng),投入使用后效果良好,適用于飛行器的姿態(tài)測(cè)量、飛控性能檢驗(yàn)和姿態(tài)故障的調(diào)試,也可作為測(cè)量與控制類專業(yè)學(xué)生或研究人員檢測(cè)飛行器姿態(tài)的上位機(jī)應(yīng)用軟件。
References)
[1] 曹延超.基于STM32的四旋翼飛行器姿態(tài)測(cè)量系統(tǒng)設(shè)計(jì)[J].軟件,2015(1):104-109.
[2] 謝義建,陳躍東,舒圣焱.基于STM32的四旋翼飛行器的設(shè)計(jì)與實(shí)現(xiàn)[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2014(3):42-45.
[3] 江杰,劉娜,杜永興.四旋翼姿態(tài)檢測(cè)及數(shù)據(jù)處理系統(tǒng)優(yōu)化設(shè)計(jì)[J].彈箭與制導(dǎo)學(xué)報(bào),2017(1):4-8.
[4] 楚仕彬,袁亮.小型四旋翼無人機(jī)姿態(tài)測(cè)量仿真研究[J].計(jì)算機(jī)仿真,2015,32(2):67-73.
[5] 李文鵬,唐海洋.基于STM32的四旋翼飛行器姿態(tài)解算的研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016(6):13-16.
[6] 謝殿煌,姚曉先,彭增輝.應(yīng)用LabView的地面站飛行監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代制造工程,2008(6):93-95.
[7] 張?zhí)烊A.基于STM32F4系列單片機(jī)的四旋翼自主飛行器系統(tǒng)[J].電子制作,2016(增刊1):8.
[8] 張承岫,李鐵鷹,王耀力.基于MPU6050和互補(bǔ)濾波的四旋翼飛控系統(tǒng)設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2016(7):1011-1015.
[9] 徐云川.四軸飛行器姿態(tài)解算算法設(shè)計(jì)與仿真[J].科技視界,2016(23):17-18.
[10] 高京都.四旋翼飛行器控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2015.
[11] 王祝.基于LabVIEW虛擬儀器的多旋翼飛行器控制仿真研究[J].科技創(chuàng)新與應(yīng)用,2015(30):12-13.
[12] 趙奇峰,閔濤,楊黔龍,等.基于LabVIEW串口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(11):224-226,230.
[13] 夏鍇,楊增寶.基于LabVIEW讀取串口數(shù)據(jù)技術(shù)[J].制造業(yè)自動(dòng)化,2012(19):21-22.
[14] 宋亞男,黃博才,徐榮華.基于LabVIEW的飛行姿態(tài)控制實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2010,27(9):91-94.
[15] 于添程,黨淑雯,王銘宇,等.基于Labview的飛行姿態(tài)控制仿真平臺(tái)研究[J].產(chǎn)業(yè)與科技論壇,2014(15):42-43.