會啟動這個(gè)控制層程序,連接數(shù)據(jù)庫。
[0068] 3)、Data 數(shù)據(jù)層
[0069] 數(shù)據(jù)層存儲了地面服務(wù)站運(yùn)行過程中可能調(diào)用的數(shù)據(jù),包含了 6個(gè)數(shù)據(jù)庫表,通過 建立數(shù)據(jù)層,能夠較為方便地實(shí)現(xiàn)地面站對各類地圖數(shù)據(jù)等的實(shí)時(shí)調(diào)用,節(jié)約了程序開銷。 主要使用表的說明如表1所示:
[0070] 表1數(shù)據(jù)庫表
[0071]
[0072] 4)、PC控制面板
[0073] PC控制面板是PC端地面控制平臺對飛行器的穩(wěn)定有效控制的可視窗口,該控制基 于Linux系統(tǒng)設(shè)計(jì),使用C/C++語言在QT環(huán)境上開發(fā)而成。該控制面板實(shí)現(xiàn)的內(nèi)容如下:
[0074] 1、提供支持鼠標(biāo)和鍵盤控制的可視化界面方便進(jìn)行飛行器控制
[0075] 2、控制信號轉(zhuǎn)換為報(bào)文輸出以保證通信的可靠性。自主設(shè)計(jì)的報(bào)文基本格式如 下:
[0076] 報(bào)頭+同步字節(jié)+報(bào)文長度+功能號+數(shù)據(jù)字節(jié)+校驗(yàn)位+結(jié)束位
[0077] 具體報(bào)文協(xié)議在下面的通信系統(tǒng)報(bào)文協(xié)議一節(jié)中進(jìn)行解釋。
[0078] 3、接收下位機(jī)反饋顯示,供用戶了解飛行器對控制指令的響應(yīng)是否正常。
[0079] 5)、回傳視頻的顯示
[0080 ] PC端的地面控制站的回傳視頻顯示功能采用開源mj pg-s tr earner的方案。在飛行 器上的視頻采集與回傳模塊正常工作的情況下,從PC端地面站客戶端輸入ARM板IP地址發(fā) 出訪問請求,服務(wù)器接收到請求后即可與客戶端建立連接,通過TCP協(xié)議將視頻數(shù)據(jù)發(fā)送到 客戶端監(jiān)聽端口,客戶端就可以得到連續(xù)的現(xiàn)場畫面,從而實(shí)現(xiàn)視頻采集功能。
[0081](三)支持PC控制的多旋翼無人飛行器通信系統(tǒng):無人機(jī)上搭載ARM主控板,主控板 上有無線通信模塊與串口通信模塊,通過3G和WiFi等無線通信方式與PC通信,同時(shí)ARM板通 過UART串口方式與飛行器通信。PC與無人機(jī)之間依靠此通信系統(tǒng),傳輸飛行控制指令、飛行 狀態(tài)數(shù)據(jù)、視頻回傳數(shù)據(jù)等,并且可以通過增加如傳感器等各類硬件,通過編程實(shí)現(xiàn)功能擴(kuò) 展。
[0082]多旋翼無人飛行器上面搭載ARM作為主控板,主要負(fù)責(zé)統(tǒng)籌協(xié)調(diào)與通信;搭載ΑΡΜ 飛行姿態(tài)從處理器,控制飛行姿態(tài);搭載Arduino信息采集從處理器,驅(qū)動相應(yīng)傳感器采集 環(huán)境數(shù)據(jù)。ARM主控芯片與APM和Arduino分別通過UART串口進(jìn)行通信,ARM同時(shí)通過3G/WiFi 模塊與上位機(jī)PC端進(jìn)行無線通信,以此建立的通信系統(tǒng)使得飛行器與PC之間能進(jìn)行良好的 協(xié)調(diào)。其通信架構(gòu)如圖2所示。
[0083] 1)、主控程序設(shè)計(jì)
[0084] 主控程序位于運(yùn)行于ARM主控板上,作為飛行器平臺上的控制核心,飛行器上的工 作均由其直接或間接控制,同時(shí)作為一個(gè)通信橋梁與控制樞紐,一方面跟頂層PC端上位機(jī) 通信,一方面跟底層APM和Arduino通信,此外也為特殊功能留下可用進(jìn)程,增加可擴(kuò)展性。
[0085] ARM端主控程序采用了 4個(gè)線程,并在程序開始被執(zhí)行時(shí)即創(chuàng)建并執(zhí)行,其執(zhí)行細(xì) 節(jié)非別如下:
[0086] l)thread_video(port 8080),用于控制視頻傳輸?shù)倪\(yùn)行與停止等。
[0087] 2)thread_DroneCtrl(port 8081),用于接收PC端發(fā)過來的飛控指令,并通過串口 轉(zhuǎn)發(fā)給APM,控制飛行器姿態(tài)。當(dāng)該進(jìn)程執(zhí)行時(shí),主控程序中有關(guān)飛控信號處理的函數(shù)將會 被調(diào)用,如DroneCtrlProcess()函數(shù),用于實(shí)現(xiàn)對飛控信號的處理,并通過調(diào)用DroneCtrl 0函數(shù)處理飛控運(yùn)行的指令。
[0088] 3)thread_NavaData(port 8082),用于控制從機(jī)Arduino的數(shù)據(jù)采集,并將采集數(shù) 據(jù)返回給PC上位機(jī)。該線程進(jìn)行時(shí),主控程序中的NavaData()函數(shù)以及NavaDataProcess() 函數(shù)將會被調(diào)用,用于實(shí)時(shí)處理傳感器數(shù)據(jù),并在接收到PC發(fā)的請求后,開始返回打包好的 傳感數(shù)據(jù)。
[0089] 4)thread_CtrlSyn(port 8083),用于控制其他三個(gè)線程的同步,實(shí)現(xiàn)對視頻傳 輸、飛控控制、信息采集三個(gè)進(jìn)程的控制。
[0090] 不同進(jìn)程之間通過線程同步信號獨(dú)立運(yùn)行,當(dāng)某一線程運(yùn)行時(shí),該線程對應(yīng)的信 號值將會產(chǎn)生作用。主控程序中設(shè)置了負(fù)責(zé)線程同步信號處理的一些函數(shù),并為不同的進(jìn) 程配置了不同的信號用以接收指令控制相應(yīng)線程的運(yùn)行和停止,不同信號代表了主控程序 與上位機(jī)之間不同的通信命令,通信命令明細(xì)表如表2所示:
[0091] 表2通信命令明細(xì)表
[0092]
[0093] 2)、串 口通信
[0094] ARM主控板接受到上位機(jī)的數(shù)據(jù)包后,進(jìn)行初步包解析,若解析結(jié)果為飛行控制命 令,則通過UART串口協(xié)議經(jīng)過串口將數(shù)據(jù)包傳送到APM從處理器;若解析結(jié)果為數(shù)據(jù)采集相 關(guān)命令,則通過UART串口協(xié)議經(jīng)過串口將數(shù)據(jù)包傳送到Arduino從處理器;若解析結(jié)果不是 飛行控制命令,也不是數(shù)據(jù)采集相關(guān)命令,則不通過串口進(jìn)行任何通信。
[0095] 3)、無線通信
[0096] ARM主控板與上位機(jī)之間通過無線通信技術(shù)進(jìn)行通信協(xié)調(diào),本發(fā)明分別采用了兩 種不同的方式:3G/WIFI,細(xì)節(jié)如下。
[0097] 1、3G 通信
[0098]飛行器與地面控制平臺服務(wù)器的通信工作可以分為兩大部分:一是采用ARM平臺 和3G模塊進(jìn)行無線通信,二是通信采用C/S架構(gòu)的socket進(jìn)行傳輸數(shù)據(jù)。
[00"] ARM主控板完成圖像信息、飛行狀態(tài)信息和ZigBee網(wǎng)絡(luò)狀態(tài)信息的獲取后,通過3G 技術(shù)將這些飛行信息傳送到PC端,并請求PC端接收并提供數(shù)據(jù)處理服務(wù),即采用C/S架構(gòu)的 socket進(jìn)行傳輸數(shù)據(jù)。
[0100] ARM主控板采用Linux內(nèi)核操作系統(tǒng),在PC端的虛擬機(jī)VMware Workstation安裝的 Redhat進(jìn)行3G撥號上網(wǎng)環(huán)境配置以及撥號上網(wǎng)成功后,將計(jì)算機(jī)端的配置文件等移植到 ARM平臺。
[0101] 本發(fā)明分別在ARM主控板與PC上位機(jī)將以C/S架構(gòu)建立通信,以此建立的通信系統(tǒng) 可經(jīng)過3g網(wǎng)卡高速通信,飛行器采集到的數(shù)據(jù)利用3G網(wǎng)絡(luò)實(shí)時(shí)的傳輸回地面服務(wù)站,利用 數(shù)據(jù)庫進(jìn)行處理。
[0102] 2、WiFi 通信
[0103] 本發(fā)明采用微型無線USB網(wǎng)卡TL-WN725N使ARM主控板支持WiFi通信。TL-WN725N采 用內(nèi)置天線,其傳輸速率為150M,采用了IEEE802.11n網(wǎng)絡(luò)標(biāo)準(zhǔn),頻率范圍為2.4HZ~ 2.4835GHz,能夠滿足高速傳輸飛行信息的需要。
[0104] 通過安裝相應(yīng)的無線網(wǎng)卡驅(qū)動RTL8188EU,使ARM支持TL-WN725N利用Hostapd將無 線網(wǎng)卡設(shè)置為模擬AP模式(Hostapd是一個(gè)用戶態(tài)用于AP和認(rèn)證服務(wù)器的守護(hù)進(jìn)程)。將無 線網(wǎng)卡配置成模擬AP模式之后,可以自動發(fā)射無線熱點(diǎn),PC端連接該熱點(diǎn)便可以與主控板 進(jìn)行無線通信。
[0105] 4)、通信系統(tǒng)的報(bào)文協(xié)議
[0106] 該報(bào)文協(xié)議實(shí)現(xiàn)飛行命令的傳輸。PC端上位機(jī)傳來的報(bào)文經(jīng)過ARM主控程序篩選 后主機(jī)從機(jī)之間通過串口接收到規(guī)定格式的報(bào)文時(shí),通過制定好的報(bào)文協(xié)議對報(bào)文進(jìn)行解 析,實(shí)現(xiàn)對應(yīng)的響應(yīng)。報(bào)文的格式規(guī)定如下:
[0107] iMessage format:0xFF+0x33+length+command_id+data(0)+data(1)+data(...) +checkout
[0108] 整個(gè)報(bào)文的長度為報(bào)文中所有信息所占據(jù)的字節(jié)數(shù);報(bào)文中OxFF和0x33是報(bào)頭, 用于識別報(bào)文。length代表報(bào)文長度,checkout用為于檢查報(bào)文中所含有的通信信息,其所 含信息為報(bào)文正文中所含信息,即:
[0109] checkout=0xFF+0x33+length+com