国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式無線視頻傳輸系統(tǒng)在艦載無人機上的應用研究

2020-09-22 10:03周文博張勇孫良義蘇軍
軟件工程 2020年9期

周文博 張勇 孫良義 蘇軍

摘 ?要:針對現有的視頻傳輸系統(tǒng)存在的技術復雜、研發(fā)周期長、研制成本高等問題,本文以嵌入式技術為基礎結合開源高效的OpenCV(Open Source Computer Vision Library)視頻覺庫,設計和實現了一種可應用于艦載無人機的無線視頻傳輸系統(tǒng)。該系統(tǒng)采用Client/Server的架構模式,以嵌入式ARM(Advanced RISC Machine)開發(fā)板做為視頻信息采集的硬件平臺,通過搭建的MJPG-streamer服務器軟件對視屏模塊采集的信息進行處理和傳輸;以Visual Studio 2010作為軟件開發(fā)平臺,利用OpenCV技術構建了客戶端視頻實時顯示與存儲軟件;測試表明:該系統(tǒng)能有效實現視頻信息的采集、處理、傳輸,以及實時顯示與存儲;系統(tǒng)運行穩(wěn)定,遠程獲取得到視頻數據清晰流暢;系統(tǒng)軟硬件成本較低且采用免費跨平臺的開源控件簡單易于推廣使用,具備一定的實用價值。

關鍵詞:艦載無人機;視頻傳輸;OpenCV;ARM

中圖分類號:TP391 ? ? 文獻標識碼:A

Research on the Application of Embedded Wireless Video Transmission

System in Shipboard Unmanned Aerial Vehicle

ZHOU Wenbo, ZHANG Yong, SUN Liangyi, SU Jun

(Unit 91388 of PLA, Zhanjiang 524022, China)

1325157181@qq.com; 1845971@qq.com; 26900939@qq.com; soldierales@163.com

Abstract: Aiming at the defects of the existing video transmission systems, such as complex technology, long period of development and high development cost, this paper designs and implements a wireless video transmission system which can be applied to shipborne Unmanned Aerial Vehicle (UAV), based on embedded technology and efficient Open Source Computer Vision Library (OpenCV). Adopting the Client / Server architecture and using the embedded ARM (Advanced RISC Machine) development board as the hardware platform for video information collection, this system processes and transmits information collected by the video module through the MJPG-streamer server software. Taking Visual Studio 2010 as the software development platform, this system uses OpenCV technology to build the real-time display and storage software of the client video. The experiment result shows that this system can effectively collect, process, transmit, real-time display and store video information. This system also runs stably with clear and smooth video data. This system is easy to be widely applied because of its low cost of hardware and software with free cross-platform open source control.

Keywords: shipborne UAV; video transmission; OpenCV; ARM

1 ? 引言(Introduction)

艦載無人機[1]是一種可裝備在驅逐艦、護衛(wèi)艦和海事船[2]等水面平臺,用以執(zhí)行空中航拍、海洋監(jiān)測、海事執(zhí)法和搜索救援等任務的特殊無人機,與有人駕駛飛機相比,其具有使用成本低、機動性能好、智能化程度高且容易布放與回收等特點,在民用和軍用領域應用前景廣闊。實時有效獲取艦載無人機作業(yè)現場的視頻圖像數據,對其加以分析處理不僅能有效提升艦載無人機在海域空域中偵查搜索、目標識別及跟蹤監(jiān)測等多方面的性能,同時高清的視頻圖像還能為后方指控人員制定決策提供參考依據,根據作業(yè)現場情況變化實時調整任務。然而現有視頻傳輸系統(tǒng)采用的技術大多較為復雜、技術整合難度大、研制周期長、研發(fā)成本高[3],因此,研究艦載無人機視頻傳輸技術,進一步降低其研制和使用成本,對于促進艦載無人機技術的應用和發(fā)展具有重要意義。

基于上述背景,本文設計和實現了一種可應用于艦載無人機的嵌入式Linux無線視頻傳輸系統(tǒng),該系統(tǒng)通過嵌入式ARM開發(fā)板搭載的視頻模塊實現對無人機作業(yè)現場視頻信息的采集,采用MJPG-streamer[4]視頻服務器對采集到的視頻信息進行處理和傳輸,利用OPenCV[5]技術實現采集的圖像數據在遠程客戶端實時顯示與存儲。

2 ? 系統(tǒng)總體設計(Overall system design)

