基于激光雷達的方量自動測量系統

雷達測方量系統設計背景

露天煤礦開采在鏟裝運輸作業過程中, 由于缺乏裝車計量設備,對電鏟和汽車司機的工作量考核只能以車次計量,車輛運輸過程中噸位不足現象時有發生。

卡車空載情況.jpg

圖1卡車空載情況

雷達測方量系統設計目的

方量統計系統可以對裝車量進行有效監督,降低運輸成本,改善采場配礦精度,提高露天煤礦經濟效益。根據激光雷達每次掃描形成的裝煤截面在獲得速度的情況下,獲得卡車的空余體積。在已知卡車車廂體積的情況可計算獲得卡車裝煤體積,即獲得卡車的裝載量。系統對經過檢測點的車輛采集輪廓、圖像等各種信息,并將這些信息匯總至調度樓等辦公室,工作人員通過計算機屏幕可以實時監測/回放查看貨物裝載狀態。

雷達測方量系統核心技術

(1)激光雷達通過激光的往返時間來測定距離,不需要人的參與,根據激光雷達的返回數據實現非接觸自動快速測量運煤卡車的裝載體積。

(2)方量統計系統硬件部分包括激光雷達、雷達安裝支架、系統服務器、通信線路等組成。

(3)對激光雷達掃描數據進行實時接收和傳輸,實現激光雷達掃描數據的實時接收,轉化計算和存儲。

(4)裝載量計算軟件通過獲取激光雷達單個掃描面數據,識別和剔除噪聲數據和異常數據,自動計算卡車的裝載量。

(5)對卡車裝載量數據設計數據庫進行存儲,在數據庫基礎上實現裝載量存儲、查詢、統計、備份、導出。

雷達測方量系統硬件設施

雷達參數

型號:LMS111-10100

光源:紅外線

掃描范圍:270度

掃描頻率:50Hz

角度分辨率:0.5度

激光雷達示意圖.jpg

圖2激光雷達示意圖

設備安裝:

設備安裝示意圖.jpg

圖3設備安裝示意圖

雷達測方量系統技術實現

設備安裝示意圖.jpg

圖4系統總體框架圖

本系統將雷達放置在車輛通過的上方,當車輛通過時,本系統可以通過雷達測量,獲取大約60~70幀的測量高度,可以將車輛劃分為60~70個平面,接下來通過微積分,將體積計算出來。整個項目一共分為4個部分:

(1)網絡通信:

http協議:HTTP是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用于Web訪問,也可以用于其他因特網/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。

Socket套接字:應用層通過傳輸層進行數據通信時,TCP和UDP會遇到同時為多個應用程序進程提供并發服務的問題。多個TCP連接或多個應用程序進程可能需要 通過同一個TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字 (Socket)的接口,區分不同應用程序進程間的網絡通信和連接。生成套接字,主要有3個參數:通信的目的IP地址、使用的傳輸層協議(TCP或UDP)和使用的端口號。通過將這3個參數結合起來,與一個Socket綁定,應用層就可以和傳輸 層通過套接字接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的并發服務。

與雷達數據的通信使用的是http協議,雷達數據通過網絡端口傳輸出來,本系統使用廠家自帶的上位機軟件給雷達配置好IP地址,然后利用socket套接字連接雷達獲取數據。由于網橋很不穩定,所以本系統要解決在網絡不穩定時,保證程序繼續運行獲取數據的問題,本系統通過將recv函數超時異常拋出以及循環請求建立連接來實現。

(2)數據預處理

數據預處理流程圖.jpg

圖5數據預處理流程圖

多線程技術:多線程塊模型(MTA)在每個進程里只有一個塊而不是多個塊。這單個塊控制著多個線程而不是單個線程。這里不需要消息隊列,因為所有的線程都是相同的塊的一個部分,并且可以共享。這樣的程序比單線程模型和STA的執行速度都要快,因為降低了系統的負載,因而可以優化來減少系統idle的時間。這些應用程序一般比較復雜,因為程序員必須提供線程同步以保證線程不會并發的請求相同的資源,因而導致競爭情況的發生。這里有必要提供一個鎖機制。但是這樣也許會導致系統死鎖的發生。

進程和線程都是操作系統的概念。進程是應用程序的執行實例,每個進程是由私有的虛擬地址空間、代碼、數據和其它各種系統資源組成,進程在運行過程中創建的資源隨著進程的終止而被銷毀,所使用的系統資源在進程終止時被釋放或關閉。

線程是進程內部的一個執行單元。系統創建好進程后,實際上就啟動執行了該進程的主執行線程,主執行線程以函數地址形式,比如說main或WinMain函數,將程序的啟動點提供給Windows系統。主執行線程終止了,進程也就隨之終止。

