999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UVC協(xié)議的ROS視頻監(jiān)控系統(tǒng)設(shè)計*

2015-09-21 01:30:20肖宇
關(guān)鍵詞:功能設(shè)備系統(tǒng)

朱 鴿 ,鄭 杰 ,肖宇 峰

(1.西南科技大學 信息工程學院,四川 綿陽 621010;2.西南科技大學 特殊環(huán)境機器人技術(shù)四川省重點實驗室,四川 綿陽 621010)

0 引言

視頻監(jiān)控系統(tǒng)一直是嵌入式平臺研究中的一個重要方向,Linux系統(tǒng)具有源代碼開放、內(nèi)核穩(wěn)定、可裁減性、支持硬件廣泛及驅(qū)動豐富等特點[1],嵌入式視頻監(jiān)控多采用Linux作為其軟件平臺[2]。機器人操作系統(tǒng)ROS(Robot Operating System)是一種次級操作系統(tǒng)[3],易用性、開發(fā)效率高、跨平臺、代碼可復用成為ROS的主要優(yōu)點,目前已有多款嵌入式機器人平臺使用ROS作為其控制系統(tǒng),如PR2、TurtleBot等。

本文設(shè)計實現(xiàn)了應(yīng)用于ROS平臺的視頻監(jiān)控系統(tǒng)。ROS系統(tǒng)為FireWire(IEEE1394)攝像頭提供了官方支持,1394也稱火線接口,優(yōu)點是傳輸速度快,缺點是其針形接口兼容性差。相比之下USB攝像頭兼容性強,安裝方便,且價格便宜,本課題的視頻采集設(shè)備采用USB攝像頭。

本文從系統(tǒng)結(jié)構(gòu)設(shè)計、UVC(USB Video Class)視頻類協(xié)議傳輸方法、V4L2(Video for Linux 2)視頻采集程序幾個方面來完成系統(tǒng)設(shè)計,最后設(shè)計出應(yīng)用于ROS上的uvc_cam視頻采集功能包,實現(xiàn)圖像采集與視頻監(jiān)控功能,為嵌入式ROS機器人平臺的視頻監(jiān)控開發(fā)提供一種有效的方法。

1 系統(tǒng)結(jié)構(gòu)設(shè)計

本文的目的是設(shè)計實現(xiàn)基于ROS系統(tǒng)平臺的視頻監(jiān)控系統(tǒng)。ROS起源于2007年斯坦福大學人工智能實驗室的項目與機器人技術(shù)公司W(wǎng)illow Garage的個人機器人項目之間的合作[4]。ROS主要支持Ubuntu系統(tǒng),提供類似操作系統(tǒng)所提供的功能。

本文設(shè)計的視頻監(jiān)控系統(tǒng)采用USB視頻采集設(shè)備,設(shè)計基于UVC視頻類協(xié)議的視頻數(shù)據(jù)傳輸方法,并利用ROS系統(tǒng)底層提供的V4L2視頻編程接口完成視頻采集程序的設(shè)計,最后根據(jù)ROS的系統(tǒng)構(gòu)架完成視頻采集功能包uvc_cam的設(shè)計,實現(xiàn)ROS操作系統(tǒng)平臺的視頻監(jiān)控功能。

系統(tǒng)結(jié)構(gòu)如圖1所示。

2 基于UVC協(xié)議的視頻傳輸方法

2.1 UVC標準及支持

由于視頻采集模塊不同、傳輸協(xié)議不同等原因,ROS系統(tǒng)需要安裝不同的USB驅(qū)動程序,這給移動機器人平臺的使用帶來很多不便。針對此問題,本文設(shè)計基于UVC協(xié)議規(guī)范的視頻傳輸方法,使ROS系統(tǒng)為符合UVC視頻類標準的USB攝像頭提供通用驅(qū)動,方便安裝和使用。

2.2 UVC協(xié)議視頻端口描述符設(shè)計

一個USB視頻類設(shè)備接入ROS平臺后需要通過描述符讓ROS主機獲得它的屬性和被確認為標準的USB類設(shè)備,這些描述符是標準的USB描述符,并在其子描述符中定義了USB設(shè)備的各種功能[5]。對于視頻設(shè)備的每個功能,需要一個視頻控制端口和一個或多個視頻流端口實現(xiàn)[6]。本文系統(tǒng)設(shè)計的視頻接口描述符及功能如下:

(1)輸入終端描述:一個實體代表數(shù)據(jù)流的開始端點,描述了圖像視頻流數(shù)據(jù)的來源。

