張科昌,生綠偉,楊洋洋,吳平平
(上海振華重工(集團)股份有限公司,上海 200125)
關鍵字:輪胎吊;圖像識別;視覺定位;數字信號處理
當前,集裝箱碼頭堆場的主要裝卸設備有輪胎式集裝箱起重機(Rubber-Tyred Gantry,RTG)和軌道式集裝箱起重機(Rail-Mounted Gantry,RMG)。RTG 相較于RMG 有成本低、可以跨堆場作業的優點。因為RTG 沒有固定的行駛軌道,所以它在大車行駛過程中需要不斷的進行人工或者自動糾偏。為了降低RTG 操作的人工成本,改善RTG 的作業環境,提高集裝箱的裝卸效率,越來越多的港口開始使用自動化RTG。無人值守的自動化作業或半自動化作業已成為港口RTG 的發展趨勢。在全自動化或半自動化作業過程中,RTG 的定位檢測是其實現自動駕駛的前提和基礎。
RTG 體型龐大,大車行駛方向上的長度通常為23 m 左右,大車在堆場內自動行駛時,行駛速度較快,最大速度一般為2 m/s,此時輪胎內側與堆場最外側集裝箱的最小距離約為1.2 m。假設RTG 的輪胎內側與集裝箱的最小距離為1.2 m,RTG 以最大速度行駛,大車在行使方向上的角度偏差只要有2.6°,那么在0.6 s 的時間內就會撞箱,發生碰撞事故,影響生產的正常進行,帶來經濟損失。[1]隨著RTG 向自動化和智能化方向的發展,特別是在RTG的小車和起升裝置均已實現了一定程度自動化的情況下,實現RTG 大車在行走過程中的自動糾正偏差功能變得十分迫切。
自動化RTG 在自動化作業過程中,需要根據指令完成大車和小車的精準定位。RTG 的大車和小車均行駛到目標位置,然后需要司機手動或自動完成集裝箱鎖孔對位和開閉鎖動作,即完成了抓或放集裝箱作業。由于RTG 大車的定位檢測結果直接影響到自動化RTG 的工作效率和能源消耗,已成為自動化RTG 的重要關鍵技術之一。
目前,RTG 的大車定位方法主要有基于GPS的定位方法,基于激光器測距的定位方法,基于機器視覺的定位方法,基于磁條的定位方法等。其中,基于差分GPS 的定位技術由于成本高,定位精度和響應速度有限,穩定性不高,還會受天氣、吊車、燈塔等的影響出現信號盲區和短周期的跳動,其應用推廣具有嚴重的局限性。基于激光器測距的定位方法需要借助實際的參照反射體來進行定位測量,它對反射體的反射能力要求較高,且受外部光線等干擾嚴重,有時難以正確反映設備的實際位置。基于地面埋設磁條的定位技術需要對堆場地面實施土建工程,且系統還會受到地面時常散落的金屬碎片的干擾,也沒有得到推廣和應用。基于機器視覺的定位方法是一種連續的非接觸式絕對位置檢測方法,在RTG 的自動駕駛中得到了廣泛的應用,通常采用識別地面上已有的車道線或畫線的方式。采用圖像識別與電磁感應相結合的方法對RTG 大車進行糾偏和定位控制,大車方向上的定位精度為±40 mm,小車方向上的定位精度為±20 mm,滿足RTG 在自動化堆場內作業時的定位精度要求。[2]但是,地面基準線易受污染,無法滿足全天候作業的要求,且需要增加大車位置檢測設備,限制了基于機器視覺的定位方法的應用和推廣。為了解決這一問題,提出了一種基于DSP 系統架構的RTG 視覺定位方法,該方法首先利用圖像識別技術和參照體測距的方式計算出RTG 的位置和姿態,得到基于圖像參照的RTG 視覺定位算法;然后結合DSP 系統架構的特性,從圖像識別算法,數據讀寫和編譯器等三個方面對定位算法進行了優化。利用視頻流進行性能測試,實驗結果表明基于DSP 系統架構的RTG 視覺定位方法在大車方向和小車方向上的定位精度均為±20 mm,每幀圖像的處理時間從最初的1~2 s 降至15~20 ms,大大提高了定位算法在DSP系統中的運行效率,能夠滿足港口自動化RTG 自動駕駛的實時定位要求。
基于圖像參照的RTG 定位是利用圖像識別技術和參照體測距的方式,不依賴于地面上易受污染的車道線,而是通過處理圖像中的參照體上的標識信息進行定位。該方法所依據的信息量是二維空間上的圖像信息,即從整幅圖像信息中提煉出一個坐標位置信息,因此,它可以克服各種各樣的干擾信號,獲得穩定且可靠的測量結果,如圖1 所示。

