自我調整 機器人 自適應 ROS 2 機電一體化

基於FPGA打造ROS 2定義硬體 自適應機器人獲得靈活大腦(上)

傳統的機器人軟體發展,是使用預定義的架構和約束條件在給定機器人CPU中進行功能程式設計。然而採用自我調整運算後,構建機器人行為則是在進行架構程式設計。透過採用自我調整運算,機器人專家能在運行中適配機器人運算系統的一個或多個屬性(如它的確定性、功耗、安全態勢或輸送量)。

 

機器人專家花費大量時間,以運算圖形式構建機器人行為,解決已知的機器人任務。他們經常使用現代的C++語言,透過高階軟體工程操作,構建複雜的即時系統。然而,他們並不是硬體工程師。機器人專家普遍缺乏硬體和嵌入式技術專業知識,因而妨礙了FPGA等自我調整運算技術的廣泛採用。本文在既往研究的啟發下,介紹機器人自我調整運算的基礎知識,並提出一種生成ROS 2軟體定義硬體的架構。與過去的其他方法相比,本架構假定面對的是沒有硬體或嵌入式技術專業知識的機器人專家,可說是以機器人專家為中心的角度提出的。

本文首先將指出開發機器人時選擇正確運算平台的重要性,以及機器人內部軟硬體之間的重要關係。然後使用工廠做類比,簡要講解CPU、GPU、FPGA和ASIC的運算原理並回顧相關研究文獻,發現FPGA因低功耗、高性能、確定性、可重配置能力、安全性和自我調整特徵,在用於機器人時具有顯著的優勢。此外,作者回顧了有關將ROS整合到FPGA平台的既往研究,發現這些研究都從硬體工程師的角度出發,導致做出的設計決策往往嚴重制約性能空間。出於這個原因,本文從ROS 2機器人專家的視角提出建議,即全面考量ROS 2的硬體加速。這一視角能體現:最佳化流程中、流程內、網路內(含底層)的ROS 2運算圖交互;以及加速ROS上運行的應用。

在此將提出一種能夠實現上述目標的架構。該架構由一套ROS 2套件構成,能夠將硬體加速整合到ROS工作空間。這種架構適用於各種平台(支援邊緣、工作站、資料中心或雲端)和各種技術(支援FPGA和GPU),並且能夠輕鬆地移植到其他電路板上。該架構的核心元件已經在Apache 2.0授權下開源,對三種電路板的基本支援也已經過展示。此外,提供的架構還適用於各種應用,將來可以透過包含catkin擴展(非ament)輕鬆移植到ROS。

機器人軟體系統

機器人是一種系統級的系統,它由感知周邊環境的感測器、根據感知採取行動的致動器和負責處理資料的運算構成,用於對其應用做出連貫一致的回應。在很大程度上機器人技術是一種系統整合的藝術,從軟體的角度和硬體的角度看皆是如此。以往的研究揭示,在機器人領域中多達70%的資源被用於整合,而不是用於開發最終應用。直到最近,隨著較低端的工業機器人走向大規模普及化,機器人公司才開始在硬體基礎上著重軟體發展。儘管如此,機器人仍然是高度專業化的系統,旨在以高可靠性和高精度執行一系列任務。因此,機器人內部的硬體和軟體能力之間的關係十分重要。

大多數機器人透過內部網路交換資訊並滿足時序要求。從這種意義上來講,機器人屬於一種時間敏感型網路。

機器人系統機載資源通常有限,包括記憶體、I/O和磁碟或運算功能,進而阻礙了系統整合進程,使之難以滿足非結構化、動態和不斷變化環境的即時性要求。隨著機器人內部網路安全的發展,這一點更是如此,因為它經常會在使用壽命方面給機器人帶來新的要求,這需要修改機器人的邏輯,進而對即時環路產生影響。因此,為機器人系統選擇合適的運算平台至關重要,該平台既要簡化系統整合、符合功耗限制,同時也要適應機器人應用不斷變化的需求。

自我調整機器人是指那些能夠成功應對新狀況的機器人。要成為一個名副其實的自我調整機器人,必須具備以下三大基本特徵中的至少一項:自我調整行為、自我調整機電一體化(Adaptive Mechatronics)、自我調整運算。擁有全部三大基本特徵的機器人,則可被視為「全自我調整機器人」。