視頻傳輸系統(tǒng)采用服務器與客戶端(Client/Sever)結構,服務器端負責艦載無人機視頻圖像信息的采集、壓縮編碼和傳輸,客戶端負責實現數據的顯示與存儲。其中服務器端主要包含嵌入式ARM開發(fā)板、無線通信模塊和視頻模塊等硬件,采用嵌入式Linux作為服務器端的操作系統(tǒng),通過MJPG-streamer視頻服務器將采集的視頻信息編碼處理以流的形式經無線模塊傳輸至客戶端??蛻舳擞布饕蔁o線通信模塊和PC(Personal Computer)機組成,以Visual Studio 2010作為客戶端軟件開發(fā)平臺,利用OpenCV技術實現圖像數據在客戶端的顯示和存儲,系統(tǒng)的總體設計如圖1所示。

系統(tǒng)選用OK6410嵌入式開發(fā)板作為服務器端的硬件平臺,其搭載基于ARM1176JZF-S內核的SamsungS3C6410微處理器,主頻標配為533MHz,最高可運行至667MHz,開發(fā)板支持硬件編解碼,外圍配置USB Host、USB Device、Audio、SD/MMC/SDIO等多種接口,支持WinCE6.0、Linux3.0.1、Android2.3.4等多種操作系統(tǒng),開發(fā)板在音視頻處理[6]、圖像顯示方面性能優(yōu)異,已有較多的成功應用案例。

系統(tǒng)采用BL-LW05-2M模塊作為無線通信模塊,該模塊采用RalinkRT3070L芯片實現信息的收發(fā),最大可實現150M/bps的傳輸速率,具有Infrastructure Mode、AdHoc Mode和AP三種工作模式,兼容Linux、Windows、Wince等多種操作系統(tǒng),開發(fā)設計方便。

視頻模塊選用LogitechC270高清USB網絡攝像頭,其具備動態(tài)130萬像素、最高30幀/s的圖像輸出速率,采用USB2.0傳輸接口,便于與ARM開發(fā)板搭載連接,且作為標準的UVC設備,在Linux操作系統(tǒng)下可以免驅使用。

3 ?服務器端軟件實現(Server-side software implementation)

3.1 ? 嵌入式Linux系統(tǒng)的移植

在OK6410開發(fā)板上移植嵌入式Linux系統(tǒng)步驟包括安裝交叉編譯組件、Uboot編譯、kernel編譯和最小文件系統(tǒng)的制作等步驟。具體過程簡述如下:

(1)將交叉編譯組件源碼解壓至虛擬機ubnutu系統(tǒng)中的/usr/local/arm文件夾下,在etc/profile文件中設置交叉編譯器的搜索路徑。

(2)將開發(fā)板提供的Uboot源碼拷貝至虛擬機解壓,將相關參數配置成與開發(fā)板相對應的版本,執(zhí)行“make”命令,對Uboot進行編譯,得到其鏡像文件。

(3)解壓嵌入式Linux的內核源碼,執(zhí)行“make menuconfig”命令對內核進行裁剪配置,執(zhí)行“make zImage”命令生成內核鏡像文件。

(4)執(zhí)行“make menuconfig”命令對BusyBox進行配置,然后執(zhí)行“make”命令對BusyBox進行編譯,根據生成的文件配置項目所需的最小文件系統(tǒng)。

(5)將Uboot鏡像文件、內核鏡像文件和最小文件系統(tǒng)燒寫到嵌入式OK6410開發(fā)板上,至此Linux系統(tǒng)在服務器硬件平臺上的移植工作完成。

3.2 ? 無線網卡驅動的移植

為了確保無線通信模塊的正常使用,需要在嵌入式開發(fā)板上移植無線通信模塊驅動,將驅動源碼拷貝內核目錄下,解壓后使用cd命令進入驅動模塊的文件夾,對makefile文件進行如下修改:

(1)進行芯片選型設置CHIPSET = 3070,硬件平臺選型設置PLATFORM= SMDK。

(2)在如下位置處添加內核源碼路徑和交叉編譯器路徑:

ifeq ($(PLATFORM),SMDK)

LINUX_SRC = 內核源碼路徑

CROSS_COMPILE = 交叉編譯器的路徑

(3)執(zhí)行“make”命令,對驅動進行編譯,將生成的rt3070sta.ko文件拷貝至開發(fā)板上,即可完成無線網卡驅動的移植。

3.3 ? MJPG-streamer服務器移植

MJPG-streamer是一款免費開源的視頻流服務器軟件,該軟件采用LinuxC語言編寫,在不同的計算機平臺間具有較好的移植性,繼承自uvc_streamder組件,能較好兼容Linux_uvc的攝像頭,通過V4L2接口從視頻模塊采集視頻信息,具備利用視頻模塊的硬件壓縮功能實現對圖片信息的處理,能有效降低服務器端CPU的載荷,提高系統(tǒng)的運行效率;其將采集的圖像數據處理生成為JPEG格式,以數據流的形式通過網絡發(fā)送至客戶端,用戶只需通過IP地址即可在客戶端的瀏覽器實現對視頻數據流的實時獲取。MJPG-streamer服務器軟件視頻信息處理流程如圖2所示。

