《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 自動裝載與視頻監(jiān)控遠(yuǎn)程控制系統(tǒng)
自動裝載與視頻監(jiān)控遠(yuǎn)程控制系統(tǒng)
2017年微型機與應(yīng)用第1期
李子昌,,李智,,管四海
西安電子科技大學(xué) 機電工程學(xué)院,,陜西 西安 710071
摘要: 設(shè)計了一種嵌入式自動裝載與視頻監(jiān)控系統(tǒng),,并通過網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程控制,。該系統(tǒng)采用S3C2410處理器,,移植Linux操作系統(tǒng),,成功運行在S3C2410上,。視頻監(jiān)控模塊使用的攝像頭是USB接口形式,,移植對應(yīng)的Linux驅(qū)動程序,攝像頭才能正常采集數(shù)據(jù),。移植Libjpeg開源庫,,對經(jīng)硬件壓縮的圖像進(jìn)行解壓,通過顯示終端顯示,,進(jìn)而實時對現(xiàn)場進(jìn)行監(jiān)控,。自動裝載模塊的實現(xiàn),首先設(shè)定期望的貨物擺放路徑,,其次利用Framebuffer幀緩沖寫屏技術(shù)在顯示終端上顯示自動裝載過程,。通過Socket網(wǎng)絡(luò)接口,上位機可對該系統(tǒng)進(jìn)行遠(yuǎn)程控制
Abstract:
Key words :

  李子昌,,李智,,管四海

  (西安電子科技大學(xué) 機電工程學(xué)院,,陜西 西安 710071)

       摘要:設(shè)計了一種嵌入式自動裝載視頻監(jiān)控系統(tǒng),,并通過網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程控制。該系統(tǒng)采用S3C2410處理器,,移植Linux操作系統(tǒng),,成功運行在S3C2410上。視頻監(jiān)控模塊使用的攝像頭是USB接口形式,,移植對應(yīng)的Linux驅(qū)動程序,,攝像頭才能正常采集數(shù)據(jù),。移植Libjpeg開源庫,對經(jīng)硬件壓縮的圖像進(jìn)行解壓,,通過顯示終端顯示,,進(jìn)而實時對現(xiàn)場進(jìn)行監(jiān)控。自動裝載模塊的實現(xiàn),,首先設(shè)定期望的貨物擺放路徑,,其次利用Framebuffer幀緩沖寫屏技術(shù)在顯示終端上顯示自動裝載過程。通過Socket網(wǎng)絡(luò)接口,,上位機可對該系統(tǒng)進(jìn)行遠(yuǎn)程控制,。

  關(guān)鍵詞:S3C2410;Linux,;視頻監(jiān)控,;自動裝載;Libjpeg,;Framebuffer,;Socket

  中圖分類號:TP13文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.01.001

  引用格式:李子昌,李智,,管四海.自動裝載與視頻監(jiān)控遠(yuǎn)程控制系統(tǒng)[J].微型機與應(yīng)用,,2017,36(1):1-3.

  至今為止,多數(shù)傳統(tǒng)工業(yè)領(lǐng)域的貨物裝卸和擺放還是靠人力完成[1],,如搬運水泥,。惡劣的工作環(huán)境和繁重的體力勞動給工作人員帶來巨大的勞動負(fù)擔(dān),且對工人的身體健康有很大的危害,。隨著物聯(lián)網(wǎng)技術(shù)的大力發(fā)展,,如何利用嵌入式技術(shù),設(shè)計一套具有實時視頻監(jiān)控且能自動裝載的系統(tǒng)成為當(dāng)下的關(guān)鍵問題,。

  S3C2410處理器體積小巧,,可節(jié)省板卡空間;功耗比大多數(shù)芯片要低很多,,適合工作在對電源有特殊要求的環(huán)境中,;主頻能夠達(dá)到203 MHz,具有很好的實時性能,;具有內(nèi)存管理單元,,因此可以移植并運行操作系統(tǒng),處理更復(fù)雜的任務(wù)[2],?;谝陨咸攸c,,選擇S3C2410作為本系統(tǒng)主控制器,。Linux操作系統(tǒng)支持創(chuàng)建多個用戶,、處理多個任務(wù)[3],所以基于S3C2410+Linux的嵌入式系統(tǒng)成為第一選擇,。Linux系統(tǒng)內(nèi)核中圖像采集設(shè)備的接口是Video4Linux,,在此接口的基礎(chǔ)上,結(jié)合自己的設(shè)計,,開發(fā)出具有相應(yīng)功能的程序,。基于Video4Linux開發(fā)視頻采集程序具有接口簡單,、容易實現(xiàn),、開發(fā)周期短等特點[4],故受到廣泛關(guān)注,。Libjpeg是一個開源庫,,用來壓縮或解壓JPEG格式的圖像[5],可以在設(shè)計的程序中調(diào)用該庫提供的函數(shù),,完成解壓過程,,減少開發(fā)人員的工作量。Framebuffer[6]是Linux內(nèi)核中可由用戶調(diào)用的函數(shù)接口,,通過這個接口,,可以把圖形設(shè)備當(dāng)成緩沖區(qū)來使用, 圖形設(shè)備的操作與真實緩沖區(qū)的操作完全相同,,可使用戶避免接觸底層繁瑣的操作,,使開發(fā)變得簡單。利用Socket接口,,通過網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程控制,。

  綜上所述,本文提出一種基于S3C2410+Linux的嵌入式自動裝載系統(tǒng),,同時具有對現(xiàn)場進(jìn)行視頻監(jiān)控的功能,。監(jiān)控和裝載系統(tǒng)的軟件是在Linux系統(tǒng)中開發(fā)的,內(nèi)核的版本是2.6.8.1,,移植了相應(yīng)的開源庫,。另外,根文件系統(tǒng)的類型有很多種,,該系統(tǒng)采用的是cramfs[7],,該類型只能讀,不能寫,,對數(shù)據(jù)有保護(hù)功能,。程序的開發(fā)工作主要由移植驅(qū)動和開源庫、實現(xiàn)具有特定功能的程序等構(gòu)成,。視頻監(jiān)控模塊由三部分組成:負(fù)責(zé)采集圖像的zc301p USB接口攝像頭,、負(fù)責(zé)圖像處理的主控制器和顯示視頻的顯示終端,。自動裝載模塊主要由上述的主控制器和LCD顯示設(shè)備組成。自動裝載應(yīng)用程序包括擺放路徑規(guī)劃程序和模擬過程的顯示畫面程序,,并通過網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程控制,。