(2)相機終端描述:相機終端控制傳輸視頻流的設(shè)備組件的機械特性。

(3)選擇單元描述:起著源選擇器的作用,選擇多個輸入數(shù)據(jù)流并路由它們到單一的輸出流。

(4)處理單元描述:描述了對圖像亮度、色調(diào)、對比度、平移、變焦等參數(shù)的處理。

(5)輸出終端描述:將終端描述為前面的幾個部分和主機之間的端口,將視頻數(shù)據(jù)輸出,通過顯示屏顯示。

2.3 UVC設(shè)備拓撲結(jié)構(gòu)

UVC標準的視頻控制接口包含了USB視頻采集、處理、輸出相關(guān)組件,視頻流接口包含了與主機之間實現(xiàn)交互的組件,這些組件構(gòu)成本文系統(tǒng)設(shè)計的UVC設(shè)備拓撲結(jié)構(gòu),如圖2。

圖2 UVC設(shè)備拓撲結(jié)構(gòu)

一個符合UVC規(guī)范的USB攝像頭插入到ROS平臺接口時,從視頻傳感器得到的數(shù)據(jù)流由相機終端輸入,復合視頻設(shè)備得到的數(shù)據(jù)流從輸入終端進入,在本系統(tǒng)的設(shè)計中,相機終端和輸入終端兩個功能組件由USB視頻采集模塊來完成。然后經(jīng)過選擇單元路由后交給處理器進行亮度、對比度等優(yōu)化,最后由輸出終端綁定到USB端點并與ROS主機進行交互,完成視頻流處理,ROS主機獲取該USB攝像頭的屬性和功能。

3 基于V4L2的視頻采集程序設(shè)計

3.1 V4L2應(yīng)用編程接口

V4L2是由Bill Dirks[7]設(shè)計完成的針對Linux的視頻捕捉應(yīng)用程序接口。V4L2是V4L的升級版本[8],與V4L相比,有更好的擴展性和靈活性。V4L2對 V4L做了徹底改動,因此兩者并不兼容,V4L2最大的優(yōu)勢是可以自定義設(shè)備驅(qū)動緩存數(shù)量,支持的硬件設(shè)備也更多[9]。

本系統(tǒng)的視頻采集程序設(shè)計部分采用V4L2標準框架,V4L2不僅是針對UVC免驅(qū)USB設(shè)備的編程框架,同時ROS操作系統(tǒng)底層也提供了V4L2編程接口。

3.2 V4L2視頻采集模型

V4L2在視頻采集中用到的兩個重要系統(tǒng)調(diào)用函數(shù)是 ioctl()和 mmap()。 ioctl()是設(shè)備接口控制函數(shù),對設(shè)備的I/O通道進行控制,視頻采集過程中獲取設(shè)備功能、設(shè)置幀格式、申請幀緩沖等操作函數(shù)都將通過該系統(tǒng)調(diào)用實現(xiàn)。

ioctl()語法為:ioctl(int fd,int request,void*argp),fd為通過open()函數(shù)獲得的設(shè)備文件描述符;request為系統(tǒng)調(diào)用類型,用于告訴系統(tǒng)操作的動作,如VIDIOC_QUERYCAP是獲取設(shè)備功能;argp是用戶數(shù)據(jù)指針,用于參數(shù)傳遞和數(shù)據(jù)接收。

mmap()系統(tǒng)調(diào)用使得進程之間通過映射同一普通文件來實現(xiàn)共享內(nèi)存,實現(xiàn)從內(nèi)核空間到用戶空間的映射,不需要任何數(shù)據(jù)拷貝,提高了數(shù)據(jù)傳輸效率。在本系統(tǒng)設(shè)計中,還會用到幾個 V4L2常用的API函數(shù):open()用于打開一個設(shè)備,close()函數(shù)用于關(guān)閉一個設(shè)備,read()函數(shù)用于從設(shè)備讀取數(shù)據(jù)。

3.3 V4L2視頻采集程序設(shè)計

基于V4L2編程規(guī)范和視頻采集模型,本文設(shè)計的視頻采集程序流程及其對應(yīng)的操作函數(shù)如圖3。

圖3 視頻采集流程及操作函數(shù)

4 ROS視頻傳輸實現(xiàn)方法

4.1 ROS系統(tǒng)構(gòu)架