MJPG-streamer基于jpeg庫來處理視頻圖像數據,為確保Mjpeg-streamer在嵌入式ARM開發(fā)板上能正常運行必須先移植jpeg庫,具體過程如下:

(1)jpeg庫的編譯與移植

首先,配置jpeg庫,添加交叉編譯組件的搜索路徑和交叉編譯后文件的保存目錄。

其次,分別執(zhí)行“make”“make install”命令。

最后,將編譯生成的文件拷貝到開發(fā)板。

(2)MJPG-streamer編譯與移植

首先,將服務器源碼頂層文件夾及plugins文件夾中各子文件夾中make文件中的編譯器修改為開發(fā)板指定的交叉編譯版本。

其次,對plugins目錄下input_uvc文件夾中Makfile文件進行修改,添加對jpeg庫的支持。

最后,執(zhí)行編譯命令,將生成的.so文件拷貝到開發(fā)板對應的目錄下,至此MJPG-streamer移植工作完成。

4 ? 客戶端軟件實現(Client software implementation)

本文以Visual Studio 2010作為客戶端軟件開發(fā)平臺,結合Visual Studio 2010平臺下的MFC(Microsoft Foundation Class)技術和OPenCV機器視覺庫,實現艦載無人機無線視頻傳輸系統(tǒng)客戶端軟件的開發(fā)。

MFC是微軟基礎類庫的簡稱,其以C++類的形式封裝了Windows API(Application Programming Interface),庫中包含大量Windows句柄封裝類、Windows的內建控件和組件的封裝類[7],使用該類庫進行軟件開發(fā)可以在很大程度上的減小程序設計人員的工作量。

OpenCV為開源的跨平臺計算機視覺庫,該庫采用C及C++語言編寫,庫內的代碼經過優(yōu)化,具有較高計算效率,其提供友好的機器視覺接口函數,能有效縮短復雜機器視覺產品的研發(fā)時間[8]。

4.1 ? 視頻數據實時顯示

本文基于OpenCV庫中的VideoWrite類實現視頻信息的實時顯示,該類提供了從攝像機和視頻文件獲取視頻數據的接口,用以讀取和控制視頻流、處理每一幀圖像;為達到實時采集與顯示的效果,使用Visual Studio 2010提供的軟件定時器,設置每10毫秒從視頻數據流中讀取當前每一幀視頻數據,并將其在Visual Studio 2010的Picture控件中周期性的更新顯示出來。無線視頻傳輸系統(tǒng)的實時顯示功能實現步驟如下:

(1)使用VideoCapture類的Open()函數實現對視頻服務器的視頻流獲取。

capture.open("http://192.168.***.**:8080/?action=stream?dummy=param.mjpg");

(2)創(chuàng)建視頻播放顯示的窗口。

namedWindow("ImageShow");

hWnd = (HWND)cvGetWindowHandle

("ImageShow");

hParent=::GetParent(hWnd);

::SetParent(hWnd,GetDlgItem(IDC_STATIC)->m_hWnd);

::ShowWindow(hParent,0);

通過namedWindow()函數指定ImageShow為視屏顯示的窗口,并獲取該窗口的指針hWnd,為了使視頻數據能在基于MFC類庫編寫的軟件界面上顯示,使用SetParent()函數將MFC的Picture控件設置為ImageShow窗口的父窗口。

(3)設置軟件定時器。

SetTimer(1,10,NULL);

使用SetTimer()函數創(chuàng)建一個ID號為1的定時器,設置該定時器每10毫秒觸發(fā)一次MFC類的WM_TIMER消息并通過OnTimer()函數對觸發(fā)的消息進行響應和處理。

(4)編寫OnTimer()函數響應定時器1的觸發(fā)消息,實現對視頻數據的實時獲取和顯示。

Void CvideoDlg::OnTimer(UINT_PTR nIDEvent)

{

……

case 1:// 對定時器1的觸發(fā)消息進行響應

{

//采集每一幀圖像并對其進行顯示

}

……

}

可在OnTimer()函數中對獲取到的每一幀視頻數據進行處理,如圖像去抖、特征點提取、目標監(jiān)測等相關操作,直至完成數據的采集、處理和播放。

(5)視頻采集結束后,終止定時器。

KillTimer(1);

視頻數據實時顯示功能實際測試效果分別如圖3和圖4所示。

