摘 要: 針對小型無人機(jī)航拍系統(tǒng)的功能要求和存在的問題,設(shè)計(jì)了一種圖像和GPS 數(shù)據(jù)采集系統(tǒng),并給出了系統(tǒng)的結(jié)構(gòu)和工作原理。系統(tǒng)以ARM單片機(jī)為核心,采用無線通信方式將串口采集到的數(shù)據(jù)發(fā)送到地面基站,并在上位機(jī)上顯示。對數(shù)據(jù)采集、無線發(fā)送和上位機(jī)編程等關(guān)鍵問題作了分析,并給出了設(shè)計(jì)方案。實(shí)地試驗(yàn)表明,本系統(tǒng)工作穩(wěn)定,可滿足無人機(jī)航拍系統(tǒng)的要求。
關(guān)鍵詞: 無人機(jī);STM32;無線傳輸;圖像采集
無人機(jī)系統(tǒng)作為一種高端的遙控設(shè)備已經(jīng)被廣泛應(yīng)用于軍事偵查、遠(yuǎn)程監(jiān)控和地質(zhì)測繪等領(lǐng)域。通常無人機(jī)系統(tǒng)的首要任務(wù)是將實(shí)時(shí)采集到的圖像信號通過無線通信設(shè)備傳送到地面基站。國外對于這方面的研究較早,但由于技術(shù)封鎖等原因,目前可供借鑒的資料很少,加之我國在該方面研究起步較晚,致使我國在無人機(jī)無線視頻圖像傳輸領(lǐng)域的技術(shù)較落后?,F(xiàn)階段的無人機(jī)圖像采集技術(shù)主要有兩種方式:一種是采用模擬傳輸方式,其頻率使用率較低,系統(tǒng)易受干擾,其圖像質(zhì)量較差,信道編碼效率不高,且抗多徑干擾較差;另一種是采用模擬的CCD攝像頭通過模數(shù)轉(zhuǎn)換芯片變?yōu)閿?shù)字信號,再由控制器進(jìn)行壓縮和處理,這樣不僅加重了控制器的負(fù)擔(dān),而且也易造成系統(tǒng)功耗較大。同時(shí),由于小型飛行器的載重及能量供給非常有限,對機(jī)載部分的功耗、重量和安裝尺度等都提出了更為嚴(yán)格的要求。本文設(shè)計(jì)了一種基于CMOS攝像頭和數(shù)字圖像處理芯片的圖像和GPS數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)具有體積小、傳輸速率高、傳輸距離遠(yuǎn)、帶有數(shù)據(jù)壓縮和圖像增強(qiáng)功能的特點(diǎn)[1-12]。
地面基站作為無人機(jī)系統(tǒng)的“神經(jīng)中樞”,擔(dān)負(fù)著采集及分析飛行數(shù)據(jù)、驗(yàn)證及評價(jià)飛行效果和保證飛行安全等重要任務(wù)。因而,一個(gè)好的無人機(jī)系統(tǒng)常常需要有功能強(qiáng)大的地面基站平臺才能發(fā)揮最好的飛行效果。本文設(shè)計(jì)了一種利用VB編程軟件在PC機(jī)上實(shí)現(xiàn)的具有航跡記錄與預(yù)測、手動(dòng)控制飛行、飛行狀態(tài)監(jiān)控和視頻圖像顯示等功能的地面基站平臺。地面實(shí)驗(yàn)表明該系統(tǒng)具有很好的應(yīng)用效果[9]。
1 系統(tǒng)結(jié)構(gòu)和工作原理
本系統(tǒng)包括機(jī)載的視頻圖像采集系統(tǒng)和地面基站平臺兩部分,其結(jié)構(gòu)框圖如圖1所示。系統(tǒng)硬件由攝像頭模塊、GPS數(shù)據(jù)采集模塊、STM32微控制器和NRF905無線通信模塊構(gòu)成。
該系統(tǒng)以STM32F103RBT6微控制器為核心,機(jī)載微控制器通過串口1和串口2分別與VC0706圖像處理芯片和GPS接收機(jī)進(jìn)行通信,主要實(shí)現(xiàn)以下幾個(gè)功能。(1)機(jī)載微控制器通過控制指令控制VC0706圖像處理芯片實(shí)現(xiàn)控制攝像頭拍照、圖像數(shù)據(jù)壓縮以及數(shù)字圖像傳輸?shù)热蝿?wù)。(2)機(jī)載微控制器將GPS接收機(jī)發(fā)出的數(shù)據(jù)按照國家標(biāo)準(zhǔn)的GPS接收機(jī)數(shù)據(jù)輸出格式(GB/T 20512-2006)進(jìn)行解碼。再將采集到的圖像數(shù)據(jù)和GPS數(shù)據(jù)按照事先約定好的通信協(xié)議通過NRF905無線通信模塊與地面基站的STM32微控制器進(jìn)行通信,基站的微控制器再將數(shù)據(jù)通過內(nèi)嵌的USB接口傳送到上位機(jī)上。由此,實(shí)現(xiàn)了圖像和GPS定位信息的采集、傳輸和上位機(jī)顯示的功能。
2 相關(guān)問題及設(shè)計(jì)方案
本系統(tǒng)大體可分為圖像和GPS數(shù)據(jù)采集、無線通信以及上位機(jī)編程三部分。
2.1 數(shù)據(jù)采集系統(tǒng)
圖像數(shù)據(jù)采集需要克服數(shù)據(jù)量大、傳輸實(shí)時(shí)性等問題,同時(shí),需要考慮到STM32微控制器內(nèi)部數(shù)據(jù)儲存容量有限[1],對圖像數(shù)據(jù)需要進(jìn)行分批傳輸。數(shù)字?jǐn)z像頭采集一幅480×640的圖像數(shù)據(jù)量為307 200 B,而經(jīng)過VC7076處理芯片進(jìn)行壓縮率為30%的壓縮處理后,數(shù)據(jù)量可以減少為92 160 B左右[6]。STM32微控制器的串口傳輸速率可以達(dá)到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é)束地址指令即可。所以,在微控制器的軟件設(shè)計(jì)中定義了兩塊容量為1 KB的數(shù)據(jù)存儲塊,并且在接收數(shù)據(jù)時(shí)使用微控制器內(nèi)嵌DMA模塊。初始化時(shí),設(shè)置DMA數(shù)據(jù)為串口數(shù)據(jù)輸入,這樣每當(dāng)微控制器的串口接收到1 B的數(shù)據(jù),就可以通過DMA模塊自動(dòng)地保存到相應(yīng)的地址中而不需要微控制器內(nèi)部CPU的參與,這使得CPU可以空閑出來進(jìn)行發(fā)送部分的處理。當(dāng)一塊數(shù)據(jù)接收完成后,會觸發(fā)DMA中斷,CPU就可以在中斷中重新配置起始地址和結(jié)束地址,使得微控制器能夠循環(huán)進(jìn)行數(shù)據(jù)接收。在程序中,首先定義了一個(gè)用于數(shù)據(jù)接收和發(fā)送的結(jié)構(gòu)體,其中的數(shù)據(jù)成員是兩個(gè)容量為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接收機(jī)發(fā)出的數(shù)據(jù)以ASCII碼的形式發(fā)出,并且按照GB/T 20512-2006標(biāo)準(zhǔn)進(jìn)行信息編碼,因而需要對從接收機(jī)接收到的數(shù)據(jù)進(jìn)行解碼從而得到能進(jìn)行處理和識別的數(shù)據(jù)。GPS接收機(jī)采用的是Gstar GS-89模塊,該模塊能夠檢測當(dāng)前位置的經(jīng)度、緯度、海拔高度、標(biāo)準(zhǔn)定位時(shí)間和接收衛(wèi)星數(shù)等信息。GPS接收機(jī)輸出的信息是以語句的形式進(jìn)行發(fā)送的,總共有5種語句,每條語句都以$開頭,并以回車結(jié)束,同一語句中的不同數(shù)據(jù)之間采用逗號隔開。其中,GPGGA語句包含當(dāng)前的定位信息,也是應(yīng)用最廣的語句,因而,對GPGGA語句的解碼最重要。GPRMC語句的格式如下:
$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
其中,(1)表示定位時(shí)間,(2)、(3)表示緯度,(4)、(5)表示經(jīng)度,(9)表示海拔高度。對上述數(shù)據(jù)的解碼是系統(tǒng)獲取GPS數(shù)據(jù)的重點(diǎn),解碼的軟件流程圖如圖3所示。
2.2 無線通信系統(tǒng)
無人機(jī)與地面基站之間數(shù)據(jù)的傳送需要使用無線通信系統(tǒng)來進(jìn)行。系統(tǒng)的無線通信部分采用的是NRF905-33A無線模塊,該模塊的最遠(yuǎn)通信距離可達(dá)到3 km,非常適于小范圍內(nèi)的通信網(wǎng)絡(luò),而且重量輕,適于在無人機(jī)上進(jìn)行攜帶。
NRF905-33A無線模塊一次只能傳送32 B,微控制器每次需要等待無線模塊傳送完成后才能進(jìn)行下一次的數(shù)據(jù)傳送。而系統(tǒng)中需要進(jìn)行GPS和圖像兩種數(shù)據(jù)的傳送。為了提高無線通信的速率和通信的準(zhǔn)確性,系統(tǒng)采用了分時(shí)傳送的方法,即利用GPS接收機(jī)每隔1 s更新一次定位數(shù)據(jù)的特性,將GPS數(shù)據(jù)的傳送設(shè)定為1 s傳送一次,而其他時(shí)間則進(jìn)行圖像數(shù)據(jù)傳送。為了區(qū)分圖像數(shù)據(jù)和GPS數(shù)據(jù),在每次不同數(shù)據(jù)轉(zhuǎn)換時(shí)采用了發(fā)送32個(gè)相同數(shù)據(jù)的方法與地面基站的接收機(jī)進(jìn)行同步。
2.3 上位機(jī)編程
上位機(jī)編程采用了Visual Basic編程語言。該編程語言是一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級程序設(shè)計(jì)語言,不僅簡單易學(xué),而且功能強(qiáng)大。
上位機(jī)需要解決的主要問題是如何進(jìn)行圖像的顯示。由于傳送到上位機(jī)的數(shù)據(jù)為JPEG格式,本文采用了一個(gè)較為巧妙的方法,即先打開一個(gè)空的JPEG格式的文件,然后在有數(shù)據(jù)發(fā)送到上位機(jī)時(shí)就檢測該數(shù)據(jù)是否為圖像的數(shù)據(jù)頭(0xff,0xd8)或數(shù)據(jù)尾(0xff,0xd9),并將數(shù)據(jù)寫入到打開的圖像文件中。當(dāng)檢測到的數(shù)據(jù)為數(shù)據(jù)尾時(shí),就將圖像文件顯示出來。其編程語句如下。
Public Sub ImageManage(bytinput()As Byte, intInputLenth As Integer)
Dim n As Integer
Dim s As Byte
On Error GoTo errji
Put #1,,bytinput()
//將獲得的數(shù)據(jù)寫入到文件中
For n = 0 To intInputLenth – 2
If bytinput(n+1)=&HD9 And bytinput(n)=&HFF Then
//是否到最后的數(shù)據(jù)
Close #1
Form1.Image1.Picture = LoadPicture("C:\rtaub.jpeg")
//顯示圖像文件
flag1_c = False
Open "C:\rtaub.jpeg" For Binary As #1
//打開一個(gè)JPEG格式的文件
flag_c = True
n = intInputLenth – 2
//獲取傳入數(shù)據(jù)的長度
Form1.Text3.Text = ""
Rxd_code = 0
End If
Next n
Exit Sub
errji: //打開出錯(cuò)
Close #1 //關(guān)閉先前文件
Open"C:\rtaub.jpeg" For Binary As #1 //重新打開文件
flag_c=True
flag1_c=False
Exit Sub
End Sub
本文針對無人機(jī)系統(tǒng)的特性以及要求,提出了一種基于STM32微處理器實(shí)現(xiàn)圖像和GPS數(shù)據(jù)采集、傳輸以及在上位機(jī)顯示的設(shè)計(jì)方案。經(jīng)過靜態(tài)的地面測試證明,該系統(tǒng)能夠很好地實(shí)現(xiàn)設(shè)計(jì)要求的功能,而且傳輸速度較快,可以滿足無人機(jī)系統(tǒng)的實(shí)時(shí)性要求;該系統(tǒng)運(yùn)行良好,抗干擾能力強(qiáng),有很好的繼承性和維護(hù)性。本系統(tǒng)模塊化的設(shè)計(jì)方案和實(shí)現(xiàn)方法對無人機(jī)系統(tǒng)的設(shè)計(jì)和研究具有一定的參考價(jià)值。采用STM32微處理器,可以大大降低無人機(jī)系統(tǒng)的硬件設(shè)計(jì)難度,縮短設(shè)計(jì)周期。此外,STM32微處理器還支持串口燒錄和在線仿真,可以大大減少軟件設(shè)計(jì)的成本。隨著ARM單片機(jī)功能的不斷提升,基于ARM技術(shù)的STM32系列單片機(jī)以它特有的優(yōu)勢將在高新技術(shù)領(lǐng)域得到廣泛的應(yīng)用。
參考文獻(xiàn)
[1] 張綺文.ARM嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,2007.
[2] 閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2008.
[3] 楊素行.模擬電子技術(shù)基礎(chǔ)簡明教程(第三版)[M].北京:高等教育出版社,2006.
[4] 張鑫.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2005.
[5] 姜志海.單片機(jī)的C語言程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2008.
[6] 畢文仲.微型攝像與視頻通信系統(tǒng)研究[D].北京:清華大學(xué),2001.
[7] 袁哲俊,謝大綱,胡忠輝.微飛行器技術(shù)的最新發(fā)展[J].航空精密制造技術(shù),2005,41(1):1-5.
[8] 張汝成,王廣生,張磊.基于ARM的電梯主控制器設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2009,17(10):1958-1961.
[9] 田蜂,杜洪根.無人機(jī)地面站控制系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2005,13(11):1237-1239.
[10] 司兵,周傳忠,于歌.一種微小型無人機(jī)地面監(jiān)控系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真技術(shù),2007,3(2):90-95.
[11] 郝志成,朱明.智能目標(biāo)檢測與跟蹤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].光電工程,2007,34(1):27-31.
[12] STINGU E, LEWIS F L. A hard ware platform for research in helicopter UAV control[J]. Journal of Intelligent & Robotic Systems, 2009,54(1-3):387-406.