機器人若想與周圍事物進行更良好的互動,並在其周遭靈活地移動,勢必要具備能夠看到並辨別其周圍環境的能力;此時,只要借助經濟高效且功能強大的視覺處理器,即可提升機器人自適應能力。
長期出現在科幻小說的機器人(Robot),有望透過其高速和高精密度特性將人類從呆板、單調和那些不可忍受的工作中解救出來,並提高這些任務的品質。檢視初步興起、主要給普通消費者使用的自主機器人系統(Robotic System),它們可完成吸塵、地毯清洗,甚至排水溝的清潔工作,再看看多樣化的生產線環境中,機器人變得越來越普及(圖1),就不難相信,這絕不是一紙空談。
|
圖1 為消費者量身定制的自主產品(a)和工業製造系統(b)是眾多可以透過視覺處理功能而得到增強的機器人中的一部分。 |
然而,第一代自主消費機器人採用了相對粗糙的方案來了解並定位其環境。這些基本技術包括由紅外線發射器組成的人造壁壘,它能與內置在機器人當中的紅外線感測器進行協作,從而防止機器人從樓梯上滾下或遊蕩到另一個房間。當自主機器人撞到不可移動的目標時,震動感測器可通知機器人,讓機器人不要再嘗試繼續前進。而更先進的繪圖功能設計甚至讓機器人不必再次回到這個特殊的位置。與人類的工作方式相比,也許機器人的工作更加辛勞、更加快捷,並且更加準確,但機器人成功的前提是讓來料部件(Incoming Parts)到達固定的方向和位置,因此增加製造流程的複雜性。來料部件的位置或方向出現任何偏離都將導致裝配的失敗。
人類用眼睛(以及其他感覺)和大腦對其周圍的世界進行辨別和定位。從理論上講,採用攝像頭元件、視覺處理器和各種軟體演算法的機器人系統也應該可以做到。但縱觀歷史,這樣的圖像分析技術通常只有在複雜並且昂貴的系統中才能找到。但數位積體電路在成本、性能和功耗方面的進步,為視覺功能應用到多樣化和高產量的設計上奠定了良好的基礎。雖然機器人在實施功能方面仍然面臨著諸多挑戰,但與以往相比,今天已經可以更加輕鬆、快速並且經濟高效地解決這些問題。
軟硬體結合 提高特徵識別能力
開發出可根據視覺適應其環境的機器人系統須要採用電腦視覺演算法,該演算法可將一個或多個圖像感測器中的資料轉換成該環境的可行動資訊。機器人的兩個常見任務分別是識別外部目標和方向,並決定機器人的位置和方向。許多機器人可與一個或多個特定目標進行互動。對於情況自適應機器人而言,必須能夠檢測到那些在未知地點和方向的目標,並且還要了解到這些目標很可能會移動。
攝像頭每秒產生上百萬像素(Pixel)的資料,從而形成了一個有著沉重處理負擔的有效載荷。解決該問題的一種常見方法是檢測這些多像素的特徵,如視訊資料每一幀(Frame)的角、點、邊或線(圖2)。這種像素到特徵的轉換可使在視覺處理管道的這個特殊階段的資料處理需求降低一千倍或更多;上百萬的像素降低成了上百個特徵,機器人就可以高效地對目標進行識別,並確定其空間特徵。
|
圖2 攝像頭每秒產生上百萬像素的資料,從而形成了一個有著沉重處理負擔的有效載荷。解決該問題的一種常見方法是檢測這些多像素的特徵,如視訊資料每一幀的角、點、邊或線。 |
目標檢測首先包括採用機器學習或其他演算法與多個特徵相結合。然後,透過利用這些特徵的資料庫(該資料庫根據特定目標在不同角度和方向的大量已採集圖像產生),可以採用分類器演算法運行並訓練機器人正確地識別每個新目標。最有名的目標檢測演算法之一是Viola-Jones Framework,它採用類Haar的特徵和大量Adaboost分類器(Classifier)。該演算法非常擅長識別臉部,也可經過訓練來識別其他常見目標。而基於機器學習演算法的一大缺點是:它們需要大量的訓練資料集,才能準確地檢測目標。
透過特徵來確定目標方位,需要一種類似隨機抽樣一致性(Random Sampling and Consensus, RANSAC)那樣的統計演算法。該演算法採用一組特徵來類比一個潛在的目標方向,然後確定多少其他特徵適合該模型。具有最大數量匹配特徵的模型對應於被正確識別的目標方向。
為了檢測移動目標,可將特徵識別與追蹤演算法相結合。一旦某組特徵正確地識別了一個目標,KLT(Kanade-Lucas-Tomasi)或卡爾曼濾波(Kalman Filtering)等演算法將在視訊的幀之間追蹤這些特徵的運動軌跡。無論方向和阻塞如何改變,這些技術都是非常可靠的,因為其僅須追蹤一組最初特徵便可成功。
上述演算法對於固定式機器人來說可能已經足夠,但就移動機器人而言,還須要採用其他演算法才能讓機器人在其環境中安全地移動。同步定位繪圖(Simultaneous Localization and Mapping, SLAM)是一種可使機器人創建環境地圖並追蹤其當前位置的演算法。這種演算法需要繪製三維(3D)環境地圖。由於有許多深度感應感測器可選;因此常見的方法是採用一對被配置成高傳真(Stereo)攝像頭的二維(2D)攝像頭,其作用類似於人類視覺系統。
高傳真攝像頭依靠對極幾何(Epipolar Geometry),採用一對2D圖像的投射為每個場景內的每個點提供3D位置。根據前面2D觀點所提到的,特徵可用於檢測3D場景中的有效位置。例如,與平整的牆面相比,機器人更容易檢測到桌角的位置。在給定的位置和方向,機器人可以檢測特徵,透過比較其內部地圖以確定其位置及改進地圖品質。考慮到目標經常會移動,因此靜態地圖對於試圖適應其環境的機器人來說,用處不大。
打造機器人視覺 四階段循序漸進
|
圖3 完整處理二維或三維機器人視覺感測器的原始輸出涉及四個主要階段,每個階段都有自己的獨特性並受其處理要求的制約。 |
為了有效地打造出機器人視覺,可將所需的處理步驟分為若干階段。特別是前面所討論的演算法,其處理步驟可分為四個階段(圖3),根據處理要求,每個階段都具有獨特的特徵與限制。市場中充斥著各種類型的視覺處理器,並且不同類型的視覺處理器(根據其性能、功耗、成本、功能靈活性和其他因素)可能適合不同的演算法處理階段。實際上,視覺處理器晶片可能整合了多個不同類型的處理器核心,從而滿足多個處理階段的獨特需求。
第一個處理階段包含多種可處理各種感測器資料處理功能的演算法,例如調整大小、色彩空間轉換、圖像旋轉和翻轉、去交錯(De-interlacing)、色彩調整和色域映射、伽瑪(Gamma)校正,以及對比度增強。
在此階段,每一幀內的每個像素都會進行處理,因此每秒的工作量都非常龐大。在高傳真圖像處理時,兩個圖像平面必須同時進行處理。面對這些操作的其中一個處理選項為專用硬體時鐘,有時又被稱為圖像處理單元(Image Processing Unit, IPU)。最近推出的視覺處理器(包含IPU)可在穩定的幀速率下同時處理兩個圖像平面,每個圖像都高達2,048×1,536像素(300多萬像素)的解析度。
第二個處理階段將進行特徵檢測,在這一階段(如前面所討論的),角、邊和其他顯著圖形區域將會被提取。這個處理階段仍在每個像素的基礎上進行,因此非常適合那些高度並行的架構,但這個階段可處理更加複雜的數學函數,如一階和二階導數(Derivative)。數位訊號處理器(Digital Signal Processors, DSP)、現場可編程輯閘陣列(Field Programmable Gate Arrays, FPGA)、圖形處理單元(Graphics Processing Units, GPU)、IPU和陣列處理器單元(Array Processor Unit, APU)都是常用處理選項。DSP和FPGA具有高度的靈活性,因此非常適用於那些不成熟和正在發展的應用(以及實施這些應用的演算法)。與其他方法相比,該靈活性雖然帶來更高的性能,但也帶來更多的功耗和成本。
在靈活性與焦點頻譜的另一端是具有專用功能的IPU或APU,它們特別適用於視覺處理任務,每秒可處理數十億的操作,但由於經過應用優化,並不適合更廣泛的功能。靈活性與功能優化頻譜終端的中間步驟是GPU,GPU過去常常出現在電腦中,而現在也嵌入到應用在智慧手機、平板電腦和其他高容量應用的應用處理器中。
浮點單元計算,如光流演算法(Optical Flow Algorithm)中的最小平方(Square)功能,以及用於快速顯著點檢測的SURF快速重要特徵演算法中的描述符計算和點雲處理(Point Cloud Processing)都非常適用於高度並行的GPU架構。這種演算法可運行在單指令多資料(Single-Instruction Multiple-Data, SIMD)向量處理引擎上,例如安謀國際(ARM)的NEON或功率架構中央處理器(CPU)中的AltiVec功能模組。
無論如何,包括OpenCL(Open Computing Language)和OpenCV(Open Computing Source Computer Vision)在內的框架(Framework)和程式庫(Library)可簡化並加快軟體的開發,還可能包括在多個核心上對一個任務的各個部分進行分配的能力。
在第三個圖像處理階段,系統將根據特徵圖對目標進行分類。與之前階段基於像素的處理方法相比,這些目標檢測演算法以高度非線性的結構和方式進行資料存取。然而,仍須要採用強大的處理「機制」透過豐富的分類資料庫來評估多種不同的特性。這種需求非常適合單核心和多核心的傳統處理器,如基於ARM和功率架構的精簡指令集運算器(RISC)設備。這種選擇標準也同樣適用於第四個圖形處理階段,該階段將透過多幀追蹤檢測目標、實施該環境的模組,並根據各種環境來評估是否應該觸發動作。鑑於視覺處理的資料密集型屬性,當評估處理器時,不僅應評估核心數量和每個核心速度,還應評估每個處理器的資料處理能力,如外部記憶體匯流排頻寬(圖4)。
|
圖4 視覺處理器可以整合多種類型的內核,以滿足每個處理階段的獨特需求。 |
利用論壇促進對話 加速先進機器人產品化
由於市場上出現了性能日漸強大的處理器、圖像感測器、記憶體和其他半導體元件,加上強韌的演算法,因此將電腦視覺功能整合到廣泛的嵌入式系統中變得切實可行。所謂的嵌入式系統,指的是基於微處理器的所有系統,而不是一台通用電腦。因此,嵌入式視覺是指在嵌入式系統、移動設備、專用電腦和雲中加入電腦視覺技術。
嵌入式視覺技術有潛力支援大量電子產品(如本文討論的機器人系統),比以前更智慧、更靈敏,因而對用戶更有價值。它可以針對現有產品添加有用的功能,也可以為硬體、軟體和半導體的製造商開創具有重大意義的新市場。
將機器人視覺處理的想法變成一個能商用的產品,須仔細辨別並做出一定妥協。而由技術開發人員和提供商組成的全球性組織--嵌入式視覺聯盟(Embedded Vision Alliance),利用論壇促進對話,可以迅速了解問題並進行取捨,因而可以加速先進機器人系統的產品化進程,使系統開發人員能夠有效地利用各種視覺技術。
(本文作者Brian Dipert為嵌入式視覺聯盟總編、Yves Legrand為飛思卡爾垂直解決方案市場自動化和機器人全球市場部總監、Bruce Tannenbaum為MathWorks主要產品市場部經理)