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