1視頻監(jiān)控模塊設(shè)計

  視頻監(jiān)控應(yīng)用程序包含圖像數(shù)據(jù)的采集過程設(shè)計、圖像解壓縮函數(shù)的調(diào)用和LCD圖像顯示等,。圖像數(shù)據(jù)采集過程調(diào)用了Video4Linux接口[4],,將攝像頭的數(shù)據(jù)讀取到內(nèi)存中。

  初始化設(shè)備后,,進(jìn)行視頻圖像的截取,。一種視頻截取方式是將read()函數(shù)包含在自己的程序中,這樣程序就可以將緩沖區(qū)數(shù)據(jù)提取出來,;第二種方式是采用內(nèi)存映射的方法讀取數(shù)據(jù),,設(shè)計的程序要包含mmap()函數(shù),在程序中實現(xiàn)映射功能,。內(nèi)存映射的方式有一個很大的優(yōu)點,,就是內(nèi)存共享,可大大提高訪問速度,。這樣對文件的訪問不必再調(diào)用read(),、write()等,各個進(jìn)程能及時看到共享內(nèi)存中數(shù)據(jù)的更新,,進(jìn)而提高實時性,。故此系統(tǒng)采用通過mmap()內(nèi)存映射的方法。

  1.1用Libjpeg解壓jpeg數(shù)據(jù)

  本系統(tǒng)使用的Libjpeg庫是libjpegv6b,,但libjpeg-v6b只支持文件格式的輸入,。由于本系統(tǒng)采用的攝像頭是zc301p,此攝像頭所采集的數(shù)據(jù)是經(jīng)硬件壓縮的jpeg數(shù)據(jù)流,,采集的數(shù)據(jù)直接保存在內(nèi)存中,。然而Libjpeg庫并不支持這樣的輸入。此問題的解決方法是:修改Libjpeg庫的源碼,,使其能夠解壓內(nèi)存中的jpeg數(shù)據(jù)流,。

  1.2視頻顯示模塊

  顯示模塊采用LCD顯示屏,每個像素用16位顏色表示,,格式為RGB565,,但通過Libjpeg庫函數(shù)解壓數(shù)據(jù),得到的圖像為GB888格式,,即24位數(shù)據(jù),,所以需要進(jìn)行格式轉(zhuǎn)化。

  本系統(tǒng)采用的硬件設(shè)備攝像頭采集的單幅圖片最大分辨率為640×480,,所以內(nèi)存映射時,,映射的兩個尺寸參數(shù)必須是這兩個最大值,。Libjpeg解壓出來的圖片與輸入圖片分辨率同樣大。由于顯示器的分辨率是480×272,,當(dāng)輸入是640×480時,超出了顯示屏的尺寸,,圖像顯示不完全,,結(jié)果如圖1。

001.jpg

  Libjpeg支持縮放解壓,,可供選擇的縮放比例有1/2,、1/4、1/8三種,。選擇1/2的縮放比例,,分辨率為320×240,有花屏和明顯的掃描痕跡,,顯示效果如圖2,。

  

002.jpg

  以上兩種情況盡管顯示出來的部分比較清楚,但總體效果不好,。選擇1/4的縮放比例,,分辨率為160×120,畫面比較清晰流暢,,沒有花屏,,也無掃描痕跡,顯示的效果比較理想,,如圖3所示,。

  

003.jpg

  選擇1/8的縮放比例,畫面清晰流暢,,但畫面太小,,不利于實時監(jiān)控,顯示效果如圖4,。

004.jpg

  綜合三種縮放比例的分析和實驗結(jié)果比較可知,,1/4縮放比例是最佳選擇。