圖1 基于圖像參照的RTG 定位方法實施示意
該方法采用兩個工業相機(相機1 和相機2)來實現RTG 大車的單側定位,一個工業相機(相機3)實現另一側集裝箱的貝位中心定位。相機1和相機2 分別安裝在RTG 同側的前后位置,相機3安裝在對側的RTG 中心位置。相機1 和相機2 通過獲取預先在RTG 同側安裝的編碼標識來獲取編碼信息,由于編碼標識信息與堆場中的位置一一對應,所以通過解析絕對位置編碼中的信息即可獲得RTG 大車的精準位置信息。同時,由于編碼標識的大小固定,通過計算相機圖像中的編碼標識像素數量,可以計算出相機距編碼標識的距離,再通過相機1 和相機2 與編碼標識之間的距離,得到RTG 的朝向角,繼而實現RTG 的定位。
基于圖像參照的RTG視覺定位算法流程如圖2所示。相機采集圖像后,經過圖像信號處理器(Image Signal Processing,ISP)傳輸至DSP 中。首先,算法對圖像進行二值化處理,自適應獲取閾值提取最佳圖像信息;[3]然后,通過形態學處理(膨脹、腐蝕等)消除圖像中較小的噪點,修復連通畫面中由于亮度不夠造成的殘損圖像;再后,對圖像進行連通區域標記,將代表編碼標識的區域逐一標記并記錄特征信息;最后,根據這些特征信息采用濾波算法剔除干擾,提取有效的編碼信息,計算和輸出定位結果。

圖2 基于圖像參照的RTG 視覺定位算法流程
基于圖像參照的RTG 視覺定位算法在DSP 系統架構實現中存在效率低下的問題,針對這一問題進行優化,結合DSP 系統架構特點提出了一種基于DSP 系統的RTG 定位方法。
因為基于圖像參照的RTG 視覺定位算法是按照預先編寫的程序執行,通過不斷的數據讀寫和運算實現算法功能,所以優化的對象主要有算法程序、數據讀寫和編譯器。算法程序方面的優化主要指使用理論上復雜度更低的方法,對算法進行改進處理。數據讀寫方面的優化是指遵從處理器數據讀寫的特性,通過增加或減少單次讀寫數量,減少讀寫路徑等方式,提高數據讀寫的效率。編譯器方面的優化是指在編譯器層面對代碼編譯實現的優化,它使得編譯后生成的二進制文件更簡潔,高效地作用于設備之中,針對DSP 的系統架構特點,從源代碼及文件組織等方式上進行的優化。
優化策略可以選擇耗時最長或重復次數最多的部分優先進行,這樣能明顯的提升程序開發的效率。相對而言,后期對數據讀寫的改進比算法的改進效果更明顯,這是因為隨著算法的理論模型趨于完善,優化空間有限,很難在短時間內取得明顯的成效。
圖3 展示了圖像識別算法在優化前的各部分消耗時間分布,根據圖3 可知連通區域標記消耗時間占整個算法的時間比重最大,若能縮短這個環節的用時就能夠顯著提高算法的整體效率,所以首先考慮針對這個環節的優化。

