基于無人機的圖像和GPS數(shù)據(jù)采集系統(tǒng)的研究與實現(xiàn)
摘 要: 針對小型無人機航拍系統(tǒng)的功能要求和存在的問題,設計了一種圖像和GPS 數(shù)據(jù)采集系統(tǒng),并給出了系統(tǒng)的結(jié)構(gòu)和工作原理。系統(tǒng)以ARM單片機為核心,采用無線通信方式將串口采集到的數(shù)據(jù)發(fā)送到地面基站,并在上位機上顯示。對數(shù)據(jù)采集、無線發(fā)送和上位機編程等關鍵問題作了分析,并給出了設計方案。實地試驗表明,本系統(tǒng)工作穩(wěn)定,可滿足無人機航拍系統(tǒng)的要求。
關鍵詞: 無人機;STM32;無線傳輸;圖像采集
無人機系統(tǒng)作為一種高端的遙控設備已經(jīng)被廣泛應用于軍事偵查、遠程監(jiān)控和地質(zhì)測繪等領域。通常無人機系統(tǒng)的首要任務是將實時采集到的圖像信號通過無線通信設備傳送到地面基站。國外對于這方面的研究較早,但由于技術封鎖等原因,目前可供借鑒的資料很少,加之我國在該方面研究起步較晚,致使我國在無人機無線視頻圖像傳輸領域的技術較落后?,F(xiàn)階段的無人機圖像采集技術主要有兩種方式:一種是采用模擬傳輸方式,其頻率使用率較低,系統(tǒng)易受干擾,其圖像質(zhì)量較差,信道編碼效率不高,且抗多徑干擾較差;另一種是采用模擬的CCD攝像頭通過模數(shù)轉(zhuǎn)換芯片變?yōu)閿?shù)字信號,再由控制器進行壓縮和處理,這樣不僅加重了控制器的負擔,而且也易造成系統(tǒng)功耗較大。同時,由于小型飛行器的載重及能量供給非常有限,對機載部分的功耗、重量和安裝尺度等都提出了更為嚴格的要求。本文設計了一種基于CMOS攝像頭和數(shù)字圖像處理芯片的圖像和GPS數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)具有體積小、傳輸速率高、傳輸距離遠、帶有數(shù)據(jù)壓縮和圖像增強功能的特點[1-12]。
地面基站作為無人機系統(tǒng)的“神經(jīng)中樞”,擔負著采集及分析飛行數(shù)據(jù)、驗證及評價飛行效果和保證飛行安全等重要任務。因而,一個好的無人機系統(tǒng)常常需要有功能強大的地面基站平臺才能發(fā)揮最好的飛行效果。本文設計了一種利用VB編程軟件在PC機上實現(xiàn)的具有航跡記錄與預測、手動控制飛行、飛行狀態(tài)監(jiān)控和視頻圖像顯示等功能的地面基站平臺。地面實驗表明該系統(tǒng)具有很好的應用效果[9]。
1 系統(tǒng)結(jié)構(gòu)和工作原理
本系統(tǒng)包括機載的視頻圖像采集系統(tǒng)和地面基站平臺兩部分,其結(jié)構(gòu)框圖如圖1所示。系統(tǒng)硬件由攝像頭模塊、GPS數(shù)據(jù)采集模塊、STM32微控制器和NRF905無線通信模塊構(gòu)成。
該系統(tǒng)以STM32F103RBT6微控制器為核心,機載微控制器通過串口1和串口2分別與VC0706圖像處理芯片和GPS接收機進行通信,主要實現(xiàn)以下幾個功能。(1)機載微控制器通過控制指令控制VC0706圖像處理芯片實現(xiàn)控制攝像頭拍照、圖像數(shù)據(jù)壓縮以及數(shù)字圖像傳輸?shù)热蝿?。?)機載微控制器將GPS接收機發(fā)出的數(shù)據(jù)按照國家標準的GPS接收機數(shù)據(jù)輸出格式(GB/T 20512-2006)進行解碼。再將采集到的圖像數(shù)據(jù)和GPS數(shù)據(jù)按照事先約定好的通信協(xié)議通過NRF905無線通信模塊與地面基站的STM32微控制器進行通信,基站的微控制器再將數(shù)據(jù)通過內(nèi)嵌的USB接口傳送到上位機上。由此,實現(xiàn)了圖像和GPS定位信息的采集、傳輸和上位機顯示的功能。
2 相關問題及設計方案
本系統(tǒng)大體可分為圖像和GPS數(shù)據(jù)采集、無線通信以及上位機編程三部分。
2.1 數(shù)據(jù)采集系統(tǒng)
圖像數(shù)據(jù)采集需要克服數(shù)據(jù)量大、傳輸實時性等問題,同時,需要考慮到STM32微控制器內(nèi)部數(shù)據(jù)儲存容量有限[1],對圖像數(shù)據(jù)需要進行分批傳輸。數(shù)字攝像頭采集一幅480×640的圖像數(shù)據(jù)量為307 200 B,而經(jīng)過VC7076處理芯片進行壓縮率為30%的壓縮處理后,數(shù)據(jù)量可以減少為92 160 B左右[6]。STM32微控制器的串口傳輸速率可以達到115 200 b/s[4],而STM32F103RBT6微控制器的內(nèi)部數(shù)據(jù)存儲器只有20 KB,無法保存一幅完整的圖像數(shù)據(jù)。由于NRF905無線發(fā)射模塊每次最多發(fā)射32 B的數(shù)據(jù),因此VC7076中接收數(shù)據(jù)只需要微控制器發(fā)送起始地址和結(jié)束地址指令即可。所以,在微控制器的軟件設計中定義了兩塊容量為1 KB的數(shù)據(jù)存儲塊,并且在接收數(shù)據(jù)時使用微控制器內(nèi)嵌DMA模塊。初始化時,設置DMA數(shù)據(jù)為串口數(shù)據(jù)輸入,這樣每當微控制器的串口接收到1 B的數(shù)據(jù),就可以通過DMA模塊自動地保存到相應的地址中而不需要微控制器內(nèi)部CPU的參與,這使得CPU可以空閑出來進行發(fā)送部分的處理。當一塊數(shù)據(jù)接收完成后,會觸發(fā)DMA中斷,CPU就可以在中斷中重新配置起始地址和結(jié)束地址,使得微控制器能夠循環(huán)進行數(shù)據(jù)接收。在程序中,首先定義了一個用于數(shù)據(jù)接收和發(fā)送的結(jié)構(gòu)體,其中的數(shù)據(jù)成員是兩個容量為1 KB的存儲數(shù)據(jù)塊和用于指示接收和發(fā)送所用的數(shù)據(jù)塊指針。數(shù)據(jù)接收的軟件流程圖如圖2所示。
該軟件程序初始定義為:
struct Image_get_send
{
unsignedchar dat_array[2][1024];
unsigned char send_flag;
unsigned char get_flag;
}
由于GPS接收機發(fā)出的數(shù)據(jù)以ASCII碼的形式發(fā)出,并且按照GB/T 20512-2006標準進行信息編碼,因而需要對從接收機接收到的數(shù)據(jù)進行解碼從而得到能進行處理和識別的數(shù)據(jù)。GPS接收機采用的是Gstar GS-89模塊,該模塊能夠檢測當前位置的經(jīng)度、緯度、海拔高度、標準定位時間和接收衛(wèi)星數(shù)等信息。GPS接收機輸出的信息是以語句的形式進行發(fā)送的,總共有5種語句,每條語句都以$開頭,并以回車結(jié)束,同一語句中的不同數(shù)據(jù)之間采用逗號隔開。其中,GPGGA語句包含當前的定位信息,也是應用最廣的語句,因而,對GPGGA語句的解碼最重要。GPRMC語句的格式如下:
$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
其中,(1)表示定位時間,(2)、(3)表示緯度,(4)、(5)表示經(jīng)度,(9)表示海拔高度。對上述數(shù)據(jù)的解碼是系統(tǒng)獲取GPS數(shù)據(jù)的重點,解碼的軟件流程圖如圖3所示。
2.2 無線通信系統(tǒng)
無人機與地面基站之間數(shù)據(jù)的傳送需要使用無線通信系統(tǒng)來進行。系統(tǒng)的無線通信部分采用的是NRF905-33A無線模塊,該模塊的最遠通信距離可達到3 km,非常適于小范圍內(nèi)的通信網(wǎng)絡,而且重量輕,適于在無人機上進行攜帶。
NRF905-33A無線模塊一次只能傳送32 B,微控制器每次需要等待無線模塊傳送完成后才能進行下一次的數(shù)據(jù)傳送。而系統(tǒng)中需要進行GPS和圖像兩種數(shù)據(jù)的傳送。為了提高無線通信的速率和通信的準確性,系統(tǒng)采用了分時傳送的方法,即利用GPS接收機每隔1 s更新一次定位數(shù)據(jù)的特性,將GPS數(shù)據(jù)的傳送設定為1 s傳送一次,而其他時間則進行圖像數(shù)據(jù)傳送。為了區(qū)分圖像數(shù)據(jù)和GPS數(shù)據(jù),在每次不同數(shù)據(jù)轉(zhuǎn)換時采用了發(fā)送32個相同數(shù)據(jù)的方法與地面基站的接收機進行同步。
2.3 上位機編程