每一個進程至少有一個主執行線程,它無需由用戶去主動創建,是由系統自動創建的。用戶根據需要在應用程序中創建其它線程,多個線程并發地運行于同一個進程中。一個進程中的所有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統資源,所以線程間的通訊非常方便,多線程技術的應用也較為廣泛。多線程可以實現并行處理,避免了某項任務長時間占用CPU時間。要說明的一點是,到2015年為止,大多數的計算機都是單處理器(CPU)的,為了運行所有這些線程,操作系統為每個獨立線程安排一些CPU時間,操作系統以輪換方式向線程提供時間片,這就給人一種假象,好象這些線程都在同時運行。

雷達的數據格式為16進制。在一幀數據中,本系統首先8個0的標志位,在8個0后依次存儲著起始角度-45度,角度分辨率0.5度和540個點的距離(對應著270度)。一幀大小大約為2MB,一個小時大概是250MB,如果存成文件后處理,需求的存儲空間太大并且無法做到實時。因此,本系統采用消息隊列和多進程來對數據進行預處理,扔掉絕大部分沒有車時的數據包。在消息隊列中,第一個線程就是使用socket套接字將獲取到的數據包扔進隊列中,第二個線程是從消息隊列中取數據包并解析數據包中70~90度范圍的垂直距離,若距離明顯小于雷達到地面高度,則認為是包含車的數據包,將這個包后300個數據包都寫入一個文件,這樣本系統將一輛車的數據存成了一個文件。這樣一個小時大概30MB,大大節省了存儲空間。在實時性方面,本系統通過另一個進程處理文件進行體積計算并寫入數據庫。

(3)體積計算與三維圖繪制:

因為在雷達原始數據中,保存的是極坐標系下的信息,首先將極坐標系轉換成直角坐標系,XY軸為車截面方向。第一步,判斷每一幀中距離小于雷達到地面高度的點的個數,若大于設定個數,則為有用幀。第二步將有用幀中非卡車高度的點清洗掉。第三步,因為他們那里的卡車駕駛室上方有一個很大的平面,所以本系統通過每一幀高度的方差波動找到平面的第一幀。第四步,根據平面幀,找到一個坐標基點,根據這個基點,和車的參數,構建出車廂。

第五步,利用車廂兩側的邊界對所有幀進行修剪,去除越界點,并且根據點高度的分布對缺失點進行補齊。第五步,根據車廂的長度和幀數,增加Z軸維度(車輛行駛方向),拓展到三維。第五步,將卡車高度幀和車廂閉合繪制三維圖(利用Python中matplotlib包的三角面片規則)并計算出體積。

這樣獲得車號,時間,體積,三維圖片,將車號,時間,體積,和三維圖片的路徑實時寫入數據庫。

(4)前端界面顯示:

服務器使用Tomcat,前端界面的交互通過http協議來完成。前端通過http協議向服務器發送請求,請求格式為服務器IP地址+端口+Servlet名稱+參數值,后端通過指定Servlet解析參數,然后將參數傳入查詢數據庫的方法,連接數據庫使用的是JDBC的包,然后將查詢到的結果封裝成gson返回。

雷達測方量系統成果

(1)實現了激光雷達距離數據的實時獲取、傳輸、預處理、存儲和轉化計算,對每幀數據進行有效解析,獲取各個角度的距離數據。

(2)實現了激光雷達異常距離數據的自動剔除和過濾,實現了獲取特定時間特定角度范圍內的數據,通過剔除無用數據減少計算量,提高了實時計算的速度。

(3)成功繪制出運煤車滿載經過雷達時,雷達獲取到的每幀數據的各個角度對應的距離,在極坐標中進行直觀顯示。

雷達距離示意圖.jpg

圖6雷達距離示意圖

(4)成功建立了運煤車空載時的三維模型,從各個角度觀察到運煤車的空載時的車廂情況。

車廂三維數據圖.jpg

圖7 885和875車廂三維數據圖

(5)成功繪制出滿載運煤車經過激光雷達時的裝載量三維圖,并與空載運煤車圖像進行匹配,直觀觀察到運煤車的裝載情況。

裝載卡車三維正視圖.jpg

圖8裝載卡車三維正視圖

裝載卡車三維俯視圖.jpg

圖9裝載卡車三維俯視圖

裝載卡車三維左視圖.jpg

圖10裝載卡車三維左視圖

(6)實現了運煤車運載體積的實時計算。滿載運煤車經過雷達后,自動計算出該運煤車的運載體積并實時顯示。

卡車方量實時顯示.jpg

圖11 卡車方量實時顯示

(7)根據卡車計算方量,完成統計。

卡車方量統計.jpg

圖12 卡車方量統計

雷達測方量系統客戶案例

客戶案例.jpg

福彩3d和值走势图近500 133期四肖中特 澳洲幸运8开奖是什么 腾讯分分彩开奖软件 360双色球ac值走势图 快乐彩浙江快乐彩十二 新西兰5分彩开奖 特码12生肖代表什么 ccc36百家乐孕妇 竞彩混合过关澳客网 快乐赛车官网\/互联网2机灵系统 陕西快乐10分走势图彩票站专用软件 山东11选5预测群 江西快3是什么样子的 河南快3 竞彩网三分彩开奖号码 陕西11选5任五