圖3 圖像識別算法各部分消耗時間分布
通常情況下的連通區域標記有兩種方式:深度優先搜索算法和二次搜索算法。[4]深度優先搜索算法通過棧操作實現,當搜索到符合條件的像素時,將結果壓入堆棧中。若所有當前符合條件的像素已經完成了壓棧操作,然后從棧中取得下一個目標像素點,重復上一步尋找壓棧的操作,直到所有符合條件的像素點都尋找完畢,即完成了整個搜索過程。在此過程中,棧的大小以及迭代的次數都是根據圖像的內容信息變化而變化的,所以該方法的執行效率與圖像的內容有很強的關聯性,效率不穩定。二次搜索法通過對圖像的兩次完整掃描來完成連通區域標記的工作。第一次搜索是從上到下、從左到右依次搜索,給圖像做第一次標記,當發現當前像素的周圍符合條件的像素標記不同時,將數字較大的標記加入數字較小的標記的等價表中。第二次搜索是根據各個等價表替換現有標記至各自表中最小的標記,完成了整個搜索過程。在此過程中,無論圖像的內容如何變化都要進行二次圖像的搜索過程,唯一變化的就是等價表的大小以及數量。所以該方法的執行效率與圖像的內容關聯性較弱,效率穩定。
因為德州儀器的C6000 系列DSP 同時擁有完整的2 套相同的處理單元,所以可以在同一時間完成更長字節的數據處理。根據這個特性,算法需要在迭代計算時盡量選用單層循環,并使循環內容簡單,可以使編譯器在開啟軟件流水時能夠自動分配2 套處理單元,提高運行效率。連通區域標記采用遞歸的深度優先搜索算法,該算法雖然便于理解,但是其效率與圖像內容相關性較大,即算法執行時間受圖像內容改變的影響很大。由于算法與圖像內容關聯性較強,在每次執行之前不能知曉所使用的循環次數,繼而編譯器無法靜態分配所有處理單元的工作,只能確保一套處理單元能夠正常工作,因此沒有充分發揮C6000 的計算性能。而二次搜索算法不同,算法性能與圖像內容關聯性不大,只有在排列等價表時與內容有關,但這部分耗時與總體相比很小。二次搜索算法中的循環內容單一,使編譯器方便展開完成軟件流水,與迭代的深度優先搜索算法相比,更高效地利用了DSP 處理器的架構,提高了效率。
根據嵌入式DSP 系統的讀寫特性,基于DSP架構的數據讀寫優化主要從內存管理、數據讀寫的處理量、讀寫次數和讀寫時間進行優化。
1)優化內存管理
DSP系統處理器中的各個存儲器的優先級如圖4 所示,最快的是一級存儲器,依次是二級存儲器、外部存儲器。

圖4 處理器的存儲層次
C6000 系列DSP 數據存儲結構如圖5 所示,離CPU 越近的存儲單元讀寫速度越快,存儲空間越小;離CPU 越遠的存儲單元容量越大,但讀寫速度越慢。充分利用處理器內部存儲的特性,可以有效地減少CPU 讀寫數據的路徑,達到提升數據讀寫效率的效果。

