彭彬彬,關桂霞,趙海盟,晏 磊,谷靜博
(1.首都師范大學 信息工程學院,北京 100048;2.北京大學 空間信息集成與3S工程應用北京市重點實驗室,北京 100871)
無人機遙感技術是利用先進的無人駕駛飛行器技術、傳感器技術、數(shù)據(jù)傳輸技術、GPS定位等先進技術,快速獲取遙感信息,并完成遙感數(shù)據(jù)的處理、建模、分析的應用技術[1]。無人機遙感技術可以對特殊、緊急事件作出快速反應,發(fā)揮出無人機靈活、快速、機動等獨有優(yōu)勢[2]。車載無人機遙感是把無人機遙感與野外實時現(xiàn)場決策結合起來的一種新技術,不僅要完成無人機航拍檢測的功能,還要實時與車載控制中心進行信息交互,發(fā)揮臨場重大決策的功能。目前現(xiàn)場指揮車實時控制在某些大型野外作業(yè)、城市重大活動應急中有所使用,但是沒有和無人機遙感結合起來,功能比較單一。有一些能利用無人機進行實時監(jiān)控,但是又缺乏專業(yè)的遙感影像數(shù)據(jù)實時分析以及臨場決策等功能[3]。
本文所涉及到的車載無人機遙感系統(tǒng),以地面指揮車作為控制中心,能夠快速的進行現(xiàn)場信息的采集以及預處理,機動性、靈活性很強。無人機搭載數(shù)據(jù)獲取模塊、無線收發(fā)模塊、導航模塊等必要的載荷進行航飛,并將獲取的數(shù)據(jù)實時下傳至地面指揮車,車內(nèi)指揮人員根據(jù)獲取到的數(shù)據(jù)可以臨場決策,發(fā)出有效命令給無人機載荷端,例如調(diào)整無人機相機載荷的各個參數(shù),以獲取高質(zhì)量的遙感圖像等[4]。
車載無人機遙感系統(tǒng)包含無人機平臺、遙感載荷平臺、衛(wèi)星通信、普通無線通信、地面數(shù)據(jù)獲取與分析、大屏幕信息融合以及眾多的環(huán)境傳感器和其他物聯(lián)信息的控制[5]。本文設計并實現(xiàn)了車載無人機遙感載荷系統(tǒng)中前置相機的數(shù)據(jù)獲取、控制和存儲功能模塊以及車載地面控制端遙感影像實時顯示與控制功能模塊。
針對車載無人機遙感的特點,本系統(tǒng)前置相機的控制與數(shù)據(jù)采集系統(tǒng)以ARM作為主處理器,結合外圍必要電路完成系統(tǒng)功能。地面車載控制與顯示系統(tǒng)中采用基于Qt/Embedded設計的圖形采集控制界面。系統(tǒng)以嵌入式Linux作為操作系統(tǒng),最大程度的保證系統(tǒng)的可靠性與穩(wěn)定性[6],最終實現(xiàn)圖像數(shù)據(jù)的快速獲取、實時下傳以及對載荷相機的遠程控制。
系統(tǒng)主體分為兩大部分,分別為車載地面控制端和無人機載荷端。其中,無人機端搭載飛行控制電路、圖像數(shù)據(jù)傳輸系統(tǒng)、圖像采集系統(tǒng)、GPS導航系統(tǒng)以及其他必要傳感器系統(tǒng)。地面控制端主要負責完成對無人機飛行狀態(tài)以及無人機相關載荷的控制,例如根據(jù)不同觀測區(qū)域?qū)ο鄼C參數(shù)進行實時設置與調(diào)整等。本文主要基于嵌入式ARM處理器,設計并實現(xiàn)無人機端圖像實時采集系統(tǒng),并基于Qt/Embedded設計實現(xiàn)了用于控制載荷相機的用戶界面,通過無線通訊系統(tǒng),將用戶輸入指令發(fā)送至無人機端的相機載荷,最終實現(xiàn)對相機載荷遠程控制。
整個系統(tǒng)的架構圖如圖1所示:
圖1 系統(tǒng)總體架構圖The overall architecture of the system
在整個系統(tǒng)中,無人機載荷的圖像采集系統(tǒng)為本文的主要設計部分,主要思路是基于嵌入式ARM處理器編寫應用程序,控制外部成像設備,完成圖像數(shù)據(jù)采集,并經(jīng)數(shù)據(jù)總線將其寫入存儲設備,同時根據(jù)需要完成數(shù)據(jù)的實時下傳。另外,基于 Qt/Embedded設計實現(xiàn)地面控制端中的成像控制系統(tǒng),它是整個系統(tǒng)人機交互的重要組成部分,是用戶與系統(tǒng)進行交流的接口,地面指揮人員可通過成像控制系統(tǒng)完成對圖像采集系統(tǒng)的控制,如設置成像設備的基本控制信息、設置分辨率、選擇拍攝模式等。
系統(tǒng)設計中,考慮到軟件是在基于Linux操作系統(tǒng)的PC機上進行設計,而最終的數(shù)據(jù)采集系統(tǒng)需要運行于開發(fā)板,因此,選擇采用宿主機與目標機相結合的交叉開發(fā)模式:即在主機上設計、編譯軟件,調(diào)試成功后再在目標板上運行、驗證[7]。整個系統(tǒng)的軟硬件架構圖如圖2所示。
圖2 系統(tǒng)軟硬件架構The software and hardware architecture of the system
Video4Linux(簡稱V4L)是Linux中關于視頻設備的內(nèi)核驅(qū)動模塊,是在Linux系統(tǒng)下進行圖像視頻系統(tǒng)開發(fā)的核心,它為驅(qū)動程序的編寫提供了統(tǒng)一的接口。V4L為雙層架構,上層是V4L提供給程序開發(fā)人員APIs的應用層,下層是提供硬件支持的圖像設備驅(qū)動。V4L應用層對圖像設備的操作是通過一組數(shù)據(jù)結構和相對應的IOCTL函數(shù)實現(xiàn)的。每一個數(shù)據(jù)結構都對應一個IOCTL函數(shù)來實現(xiàn)特定的功能。V4L給驅(qū)動程序編寫提供極大方便,同時方便了應用程序的編寫和移植。V4L2是V4L的升級版本,由于使用的開發(fā)板不再支持V4L,因而本系統(tǒng)的設計采用V4L2[8]。
在Linux系統(tǒng)下,所有的外部設備都像普通文件一樣被訪問。但是應用程序不能直接讀寫硬件的物理地址,必須借助驅(qū)動程序切入操作系統(tǒng)內(nèi)核來實現(xiàn)對這些物理地址的訪問[9]。驅(qū)動程序向應用程序屏蔽了硬件實現(xiàn)的細節(jié),使得應用程序可以使用標準的系統(tǒng)接口函數(shù)完成對硬件設備的打開、關閉和I/O控制操作。由于本系統(tǒng)的設計處于實驗階段,所以選擇較為簡單的USB高清攝像頭作為成像設備,在V4L2中提供了關于成像設備的基本操作函數(shù)open、read、write、close以及對I/O通道的控制接口函數(shù)ioctl的實現(xiàn)等。
圖像采集軟件設計的主要思路為調(diào)用V4L2提供的接口函數(shù)完成圖像的采集。圖像采集的工作主要包括成像設備的打開與初始化、圖像的采集、圖像格式轉(zhuǎn)化、關閉設備等。圖像數(shù)據(jù)獲取程序的整個處理流程如圖3所示。
2.2.1 打開設備并初始化
當USB攝像頭與控制核心成功連接時,會生成設備文件/dev/video0,使用V4L2提供的接口函數(shù)open函數(shù)就可以將其打開,返回值是設備的文件描述符。具體調(diào)用如下:
Open函數(shù)首先檢測成像設備的驅(qū)動是否正確注冊,若滿足則進行后續(xù)操作,否則返回錯誤信息,釋放內(nèi)存。當檢測到驅(qū)動運行正常后,open函數(shù)將對設備的傳感器和解碼模塊進行初始化,并在此基礎上初始化URB(USB Request Block),最后啟動攝像頭,采用同步傳輸?shù)姆绞竭M行數(shù)據(jù)傳輸。整個過程如圖4所示。
圖3 圖像采集流程圖The whole process of image acquisition
圖4 Open函數(shù)工作流程The working process of open function
當設備被成功打開之后,我們就可以通過調(diào)用ioctl函數(shù)和VIDIOC_QUERYCAP接口命令查詢攝像頭的相關信息,在結構體v4l2_capability中包括了驅(qū)動名稱driver、card、bus_info、version以及屬性capabilities等。使用命令VIDIOC_ENUM_FMT,可查詢攝像頭所支持的像素格式,獲取到的信息通過結構體v4l2_fmtdesc查看。根據(jù)查詢到的相關信息,還要對攝像頭成像格式進行設置,命令為 VIDIOC_S_FMT,通過結構體v4l2_format把圖像的像素格式設置為V4L2_PIX_FMT_YUYV,另外還包括圖像高度、寬度的設置。設備的打開及初始化主要涉及以下幾個函數(shù):
其中,fmt是由v4l2_format定義的結構體,v4l2_format結構體是在系統(tǒng)中的頭文件/usr/include/linux/videodev2.h中定義的,包含的主要內(nèi)容為成像設備獲取到的圖像的格式信息。
2.2.2 圖像數(shù)據(jù)采集
獲取圖像數(shù)據(jù)的第一步工作是申請緩存,使用參數(shù) VIDIOC_REQBUFS和結構體v4l2_requestbuffers。v4l2_requestbuffers同樣在系統(tǒng)函數(shù)的頭文件中定義,該結構中定義了緩存的數(shù)量,系統(tǒng)會據(jù)此申請對應數(shù)量的視頻緩存,緩存申請的函數(shù)如下所示。
當緩存申請完成后,需要獲取每個緩存的信息,并通過mmap函數(shù)將其映射至內(nèi)存。定義buffer結構體用來存儲內(nèi)存映射的地址信息,結構體的定義如下。
獲取緩存信息并映射至內(nèi)存的實現(xiàn)函數(shù)如下,其中buffers[n_buffers].start的地址處就是圖像數(shù)據(jù)存放的位置。
當以上工作完成后,就可通過VIDIOC_STREAMON命令開始進行圖像的采集,并使用命令VIDIOC_DQBUF讀取緩存中的數(shù)據(jù),函數(shù)如下。
圖像數(shù)據(jù)獲取的整個過程如圖5所示。
圖5 圖像數(shù)據(jù)獲取過程The process of image data acquisition
2.2.3 圖像格式的轉(zhuǎn)換
由于攝像頭獲取的原始數(shù)據(jù)格式為YUV格式,為了方便觀察,需要將數(shù)據(jù)格式轉(zhuǎn)變?yōu)镽GB格式,并將轉(zhuǎn)換完成的數(shù)據(jù)存儲到frame_buffer中。YUV到RGB顏色空間轉(zhuǎn)換關系是:
因為我們要把采集到的數(shù)據(jù)保存為圖片格式,所以還需將轉(zhuǎn)換為RGB格式的數(shù)據(jù)存儲為BMP格式。BMP文件格式主要由文件信息頭、位圖信息頭、顏色信息和數(shù)據(jù)信息四部分組成[10],其中文件頭主要包含文件的大小、文件類型、圖像數(shù)據(jù)偏離文件頭的長度等信息,文件頭包含的各個參數(shù)及參數(shù)的意義如表1所示。
表1 文件信息頭各參數(shù)及意義The parameters and significance of the file information header
位圖信息頭包圖像的大小、圖像的尺寸信息、圖像的壓縮類型、圖像的分辨率、位圖的顏色深度、圖像所用的顏色數(shù)等信息。與文件頭相似,位圖信息頭也是一個結構體,其參數(shù)具體如表2所示,由于位圖信息頭的參數(shù)相對較多,表2中只選擇了幾個有代表性的參數(shù)列出。
表2 位圖信息頭各參數(shù)及意義The parameters and significance of the bitmap information header
顏色信息包含圖像所用到的顏色表,顯示圖像時需用到幾個顏色表來生成調(diào)色板,但系統(tǒng)中所采用的攝像頭采集到的圖像為24位真彩圖,因此不需要調(diào)整顏色信息。
數(shù)據(jù)信息表示圖像的相應像素值,并按照從左到右、從下到上的順序進行保存。
BMP圖像的保存過程如下:首先建立一個.bmp格式的空文件,并將文件信息頭數(shù)據(jù)結構和位圖信息頭數(shù)據(jù)結構依次寫入到新建的空文件,最后將緩存區(qū)的圖像數(shù)據(jù)按照從左到右、從下到上的順序?qū)懭胛募械臄?shù)據(jù)信息區(qū)域,這樣就可以得到一副標準的BMP圖像。
2.2.4 停止采集并關閉設備
當圖像采集完成后,使用命令VIDIOC_STREAMOFF停止視頻采集,并調(diào)用close函數(shù)關閉設備,整個函數(shù)的實現(xiàn)如下所示。
由以上分析可知,圖像采集的整個流程主要包括以下四個步驟:成像設備的打開、圖像數(shù)據(jù)獲取、數(shù)據(jù)格式轉(zhuǎn)化以及成像設備的關閉。成像設備的打開主要完成設備的驅(qū)動注冊、初始化等,保證成像設備的正常運行;圖像數(shù)據(jù)獲取主要包括緩存的申請、內(nèi)存映射以及數(shù)據(jù)的存儲,完成圖像采集的主要工作;數(shù)據(jù)格式轉(zhuǎn)化的目的是將原始數(shù)據(jù)保存為標準的圖像文件,并保存至存儲設備;最后停止采集并關閉設備,完成圖像數(shù)據(jù)的獲取與存儲。
Qt/Embedded以原始的Qt為基礎,并做出了許多調(diào)整,是專門為嵌入式系統(tǒng)設計的圖形用戶界面的工具包。它可以直接在Framebuffer上顯示圖形接口,反應的速度更快,這對硬件與容量都有限制的嵌入式環(huán)境來說非常重要[11]。它的類庫完全使用C++封裝,具有豐富的控件資源和良好的移植性。Qt/Embedded采用信號/槽的安全類型來代替callback回調(diào)函數(shù),這樣各個元件之間的通信工作變得更加簡單和靈活[12]。Qt/Embedded程序開發(fā)采用交叉編譯的方式進行,首先在PC機上編寫應用程序,等調(diào)試成功后通過交叉編譯器編譯鏈接生成可以在ARM平臺上執(zhí)行的文件,最后將編譯過的可執(zhí)行文件移植到嵌入式平臺,另外,為使LCD能夠?qū)崿F(xiàn)觸摸功能,應在編譯Qt/Embedded源碼之前,先編譯觸屏持庫tslib,在此基礎上移植應用程序。還可根據(jù)需要為應用程序建立.desktop文件,通過此文件為應用程序添加桌面圖標,以實現(xiàn)點擊圖標啟動應用程序,方便操作。
Qt/Embedded整個程序的開發(fā)流程如圖6所示。
圖6 嵌入式Qt/Embedded程序開發(fā)流程The development process of Qt/Embedded
設計良好的圖形界面可以簡化操作,使用戶方便地與系統(tǒng)進行交互。本系統(tǒng)選用Qt/Embedded進行圖像采集處理終端應用程序的設計,終端界面的每一個按鈕都有與其一一對應的槽函數(shù),當按鈕被點擊時,通過信號與槽機制,對應的槽函數(shù)會被觸發(fā),實現(xiàn)按鈕的功能??刂平K端主要功能包括設備的控制、拍攝模式選擇、分辨率調(diào)節(jié)以及圖像簡單處理等。其中,圖像的拍攝可分為自動拍攝和手動拍攝,自動拍攝時還可以根據(jù)需要設置不同的拍攝間隔;可根據(jù)需要調(diào)節(jié)圖像的分辨率,還可設置為默認分辨率;圖像簡單處理模塊包括圖像的放大、縮小、旋轉(zhuǎn)等。系統(tǒng)整體的應用程序是基于主窗口來實現(xiàn)的,整個系統(tǒng)的界面示意圖如圖7所示。
圖像采集系統(tǒng)與控制顯示終端設計完成后,經(jīng)編譯、調(diào)試無誤后,將生成的可執(zhí)行文件分別移植至ARM開發(fā)板。位于地面端的控制系統(tǒng)命令的發(fā)送及飛機載荷端控制命令的接收都依靠于無線通信系統(tǒng)。無線通信系統(tǒng)傳輸?shù)臄?shù)據(jù)大體可分為兩方面:一方面為無人機以及載荷設備的控制指令,包括相機載荷的參數(shù)調(diào)整等;另一方面為傳輸無人機載荷獲取到的實時數(shù)據(jù)。
圖7 圖像采集系統(tǒng)界面The interface of image acquisition system
設計完成后,在基于Linux的Qt/Embedded環(huán)境(基于PC機)下進行了調(diào)試,在實驗室內(nèi)部取得了成功,成像效果如圖8所示。
圖8 PC機端成像效果圖The result of image acquisition based on PC
在PC端測試無誤后,將調(diào)試好的可執(zhí)行文件下載至開發(fā)板。為了方便操作,在開發(fā)板中建立.desktop文件,并通過該文件為應用程序添加桌面啟動圖標。系統(tǒng)上電后,點擊開發(fā)板液晶屏上的相應的啟動圖標,啟動應用程序。基于開發(fā)板端的成像效果圖如圖9示。
圖9 開發(fā)板端的成像效果圖The result of image acquisition based on development board
整套圖像采集系統(tǒng)要運用于車載無人機遙感系統(tǒng)中,所以室外實驗是必不可少的。圖10是室外實驗時獲取的實時圖像采集效果圖,滿足車載無人機圖像采集的要求。室外成像實物圖如圖11所示。
圖10 成像效果圖The result of image acquisition
圖11 實物圖The physical map
另外,系統(tǒng)采集到的圖像默認以時間作為前綴來命名,即“時間 +該時間內(nèi)所拍攝的次數(shù).bmp”,效果如圖12所示。
圖12 圖像命名規(guī)則Picture naming rules
測試結果表明,本文所設計的圖像采集處理程序能夠順利采集圖像數(shù)據(jù),并將其存儲至外部存儲設備,基于QT/Embedded設計的控制與顯示終端也實現(xiàn)了良好的人機交互,操作方便,基本達到了預期設計效果。
車載無人機是一個比較復雜的系統(tǒng),圖像采集模塊與顯示模塊只是其中的兩個環(huán)節(jié),這部分與無人機通信系統(tǒng)、車載通信系統(tǒng)、車內(nèi)顯示系統(tǒng)、車內(nèi)遙感圖像實時處理系統(tǒng)以及車載決策系統(tǒng)等構成有機聯(lián)系,所以在后續(xù)集成與調(diào)試方面還有一些外圍工作去完善,以滿足車載無人機的各項要求。
本文詳細介紹了車載無人機遙感載荷系統(tǒng)中前置相機的數(shù)據(jù)獲取、控制和存儲功能模塊以及車載地面控制端遙感影像實時顯示與控制功能模塊的設計與實現(xiàn)?;贏RM和嵌入式Linux設計的圖像采集處理系統(tǒng)完成了高效的圖像采集任務,能夠?qū)崟r獲取圖像數(shù)據(jù)并將其保存至存儲設備。另外,還可通過地面控制端實現(xiàn)拍攝的遠程控制。在設計思路上,采用軟硬件結合的嵌入式設計方式和模塊化的設計思想,使開發(fā)過程靈活高效并方便以后的功能擴展和改進。
車載無人機遙感系統(tǒng)包含眾多功能模塊,本文涉及到兩部分,其有效性與穩(wěn)定性還需進一步測試與實驗。
[1] 廖玉佳.簡析無人機遙感的應用[J].科技傳播,2013,12:121-122.
Liao Y J.Analysis on theapplicationof unmanned aerial vehicleremote sensing[J].Public Communication of Science and Technology,2013,12:121-122.
[2] 李德仁,李 明.無人機遙感系統(tǒng)的研究進展與應用前景[J].武漢大學學報,2014,39(5):505-513.
Li D R,Li M.Research advance and application prospect of unmanned aerial vehicle remote sensing system [J].Geomatics and Information Science of Wuhan University,2014,39(5):505-513.
[3] 王 振.應急通信指揮車中的車載設備管理平臺[D].合肥:合肥工業(yè)大學,2010.
Wang Z.Platform of equipment management on vehicles for emergency communication[D].Hefei:Hefei University of Technology,2010.
[4] 廖 微,王少華,彭向軍,戴 健.應急指揮地理信息系統(tǒng)的設計與實現(xiàn)[J].電子設計工程,2015,23(3):54-56.
Liao W,Wang S H,Peng X J,Dai J.Design and implementation of the construction of emergency command GIS[J].Electronic Design Engineering,2015,23(3):54-56.
[5] 吳正鵬,奚 歌,柳雨彤,張曉東.無人機低空遙感系統(tǒng)傳感器選型研究[J].城市勘測,2013,(5):50-52.
Wu Z P,Xi G,Liu Y T,Zhang X D.Research on sensor selection for UAV low-altitude remote sensingsystem [J].Urban Geotechnical Investigation and Surveying,2013,(5):50-52.
[6] 谷靜博,關桂霞,趙海盟,譚 翔,晏 磊,王文祥.地應力監(jiān)測中定位與姿態(tài)數(shù)據(jù)采集系統(tǒng)設計[J].計算機應用,2014,34(9):2752-2756.
Gu J B,Guan G X,Zhao H M,Tan X,Yan L,Wang W X.Design of positioning and attitude data acquisition system for geostress monitoring[J].Journal of Computer Applications,2014,34(9):2752-2756.
[7] 吳燕燕,賀鋒濤.基于ARM9平臺上Qt/Embedded的移植與開發(fā)[J].液晶與顯示,2013,28(2):261-265.
Wu Y Y,He F T.Qt/Embedded transplantation and development based on ARM9platform [J].China Journal of Liquid Crystals and Displays,2013,28(2):261-265.
[8] 吳 健.基于ARM的嵌入式 USB圖像采集與處理系統(tǒng)[D].合肥:合肥工業(yè)大學,2012.
Wu J.Image acquisition and processing system based on embedded ARM by USB camera[D].Hefei:Hefei University of Technology,2012.
[9] 劉 鑫.基于ARM的圖像采集系統(tǒng)設計[D].武漢:武漢理工大學,2007.
Liu X.Design of image acquisition system based on ARM[D].Wuhan:Wuhan University of Technology,2007.
[10] 宋 亮,陳瑜軒.淺談圖像處理與BMP圖像文件格式[J].電子設計工程,2014,22(7):188-190.
Song L,Chen Y X.The image processing and BMP image file format[J].Electronic Design Engineering,2014,22(7):188-190.
[11] 嚴 賢,韓秀玲.基于Qt的串口通信應用研究與實現(xiàn)[J].微計算機信息,2012,28(8):114-116.
Yan X,Han X L.Research and implementation on serial communication based on Qt[J].Microcomputer Information,2012,28(8):114-116.
[12] 劉志華.基于ARM和Linux的視頻圖像采集系統(tǒng)[J].微型機與應用,2014,33(3):12-14.
Liu Z H.Video image acquisition system based on ARM and Linux [J].Microcomputer and It′s Applications,2014,33(3):12-14.
[13] 張文凱,關桂霞,趙海盟,王明志,吳太夏,晏 磊.小衛(wèi)星模擬系統(tǒng)中多路串行通信系統(tǒng)設計[J].計算機應用,2013,33(12):3477-3481.
Zhang W K,Guan G X,Zhao H M,Wang M Z,Wu T X,Yan L.Design of multi-serial communication for microsatellite simulation system [J].Journal of Computer Applications,2013,33(12):3477-3481.
[14] 張 偉,劉 爽,王炳義,朱 琳.基于ARM的CCD數(shù)據(jù)遠程采集系統(tǒng)設計[J].微計算機信息,2009,25(4-1):89-90.
Zhang W,Liu S,Wang B Y,Zhu L.ARM-based CCD remote data collection system design [J].Microcomputer Information,2009,25(4-1):89-90.
[15] 趙海盟,張文凱,谷靜博,王 強,沈路寧,晏 磊.無人機載荷航拍控制系統(tǒng)設計[J].計算機應用,2015,35(1):270-275.
Zhao H M,Zhang W K,Gu J B,Wang Q,Shen L N,Yan L.Design of aerial photography control system for unmanned aerial vehicle[J].Journal of Computer Applications,2015,35(1):270-275.