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