一種多任務(wù)獨立并行的無人機飛行控制方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種無人機飛行控制方法,尤其涉及一種基于VxWorks操作系統(tǒng)的多 任務(wù)獨立并行的無人機飛行控制方法。
【背景技術(shù)】
[0002] 無人駕駛飛機簡稱"無人機",英文縮寫為"UAV",是利用無線電遙控設(shè)備和自備的 程序控制裝置操縱的不載人飛機。目前,無人機在航拍、農(nóng)業(yè)植保、測繪等領(lǐng)域的應(yīng)用,大大 拓展了無人機本身的用途。隨著無人機飛行任務(wù)要求越來越多,其任務(wù)執(zhí)行效率要求越來 越高,也導(dǎo)致現(xiàn)代無人機飛行控制器越來越復(fù)雜,這對機載自動控制系統(tǒng)提出了更高的要 求。目前很多無人機飛行控制器已采用通用處理芯片加多任務(wù)實時操作系統(tǒng)的結(jié)構(gòu)。但目 前的無人機飛行控制器中的軟件架構(gòu)大多移植自原基于前后臺模式的系統(tǒng)架構(gòu),這種移植 仍使用了原有系統(tǒng)的串行運行架構(gòu),并沒有充分利用多任務(wù)實時操作系統(tǒng)的多任務(wù)并行特 性,不能發(fā)揮系統(tǒng)的全部性能,反而由于操作系統(tǒng)的加入,增加了系統(tǒng)的復(fù)雜度和不穩(wěn)定 性。
[0003] 所以在可靠性要求高、延時容忍度低、質(zhì)量要求嚴格的現(xiàn)代無人機飛行控制器上, 傳統(tǒng)的系統(tǒng)架構(gòu)已不能滿足需要,無法實現(xiàn)能夠高效完成多個并行任務(wù)的控制方法。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的就在于為了解決上述問題而提供一種基于VxWorks操作系統(tǒng)的多任 務(wù)獨立并行的無人機飛行控制方法。
[0005] 本發(fā)明通過以下技術(shù)方案來實現(xiàn)上述目的:
[0006] -種多任務(wù)獨立并行的無人機飛行控制方法,采用VxWorks操作系統(tǒng)實現(xiàn),包括以 下步驟:
[0007] (1)在VxWorks操作系統(tǒng)中加載多個并行執(zhí)行的任務(wù),將所有任務(wù)分為三類,其中, 第一類任務(wù)是綜合數(shù)據(jù)管理任務(wù),第二類任務(wù)包括導(dǎo)航制導(dǎo)任務(wù)、控制解算任務(wù)和飛行任 務(wù)管理任務(wù),第三類任務(wù)包括傳感器管理任務(wù)、執(zhí)行機構(gòu)管理任務(wù)和人機交互管理任務(wù);
[0008] (2)系統(tǒng)啟動后首先啟動第一類任務(wù),再啟動第二類任務(wù)和第三類任務(wù),
[0009] 其中,第一類任務(wù)的處理步驟為:
[0010] ①創(chuàng)建主消息隊列,隊列的輸入端是第二類和第三類任務(wù),隊列的輸出端是第一 類任務(wù),隊列為阻塞隊列,先入先出輔以優(yōu)先級;
[0011] ②針對第二類任務(wù)創(chuàng)建3個分任務(wù)消息隊列,這些隊列的輸入端是第一類任務(wù),輸 出端是分別是3個第二類任務(wù),隊列為阻塞隊列,先入先出;
[0012] ③針對第三類任務(wù)創(chuàng)建3個分任務(wù)消息隊列,這些隊列的輸入端是第一類任務(wù),輸 出端是分別是3個第三類任務(wù),隊列為非阻塞隊列,先入先出;
[0013] ④依次創(chuàng)建導(dǎo)航制導(dǎo)任務(wù)、控制解算任務(wù)、傳感器管理任務(wù)、執(zhí)行機構(gòu)管理任務(wù)、 人機交互管理任務(wù)和飛行任務(wù)管理任務(wù)并將創(chuàng)建的主消息隊列和分任務(wù)消息隊列的端口 分別傳入這些任務(wù)中,這些任務(wù)有相同的優(yōu)先級,相同的處理時間片;
[0014]⑤向所有6個分任務(wù)消息隊列發(fā)送任務(wù)啟動消息;
[0015]⑥確認所有任務(wù)啟動完成;
[0016] ⑦開始進入第一類任務(wù)主循環(huán);
[0017] ⑧取出主消息隊列中的一個消息,若沒有消息則進入等待;
[0018] ⑨對取出的消息進行分析處理并對數(shù)據(jù)加蓋時間戳;
[0019] ⑩按照設(shè)計將分析后的數(shù)據(jù)放入相應(yīng)分任務(wù)消息隊列;
[0020] (Q)回到步驟⑦;
[0021] 第二類任務(wù)的處理步驟為:
[0022] A、啟動后進入等待狀態(tài),等待分任務(wù)信息隊列傳來的任務(wù)啟動消息;
[0023] B、確認啟動消息;
[0024] C、開始進入第二類任務(wù)主循環(huán);
[0025] D、取出分任務(wù)消息隊列的一個消息,若沒有消息則進入等待;
[0026] E、按照預(yù)定算法進行處理,在導(dǎo)航解算任務(wù)中,將該消息用于導(dǎo)航解算算法,在控 制解算任務(wù)中,將該消息用于控制解算,在飛行任務(wù)管理任務(wù)中,將該消息用于飛行任務(wù)規(guī) 劃算法;
[0027] F、解算完成后,將解算數(shù)據(jù)輸入主消息隊列;
[0028] G、回到步驟C;
[0029]第三類任務(wù)的處理步驟為:
[0030] a、啟動后創(chuàng)建信號量;
[0031] b、進入等待狀態(tài),等待分任務(wù)信息隊列傳來的任務(wù)啟動消息;
[0032] c、啟動定時器,定時時間與該任務(wù)相關(guān)的機載設(shè)備通信相關(guān);
[0033] d、進入第三類任務(wù)的主循環(huán);
[0034] e、取出分任務(wù)消息隊列的一個消息,無論是否存在消息均進入下一步驟;
[0035] f、如果存在消息,則根據(jù)消息指令進行相應(yīng)處理,如果不存在消息則進入下一步 驟;
[0036] g、等待信號量來臨;
[0037] h、當(dāng)信號量來臨,進入數(shù)據(jù)接收流程,如果是傳感器管理任務(wù),則依次讀取機載各 個傳感器數(shù)據(jù),如果是執(zhí)行機構(gòu)管理任務(wù),則分別向執(zhí)行機構(gòu)送出控制指令并讀取反饋,如 果是人機交互管理任務(wù)則讀取測控設(shè)備傳來的數(shù)據(jù),并將本機數(shù)據(jù)按約定送出;
[0038] i、將讀取到的數(shù)據(jù)送入主消息隊列;
[0039] 」_、回到步驟(1;
[0040] 在定時器中,當(dāng)定時時間到來時,則給出信號量,并啟動下一次定時。
[0041] 上述三類任務(wù)啟動時間不同,但是啟動后則統(tǒng)一根據(jù)綜合數(shù)據(jù)管理任務(wù)發(fā)送的啟 動指令同時啟動,并行運行,互不干擾。
[0042] 本發(fā)明的有益效果在于:
[0043] (1)各個任務(wù)可以獨立并行工作,互不影響,執(zhí)行效率高;
[0044] (2)數(shù)據(jù)在綜合數(shù)據(jù)管理中匯總、分發(fā),每一個任務(wù)都可以全面的利用所有數(shù)據(jù), 有利于全面的對飛行狀態(tài)進行判斷,數(shù)據(jù)利用率高;
[0045] (3)整個飛行控制器架構(gòu)中各任務(wù)相對獨立,對其它任務(wù)的數(shù)量、運行狀態(tài)約束 ??;
[0046] (4)接口任務(wù)、數(shù)據(jù)分析任務(wù)以及處理任務(wù)等不同層次的任務(wù)相互分離,擁有優(yōu)異 的可移植性能。
【附圖說明】
[0047] 圖1是本發(fā)明所述多任務(wù)獨立并行的無人機飛行控制方法采用的控制器的硬件結(jié) 構(gòu)框圖;
[0048] 圖2是本發(fā)明所述多任務(wù)獨立并行的無人機飛行控制方法采用的控制器內(nèi)的軟件 結(jié)構(gòu)框圖。
【具體實施方式】
[0049]下面結(jié)合附圖對本發(fā)明作進一步說明:
[0050] 本發(fā)明所述多任務(wù)獨立并行的無人機飛行控制方法,采用VxWorks操作系統(tǒng)實現(xiàn), 其采用的控制器的硬件結(jié)構(gòu)如圖1所示,由接口處理模塊、電源模塊以及核心處理模塊構(gòu) 成,其中,電源模塊負責(zé)給接口處理模塊和核心處理模塊供電,接口處理模塊負責(zé)實現(xiàn)與外 部其它機載設(shè)備的協(xié)議的物理層實現(xiàn),并將有效數(shù)據(jù)傳給核心處理模塊,核心處理模塊采 用單板計算機,是整個飛行控制器的核心,完成了外部數(shù)據(jù)的分析,導(dǎo)航制導(dǎo)信息解算、控 制率解算、執(zhí)行機構(gòu)控制解算、遙控遙測信息收集分析、以及接口模塊控制等功能。
[0051] 本發(fā)明所述多任務(wù)獨立并行的無人機飛行控制方法包括以下步驟:
[0052] (1)在VxWorks操作系統(tǒng)中加載多個并行執(zhí)行的任務(wù),將所有任務(wù)分為三類,其中, 第一類任務(wù)是綜合數(shù)據(jù)管理任務(wù),第二類任務(wù)包括導(dǎo)航制導(dǎo)任務(wù)、控制解算任務(wù)和飛行任 務(wù)管理任務(wù),第三類任務(wù)包括傳感器管理任務(wù)、執(zhí)行機構(gòu)管理任務(wù)和人機交互管理任務(wù),具 體的并行任務(wù)和整體軟件架構(gòu)如圖2所示;
[0053] (2)系統(tǒng)啟動后首先啟動第一類任務(wù),再啟動第二類任務(wù)和第三類任務(wù),
[0054]其中,第一類任務(wù)的處理步驟為:
[0055] ①創(chuàng)建主消息隊列,隊列的輸入端是第二類和第三類任務(wù),隊列的輸出端是第一 類任務(wù),隊列為阻塞隊