ROS的首要設(shè)計目標是在機器人研發(fā)領(lǐng)域提高代碼復用率。ROS可以分成兩層,低層為操作系統(tǒng)層,高層則是廣大用戶群貢獻的實現(xiàn)不同功能的各種軟件包,例如定位繪圖、行動規(guī)劃、感知、模擬等。ROS是一種分布式處理框架(又稱Nodes),這使可執(zhí)行文件能被單獨設(shè)計,并且在運行時松散耦合。這些過程可以封裝到數(shù)據(jù)包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。

計算圖級是ROS處理數(shù)據(jù)的一種點對點的網(wǎng)絡(luò)形式。程序運行時,所有進程以及它們所進行的數(shù)據(jù)處理將會通過一種點對點的網(wǎng)絡(luò)形式表現(xiàn)出來。主要包括以下幾個重要概念:

(1)節(jié)點(node):一些執(zhí)行運算任務(wù)的進程。

(2)消息(message):節(jié)點之間通過傳送消息進行通信。

(3)主題(topic):消息以一種發(fā)布/訂閱的方式傳遞。一個節(jié)點可以在一個給定的主題中發(fā)布消息。

4.2 uvc_cam功能包結(jié)構(gòu)及設(shè)計

結(jié)合ROS系統(tǒng)構(gòu)架,本節(jié)將敘述基于UVC協(xié)議的ROS視頻傳輸功能包uvc_cam的設(shè)計方法。上節(jié)講解了節(jié)點、消息等概念,ROS中有無數(shù)的節(jié)點、消息、服務(wù)、工具和庫文件,需要有效的結(jié)構(gòu)去管理這些代碼。ROS文件系統(tǒng)級指的就是在硬盤上面查看的ROS源代碼的組織形式,而功能包(packge)就是ROS中組織軟件的主要形式。一個簡單的ROS功能包包括一個存放源代碼的src文件夾、一個 CMakelists.txt文件、一個manifest.xml文件。

圖4是uvc_cam功能包的設(shè)計結(jié)構(gòu)圖。

(1)src文件夾存放源程序,包括視頻采集程序uvc_cam.cpp、視頻采集節(jié)點實現(xiàn)程序uvc_cam_node.cpp、頭文件uvc_cam.h。

(2)CMakeList.txt文件包含了用于安裝動態(tài)鏈接庫和生成可執(zhí)行文件的語句。下面是該文件中的兩條核心語句:

圖4 uvc_cam包的結(jié)構(gòu)設(shè)計圖

rosbuild_add_library(uvc_cam src/uvc_cam/uvc_cam.cpp),由uvc_cam.cpp編譯建立視頻采集的鏈接庫。

rosbuild_add_executable (uvc_cam_node src/uvc_cam_node.cpp),該句的功能是由uvc_node_cam.cpp編譯添加可執(zhí)行的視頻采集節(jié)點文件uvc_cam_node。

(3)manifest.xml提供關(guān)于uvc_cam功能包的元數(shù)據(jù),包括它的許可信息以及與其他功能包之間的依賴關(guān)系。

4.3 結(jié)果驗證

前面已經(jīng)描述了ROS系統(tǒng)構(gòu)架計算圖級和點對點的數(shù)據(jù)處理方式。圖5是本文設(shè)計實現(xiàn)ROS視頻監(jiān)控的節(jié)點拓撲關(guān)系圖。

圖5 視頻監(jiān)控實現(xiàn)節(jié)點關(guān)系

一個終端打開視頻采集節(jié)點uvc_cam_node,另外一個終端打開圖像顯示節(jié)點image_view,兩個節(jié)點之間通過/camera/rgb/image_color進行話題發(fā)布和消息訂閱,uvc_cam_node節(jié)點實現(xiàn)視頻采集,在image_view節(jié)點的終端顯示,效果如圖6。

圖6 視頻監(jiān)控效果

5 結(jié)束語

本文設(shè)計并實現(xiàn)了ROS平臺上的視頻監(jiān)控系統(tǒng),介紹了ROS在結(jié)構(gòu)和功能上的優(yōu)越性。結(jié)合本文的系統(tǒng)結(jié)構(gòu),設(shè)計了基于UVC視頻類協(xié)議的視頻數(shù)據(jù)傳輸方法,實現(xiàn)了UVC規(guī)范的USB攝像頭與ROS系統(tǒng)平臺的即插即用,避免了ROS系統(tǒng)接口兼容性和驅(qū)動安裝等問題帶來的不便。詳細描述了V4L2視頻采集程序設(shè)計流程和系統(tǒng)調(diào)用函數(shù),有效地利用了ROS系統(tǒng)提供的應(yīng)用編程接口。最后根據(jù)ROS的系統(tǒng)構(gòu)架,設(shè)計了uvc_cam視頻采集程序功能包,實現(xiàn)視頻采集和傳輸功能。該系統(tǒng)有良好的設(shè)備兼容性和實用性,視頻采集性能穩(wěn)定,實時性好,是嵌入式ROS系統(tǒng)平臺上實現(xiàn)視頻監(jiān)控的一種有效方法。

