国偷自产一区二区免费视频,美女免费视频一区,九九热线视频只有这里最精品,欧美日韩一区成人

 
?微信公眾號
手機版
??新浪微博
會員登錄
關于我們  |   商務合作  |  友情鏈接   |  意見反饋  |  人才招聘
北京云翼同創科技有限公司 深圳高博特文化發展有限公司   版權所有,并保留所有權利 ? 2018 京ICP備16044150號-1                       

跨界 · 融合 · 服務 · 創新



雙擊此處添加文字
科普園地
首頁  > 新聞聚焦 > 科普園地  >  詳情 
基于uC/OS-II操作系統的無人機飛控系統軟件設計
來源:尖兵之翼 | 作者:史峰 何立明 馬曉峰 史中正 | 發布時間: 2021-12-08 | 11208 次瀏覽 | 分享到:
針對以往飛控系統軟件中代碼多,可靠性、實時性差,不具通用性等缺點,采用uC/OS-II操作系統設計無人機飛控軟件,利用......

基于uC/OS-II操作系統的無人機飛控系統軟件設計

史峰,何立明,馬曉峰,史中正

摘要:針對以往飛控系統軟件中代碼多,可靠性、實時性差,不具通用性等缺點,采用uC/OS-II操作系統設計無人機飛控軟件,利用操作系統來進行軟件中各任務的實時調度和通信。通過地面測試和空中試驗表明:該軟件系統具有可靠性高、實時性強等優點, 滿足飛控系統軟件設計要求。

關鍵詞:飛控系統; uC/OS-II;優先級劃分;調度與通信

0、引言 

無人機飛行控制系統是一個復雜的多任務系統, 要求不僅能夠與地面控制站雙向通信、采集傳感器數據、進行飛控/導航計算、驅動執行機構等, 還要求可靠性高、實時性強。傳統的飛控系統軟件大多按預先設定的順序循環執行, 具有代碼多,可靠性、實時性差, 不具備通用性等缺點。

針對以上缺點,本文采用uC/OS-II操作系統開發無人機飛控軟件, 將復雜的處理任務交給操作系統進行實時調度,滿足無人機飛控系統實時、多任務的要求。

1、無人機飛控系統軟件總體設計

飛控系統軟件設計基本要求是:1)具有采集功能:能夠采集傳感器的值, 控制信號值和舵機當前狀態值;2)具有姿態解算功能:解算出當前無人機的姿態值;3)具有控制率計算功能:根據不同任務解算不同控制信號, 實現無人機自主導航;4)具有串口通信功能:接收GPS信息, 通過SD卡存儲信息, 與地面控制站進行信息交換;5)其他要求:具有遙控飛行、自動飛行2種飛行模式的切換功能, 具有系統自檢和墜毀監控等功能。

整個系統的軟件流程圖如圖1所示:

 

圖1 飛控系統軟件流程圖

2、基于uC /OS-II操作系統的飛控軟件設計 

2.1 uC/OS-II操作系統簡介  uC/OS-II是目前世界上最小的操作系統內核軟件,它由Labrosse JJ于1992年推出。具有內核小、實時性強、穩定性高、任務切換快、可移植性好等優點,現已被眾多的研究者作為操作系統的樣板移植到各種硬件平臺上。

2.2 任務劃分和優先級確定首先, 對飛控軟件進行任務劃分,將飛控系統軟件進行分解,形成相對獨立的程序模塊或功能函數,并將它們設置為操作系統下的任務,同時確定每個任務的優先級。

根據飛控系統軟件流程圖, 將軟件分為4個模塊來設計,即系統初始化模塊、主控模塊、數據存儲模塊、通信模塊,每個模塊對應一個優先級不同的任務。其中, 主控模塊又包括數據采集、控制運算、控制率輸出3個子模塊。(1)初始化模塊的功能是開機自檢;(2)主控模塊:采集模塊的功能是通過串口和A/D轉換采集傳感器和GPS的值和地面站傳輸的上行指令;運算模塊的功能是進行姿態解算和控制率計算;輸出模塊的功能是把控制率輸出到驅動舵機;(3)數據存儲模塊的功能是將采集和控制計算的數據存儲到SD卡中;(4)數據通信模塊的功能是將采集和控制計算的數據通過數據鏈傳輸到地面控制臺。

根據系統的功能要求,將軟件分成4個優先級不同的任務:第一個任務是初始化任務TaskIint( ) , 由初始化模塊構成,該模塊的主要功能是系統自檢。這是整個程序中優先級最高的任務,優先級定義為1,系統一上電就執行這個任務;第二個任務是TaskWork( ),這個任務的優先級僅次于TaskIint( )任務,優先級定義為2,此任務由主控模塊構成,是一個實時性較強的任務。這個任務是一個無限的循環, 執行周期為20ms;第三個任務是TaskDataMemory( ),由數據存儲模塊構成,這個任務是優先級較低的任務,優先級定義為3;第四個任務是TaskDataTransfer( ),由數據通信模塊構成,是程序中優先級最低的任務,優先級定義為4。