圖5 C6000 系列DSP 數據存儲結構
非阻塞Cache 策略是降低失效延遲的傳統優化策略,其主要思想是:當出現一次Cache 失效時,繼續讓后續的命中訪存指令進行訪問Cache 的操作,如果出現兩次訪問Cache 失效時,則阻塞流水線。根據程序局部性原理,隨后的訪存操作繼續命中的概率很小,并且很可能是訪問上一個或者下一個Cache 行的地址[5],在內存優化中將分析解碼所需要的塊信息數據放入二級緩存(L2)中。
2)壓縮數據讀寫處理量
圖像數據使用無符號單字節(unsigned char)數組表示,即每個像素占用一個字節的存儲空間。在圖像二值化處理之后,每個像素所占用的字節信息內容從255 個變為2 個,即0 和255,此時用0和1 來表示也能完整反應圖像信息。這樣單個像素的信息存儲量從1 個字節(8bit)變為1 位(1bit),數據量就會降低為原來的1/8。壓縮后單字節就可以表達8 個像素的二值數據,大大降低了數據讀寫處理量。使用該優化方法的缺陷是需要額外的時間,將數據打包解包。由于壓縮后的數據可以用于形態學處理,即脫離圖像數據本身進行特征碼的提取,所以并不需要解包數據。
3)降低數據讀寫次數
在算法執行過程中往往存在著一些循環內容單一,數量龐大的查詢、賦值以及邏輯判斷操作。以二值化處理和直方圖統計來說,往往需要遍歷整幅圖像數次,才能完成灰度值統計及灰度值邏輯判斷賦值等操作。
該優化方法充分利用了單指令多數據流(SIMD)的優點,通過處理器的取址操作來實現在同一時間完成多個重復的操作。通過SIMD 能夠一次同時獲得多組連續的像素數據,并進行統計賦值操作,即降低了整體的數據讀寫次數。
4)縮短數據讀寫時間
一般情況下CPU 在完成數據的讀寫操作時,計算處理單元就處于等待狀態。隨著圖像分辨率的增加,大規模的數據讀寫所造成的等待時間就越長,降低了算法效率。
DSP 系統里面特有的EDMA 單元可以直接按預先制定的搬運方式,將數據從起始地址搬運至目的地址,而中間過程無需CPU 的干預,真正實現流水線作業。當有大數據塊讀寫時,使用EDMA 單元可以解放CPU,使之專注于計算處理,提高CPU的使用效率。值得注意的是,EDMA 單元本身需要一定的啟動時間,適于大塊數據的搬運場景。
DSP 系統編譯器的優化主要包括基礎級優化、局部變量級優化、函數級優化、文件級優化等。[6]
基礎級優化:簡化執行控制流程圖;分配變量到寄存器;執行循環旋轉;去除未使用的代碼;簡化表達式和語句;展開聲明為內聯函數的函數調用。
局部變量級優化:執行局部拷貝;常量傳用;刪除未使用的賦值;去除局部公共表達式。
函數級優化:執行軟件流水;執行循環優化;去除全局公共子表達式;去除未使用的全局賦值;用指針格式代替循環里的數組引用;執行循環展開。
文件級優化:刪除從未調用的函數;優化未使用返回值的函數;將部分內容簡單的函數改為內聯函數[7];優化函數聲明;判斷調用者屬性;將無變化的調用函數參數設置到函數體中;標識文件變量字符。
允許進行符號調試:在生成的可執行文件的同時加入符號和行號信息,有利于進行C程序的調試和剖析。[8]前述的幾種優化方式存在過度優化的可能,使程序的運行結果與預想不同,使用該方式可以方便排除過度優化的干擾,便于后續問題的排查。為了使編譯器更好的利用軟件流水,避免因為過度優化造成的程序運行問題,需要盡可能多的提供給編譯器信息。
在測試現場錄制了1080P 視頻流,對基于DSP系統架構的RTG 視覺定位方法進行性能測試。測試中的相機采用的是分辨率為1920×1024 的傳感器,鏡頭的焦距為6 mm,相機內部參數在安裝前已經獲知,嵌入式 DSP 系統采用 TI 公司的TMS320DM6435。首先對該方法的定位精度進行測試,以單點激光測距的結果為基準,測試結果如圖6 所示,從圖中的誤差曲線可以看出,基于DSP 系統架構的RTG 視覺定位方法在大車方向和小車方向上的定位精度均為±20 mm。

圖6 基于DSP 系統架構的RTG 視覺定位測試結果
根據DSP 系統架構的特性,分別從圖像識別算法、數據讀寫和編譯器三個方面對視覺定位算法的運行效率進行優化,算法優化前后的測試結果如表1 所示,可以看出優化后的算法總時間比優化前縮短了133 ms,算法流程中的每個環節耗時都有明顯的下降,其中連通區域耗時占比最大,其優化的結果明顯地提升了整個算法的效率。

表1 1080P 視頻流的優化算法效率測試結果 /ms
輪胎吊大車定位是輪胎吊自動駕駛的基礎,其中基于機器視覺的輪胎吊定位方法具有非接觸和絕對位置檢測的優勢,但以地面基準線作為參照的方法嚴重影響了輪胎吊的定位性能,為了解決這一問題,提出了一種基于DSP 系統架構的RTG 視覺定位方法,該方法利用圖像識別技術和參照體測距的方式計算出RTG 的位置和姿態,得到基于圖像參照的RTG 視覺定位算法。又由于基于DSP 處理器的工業智能相機性能不僅與DSP 處理器的運算能力、體系結構和存儲器組織架構等硬件有關,還與軟件設計有關。軟件設計時應充分利用DSP 處理器的體系結構特性,盡可能的使DSP 的各個功能單元滿負荷運行,以便得到最大的性價比。因此,基于DSP 系統的輪胎吊定位方法利用DSP 系統的特性,從算法原理、數據讀寫以及編譯器三個方面優化了基于圖像參照的RTG 定位方法,同時為開發基于DSP 的其他嵌入式算法提供了很好的指導方向。實驗結果表明,該方法在大車方向和小車方向上的定位精度均為±20 mm,通過算法優化,數據讀寫優化,編譯器優化三方面相結合的優化方法能夠大大提高算法在DSP 系統中的運行效率,在短時間內獲得較高的收益,是優化嵌入式算法最直接也是最有效的方法。