, , ,
(北京經(jīng)緯恒潤(rùn)科技有限公司,北京 100191)
航路規(guī)劃算法和飛行控制算法,是飛行器能夠正確執(zhí)行特定任務(wù)的關(guān)鍵,特別的,對(duì)于無(wú)人飛行器,高度自主的航路規(guī)劃能力始終是領(lǐng)域研究的熱點(diǎn),且受到主要軍事組織的重視[1]。在城市低空空域應(yīng)急管控系統(tǒng)課題研究中,涉及到目標(biāo)發(fā)現(xiàn)、目標(biāo)鎖定、目標(biāo)跟蹤等相關(guān)算法的設(shè)計(jì)和實(shí)現(xiàn)?;谔綔y(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法研究是城市低空空域應(yīng)急管控系統(tǒng)課題研究中的關(guān)鍵子課題之一,需要對(duì)算法進(jìn)行設(shè)計(jì),仿真和驗(yàn)證,并形成產(chǎn)品用于應(yīng)急管控系統(tǒng),同時(shí)將其推廣應(yīng)用到其他相似領(lǐng)域中。
近年來(lái),由于Matlab/Simulink等仿真環(huán)境和設(shè)計(jì)工具的不斷完善,部分研究機(jī)構(gòu)和型號(hào)單位開(kāi)始使用其進(jìn)行飛控系統(tǒng)核心算法軟件的設(shè)計(jì)開(kāi)發(fā)。然而,使用方式仍然沒(méi)有跳出傳統(tǒng)的基于文檔的設(shè)計(jì)開(kāi)發(fā)范式,算法模型經(jīng)過(guò)Simulink仿真驗(yàn)證后,仍采用手動(dòng)編碼的方式進(jìn)行目標(biāo)代碼編寫(xiě),效率較低且易引入人為錯(cuò)誤,進(jìn)而導(dǎo)致較長(zhǎng)的研發(fā)周期[2]。顯然,減少甚至完全取消手動(dòng)編碼將提高研發(fā)效率,而Simulink的代碼自動(dòng)生成功能使之成為可能。目前,高校所進(jìn)行的研究中,利用Simulink實(shí)現(xiàn)模型自動(dòng)生成目標(biāo)代碼的案例較多[3-4],應(yīng)用領(lǐng)域廣,但限于客觀條件大多停留在課題研究層面。
本文以基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法為目標(biāo),結(jié)合基于模型設(shè)計(jì)的開(kāi)發(fā)范式,充分利用Simulink自動(dòng)代碼生成特性,最大程度壓縮合并開(kāi)發(fā)過(guò)程中的重復(fù)工作,提出一種針對(duì)算法產(chǎn)品化的方法。本文對(duì)產(chǎn)品化過(guò)程和方法進(jìn)行描述,主要包括:基于模型的算法設(shè)計(jì)及仿真驗(yàn)證,算法的自動(dòng)代碼生成,自動(dòng)生成代碼與特殊手寫(xiě)代碼的融合,算法代碼調(diào)試工程的構(gòu)建和調(diào)試環(huán)境部署,代碼的編譯下載和調(diào)試,代碼燒寫(xiě),以及試驗(yàn)驗(yàn)證等。
算法的設(shè)計(jì)結(jié)果與仿真驗(yàn)證是產(chǎn)品化的基礎(chǔ),能夠體現(xiàn)產(chǎn)品功能性能范圍。算法設(shè)計(jì)和算法實(shí)現(xiàn),是兩個(gè)重要的環(huán)節(jié)。算法設(shè)計(jì)是為了確保算法的功能要求得到滿(mǎn)足,算法實(shí)現(xiàn)是為了確保算法的工程應(yīng)用。在算法設(shè)計(jì)階段,需要考慮后續(xù)算法實(shí)現(xiàn)的方便。采用基于模型的算法設(shè)計(jì)和仿真驗(yàn)證方法,可以滿(mǎn)足上述要求。
基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法為飛行器載體提供目標(biāo)探測(cè)和跟蹤指令,因此采用基于模型的算法設(shè)計(jì)和仿真驗(yàn)證方法進(jìn)行設(shè)計(jì)時(shí),需要構(gòu)建仿真輔助模型,包括:目標(biāo)和飛行器本體模型、飛行器地面站模型、飛行器控制模型以及相關(guān)的算法模型,此外還需要構(gòu)建仿真環(huán)境模型,如飛行器飛行所處的位置環(huán)境模型和障礙物模型等。
采用Matlab/Simulink仿真建模軟件,利用其豐富的設(shè)計(jì)工具,可以方便實(shí)現(xiàn)上述模型的構(gòu)建和仿真,提高設(shè)計(jì)與驗(yàn)證的效率。同時(shí)Matlab/Simulink具備成熟健壯的自動(dòng)代碼生成工具,使得所提產(chǎn)品化方法得以實(shí)現(xiàn)。
圖1為基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法設(shè)計(jì)仿真模型的組成,包括:自適應(yīng)航路規(guī)劃模型Programmer,實(shí)現(xiàn)航路規(guī)劃計(jì)算;自動(dòng)飛控模型AutoControl,實(shí)現(xiàn)主飛控邏輯及控制律解算;通信延遲模擬模塊,模擬傳感器和控制器間數(shù)據(jù)傳輸?shù)难舆t和抖動(dòng)特性;地面站模型GroundStationSend,模擬地面站指令和狀態(tài)顯示;飛行器本體模型PlaneModel,模擬飛行器動(dòng)力學(xué)、機(jī)載傳感器和作動(dòng)器。
構(gòu)建基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法設(shè)計(jì)仿真模型時(shí),為滿(mǎn)足后續(xù)代碼實(shí)現(xiàn)的要求,需遵循如下建模要點(diǎn):
1)模型模塊劃分要充分考慮后續(xù)實(shí)際系統(tǒng)應(yīng)用時(shí)的接口劃分,同一接口發(fā)送的數(shù)據(jù)使用一條數(shù)據(jù)總線表示,進(jìn)行通信接收/發(fā)送端模塊的連接;
2)根據(jù)計(jì)算精度和硬件板卡處理能力確定算法模型中所有信號(hào)的類(lèi)型,Matlab/Simulink默認(rèn)數(shù)據(jù)類(lèi)型為double,建模時(shí)根據(jù)預(yù)先分配的類(lèi)型對(duì)信號(hào)進(jìn)行更改,不同硬件板卡中數(shù)據(jù)類(lèi)型的定義可能不同,需根據(jù)具體情況進(jìn)行信號(hào)類(lèi)型的設(shè)置,如對(duì)于DSP C28346,由于最小數(shù)據(jù)長(zhǎng)度為2個(gè)字節(jié),因此char、uint8和int8均為2兩個(gè)字節(jié),與Matlab/Simulink中的定義不同,因此為了保證算法結(jié)果的一致性,建模時(shí)不能使用char等數(shù)據(jù)類(lèi)型;
3)模型中要合理考慮實(shí)際系統(tǒng)的誤差影響因素,例如考慮系統(tǒng)接口之間的信號(hào)傳輸延遲、信號(hào)波動(dòng)等,在上述模型中,對(duì)于需要RS232等IO接口傳輸?shù)男盘?hào),在相應(yīng)信號(hào)的接收端和發(fā)送端之間加入通信延遲模擬模塊,使信號(hào)延遲節(jié)拍按周期性變化;
4)構(gòu)建模型時(shí),需要區(qū)分離散狀態(tài)和連續(xù)狀態(tài),下載到DSP、ARM等目標(biāo)機(jī)中的核心功能代碼不能包含連續(xù)變量,因此需要將代碼中的連續(xù)變量模塊用相應(yīng)的離散模塊替換,如PID控制器中的微分模塊和積分模塊、狀態(tài)空間模塊等,輔助仿真模型不需要下載到硬件板卡中,可以充分利用標(biāo)準(zhǔn)工具箱中的連續(xù)模塊,簡(jiǎn)化建模過(guò)程,如航空宇航工具箱中的動(dòng)力學(xué)方程模塊等;
5)根據(jù)功能需求和實(shí)現(xiàn)特性,綜合使用Matlab/Simulink模塊和代碼進(jìn)行模型搭建,例如,自適應(yīng)航路規(guī)劃算法模型采用Embedded Matlab 模塊實(shí)現(xiàn),既滿(mǎn)足了手寫(xiě)代碼的自然語(yǔ)言方便性,又結(jié)合了Simulink模塊建模的可讀性,對(duì)于控制邏輯部分則采用Stateflow和Simulink事件模塊實(shí)現(xiàn),提高系統(tǒng)調(diào)用邏輯的層次性,便于升級(jí)維護(hù)。
在Matlab/Simulink下完成基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法設(shè)計(jì)仿真模型后,可以開(kāi)展相關(guān)數(shù)字仿真試驗(yàn),根據(jù)實(shí)際的飛行模式要求進(jìn)行對(duì)應(yīng)仿真場(chǎng)景設(shè)置,記錄仿真數(shù)據(jù),對(duì)仿真結(jié)果進(jìn)行分析,在確認(rèn)仿真結(jié)果滿(mǎn)足要求后,即可對(duì)航路規(guī)劃算法模塊和飛行控制算法模塊進(jìn)行代碼生成。
基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法設(shè)計(jì)仿真模型,是一個(gè)完整的閉環(huán)仿真模型,用于進(jìn)行數(shù)字仿真驗(yàn)證。需下載到硬件板卡中的是設(shè)計(jì)仿真模型中的核心算法模型,需將該部分模型提取出來(lái)形成獨(dú)立的新模型,并增加外設(shè)驅(qū)動(dòng)等IO通信相關(guān)模塊,形成核心算法代碼生成模型,具體包括以下幾方面內(nèi)容。
1)增加通信IO驅(qū)動(dòng)模塊。根據(jù)不同硬件板卡選擇對(duì)應(yīng)的驅(qū)動(dòng)模塊庫(kù),模塊庫(kù)通過(guò)Matlab supportPackageInstaller函數(shù)進(jìn)行在線安裝,目前DSP、ARM、Arduino等主流嵌入式板卡均在支持范圍內(nèi)。根據(jù)通信接口形式選擇對(duì)應(yīng)的IO驅(qū)動(dòng)模塊,如,航路規(guī)劃模塊使用一路RS232進(jìn)行信號(hào)收發(fā),則將串口接收、發(fā)送、中斷觸發(fā)模塊加入模型中與算法模塊連接,并正確設(shè)置中斷號(hào)和接收字節(jié)數(shù)等信息,如圖 2所示。
圖2 航路規(guī)劃算法對(duì)應(yīng)的代碼生成模塊
2)按照通信協(xié)議進(jìn)行數(shù)據(jù)打包解包模塊的搭建。在Matlab/Simulink仿真環(huán)境下,提供了與最終代碼運(yùn)行的硬件平臺(tái)如DSP相對(duì)應(yīng)的數(shù)據(jù)打包模塊和數(shù)據(jù)解包模塊,可以直接使用,在存在特殊協(xié)議情況下,通用的數(shù)據(jù)打包解包模塊不能滿(mǎn)足要求時(shí),可以通過(guò)手寫(xiě)C代碼,以S-function模塊實(shí)現(xiàn),與通用的數(shù)據(jù)打包解包模塊聯(lián)合使用,即可解決特殊應(yīng)用問(wèn)題。
在完成核心算法代碼生成模型構(gòu)建后,需進(jìn)行代碼生成環(huán)境的配置。代碼生成模型最終生成的代碼是可以運(yùn)行在硬件平臺(tái)上的目標(biāo)代碼,例如,運(yùn)行在DSP上的C代碼等。由圖 1中可見(jiàn),算法仿真模型在設(shè)計(jì)仿真環(huán)境下是以圖形化方式表示,轉(zhuǎn)換成目標(biāo)代碼后,算法模型將變成為C代碼文件。算法模型中存在需調(diào)整的參數(shù),這些參數(shù)在生成的C代碼文件中是否方便查找和修改,取決于進(jìn)行代碼生成前的準(zhǔn)備工作,包括以下幾個(gè)方面。
1)將可能需要調(diào)試的模塊,如航路點(diǎn)計(jì)算模塊,設(shè)置為原子子系統(tǒng),提高可讀性,進(jìn)而提高調(diào)試效率。如圖 3所示,若未將該模塊設(shè)置為原子子系統(tǒng),則該模塊生成的代碼將與模型中其他模塊生成的代碼按順序在主函數(shù)中排列,調(diào)試不便;設(shè)為原子子系統(tǒng)后,根據(jù)所需模式,可以使該模塊生成獨(dú)立函數(shù)文件或生成為主函數(shù)中的子函數(shù),便于調(diào)試階段進(jìn)行故障定位與變量監(jiān)控。
圖3 將需調(diào)整參數(shù)的模塊設(shè)置為原子子系統(tǒng)
2)根據(jù)Matlab/Embedded Coder說(shuō)明文檔,安裝代碼自動(dòng)生成所需的工具,以DSP C28346為例,工具包括:編譯器環(huán)境CCSvx、C2000代碼生成工具CGT、DSP/BIOS、仿真器驅(qū)動(dòng)XDC Tools、目標(biāo)機(jī)頭文件。工具環(huán)境安裝完成后,在待下載的Simulink模型中進(jìn)行模型層面的配置,如圖 4所示,設(shè)置前一步安裝的編譯環(huán)境,硬件板卡型號(hào),特別的,需在外設(shè)選項(xiàng)卡中對(duì)所使用的IO接口參數(shù)進(jìn)行設(shè)置,如本模型使用RS232通信,因此需對(duì)IO通道、奇偶位、數(shù)據(jù)位、波特率、IO管腳等關(guān)鍵參數(shù)進(jìn)行設(shè)置。
圖4 代碼生成參數(shù)配置界面
在完成代碼生成參數(shù)配置后,點(diǎn)擊模型的Build按鈕,即可生成所需的目標(biāo)代碼,包括.c、.h、引用庫(kù)文件和匯編文件等。這些文件將在編譯器環(huán)境CCS中使用。
從圖 2中可以看出,航路規(guī)劃算法對(duì)應(yīng)的代碼生成模型,主要包括RS232串口收發(fā)驅(qū)動(dòng)模塊、數(shù)據(jù)打包解包模塊和核心算法模塊,在自動(dòng)生成的算法代碼中實(shí)現(xiàn)對(duì)應(yīng)功能。在實(shí)際工程應(yīng)用中,同時(shí)需要對(duì)算法解算中間過(guò)程進(jìn)行數(shù)據(jù)記錄,因此還需要實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能。
當(dāng)所需存儲(chǔ)數(shù)據(jù)量較大時(shí),宜使用大容量SD卡。但一般而言,第三方硬件板卡驅(qū)動(dòng)庫(kù)并不提供SD卡讀寫(xiě)模塊,因此在構(gòu)建航路規(guī)劃算法對(duì)應(yīng)的代碼生成模塊時(shí),需要手動(dòng)編碼,且涉及硬件操作的驅(qū)動(dòng)模塊一般僅能用C等低級(jí)語(yǔ)言編寫(xiě)而不能通過(guò)Simulink建模實(shí)現(xiàn),目前有兩種可行的方法:
1)在Simulink仿真建模環(huán)境下,通過(guò)手寫(xiě)C代碼SD卡讀寫(xiě)函數(shù),封裝成S-function模塊,集成到算法的代碼生成模型中共同進(jìn)行代碼生成,該方法所需的前期工作量較大,但后期使用方便,不需要對(duì)生成的C代碼工程進(jìn)行修改,后期使用工作量小且可避免引入人為錯(cuò)誤;
2)在所生成的目標(biāo)代碼文件中,找到代碼執(zhí)行主入口函數(shù),在合適位置手動(dòng)編碼SD卡的初始化函數(shù)和實(shí)際讀寫(xiě)函數(shù),此方法便于利用SD卡讀寫(xiě)示例代碼,可以快速實(shí)現(xiàn)SD操作功能,但后期使用過(guò)程中,一旦更新模型其他功能,需重復(fù)地手動(dòng)增加SD卡讀寫(xiě)相關(guān)代碼,較為繁瑣且可能引入人為錯(cuò)誤。
通過(guò)自動(dòng)代碼生成與手寫(xiě)代碼相結(jié)合的方式,對(duì)航路規(guī)劃算法模型以及飛行控制算法模型進(jìn)行代碼實(shí)現(xiàn),并將代碼燒寫(xiě)到硬件板卡中形成最終的嵌入式產(chǎn)品。有兩種方式進(jìn)行代碼燒寫(xiě),以DSP為例進(jìn)行說(shuō)明:
1)完全使用Matlab/Simulink環(huán)境而不直接使用CCS編譯環(huán)境,可以將模型燒寫(xiě)到硬件板卡中,這種方法操作簡(jiǎn)單,但由于脫離CCS,因此不能在CCS編譯環(huán)境下進(jìn)行手寫(xiě)代碼的嵌入操作,使用受限;
2)在Matlab/Simulink中生成算法模型的目標(biāo)代碼,然后拷貝到CCS編譯環(huán)境中并結(jié)合CCS操作實(shí)現(xiàn)代碼燒寫(xiě),該方法過(guò)程較前述方法略為繁瑣,但由于可以方便地在CCS編譯環(huán)境中進(jìn)行代碼修改、增加、刪除,使用范圍更廣。
本節(jié)以第二種方式為例進(jìn)行介紹。代碼燒寫(xiě)完成后,需要對(duì)代碼實(shí)現(xiàn)的正確性進(jìn)行驗(yàn)證,因此需要借助硬件板卡的仿真器環(huán)境,進(jìn)行代碼的調(diào)試和檢驗(yàn)。
目前,若在Matlab/Simulink配置環(huán)境中選擇CCS 4.0以上版本作為編譯環(huán)境,則不支持生成可由CCS編譯環(huán)境直接使用的目標(biāo)代碼工程。需要進(jìn)行手動(dòng)配置。利用CCS構(gòu)建代碼調(diào)試環(huán)境過(guò)程如下:新建工程,添加所需的頭文件、源文件、庫(kù)函數(shù)和相關(guān)路徑,尤其需要注意的是要添加SD卡讀寫(xiě)所需的FATFS文件系統(tǒng),之后將Matlab自動(dòng)代碼生產(chǎn)的工程文件復(fù)制到該新建工程中,設(shè)置自動(dòng)代碼生產(chǎn)的main函數(shù)為主函數(shù),最后將手寫(xiě)的SD卡讀寫(xiě)函數(shù)嵌入到自動(dòng)生產(chǎn)的代碼中。
在CCS編譯環(huán)境中進(jìn)行代碼調(diào)試如圖5所示。
圖5 代碼調(diào)試工程操作界面
代碼調(diào)試工程操作界面中,工具欄上提供了相關(guān)的操作圖標(biāo),點(diǎn)擊對(duì)應(yīng)的圖標(biāo)即可進(jìn)行相應(yīng)的操作,包括編譯、調(diào)試等。
代碼調(diào)試工程操作界面中的左側(cè)樹(shù)狀導(dǎo)航圖分類(lèi)顯示整個(gè)調(diào)試工程所包含的所有文件,選擇其中一個(gè)文件,則對(duì)應(yīng)該文件的內(nèi)容在操作界面右側(cè)區(qū)域中顯示。
在完成調(diào)試工程構(gòu)建后,選擇CCS工具提供的代碼編譯功能,進(jìn)行代碼編譯下載。
首先進(jìn)行Build操作,編譯工程,排除工程的環(huán)境配置問(wèn)題后生成.out文件,之后對(duì)工程進(jìn)行Debug操作,在Debug界面調(diào)試程序和驗(yàn)證算法是否正確。在調(diào)試過(guò)程中可以綜合使用斷點(diǎn)、變量數(shù)值監(jiān)控和變量曲線監(jiān)控等調(diào)試手段。在調(diào)試過(guò)程中,由于遵循2.2.1節(jié)所提出的原子子系統(tǒng)設(shè)置規(guī)范,可以清晰地確定原設(shè)計(jì)模型和所生成代碼間的對(duì)應(yīng)關(guān)系,提高問(wèn)題定位效率。
代碼調(diào)試檢驗(yàn)后,需將其固化到硬件板卡的Flash中,固化為嵌入式產(chǎn)品。固化之后,硬件板卡重新啟動(dòng)后可以自動(dòng)執(zhí)行寫(xiě)入的算法代碼。
為方便產(chǎn)品代碼的燒寫(xiě),本文新建燒寫(xiě)工程,將代碼調(diào)試工程和代碼燒寫(xiě)工程分開(kāi)操作。代碼調(diào)試完成后編譯生成.out文件,將該.out文件使用自帶的代碼轉(zhuǎn)換程序生成十六進(jìn)制文件,在燒寫(xiě)工程中轉(zhuǎn)為c代碼和DSP可執(zhí)行文件。燒寫(xiě)工程中不需要專(zhuān)門(mén)配置代碼下載至Flash的位置,只需將調(diào)試使用的.cmd文件復(fù)制到燒寫(xiě)工程中,其中已經(jīng)加入了固定的程序偏移地址,自動(dòng)將程序燒寫(xiě)進(jìn)Flash中的指定位置。
為驗(yàn)證基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法產(chǎn)品化實(shí)現(xiàn)過(guò)程的正確性,需要對(duì)比產(chǎn)品在算法數(shù)字仿真環(huán)境下的仿真結(jié)果和產(chǎn)品化后硬件在環(huán)仿真結(jié)果的一致性。其必要性在于:雖然由模型自動(dòng)生成的目標(biāo)代碼不會(huì)引入人為編碼錯(cuò)誤,但生成代碼的使用環(huán)境和模型仿真的環(huán)境是不同的,例如,模型仿真時(shí)仿真數(shù)據(jù)不經(jīng)過(guò)真實(shí)IO接口,因此所得結(jié)果不能反映IO接口接入后的影響。此外,一些不可預(yù)知因素也可能對(duì)結(jié)果造成影響,故而必須進(jìn)行試驗(yàn)驗(yàn)證。
驗(yàn)證準(zhǔn)則因產(chǎn)品而異,一般根據(jù)產(chǎn)品的性能指標(biāo)進(jìn)行驗(yàn)證即可。如果沒(méi)有明確性能指標(biāo)要求,則可通過(guò)定性的方法檢驗(yàn)產(chǎn)品是否符合設(shè)計(jì),進(jìn)而確認(rèn)是符合需求。
基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法產(chǎn)品,對(duì)高度保持精度、三軸姿態(tài)控制精度有明確的指標(biāo)要求,同時(shí),定性地要求自適應(yīng)航路規(guī)劃結(jié)果能夠規(guī)避所有障礙區(qū)域。因此使用如下驗(yàn)證準(zhǔn)則:
1)高度、三軸姿態(tài)校驗(yàn):根據(jù)數(shù)字仿真階段設(shè)定的仿真場(chǎng)景,分別進(jìn)行模型仿真和產(chǎn)品硬件在環(huán)仿真,兩者給出的高度、三軸姿態(tài)誤差小于20%,且滿(mǎn)足產(chǎn)品規(guī)定的控制精度要求,則驗(yàn)證通過(guò);
2)自適應(yīng)航路規(guī)劃校驗(yàn):根據(jù)數(shù)字仿真階段設(shè)定的仿真場(chǎng)景,分別進(jìn)行模型仿真和產(chǎn)品硬件在環(huán)仿真,所得航路點(diǎn)趨勢(shì)一致,且成功規(guī)避所有障礙區(qū)域,則驗(yàn)證通過(guò)。
將圖1所示設(shè)計(jì)仿真模型中的航路規(guī)劃算法模型和飛行控制算法模型提取出來(lái),結(jié)合外設(shè)驅(qū)動(dòng)等模塊形成代碼生成模型,進(jìn)行代碼生成,燒寫(xiě)到硬件板卡中,形成產(chǎn)品,其他仿真輔助模型如飛行器本體模型、地面站模型等下載到通用實(shí)時(shí)仿真系統(tǒng)HiGale[5]中,按照?qǐng)D 1的信號(hào)連接關(guān)系,使用串口線纜進(jìn)行仿真機(jī)HiGale以及硬件產(chǎn)品的通信連接,開(kāi)展硬件在環(huán)仿真,系統(tǒng)組成如圖 6所示。
圖6 硬件在環(huán)系統(tǒng)框圖
硬件在環(huán)仿真過(guò)程中產(chǎn)生的數(shù)據(jù)通過(guò)Higale通用實(shí)時(shí)仿真系統(tǒng)在線實(shí)時(shí)存儲(chǔ),所存數(shù)據(jù)通過(guò)以太網(wǎng)直接保存到上位機(jī)中,以便于上位機(jī)中的模型仿真數(shù)據(jù)進(jìn)行直接對(duì)比。
圖 7給出模型仿真和硬件在環(huán)仿真所得的自適應(yīng)航路規(guī)劃結(jié)果,在規(guī)劃航線上兩者誤差在0.5 m范圍內(nèi),且所規(guī)劃出的航線均成功規(guī)避障礙區(qū)域,驗(yàn)證通過(guò)。由于串口通信延遲抖動(dòng)的影響,高度保持誤差在6 m以?xún)?nèi),趨勢(shì)滯后約0.3 s,三軸姿態(tài)控制結(jié)果誤差在0.2°以?xún)?nèi),趨勢(shì)滯后0.05 s,均滿(mǎn)足驗(yàn)證準(zhǔn)則,限于篇幅不再給出圖示。
圖7 自適應(yīng)航路規(guī)劃結(jié)果對(duì)比
基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法產(chǎn)品化實(shí)現(xiàn)過(guò)程,采用了自動(dòng)代碼生成和手寫(xiě)代碼相結(jié)合的方式,快速實(shí)現(xiàn)了算法的工程化。由試驗(yàn)結(jié)果可見(jiàn),算法實(shí)現(xiàn)結(jié)果正確,過(guò)程高效。
該方法是針對(duì)基于探測(cè)目標(biāo)的自適應(yīng)航路規(guī)劃算法產(chǎn)品化而提出,所研究的算法是飛控領(lǐng)域算法常規(guī)應(yīng)用算法,算法產(chǎn)品化實(shí)現(xiàn)過(guò)程所采用的方法和支撐工具,也具有很好的通用性,因此該方法可以滿(mǎn)足其他類(lèi)似算法的產(chǎn)品化實(shí)現(xiàn)過(guò)程。
參考文獻(xiàn):
[1] United States Air Force.Small Unmanned Aircraft Systems (SUAS) Flight Plan: 2016- 2036[EB/OL]. http://www.al.mil/Portals/1/ Documents/isr/Small_UAS_Flight_Plan_2016_to_2036.pdf.
[2] 堯偉文,曹云峰,莊麗葵. 一種基于模型開(kāi)發(fā)飛控系統(tǒng)的方法[J]. 計(jì)算機(jī)與數(shù)字工程, 2017, 45(2): 351-354.
[3] 云 超,李小民,鄭宗貴. 基于Matlab/Simulink的硬件在回路無(wú)人機(jī)仿真系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2012,(12): 3306-3308,3324.
[4] 王 勛,張紀(jì)陽(yáng),張代兵,等. 無(wú)人機(jī)編隊(duì)飛行快速試驗(yàn)系統(tǒng)設(shè)計(jì)[J]. 機(jī)器人, 2017, 39(2): 160-166,175.
[5] 邢培棟. MVB在半實(shí)物仿真平臺(tái)中的研究與應(yīng)用[J]. 微處理機(jī),2012,33(6):33-36.