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

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

跨界 · 融合 · 服務(wù) · 創(chuàng)新



雙擊此處添加文字
政策法規(guī)
首頁  >  政策法規(guī)  >  詳情 
基于uC/OS-II操作系統(tǒng)的無人機飛控系統(tǒng)軟件設(shè)計
來源:尖兵之翼 | 作者:史峰 何立明 馬曉峰 史中正 | 發(fā)布時間: 2021-12-08 | 11244 次瀏覽 | 分享到:
針對以往飛控系統(tǒng)軟件中代碼多,可靠性、實時性差,不具通用性等缺點,采用uC/OS-II操作系統(tǒng)設(shè)計無人機飛控軟件,利用......

基于uC/OS-II操作系統(tǒng)的無人機飛控系統(tǒng)軟件設(shè)計

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

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

關(guān)鍵詞:飛控系統(tǒng); uC/OS-II;優(yōu)先級劃分;調(diào)度與通信

0、引言 

無人機飛行控制系統(tǒng)是一個復(fù)雜的多任務(wù)系統(tǒng), 要求不僅能夠與地面控制站雙向通信、采集傳感器數(shù)據(jù)、進(jìn)行飛控/導(dǎo)航計算、驅(qū)動執(zhí)行機構(gòu)等, 還要求可靠性高、實時性強。傳統(tǒng)的飛控系統(tǒng)軟件大多按預(yù)先設(shè)定的順序循環(huán)執(zhí)行, 具有代碼多,可靠性、實時性差, 不具備通用性等缺點。

針對以上缺點,本文采用uC/OS-II操作系統(tǒng)開發(fā)無人機飛控軟件, 將復(fù)雜的處理任務(wù)交給操作系統(tǒng)進(jìn)行實時調(diào)度,滿足無人機飛控系統(tǒng)實時、多任務(wù)的要求。

1、無人機飛控系統(tǒng)軟件總體設(shè)計

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

整個系統(tǒng)的軟件流程圖如圖1所示:

 

圖1 飛控系統(tǒng)軟件流程圖

2、基于uC /OS-II操作系統(tǒng)的飛控軟件設(shè)計 

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

2.2 任務(wù)劃分和優(yōu)先級確定首先, 對飛控軟件進(jìn)行任務(wù)劃分,將飛控系統(tǒng)軟件進(jìn)行分解,形成相對獨立的程序模塊或功能函數(shù),并將它們設(shè)置為操作系統(tǒng)下的任務(wù),同時確定每個任務(wù)的優(yōu)先級。

根據(jù)飛控系統(tǒng)軟件流程圖, 將軟件分為4個模塊來設(shè)計,即系統(tǒng)初始化模塊、主控模塊、數(shù)據(jù)存儲模塊、通信模塊,每個模塊對應(yīng)一個優(yōu)先級不同的任務(wù)。其中, 主控模塊又包括數(shù)據(jù)采集、控制運算、控制率輸出3個子模塊。(1)初始化模塊的功能是開機自檢;(2)主控模塊:采集模塊的功能是通過串口和A/D轉(zhuǎn)換采集傳感器和GPS的值和地面站傳輸?shù)纳闲兄噶睿贿\算模塊的功能是進(jìn)行姿態(tài)解算和控制率計算;輸出模塊的功能是把控制率輸出到驅(qū)動舵機;(3)數(shù)據(jù)存儲模塊的功能是將采集和控制計算的數(shù)據(jù)存儲到SD卡中;(4)數(shù)據(jù)通信模塊的功能是將采集和控制計算的數(shù)據(jù)通過數(shù)據(jù)鏈傳輸?shù)降孛婵刂婆_。

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

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

任務(wù)間的通信是指任務(wù)間或中斷服務(wù)與任務(wù)間的信息傳遞。任務(wù)間的通信方式有信號量管理、互斥型信號量管理、事件標(biāo)志組管理、消息郵箱管理、消息隊列管理和內(nèi)存管理。本文采用消息郵箱管理,典型的消息信箱也稱作交換消息,使用一個指針型變量, 通過內(nèi)核服務(wù),一個任務(wù)或一個中斷服務(wù)子程序通過內(nèi)核服務(wù)可以將一則消息放到郵箱里去。同樣, 一個或多個任務(wù)通過內(nèi)核服務(wù), 可以接收這則消息。當(dāng)任務(wù)接到消息之后, 狀態(tài)變?yōu)榫途w態(tài)任務(wù),等到其優(yōu)先級變?yōu)樽罡邥r執(zhí)行該任務(wù)。

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

主站蜘蛛池模板: 洪雅县| 莆田市| 德安县| 遂昌县| 玉林市| 石嘴山市| 安乡县| 邵武市| 临沧市| 赤水市| 武宁县| 富阳市| 边坝县| 灵璧县| 曲水县| 阜平县| 新泰市| 修文县| 屯门区| 双鸭山市| 平乐县| 尼木县| 安岳县| 轮台县| 财经| 山阴县| 襄汾县| 苏尼特左旗| 旬邑县| 三穗县| 文昌市| 鲁山县| 七台河市| 平阳县| 旅游| 鲁甸县| 阳新县| 廊坊市| 蕲春县| 浮山县| 佛山市|