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