李星辰,趙斐然,孟慶輝,游科友
(1.清華大學自動化系,北京 100084;2.北京信息科學技術(shù)國家研究中心,北京 100084;3.濰柴動力股份有限公司,山東濰坊 261061)
現(xiàn)場可編程邏輯門陣列(field programmable gate array,FPGA)是一種可編程邏輯器件,可根據(jù)需求改變芯片內(nèi)存儲單元、運算單元等電路單元的連接,實現(xiàn)定制化計算電路[1].與CPU,DSP等通用串行運算器件相比,易于并行化計算的FPGA可實現(xiàn)更大數(shù)據(jù)吞吐量、更低的延遲.與專用集成電路相比,FPGA具有更強的靈活性,為定制化算法快速設(shè)計提供了硬件基礎(chǔ)[2].FPGA以其獨特優(yōu)勢,可融合計算機視覺[3]、軌跡規(guī)劃[4]、底層控制算法[5],實現(xiàn)一體化感知、決策、控制的智能終端,在無線通信[6]、自動駕駛[7]等領(lǐng)域具有廣泛應(yīng)用.
但FPGA使用較難掌握的硬件描述語言[8](hardware description language,HDL)編程,這限制了主要熟悉MATLAB,C++等高級語言的技術(shù)人員在FPGA上快速部署控制算法.近年來,直接通過高級語言代碼生成HDL代碼,即高層次綜合(high level synthesis,HLS)備受關(guān)注[9].使用HLS不僅能極大縮短開發(fā)周期,且其代碼的執(zhí)行效率可超越人工[10].HDL代碼的正確性是HLS 的關(guān)鍵,但HLS生成的代碼不具有可讀性,無法人工驗證其正確性,所以如何閉環(huán)測試生成的代碼是FPGA控制算法的挑戰(zhàn)之一.
此外,先進控制算法往往需要在線實時求解優(yōu)化問題[11],復(fù)雜的迭代求解方式并不能夠完全發(fā)揮FPGA的并行計算優(yōu)勢.模型預(yù)測控制(model predictive control,MPC)隨著采樣時刻的推移進行滾動預(yù)測和優(yōu)化,進而計算在性能指標下的最優(yōu)控制律[12],但這需要較大的計算成本[13].使用FPGA可加速MPC優(yōu)化問題的迭代求解,如在FPGA上定制化實現(xiàn)原對偶內(nèi)點法[14]、對偶積極集法[15]、對數(shù)障礙內(nèi)點法[16].但在線迭代求解算法難以充分發(fā)揮FPGA的并行計算優(yōu)勢,且無法保證迭代次數(shù),占用資源高,如文獻[17]在控制變量為1維、控制時域為3的情況下,需要96個DSP單元和20 k以上的查找表(lookup table,LUT)單元.
MPC控制律的求解本質(zhì)是找到狀態(tài)反饋和最優(yōu)控制輸入的映射關(guān)系,可使用神經(jīng)網(wǎng)絡(luò)[18–21]或基函數(shù)組合[22]高效求解MPC控制律.Karg和Lucia[20]的研究表明,神經(jīng)網(wǎng)絡(luò)擬合顯式MPC控制律將極大減少所需參數(shù)量.文獻[23]使用神經(jīng)網(wǎng)絡(luò)求得MPC優(yōu)化問題的“好初始解”,降低了平均迭代次數(shù),但并不能保證最壞情況下的加速效果.此外,現(xiàn)有研究[18–23]未考慮被控對象的時變特性,不能應(yīng)用于帶有時變參數(shù)的系統(tǒng).
本文利用了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)特點和FPGA的并行計算優(yōu)勢,提出基于神經(jīng)網(wǎng)絡(luò)的智能MPC及其FPGA快速實現(xiàn)方法,具有嚴格求解時間保證.克服人工編寫HDL代碼開發(fā)周期長、開發(fā)難度大的困難,基于HLS將神經(jīng)網(wǎng)絡(luò)的高級語言代碼轉(zhuǎn)換為HDL代碼,并通過MATLAB-Modelsim聯(lián)合仿真驗證HDL代碼的正確性,實現(xiàn)了便捷高效的FPGA部署.
首先,將時變系統(tǒng)的預(yù)測控制問題描述為具有線性約束的二次規(guī)劃問題.然后,設(shè)計了便于并行部署的快速前向傳播深度神經(jīng)網(wǎng)絡(luò),通過離散采樣并反復(fù)求解MPC優(yōu)化問題得到數(shù)據(jù)集,并離線學習數(shù)據(jù)近似控制問題的最優(yōu)解.同時,設(shè)計了一種PI-MPC串級控制方法,以應(yīng)對模型參數(shù)誤差.以此智能MPC框架為基礎(chǔ),提出了基于HLS的高效HDL生成方法,適用于MATLAB的HDL軟件級聯(lián)合測試流程,及FPGA快速部署、測試驗證方案.最后,將所提方法應(yīng)用于控制頻率高達10 kHz的永磁同步電機電流環(huán)以及四旋翼無人機軌跡跟蹤,FPGA硬件在環(huán)實驗驗證了所提方法的快速性及魯棒性.因此,本文的貢獻主要有: 1)提出了基于深度神經(jīng)網(wǎng)絡(luò)的智能PI-MPC串級控制方法及基于HLS的高效HDL生成方法和MATLAB-Mode-lsim聯(lián)合HDL測試流程;2)在FPGA上提供了具有嚴格求解時間保證的智能MPC高控制頻率便捷部署方案.
本文剩余部分結(jié)構(gòu)如下: 第2節(jié)討論MPC及其二次規(guī)劃(quadratic programming,QP)問題形式;第3節(jié)提出基于深度神經(jīng)網(wǎng)絡(luò)的智能MPC方法;第4節(jié)設(shè)計基于HLS的高效HDL生成方法、適用于MATLAB的HDL軟件級聯(lián)合測試流程;第5節(jié)將智能MPC應(yīng)用在內(nèi)置式永磁同步電機電流環(huán)(10 kHz高速控制系統(tǒng))中;第6節(jié)將智能MPC應(yīng)用在四旋翼無人機的軌跡跟蹤控制(高維控制系統(tǒng))中,并給出FPGA快速部署、測試驗證方案,硬件在環(huán)(hardware in the loop,HiL)測試驗證了所提方法的有效性;第7節(jié)給出結(jié)論.
考慮如下帶約束的時變離散系統(tǒng):
其中:xk|t為t時刻通過模型預(yù)測t+k時刻的狀態(tài)向量,uk|t為t+k時刻的控制向量,N為預(yù)測時長,P≥0,Q≥0,R>0,=xTPx.由于難以獲得未來的時變參數(shù),st在t時刻固定,測試時不再變化.固定的st在N較小時具有較好的近似效果,因此適用于時變參數(shù)變化緩慢的系統(tǒng).
問題(3)可轉(zhuǎn)化為一個具有線性約束的二次規(guī)劃問題(5).根據(jù)式(1)得到
進而,優(yōu)化問題(3)可以轉(zhuǎn)化為
求解優(yōu)化問題(5)即計算函數(shù)gMPC,但這需要較大計算成本.直接在FPGA 上部署迭代式QP 求解算法[14–17],不僅占用資源高,而且沒有嚴格的求解時間保證.
本文離線采樣狀態(tài)反饋并反復(fù)求解MPC優(yōu)化問題得到數(shù)據(jù)集,并利用FPGA并行計算優(yōu)勢設(shè)計深度神經(jīng)網(wǎng)絡(luò),進而離線對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,在線僅需進行神經(jīng)網(wǎng)絡(luò)正向傳播即可得到控制輸入,提供了有嚴格求解時間保證、占用資源少的高控制頻率FPGA部署方案.
為了在保證擬合效果的同時,降低FPGA的資源占用,需對神經(jīng)網(wǎng)絡(luò)進行結(jié)構(gòu)設(shè)計.FPGA使用基本邏輯單元構(gòu)建電路,較難處理非線性函數(shù)的計算,激活函數(shù)采用形式簡單的分段線性函數(shù),如常用的ReLU[24],LeakyReLU[25].為了復(fù)用電路模塊,采用多層全連接網(wǎng)絡(luò)實現(xiàn)神經(jīng)網(wǎng)絡(luò),且隱層的節(jié)點數(shù)目相同.gNN的定義為
其中:σ(x)=LeakyReLU(x)=max{x,0.01x}為非線性激活函數(shù),Li(x)=Wix+bi為線性函數(shù),θ={W1,···,WK,b1,···,bK}為參數(shù)的集合.Lin和Lout為縮放層(scaling layer),將輸入進行歸一化,并將輸出縮放到合適范圍.
神經(jīng)網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖1所示,為保證神經(jīng)網(wǎng)絡(luò)輸出都在可行集內(nèi),在神經(jīng)網(wǎng)絡(luò)最后添加一投影層,根據(jù)神經(jīng)網(wǎng)絡(luò)輸入將神經(jīng)網(wǎng)絡(luò)輸出投影到多面體可行集內(nèi).由于神經(jīng)網(wǎng)絡(luò)輸出僅為一個時刻的控制量,投影的計算量小.
神經(jīng)網(wǎng)絡(luò)訓(xùn)練目標為gNN盡可能接近gMPC,同時gNN在可行集內(nèi),構(gòu)建如下帶約束的監(jiān)督學習問題:
為了提高控制性能,并應(yīng)對系統(tǒng)建模時可能出現(xiàn)的模型偏差,在神經(jīng)網(wǎng)絡(luò)MPC前添加積分環(huán)節(jié)或PI控制,當存在靜態(tài)誤差時可以及時調(diào)整神經(jīng)網(wǎng)絡(luò)的目標值,從而減少靜態(tài)誤差,并提高控制魯棒性.實驗表明,該控制方案結(jié)合了PI控制的歷史信息和MPC的未來信息,實現(xiàn)了比單獨PI控制或單獨MPC更好的控制效果.
PI控制的輸入為目標狀態(tài)與狀態(tài)反饋的差值,控制框架如圖2.對于具有n維狀態(tài)變量的系統(tǒng),對每一個維度均設(shè)置前置PI控制,此時每個PI控制的作用為微調(diào)MPC某個維度的參考信號.
圖2 控制設(shè)計原理框架Fig.2 Control design framework
為克服人工編寫HDL代碼開發(fā)周期長、開發(fā)難度大的困難,本文使用Xilinx Vitis HLS工具,將C++高級語言代碼直接轉(zhuǎn)換成HDL代碼,極大縮短了開發(fā)時間.MATLAB為功能強大的通用建模和控制系統(tǒng)仿真工具[26],本文提出了適用于MATLAB的HDL軟件級聯(lián)合測試流程,被控對象和控制器原型設(shè)計均可以在MATLAB中完成,不用使用其他語言重新編寫.
為保證控制算法的硬件描述語言版本與原始版本功能相同,本文提出一套基于MATLAB仿真模型和Xilinx HLS 的HDL 生成與測試流程,如圖3.使用MATLAB 可以方便地進行控制算法設(shè)計,但為了生成HDL代碼,需要編寫與MATLAB代碼功能相同的C++代碼.為驗證C++代碼和MATLAB代碼的一致性,在MATLAB R2020a/Simulink環(huán)境下通過Xilinx公司開發(fā)的Model Composer進行驗證對比仿真.
圖3 HDL生成與測試流程圖Fig.3 HDL Generation and testing flowchart
確認C++代碼調(diào)試通過后,在代碼中添加Xilinx HLS相關(guān)的編譯指令,設(shè)置端口、控制協(xié)議、流水線、循環(huán)展開、存儲結(jié)構(gòu)等硬件屬性,通過Xilinx Vitis HLS 2020.1將帶有編譯指令的C++代碼轉(zhuǎn)換成硬件語言描述的IP核.在MATLAB HDL Verifier中配置相關(guān)腳本和仿真屬性,并在Simulink中對比仿真HDL代碼和MATLAB代碼.當兩者功能一致時,IP核的功能與原始控制算法完全相同,后續(xù)只需進行FPGA原理圖的綜合和部署.
該流程通過對比仿真、MATLAB-Modelsim聯(lián)合仿真驗證生成代碼的正確性,相比手動編寫HDL代碼,極大提高了編程效率,縮短開發(fā)時間.
為測試智能MPC對應(yīng)IP核在FPGA芯片上的真實運行情況,本文使用Xilinx Zynq UltraScale+MPSoC ZCU-102開發(fā)套件進行FPGA測試系統(tǒng)的搭建.ZCU 102開發(fā)板具有豐富的外設(shè)和高性能接口,其ZYNQ芯片型號為XCZU9EG-FFVB1156-2-E.
FPGA測試系統(tǒng)實現(xiàn)方案如圖4.測試系統(tǒng)主要分為3個部分: PL系統(tǒng)、PS程序、PC上位機.PL系統(tǒng)為FPGA硬件電路構(gòu)成,主要運行控制器的IP核,通過Vivado軟件進行設(shè)計開發(fā).PS為Arm核上的裸機程序,進行與PL系統(tǒng)、PC上位機的通信,控制測試流程及并運行永磁同步電機(permanent magnet synchronous motor,PMSM)被控對象.PS通過Vitis軟件進行設(shè)計開發(fā),PL與PS通過AXI總線連接.PC上位機運行MATLAB程序,使用波特率為115200 bps的COM端口向Arm核發(fā)送控制指令,Arm核上程序通過傳輸速率為1G bps的以太網(wǎng)口和以太網(wǎng)線向PC上位機發(fā)送運行數(shù)據(jù).
圖4 FPGA測試系統(tǒng)實現(xiàn)方案Fig.4 FPGA test system implementation scheme
本節(jié)將智能MPC應(yīng)用到PMSM的電流環(huán)控制上.由于PMSM機械時間常數(shù)遠遠大于電氣時間常數(shù),通常采用如圖5的雙閉環(huán)控制(上標r表示變量的參考值),本文的控制目標為電流環(huán)的跟蹤控制,由于其動態(tài)變化很快,其控制頻率要求高達10 kHz.
圖5 PMSM的一種雙閉環(huán)控制框圖Fig.5 A double closed-loop control of PMSM
針對永磁同步電機電流環(huán)的控制,文獻[13]使用德州儀器F28335 Delfino DSP在線求解MPC優(yōu)化問題,把永磁同步電機電流環(huán)控制計算時間穩(wěn)定在300 us以內(nèi).文獻[27]使用具有雙核2 GHz實時處理器的dSPACE,調(diào)用開源求解器qpOASES在線求解MPC優(yōu)化問題.實驗表明,在該硬件配置下最壞情況需要大概70 us的計算時間,但無法給出嚴格的求解時間保證.而且文獻[27]使用的硬件性能較強,價格昂貴,難以低成本部署以實現(xiàn)產(chǎn)品化.
算法特性和硬件環(huán)境的匹配是控制算法部署最重要的問題之一,本文綜合神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和FPGA硬件特性,提出基于神經(jīng)網(wǎng)絡(luò)的智能模型預(yù)測方法并使用FPGA進行快速實現(xiàn).由于FPGA定制硬件電路程序循環(huán)周期數(shù)、FPGA時鐘頻率是確定不變的,因此具有嚴格求解時間保證(小于100 us,可以實現(xiàn)10 kHz穩(wěn)定控制頻率),且占用FPGA資源少,可以使用價格低廉、存算資源有限的FPGA芯片部署.
內(nèi)置式永磁同步電機的數(shù)學模型是非線性、時變的.在d-q旋轉(zhuǎn)坐標系下,其狀態(tài)為d軸電流id,q軸電流iq,轉(zhuǎn)速ωe.其數(shù)學模型微分方程表述如式(9).
其中:ud,uq分別為d軸、q軸電壓,Ld為定子d軸電感,Lq為定子q軸電感,Rs=0.0249 ?為定子電阻,φr=0.02932 Wb 為轉(zhuǎn)子磁鏈,np=6 為極對數(shù),J=1.036 Kg·m2為轉(zhuǎn)動慣量,Te為輸出轉(zhuǎn)矩,TL為負載轉(zhuǎn)矩.Ld,Lq的值取決于id,iq,其函數(shù)關(guān)系是非線性的.
在本文中,主要實現(xiàn)永磁同步電機電流環(huán)的控制,電流環(huán)系統(tǒng)離散預(yù)測模型為
控制量ud,uq滿足將約束條件進行線性化,約束邊界從圓變?yōu)閳A內(nèi)接正12邊形,線性化約束的表達式如式(12).
使用MALTAB R2020b自帶函數(shù)quadprog進行求解,指定方法active-set.在CPU 型號為i5-8400,內(nèi)存16 G,Windows 10系統(tǒng)計算機上求解10000次該優(yōu)化問題,平均單次用時1.3 ms,不能滿足Ts=10-4s的要求.
為了得到神經(jīng)網(wǎng)絡(luò)訓(xùn)練所需數(shù)據(jù)集,首先確定狀態(tài)、參考信號和時變參數(shù)的上下界,如表1.在id,iq,umax的上下界范圍內(nèi)均勻采樣變量的值,可還原出優(yōu)化問題(5).求解該優(yōu)化問題,得到第一步對應(yīng)的最優(yōu)控制.反復(fù)隨機采樣變量的值,并得到對應(yīng)最優(yōu)控制量,最終構(gòu)成神經(jīng)網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)集,數(shù)據(jù)集樣本數(shù)為3×106.
表1 變量的上下界Table 1 Upper and lower bounds of variables
選取數(shù)據(jù)集中5%的樣本為驗證集,其余95%為訓(xùn)練集.選取隱層數(shù)量為5,隱層寬度為50,激活函數(shù)為LeakyReLU 的神經(jīng)網(wǎng)絡(luò).設(shè)定ωe=1591.54 r/min,id=-100 A,iq=-100 A,umax=346.41 V,繪制ud隨著,變化的三維圖如圖6,MPC和神經(jīng)網(wǎng)絡(luò)兩者非常接近.
圖6 MPC和神經(jīng)網(wǎng)絡(luò)輸出三維圖Fig.6 MPC and neural network output 3D graph
對不同參數(shù)數(shù)量、深度、激活函數(shù)的神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,最終選取隱層數(shù)量為5,隱層寬度為50,激活函數(shù)為LeakyReLU的神經(jīng)網(wǎng)絡(luò),有優(yōu)越的訓(xùn)練效果.其訓(xùn)練集均方平均損失為6.18×10-5,驗證集均方平均損失為6.34×10-5.
使用不同的編譯指令生成的硬件性能不同,為保證控制頻率的同時盡可能減低資源占用,本文對HLS編譯指令進行了優(yōu)化設(shè)計.
運行時間和資源占用情況如表2和表3.編號1到編號6使用了不同的HLS編譯指令和計算順序,因此生成硬件的運行時間和資源占用不同.編號1、編號2對程序整體流水線化.計算神經(jīng)網(wǎng)絡(luò)矩陣運算時,編號1,3,5先沿矩陣的第1維索引乘加,編號2,4,6先沿矩陣的第2維索引乘加.編號5,6在矩陣乘向量運算的兩層for循環(huán)處設(shè)置流水線.
表2 不同優(yōu)化方案對應(yīng)IP核運行時間情況表Table 2 IP core running time corresponding to different optimization schemes
表3 不同優(yōu)化方案對應(yīng)IP核資源占用情況表Table 3 IP core resource occupancy correspondingto different optimization schemes
表2中,編號1,2未能實現(xiàn)200 MHz(5 ns)的目標時鐘,只能以更低頻率時鐘運行,但控制頻率仍可達到50 kHz以上.編號3,4,5,6均能實現(xiàn)200 MHz的目標時鐘,但編號5未能實現(xiàn)10 kHz的控制頻率.表3中,編號1,2占用資源較多,編號5,6的BRAM和LUT使用量均為3%以下,數(shù)字信號處理單元(digital singnal Processor,DSP)和觸發(fā)器(flip-flop,FF)的使用量均為1%以下,占用資源很少.
最終采用編號6的HLS生成方案,該方案能夠?qū)崿F(xiàn)10 kHz的控制頻率且資源占用很少,其運行時間分析和資源占用分析示意圖如圖7,其中隱層的正向傳播占去86.5%的計算時間.
圖7 運行時間分析和資源占用分析示意圖Fig.7 Run times and resource occupancy analysis
FPGA控制器和原始MPC極為相近,控制效果相當,具有優(yōu)越控制效果和高控制頻率.具體仿真設(shè)置為:=-213.77 A,umax=346.41 V,在恒定轉(zhuǎn)速ωe=900 r/min下進行測試.在t=0.3 s時,設(shè)置變?yōu)?18.92 A,0.7 s時變?yōu)?.并將FPGA控制器(實時測試)與原始MPC(在MATLAB仿真環(huán)境下進行測試)進行對比.iq跟隨情況如圖8.
圖8 q軸電流跟隨圖Fig.8 q-axis current following diagram
FPGA控制器在各種參數(shù)誤差工況下均保持了優(yōu)越的控制性能.具體仿真設(shè)置為:=-191.67 A,umax=346.41 V,在恒定轉(zhuǎn)速ωe=300 r/min下進行測試.t=0.3 s 時,設(shè)置變?yōu)?75.90 A,0.7 s時變?yōu)?.在PMSM模型的Rs,Ld,Lq參數(shù)添加20%的誤差,觀察在有誤差的PMSM模型下的控制跟隨效果.iq跟隨情況如圖9.
圖9 具有模型參數(shù)誤差時q軸電流跟隨圖Fig.9 q-axis current following diagram with model parameter errors
在不同工況下,智能MPC都能夠滿足最大電壓約束,如圖10.
圖10 具有模型參數(shù)誤差時控制電壓圖Fig.10 Control input voltage diagram with model parameter errors
本節(jié)將智能MPC應(yīng)用到四旋翼無人機(unmanned aerial vehicle,UAV)的軌跡跟蹤控制中.在實際環(huán)境中,無人機的工作空間通常具有障礙物,因此要求四旋翼無人機能夠在安全避障的情況下實現(xiàn)特定任務(wù),例如到達指定地點、以恒定速度環(huán)繞移動目標.
為驗證智能MPC方法在高維、帶約束系統(tǒng)中的有效性,本節(jié)針對快速穿越障礙物區(qū)域的任務(wù),研究具有12維狀態(tài)的四旋翼無人機的軌跡跟蹤及避障問題.
本文采用文獻[28]中基于Newton-Euler方法給出的四旋翼無人機的數(shù)學模型
其中:ξ=[x(t)y(t)z(t)]T為四旋翼無人機在世界坐標系中的三維空間位置,η=[?(t)θ(t)ψ(t)]T為世界坐標系中的歐拉角,m為無人機的質(zhì)量,g=[0 0-9.81 m/s2]T為重力加速度,R(η)為機身坐標系到世界坐標系的旋轉(zhuǎn)矩陣,dx,dy,dz為速度阻尼系數(shù),J-1(η)為雅可比矩陣的逆矩陣,C(η,)為科里奧利矩陣.
機身受到旋翼的力τ1和力矩τ2取決于4個旋翼的旋轉(zhuǎn)速度
其中:u=[u1(t)u2(t)u3(t)u4(t)]為與旋翼旋轉(zhuǎn)速度相關(guān)的控制量,k1,k2,k3為常系數(shù).
令x=[ξ;η;;],無人機模型為=f(x,u).該模型為非線性模型,使用顯式歐拉法將該模型線性化,并轉(zhuǎn)化為LPV模型如下:
取采樣周期Ts=0.1 s,上式為
為保證控制效果,令N=10,上式權(quán)重矩陣為
且控制量具有約束04×1≤u≤12×14×1.
此外,為了避免與障礙物碰撞,設(shè)置如圖11所示的時變狀態(tài)約束.為保證無人機的安全,距離無人機周圍r=0.3 m的位置不能出現(xiàn)障礙物,即以無人機為中心、半徑為r的圓與障礙物不相交.在每個時刻,將無人機與障礙物不相交簡化為圓在某個半平面內(nèi),該半平面由該時刻的參考位置確定.該約束可寫為GtxNp|t≤gt,為時變約束.當無人機的參考位置位于左上角時,可行域在左邊,無人機的預(yù)測位置應(yīng)該在這可行域1內(nèi).當無人機來到下方時,則應(yīng)該在可行域2內(nèi).
圖11 無人機避障約束示意圖Fig.11 Diagram of obstacle avoidance constraint for UAV
為了得到神經(jīng)網(wǎng)絡(luò)訓(xùn)練所需數(shù)據(jù)集,本文給定不同的隨機參考軌跡,分別使用上述MPC進行控制,并收集狀態(tài)參考軌跡,狀態(tài)軌跡{x0,x1,···,xT}和控制軌跡{u0,u1,···,uT}.將參考軌跡的第1到3維抽出記為,并將狀態(tài)約束不等式兩邊的Gt和gt的非零項也作為輸入,構(gòu)造輸入輸出對([xk;;Gt;gt],uk),輸入為18維、輸出為4維.收集2.8×106個輸出輸出對,得到訓(xùn)練數(shù)據(jù)集.
同樣選擇5%的數(shù)據(jù)集作為驗證集,其余95%為訓(xùn)練集.選取隱層數(shù)量為4,隱層寬度為80,激活函數(shù)為LeakyReLU的神經(jīng)網(wǎng)絡(luò)使用Adam優(yōu)化器進行訓(xùn)練.其訓(xùn)練集均方損失為3.13×10-4,驗證集均方損失為3.15×10-4.
在HDL生成時,使用第5.3節(jié)中的最優(yōu)配置方案,得到表4和表5.控制算法在FPGA上運行僅需0.11 ms,且占用FPGA資源少于4%.
表4 IP 核運行時間情況表Table 4 IP core running time
表5 IP 核資源占用情況表Table 5 IP core resource occupancy
同樣地,硬件電路程序循環(huán)周期數(shù)、FPGA時鐘頻率確定不變.因此無人機智能MPC具有嚴格求解時間保證,其求解頻率能嚴格穩(wěn)定在8.846 kHz,遠超采樣頻率.且該方案占用FPGA資源少,這說明該方法應(yīng)用在更復(fù)雜的被控對象和控制任務(wù)上有很大潛力.
為驗證算法完成快速穿越障礙物區(qū)域任務(wù)的能力,人工指定一條參考軌跡,并在每個時刻對控制量u添加服從正態(tài)分布N(04×1,0.2×I4×4)的噪聲.將無狀態(tài)約束的MPC,FPGA上的智能MPC,PID這3種控制律的控制效果進行對比.軌跡跟蹤情況如圖12.
可以看到,添加了狀態(tài)約束的FPGA控制器的能夠始終保持與障礙物的安全距離,無狀態(tài)約束的MPC和PID將會撞向障礙物,這驗證了智能MPC處理約束的有效性.
在軌跡跟蹤中,FPGA計算得到的控制量如圖13,可見其滿足控制約束.
圖13 軌跡跟蹤控制量變化圖Fig.13 Control input diagram of trajectory tracking
本文以FPGA為實現(xiàn)平臺,研究了不精確時變系統(tǒng)MPC的FPGA快速實現(xiàn)問題.為避免QP迭代求解資源占用高、求解時間不確定的問題,使用適用于FPGA的深度神經(jīng)網(wǎng)絡(luò)求解MPC優(yōu)化問題,并考慮時變參數(shù).為克服人工編寫HDL代碼開發(fā)難度大的困難,本文使用HLS工具生成HDL代碼,并提出了MATLABModelsim聯(lián)合仿真測試流程,以確保代碼轉(zhuǎn)換的一致性.將所提方法應(yīng)用于采樣頻率高達10 kHz的PMSM電流環(huán)控制和高維度的UAV軌跡跟蹤控制,FPGA在環(huán)測試驗證了有效性.未來可進一步研究神經(jīng)網(wǎng)絡(luò)參數(shù)量與MPC問題復(fù)雜性的理論關(guān)系,為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計提供理論參考.此外,為提高魯棒性,可探討Tube-based MPC等方法的FPGA快速部署方案.