圖3和圖4分別為室內環(huán)境下和戶外遠程測試環(huán)境下的視頻數據采集和實時顯示情況,由圖3和圖4可知客戶端獲取得到的視頻數據清晰,系統(tǒng)運行流暢無卡頓。

4.2 ? 視頻數據的保存

本文基于OpenCV庫中的VideoWrite類實現視頻信息的寫入存儲,為確保視頻數據的連續(xù)不間斷保存,使用Visual Studio 2010提供的軟件定時器,設置了每10毫秒從視頻流中獲取一幀圖像數據,然后將每一幀圖像數據經VideoWrite類write()函數周期性寫入事先指定的視頻文件。視頻保存功能實現步驟如下:

(1)使用VideoWrite類的Open()函數對即將保存的視頻數據進行文件名、視頻編碼格式、幀率、保存視頻的高度和寬度等參數進行設置。

time=CTime::GetCurrentTime();

m_strTime = time.Format("%Y年%m月%d日%H時%M分%S秒");

sprintf(vname,"E:\\robot%s.avi", m_strTime);

fps = capture.get(CAP_PROP_FPS);

size((int)capture.get(CAP_PROP_FRAME_WIDTH),(int)capture.get(CAP_PROP_FRAME_HEIGHT));

writer.open(vname,CV_FOURCC('M', 'J', 'P', 'G'), 25, size);

(2)創(chuàng)建軟件定時器。

SetTimer(2,10,NULL);

創(chuàng)建一個ID號為2的軟件定時器,設置觸發(fā)時間為10毫秒。

(3)根據需要在MFC提供的回調函數OnTimer()中實現將視頻信息的周期性寫入指定的視頻保存文件,代碼如下:

Void CvideoDlg::OnTimer(UINT_PTR nIDEvent)

{

……

case 2://對定時器2的觸發(fā)消息進行響應

{

//處理每一幀圖像,將其按規(guī)定的格式寫入指定的文件

}

……

}

(4)視頻數據存儲完成時,關閉定時2。

KillTimer(2);

視頻保存測試效果如圖5所示。

5 ? 結論(Conclusion)

本文設計和實現了一種可應用于艦載無人機的基于嵌入式Linux技術的無線視頻傳輸系統(tǒng)。該系統(tǒng)采用Client/Sever的架構模式,以嵌入式RAM開發(fā)板作為視頻信息采集的硬件平臺,通過搭建MJPG-streamer服務器軟件對視屏模塊采集的信息進行處理和傳輸;以Visual Studio 2010作為遠程客戶端開發(fā)平臺,利用OpenCV技術構建了客戶端視頻實時顯示和存儲軟件;測試表明:該系統(tǒng)能有效實現視頻信息的采集、處理、傳輸以及顯示和存儲功能,系統(tǒng)運行穩(wěn)定,遠程客戶端獲取得到的視頻信息清晰流暢,系統(tǒng)軟硬件成本較低且采用免費跨平臺的開源控件簡單易于推廣使用,具備一定的實用價值。

參考文獻(References)

[1] 劉振興,戴耀.艦載無人機系統(tǒng)電子對抗作戰(zhàn)運用研究[J].飛航導彈,2017(3):53-56.

[2] 陳劍棟,蔡程,上官信.淺談無人機在海事監(jiān)管領域的應用[J].珠江水運,2019,480(08):38-40.

[3] 姜永成,周正干,任福君.基OpenC的移動機器人視頻流采集與處理[J].機床與液壓,2010,038(015):40-43.

[4] 宋蘊璞,陳元.基于嵌入式Linux及MJPG-streamer的雙目立體視覺系統(tǒng)設計[J].物聯(lián)網技術,2016,6(3):102-104.

[5] 卓磊,周律,楊麗紅.基于穿線法的計算器數字識別[J].軟件工程,2018(12):1-3.

[6] 楊東瓊,云利軍,王坤.Linux和OK6410環(huán)境下視頻圖像的采集與顯示[J].云南師范大學學報:自然科學版,2016,36(170):52-57.

[7] 王偉.雷達模擬器系統(tǒng)研制與開發(fā)[D].荊州:長江大學,2013.

[8] 吳昭質.火災視頻識別及遠程智能報警系統(tǒng)[D].南京:南京郵電大學,2015.

作者簡介:

周文博(1986-),男,碩士,助理工程師.研究領域:嵌入式開發(fā),視頻監(jiān)控.

張 ?勇(1977-),男,碩士,工程師.研究領域:嵌入式開發(fā),無線電導航定位.

孫良義(1981-),男,本科,工程師.研究領域:視頻監(jiān)控,無線電導航定位.

蘇 ?軍(1980-),男,碩士,工程師.研究領域:嵌入式開發(fā),水聲通信.