2.3 任務的調度與通信任務建立完成后,要能夠協調地工作、完成系統功能,需要對任務進行調度和通信。任務間的調度是指內核決定多任務中該輪到哪個任務的運行。uC/OS-II操作系統中的任務狀態分為睡眠態任務、就緒態任務、等待狀態任務、運行態任務和被中斷的任務5個狀態, uC/OS-II是基于優先級調度法的可剝奪型內核,即是指CPU總是讓處于就緒態的、優先級最高的任務先運行。

任務間的通信是指任務間或中斷服務與任務間的信息傳遞。任務間的通信方式有信號量管理、互斥型信號量管理、事件標志組管理、消息郵箱管理、消息隊列管理和內存管理。本文采用消息郵箱管理,典型的消息信箱也稱作交換消息,使用一個指針型變量, 通過內核服務,一個任務或一個中斷服務子程序通過內核服務可以將一則消息放到郵箱里去。同樣, 一個或多個任務通過內核服務, 可以接收這則消息。當任務接到消息之后, 狀態變為就緒態任務,等到其優先級變為最高時執行該任務。

本系統中定義的4個任務的調度和通信是這樣實現的:系統上電后執行的第一個任務TaskIint( ) ,所以,在初始化任務執行完成并返回正常的情況下,利用uC/OS-II的OSTaskDel( ) 函數將這個任務返回并處于休眠狀態。此時,TaskWork( )成為優先級最高的任務,將會一直執行。由于程序運行本身并不占用太多時間,所以,使用OSTimeDly( )函數進行延時20ms,即任務TaskWork( ) 將自己掛起20ms,將CPU的控制權交給其他任務。任務TaskDataMemory( )的運行周期為120ms,即當任務TaskWork( )執行6次后,向任務TaskDataMemory( )發送一次消息, 消息中包含需要存儲的數據,任務TaskDataMemory ( ) 接收到消息后,等到任務TaskWork( )將自己掛起時執行。任務TaskDataTransfer( )的運行周期為1s,當任務TaskWork( )執行50次后, 向任務TaskDataTransfer( )發送一次消息, 消息中包含需要向地面站發送的數據, 任務TaskDataMemory( ) 接收到消息后,等到任務TaskWork ( ) 將自己掛起時執行。因為任務TaskDataMemory ( ) 和TaskDataTransfer ( ) 運行時間很短,在TaskWork( ) 掛起20ms中執行完畢,不會出現運行過程中被高優先級任務搶奪CPU控制權的現象。主函數偽代碼如下:

 

TaskIint( )偽代碼如下:

 

TaskWork( )偽代碼如下:

 

TaskDataMemory( )偽代碼如下:

 

TaskDataTransfer( )偽代碼如下:

 

3、試飛試驗

將該飛控系統軟件燒錄進無人機飛控計算機中進行試飛試驗, 讓無人機進行簡單的自主控制直線飛行和轉彎飛行, 并通過地面控制站采集飛機飛行狀態數據。地面控制站接收到的數據如圖2所示。通過試飛試驗發現軟件系統運行穩定, 各模塊工作穩定, 達到設計要求。

 圖2 地面控制站接收到的數據 

4、結束語

通過地面測試和空中試驗表明:該軟件系統完全可以滿足飛控系統軟件設計的基本要求, 并具有代碼量少、程序結構層次清晰、可靠性高、實時性強等優點,為飛控系統軟件開發提供了一個較好的參考方法。


參考文獻:[ 1 ]  張明廉. 飛行控制系統[M] . 北京: 國防工業出版社, 1994.[ 2 ]  無人機系統導論[M] . 吳漢平, 譯. 北京: 電子工業出版社,2003.[ 3 ]  嵌入式實時操作系統uC/OS-II[M] . 邵貝貝, 譯. 北京: 北京航空航天大學出版社, 2003.

作者簡介:史峰(1983- ) ,男,安徽蚌埠人,碩士研究生,主要從事無人機飛控系統軟件與硬件設計。


主站蜘蛛池模板: 深州市| 长顺县| 乐业县| 双流县| 绥阳县| 深水埗区| 玉林市| 嵩明县| 松溪县| 巴林左旗| 玉树县| 天等县| 霍山县| 轮台县| 莱州市| 大洼县| 郴州市| 固原市| 宜阳县| 雅安市| 开原市| 濮阳县| 麻江县| 德清县| 新丰县| 江达县| 沧州市| 会昌县| 石城县| 辽中县| 庆安县| 吉林市| 石柱| 高陵县| 化州市| 镇江市| 米易县| 正蓝旗| 砚山县| 巢湖市| 洛川县|