2自動裝載的設(shè)計與實現(xiàn)

  自動裝載的實現(xiàn)基于Framebuffer技術(shù),。Linux內(nèi)核fb_ops定義了Framebuffer設(shè)備的操作[6],。

  本系統(tǒng)使用的開發(fā)板型號是FS2410,處理器是S3C2410,。

  由于顯示終端顯示的是RGB565格式,,因此可通過對每個像素點直接賦值使framebuffer顯示顏色。

  下面利用仿真函數(shù)對framebuffer的控制來模擬實際水泥的自動裝載過程,。將顯示終端界面看作水泥擺放區(qū)域,,用一塊白色矩形代表單袋水泥,。從傳送帶落下的水泥每次都落在同一位置,因此選取顯示屏上一個固定區(qū)域作為水泥的落地點,。在此選LCD左上角,,周期性地使這塊區(qū)域變成白色即可。將顯示屏看成一個二維坐標(biāo)系,,落地點為(0,0),,按照路徑先沿行移動、后沿列移動的順序擺放,,考慮到現(xiàn)實中的速度問題,,每移動一步,延遲1 s,。此過程可建模成一個循環(huán)嵌套的過程,,設(shè)定好每個具體位置應(yīng)該移動的步數(shù),實現(xiàn)有序執(zhí)行,。根據(jù)顯示屏的分辨率480×272,,設(shè)定每袋水泥占的區(qū)域大小為60×80,行間隔16,,列間隔10,,即每行為7袋,每列為3袋,,一層共21袋,。設(shè)置不同的背景顏色代表不同的層,而每層的擺放方法是相同的,,以便查看,。在本系統(tǒng)中,共設(shè)計3層,。第一層用藍(lán)色背景表示,,裝載效果如圖5。

 

005.jpg

  第二層用紅色背景表示,,裝載效果如圖6,。

006.jpg

  第三層用綠色背景表示,裝載效果如圖7,。

  

007.jpg

  另外,,定義一個變量記錄裝載的數(shù)量,以供上位機調(diào)用,。

3遠(yuǎn)程控制

  利用socket在ARM開發(fā)板和上位機之間實現(xiàn)網(wǎng)絡(luò)通信,。將上位機和ARM開發(fā)板用交叉網(wǎng)線連接起來,利用socket編程,建立一個socket,,采用服務(wù)器/客戶機的訪問模式,,開發(fā)板作為服務(wù)器端,上位機作為客戶機端,。實現(xiàn)通信后,,利用上位機通過網(wǎng)絡(luò)來直接控制開發(fā)板的工作,實現(xiàn)遠(yuǎn)程控制,。

  在雙方的通信過程中,,約定好一套通信協(xié)議。由于本文只實現(xiàn)了模擬裝載和實時監(jiān)控兩個功能,,因此在遠(yuǎn)程控制時,,只設(shè)定兩個命令即可,。約定好A命令表示模擬裝載,,B命令為觀看監(jiān)控錄像。通過這兩個命令,,可以在上位機很好地遠(yuǎn)程控制下位機,。

  4結(jié)論

  本文提出的嵌入式自動裝載與視頻監(jiān)控系統(tǒng),以S3C2410處理器作為主控制器,,運行Linux系統(tǒng),,具有實現(xiàn)簡單、可擴(kuò)展性強等特點,。通過嵌入式視頻監(jiān)控系統(tǒng)可以查看裝載現(xiàn)場的狀況,,對于突發(fā)事件,能及時做出反應(yīng),,保障裝載工作安全進(jìn)行,。自動裝載系統(tǒng)的設(shè)計為日后實際系統(tǒng)搭建打下了基礎(chǔ),對以后的工作具有重大意義,。

參考文獻(xiàn)

 ?。?] 張慶平, 蘇國民. 特大型礦井全自動裝卸系統(tǒng)的實現(xiàn)[J]. 工礦自動化, 2002(6):41 42.

  [2] 彭鐵鋼, 劉國繁, 曹少坤,等. 基于ARM的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計[J]. 計算機工程與設(shè)計, 2010, 31(6):1191 1194.

 ?。?] 許青林, 解爭龍. 基于ARM的Linux系統(tǒng)移植研究與實現(xiàn)[J]. 物聯(lián)網(wǎng)技術(shù), 2013(1):37 38.

 ?。?] 王元偉, 劉國秀. 基于V4L的視頻采集系統(tǒng)的設(shè)計[J]. 鐵路計算機應(yīng)用, 2010, 19(7):30 34.

  [5] HONG J, SODSONG W, CHUNG S, et al. Design, implementation and evaluation of a taskparallel JPEG decoder for the Libjpegturbo library[J]. Oral Diseases, 2012, 12(12):117 120.

 ?。?] 雷鴻, 熊文龍, 楊單. 基于Fram ebuffer的LCD驅(qū)動程序的實現(xiàn)[J]. 武漢理工大學(xué)學(xué)報:交通科學(xué)與工程版, 2006, 30(1):106 109.

 ?。?] 盧劍翔, 劉成安, 胡和智,等. 基于s3c2410的CramFS根文件系統(tǒng)的移植[J]. 微計算機信息, 2006, 22(32):133 135.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。