總而言之,機器人是能夠以高可靠性和高精度執行一系列任務的高度專業化的系統。機器人內部的硬體和軟體能力之間的關係十分重要。因此,為機器人系統選擇合適的運算平台至關重要。該平台既要能夠簡化系統整合、符合功耗需求,同時也要能夠適應機器人應用不斷變化的需求。

自我調整機電一體化是一個業已存在數十年的概念。學者Clément Gosselin從機械的角度探討這個課題,並將自我調整系統定義為能夠成功回應新狀況的系統。此外,他還將該機器人機械系統定義為自我調整系統,即透過高度依賴機械屬性,能夠適應外部的新狀況。他還舉出了各種純粹依靠機械構造的自我調整機器人系統的雛形示例,包括自我調整機器人手。此外,Ivanov也從純機械角度研究自我調整機器人,在研究中他提議自我調整機器人應考慮使用自我調整電力驅動裝置,根據載荷改變電力驅動裝置的輸出。他將這種自我調整行為命名為自調節(Self-regulation),並認為自我調整電力驅動裝置能在機器人應用中實現高能效。透過採用感測器輸入控制機制將這項研究延伸到機電一體化領域,產生了一項有關採用感測器回饋實現自我調整機器人控制的研究。示例包括視覺回饋或力感測器回饋等。

機器人的自我調整行為並非新穎概念。它可追溯到上世紀80年代中期Brooks提出的使用行為的機器人方法和他的包容式架構(Subsumption Architecture)。在上世紀90年代,不同的研究小組都在研究如何讓機器人具備靈活應變能力和自我組織能力,進而提高機器人的自主性。他們往往是透過某種控制機制(使用某種形式的人工神經網路與機器人的感測器和致動器相連)來實現的。後來的Ziemke在其研究中總結了這種方法,提出了自我調整神經機器人的概念。這種概念創造性地率先使用「自我調整機器人」一詞,指代用人工神經系統和自我調整技術控制自主主體。最近,在《Robotic Fabrication in Architecture, Art and Design 2018》的機器人專輯中,作者援引「自我調整機器人」的說法,指透過添加感知和處理實現的完全自我調整行為(與Ivanov提出的「自我調整機器人」概念不同,後者主要關注機械構造角度)。根據原文,自我調整機器人是指能夠透過加裝感測器,適應不斷變化的環境條件和材料特性,同時在一定程度上保持可預測性的機器人。與該研究同時代、同思路的Mayoral-Vilches等提出自主適配機器人的概念。利用硬體模組化和人工智慧(指上世紀90年代的自我調整神經機器人趨勢)節省構建這種機器人所需的工作量和時間。

自我調整運算是自我調整機器人第三大基本特徵。對於機器人而言,它指的是機器人能夠在運行過程中適配其運算系統的一個或多個屬性(如確定性、功耗或輸送量)。正如「What is Adaptive Computing?」中介紹的,FPGA是實現自我調整運算較理想的技術。FPGA最早由賽靈思(Xilinx)聯合創始人之一Freeman在1984年提出,它為自我調整運算奠定了基礎。FPGA兼具通用性和強大功能,同時效率高、成本低。因為在FPGA上實現其他處理架構,還可以實現並行處理,因此FPGA可以用於處理幾乎任何機器人內部的任務。讓FPGA成為自我調整運算的另一特徵在於,能夠針對每一種機器人應用的需求專門客製化資料路徑寬度和寄存器長度。如何在機器人中使用自我調整運算的示例包括為加速運動規畫而設計的運算流水線、分散式同步或時間敏感型彈性通訊等。

何種平台更適合機器人運算

CPU和通用GPU(GPGPU)是兩種廣泛使用的商業運算平台,因為它們可用性高且具有通用性。這些運算技術的通用性,是機器人專家對其特別感興趣的原因。但是通用性的代價是:

1.通用平台的固定架構難以適應新的機器人場景。追加功能往往需要追加硬體,這通常也意謂著要花時間對新的硬體進行新的系統整合度。

2.通用性必然導致其在時效上的缺陷,進而影響確定性形成(難以滿足嚴格的即時性要求)。

3.其功耗通常比專用運算架構(如FPGA或ASIC)高一到兩個數量級。