[1]劉志華.基于 ARM和 Linux的視頻圖像采集系統(tǒng)[J].微型機與應(yīng)用,2014,33(3):12-14.

[2]王飛,孔聰.基于V4L2的Linux攝像頭驅(qū)動的實現(xiàn)[J].電子科技,2012,25(2):86-92.

[3]張建偉.開源機器人操作系統(tǒng):ROS[M].北京:科學出版社,2012.

[4]MARTINEZ A.Learning ROS for robotics programming[M].Birmingham: Packt Publishing Ltd,2013.

[5]殷開亮.基于UVC協(xié)議的USB3.0圖像采集系統(tǒng)設(shè)計[D].蘇州:蘇州大學,2014.

[6]USB Implementers Forum,Inc.Universal Serial Bus Device Class Definition for Video Devices: Revision 1.5[S].2012.

[7]DIRKS B.Video for Linux Two API specification:Draft0.12[S].Michael H Schimek.

[8]劉登誠,沈蘇彬,李莉.基于V4L2的視頻驅(qū)動程序設(shè)計與實現(xiàn)[J].微計算機信息,2011,27(10):56-58.

[9]冬雷.DSP原理及開發(fā)技術(shù)[M].北京,清華大學出版社,2007.

猜你喜歡
功能設(shè)備系統(tǒng)
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關(guān)于非首都功能疏解的幾點思考
500kV輸變電設(shè)備運行維護探討
原來他們都是可穿戴設(shè)備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 天天色综网| 亚洲国产综合精品一区| 国产精品香蕉在线| 国产精品真实对白精彩久久| 日韩免费毛片视频| 久久久久88色偷偷| 国产免费精彩视频| 国产精品成人一区二区不卡| 99在线视频免费| 日韩欧美色综合| 欧美亚洲第一页| 午夜a级毛片| 中文字幕在线观| 日a本亚洲中文在线观看| 色综合天天娱乐综合网| 久久精品中文无码资源站| 亚洲啪啪网| 色男人的天堂久久综合| 亚洲综合专区| 久久精品国产亚洲AV忘忧草18| 国产精品视频第一专区| 国产成人一区免费观看| 91久久青青草原精品国产| 精品亚洲国产成人AV| 永久免费无码日韩视频| 亚洲欧美日韩中文字幕一区二区三区| 91精品久久久无码中文字幕vr| 国产免费福利网站| 欧美午夜在线视频| 国产成+人+综合+亚洲欧美| 色香蕉影院| 国产成人艳妇AA视频在线| 国产在线一区视频| а∨天堂一区中文字幕| 亚洲一区二区无码视频| 99久久婷婷国产综合精| 欧美 亚洲 日韩 国产| 久久综合色视频| 精品视频在线观看你懂的一区| 精品无码人妻一区二区| 香蕉99国内自产自拍视频| 亚洲精品免费网站| 免费Aⅴ片在线观看蜜芽Tⅴ| 在线人成精品免费视频| 久久久久人妻一区精品| 国产成人综合日韩精品无码首页| 国产成人精品一区二区秒拍1o | 国产精品大白天新婚身材| 香蕉精品在线| 国产成人成人一区二区| 91av成人日本不卡三区| 国产本道久久一区二区三区| 色综合久久88色综合天天提莫| 亚洲精品福利网站| 亚洲国产成人精品青青草原| 啪啪免费视频一区二区| jijzzizz老师出水喷水喷出| 中文字幕永久在线看| 久久中文字幕不卡一二区| 国产亚洲日韩av在线| 欧美a√在线| 四虎影视永久在线精品| 国产精品成人AⅤ在线一二三四| 日韩小视频在线播放| 国产精品一区二区久久精品无码| 成人综合在线观看| 97视频免费看| 精品欧美视频| 这里只有精品国产| 搞黄网站免费观看| 国产9191精品免费观看| 亚洲综合日韩精品| 亚洲AV无码不卡无码| 国产丝袜丝视频在线观看| 成人午夜亚洲影视在线观看| 麻豆精品在线播放| 国产精品成人一区二区不卡 | 欧美日韩久久综合| 在线高清亚洲精品二区| 欧美五月婷婷| 欧美亚洲国产精品第一页| 亚洲精选无码久久久|