基于VxWorks的無人直升機控制系統(tǒng)設(shè)計
任務(wù)的操作使用的是VxWorks系統(tǒng)中的taskLib()與taskInfo()庫函數(shù)。看門狗時鐘精確定時用到函數(shù)wdCreate(),wdStart()等,任務(wù)間的同步調(diào)度使用的是信號量,包括有二進制信號量與計數(shù)信號量。信息接收任務(wù)把網(wǎng)絡(luò)中傳輸?shù)男畔凑崭叩蛢?yōu)先級在消息隊列中添加元素,并存放信息到特定的內(nèi)存塊中,然后啟動計數(shù)型的信號量,信號量的值對應(yīng)于當(dāng)前消息隊列中還沒有被執(zhí)行命令的個數(shù),每增加一個消息命令后,計數(shù)型信號量就釋放,消息解釋任務(wù)獲得釋放的信號量后從消息隊列頭獲得最應(yīng)被優(yōu)先執(zhí)行的命令,根據(jù)內(nèi)存中的首地址信息,調(diào)用相應(yīng)的執(zhí)行函數(shù)。如果判斷是無人直升機飛行狀態(tài)信息,調(diào)用信息發(fā)送任務(wù)把實時信息傳送給地面基站。如判斷是無人直升機自主飛行命令,則調(diào)用自主飛行任務(wù),在此任務(wù)中要定時查詢無人直升機飛行狀態(tài)信息并與命令中信息做比較,控制舵機動作以完成自主定點飛行任務(wù)。在定時查詢機載設(shè)備信息以確定飛行狀態(tài)時,用taskDelay()函數(shù)不能滿足精確定時的要求。VxWorks系統(tǒng)提供得看門狗它可以保證嚴格的定時,在調(diào)用自主飛行任務(wù)時創(chuàng)建看門狗。經(jīng)過1s的時間延時后運行查詢無人直升機飛行狀態(tài)信息的函數(shù),比較信息后控制舵機動作,直到完成無人直升機的自主定點飛行任務(wù)后取消看門狗。切換到信息發(fā)送任務(wù),發(fā)送飛行狀態(tài)信息到地面基站監(jiān)控系統(tǒng)。
2.3.3 地面基站控制效果圖
軟件界面可以直觀的顯示控制系統(tǒng)效果,同時便于調(diào)試與觀察直升機的實際飛行狀況?;究刂栖浖?yīng)用VC++編譯器的套節(jié)字socket與基于信號量的多線程技術(shù)通過C++語言進行編譯。控制效果圖中顯示無人直升機自主定點飛行時的實時狀態(tài)信息:當(dāng)前高度、設(shè)定高度、東西距離、南北距離、方位角、俯仰角、測滾角等。實現(xiàn)了良好的人機交互功能,是控制系統(tǒng)開發(fā)的必備平臺。地面基站控制效果圖見圖四
圖四 地面基站控制效果圖
2 結(jié)束語
本文對無人直升機控制系統(tǒng)從硬件與軟件兩個方面進行了闡述,并應(yīng)用了先進與高性能的實時操作系統(tǒng)VxWorks,通過VxWorks多任務(wù)調(diào)度時的快速切換響應(yīng)實現(xiàn)無人直升機的自主飛行。并且通過實際的多次實驗飛行與調(diào)試,實現(xiàn)了無人模型直升機自主飛行的任務(wù),取得了預(yù)期的效果。
評論