4.固定的、不具備靈活應變能力的架構,導致其對網路安全威脅和惡意行為的抵禦能力減弱。熔毀(Meltdown)或者幽靈(Spectre)等網路攻擊示例表明,如果缺乏重新配置資料流程流水線的能力,運算平台最終將喪失安全性。

總體而言,CPU、GPU和ASIC等採用固定架構的元件,在為開發者提供優勢的同時,也讓其付出了代價。它們所缺乏的靈活應變能力,導致缺乏時效性、能耗增加。而且由於無法透過重新配置架構來提高硬體的抗風險能力,因此在日新月異的網路威脅面前更加脆弱。

.CPU工業類比

圖1是CPU的工業類比,它將CPU理解成一系列車間,並且每個車間安排一位技能非常嫺熟的工人。

圖1  CPU的工業類比

這些工人每人都能使用通用工具生產出幾乎任何產品。每位工人按順序使用不同的工具,將原材料製造為成品,一次生產一件產品。根據任務的性質,這種串列生產流程可能用到大量步驟。這些車間基本(不考慮快取的情況下)彼此獨立,工人能全身心地完成不同任務,不必擔心干擾或協調問題。儘管CPU十分靈活,但它的底層硬體是固定的。CPU仍然在基本的馮紐曼架構(或者更確切地說,儲存程式電腦)上運行。資料從記憶體讀取到處理器進行運算,然後寫回到記憶體。基本上每個CPU都以串列方式運行,一次一個指令。同時架構以算數邏輯單位(ALU)為中心,每次運算都需要將資料登錄到ALU並從ALU輸出資料。

.GPU工業類比

GPU也可以用車間和工人類比,但它們的數量要大得多,並且工人的專業化程度也要高很多,如圖2所示。

圖2  GPU的工業類比

GPU工人只能使用特定的工具,每人能完成的任務種類要少得多,但他們完成任務的效率非常高。GPU工人在重複做相同的少量任務時效率最高,尤其是當他們全體同時做同一件事情時。GPU解決了CPU的主要缺陷之一,即並行處理大量資料的能力。

雖然GPU比CPU擁有非常多的核心,但GPU採用的依然是固定的硬體架構。GPU的核心仍然包含某種類型的馮紐曼處理器。一條指令就能處理上千條或者更多數量的資料,儘管通常必須對同時處理的每一條資料進行相同的運算。原子處理元在資料向量上運算(而非CPU情況下的資料點),但仍然是每個ALU執行一條固定的指令。因此,使用者仍然需要透過固定的資料路徑,從記憶體將資料傳遞給這些處理單元。與CPU相似,GPU也採用固定硬體構建,對所有的機器人應用而言,其基本架構和資料流程都是固定不變的。

.FPGA工業類比

如果說CPU和GPU是工人按照順序依次將輸入加工成輸出的車間,那麼FPGA就是靈活的自我調整工廠,能夠針對手中的具體任務客製化創設裝配線和傳送帶(圖3)。

圖3  FPGA的工業類比

這種靈活應變能力,意謂著FPGA架構師可以先構建工廠、裝配線和工位,然後根據所需完成的任務對它們進行量身客製化,而不是使用通用工具。這些工廠中的原材料由分配在裝配線上的工人小組逐步加工成成品。每名工人都重複地完成同樣的任務,同時半成品透過傳送帶在工人間進行傳遞。這樣能大幅提升生產力,並保證以最佳方式充分利用資源和電力。在這個類比中,工廠是OpenCL加速核心,裝配線是資料流程流水線,工位是OpenCL運算功能。

.ASIC工業類比

與FPGA類似,ASIC也建造工廠,但是ASIC中的工廠是最終形態,不能改動(圖4)。換言之,這些ASIC內部只有純機械,工廠內不存在人類認知,所有裝配線和傳送帶是固定的,不允許變更自動化流程。ASIC的這種專用型固定架構賦予它們極高的能效,以及大量規模化生產下的最低價格。但遺憾的是,ASIC的開發通常需要耗時多年,而且不支援進行任何變更,這將會導致前期投入的資產很快跟不上未來生產力提升的變化。

圖4  ASIC的工業類比

FPGA在機器人中具有重要作用

CPU和GPU擅長控制流程運算。它們的控制驅動機器模型使用控制權杖,控制權杖提示應執行指令的時間。這賦予CPU和GPU完全的控制力,能輕鬆實現複雜的資料和控制結構。然而,這樣做的代價是效率較低且難以毫無差錯地準確程式設計。相反地,FPGA擅長資料流程運算。它們遵循資料驅動機器的模式,一旦所有運算元可用就執行指令。這樣的結果就是FPGA能釋放巨大的並行性和輸送量潛力,同時避免出錯或產生副作用。

總體而言,作為CPU和GPU通用平台的替代技術,FPGA能夠自我調整生成客製化運算架構,滿足機器人的需求。因為擁有前所未有的靈活性,並能縮短設計週期,同時降低開發成本,FPGA已經在各類知名工業機器人製造商和醫療機器人應用中被大量採用。在「A Survey of FPGA- based Robotic Computing」中,讀者可以看到一項有關使用FPGA的機器人運算的調研報告,該報告展示了FPGA在機器人應用領域的廣泛適用性。以下是對FPGA特徵的詳細描述。

.自我調整

當同時需要控制流程和資料流程時,CPU和GPU因為延遲和回應時間問題無法使用,而FPGA則能生成客製化運算架構,滿足嚴格的即時要求和多重關鍵性要求。CPU和GPU所採用的固定運算架構,限制了它們的整體能力,包括回應時間和延遲。

.高性能

FPGA透過建立深度流水線化的資料路徑(流運算)來提升運算性能,而不是像CPU和GPU那樣依靠運算單元數量的增加。流運算的工作原理是一個運算單元產生的資料立即被流水線中的下一個運算單元處理,這樣就免去了資料流通道中「提取-運算-儲存(Fetch-compute-store)」的環節,便於資料產生者和消費者的運算操作,進而提升了性能。相反,由於存在架構固定、核心數量固定、指令集固定、記憶體架構僵化等多重限制,CPU和GPU只能以犧牲性能的方式進行運算。

.高能效

速度和功耗是數位電路的基本品質因數(Figure of Merit, FOM)。功率是表示數位電路頻率和觸發率的函數。FPGA透過並行和直接執行演算法調節頻率。FPGA保持較低頻率和較低切換率(無指令獲取)進行運算,但與CPU和GPU的等效運算性能相比,FPGA在更高的頻率下具有更大的並行性優勢,得以實現更好的功率指數和更高的能效。

.不浪費算力

FPGA借助靈活性實現晶片利用率最大化以提升性能。動態功能交換,其過去被稱為「部分重配置(DFX)」,允許在CPU上運行的執行緒化應用分時共用FPGA。由此當給定執行緒正在處理FPGA生成的結果時,另一執行緒能使用FPGA進行不同的運算。

.可預測

FPGA幫助CPU和GPU卸載嚴格意義的即時運算,在執行時間上提供納秒(ns)級預測能力,而且不會受到與GPU和CPU運算有關的軟體變更或抖動的影響。

.可重配置

機器人演算法仍處於高速演進發展中,FPGA能夠按需進行動態重配置和更新。此外,還可以輕鬆地對FPGA進行重新程式設計以滿足異構需求,實現CPU和GPU才能提供的通用能力。

.安全

FPGA能夠按需靈活地構建安全電路,保障機器人資料流程的安全。此外,FPGA能充分利用重配置功能修正其硬體架構的缺陷(避免硬體風險)。這樣設計人員就能迅速解決在固定運算架構上難以解決或者無法解決的安全風險(避免未來的風險,例如「熔毀」和「幽靈」)。 然而也有觀點認為,儘管FPGA是機器人專家心目中較理想的運算基幹,但是它們提供的靈活性是以增加複雜性和所需的設計技能為代價的。「A Survey of FPGA- based Robotic Computing」列出了部分所需的額外技能。該研究團隊認為只有能夠全面綜合地運用含多核心CPU、GPU和FPGA在內的所有技術,才能實現最優異的機器人性能。但隨著技術進步,目前已有業者提供的整合式系統單晶片(SoC)解決方案,是將CPU通用軟體的可程式設計能力與FPGA自我調整硬體功能結合在同一元件中。

(本文作者皆任職於賽靈思)

 

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!