如何借助 ROS 2 實現(xiàn)基于 FPGA 的軟件定義硬件
連載一:什么是自適應(yīng)機(jī)器人?
機(jī)器人是一種系統(tǒng)級的系統(tǒng),它由感知周邊環(huán)境的傳感器、根據(jù)感知采取行動的致動器和負(fù)責(zé)處理數(shù)據(jù)的計算構(gòu)成,用于對其應(yīng)用做出連貫一致的響應(yīng)。在很大程度上機(jī)器人技術(shù)是一種系統(tǒng)集成的藝術(shù),從軟件的角度和硬件的角度看皆是如此。以往的研究揭示,在機(jī)器人領(lǐng)域中多達(dá) 70% 的資源被用于集成,而不是用于開發(fā)最終應(yīng)用。直到最近,隨著較低端的工業(yè)機(jī)器人走向大規(guī)模普及化,機(jī)器人公司才開始在硬件基礎(chǔ)上著重軟件開發(fā)。盡管如此,機(jī)器人仍然是高度專業(yè)化的系統(tǒng),旨在以高可靠性和高精度執(zhí)行一系列任務(wù)。因此,機(jī)器人內(nèi)部的硬件和軟件能力之間的關(guān)系十分重要。
大多數(shù)機(jī)器人通過內(nèi)部網(wǎng)絡(luò)交換信息并滿足時序要求。從這種意義上來講,機(jī)器人屬于時間敏感型網(wǎng)絡(luò)。
機(jī)器人系統(tǒng)機(jī)載資源通常有限,包括存儲器、I/O 和磁盤或計算功能,從而阻礙了系統(tǒng)集成進(jìn)程,使之難以滿足非結(jié)構(gòu)化、動態(tài)和不斷變化環(huán)境的實時性要求。隨著機(jī)器人內(nèi)部網(wǎng)絡(luò)安全的發(fā)展,這一點更是如此,因為它經(jīng)常會在使用壽命方面給機(jī)器人帶來新的要求,這需要修改機(jī)器人的邏輯,從而對實時環(huán)路產(chǎn)生影響。因此,為機(jī)器人系統(tǒng)選擇合適的計算平臺至關(guān)重要,該平臺既要簡化系統(tǒng)集成、符合功耗限制,同時也要適應(yīng)機(jī)器人應(yīng)用不斷變化的需求。
自適應(yīng)機(jī)器人是指那些能夠成功應(yīng)對新狀況的機(jī)器人。要成為一個名副其實的自適應(yīng)機(jī)器人,必須具備以下三大基本特征中至少一個:自適應(yīng)行為、自適應(yīng)機(jī)電一體化、自適應(yīng)計算。擁有全部三大基本特征的機(jī)器人,則可被視為“全自適應(yīng)機(jī)器人”。
總而言之,機(jī)器人是能夠以高可靠性和高精度執(zhí)行一系列任務(wù)的高度專業(yè)化的系統(tǒng)。機(jī)器人內(nèi)部的硬件和軟件能力之間的關(guān)系十分重要。因此,為機(jī)器人系統(tǒng)選擇合適的計算平臺至關(guān)重要。該平臺既要能夠簡化系統(tǒng)集成、符合功耗需求,同時也要能夠適應(yīng)機(jī)器人應(yīng)用不斷變化的需求。
自適應(yīng)機(jī)電一體化 (Adaptive mechatronics)是一個業(yè)已存在數(shù)十年的概念。Gosselin 從機(jī)械的角度探討這個課題,并將自適應(yīng)系統(tǒng)定義為能夠成功響應(yīng)新狀況的系統(tǒng)。此外,他還將自適應(yīng)機(jī)器人機(jī)械系統(tǒng)定義為自適應(yīng)系統(tǒng),即通過高度依賴機(jī)械屬性,能夠適應(yīng)外部的新狀況。Gosselin 提供了各種純粹依靠機(jī)械構(gòu)造的自適應(yīng)機(jī)器人系統(tǒng)的雛形示例,包括自適應(yīng)機(jī)器人手。此外,Ivanov 也從純機(jī)械角度研究自適應(yīng)機(jī)器人,在研究中他提議自適應(yīng)機(jī)器人應(yīng)考慮使用自適應(yīng)電力驅(qū)動裝置,根據(jù)載荷改變電力驅(qū)動裝置的輸出。他將這種自適應(yīng)行為命名為自調(diào)節(jié) (self-regulation),并認(rèn)為自適應(yīng)電力驅(qū)動裝置能在機(jī)器人應(yīng)用中實現(xiàn)高能效。通過采用傳感器輸入控制機(jī)制將這項研究延伸到機(jī)電一體化領(lǐng)域,產(chǎn)生了一項有關(guān)采用傳感器反饋實現(xiàn)自適應(yīng)機(jī)器人控制的研究。示例包括視覺反饋或力傳感器反饋等。
機(jī)器人的自適應(yīng)行為并非新穎概念。它可追溯到上世紀(jì) 80 年代中期 Brooks 提出的基于行為的機(jī)器人方法和他的包容式架構(gòu) (subsumption architecture)。在上世紀(jì) 90 年代,不同的研究小組都在研究如何讓機(jī)器人具備靈活應(yīng)變能力和自我組織能力,從而提高機(jī)器人的自主性。他們往往是通過某種控制機(jī)制(使用某種形式的人工神經(jīng)網(wǎng)絡(luò)與機(jī)器人的傳感器和致動器相連)來實現(xiàn)的。后來的 Ziemke在其研究中總結(jié)了這種方法,提出了自適應(yīng)神經(jīng)機(jī)器人的概念。這種概念創(chuàng)造性地率先使用“自適應(yīng)機(jī)器人”一詞,指代用人工神經(jīng)系統(tǒng)和自適應(yīng)技術(shù)控制自主主體。最近,在《Robotic Fabrication in Architecture, Art and Design 2018》的機(jī)器人專輯中,作者援引“自適應(yīng)機(jī)器人”的說法,指通過添加感知和處理實現(xiàn)的完全自適應(yīng)行為(與 Ivanov提出的“自適應(yīng)機(jī)器人”概念不同,后者主要關(guān)注機(jī)械構(gòu)造角度)。根據(jù)原文,自適應(yīng)機(jī)器人是指能夠通過加裝傳感器,適應(yīng)不斷變化的環(huán)境條件和材料特性,同時在一定程度上保持可預(yù)測性的機(jī)器人。與該研究同時代、同思路的 Mayoral-Vilches 等提出自主適配機(jī)器人的概念。這個概念利用硬件模塊化和人工智能(指上世紀(jì) 90 年代的自適應(yīng)神經(jīng)機(jī)器人趨勢)節(jié)省構(gòu)建這種機(jī)器人所需的工作量和時間。
自適應(yīng)計算是自適應(yīng)機(jī)器人第三大基本特征。對于機(jī)器人而言,它指的是機(jī)器人能夠在運行過程中適配其計算系統(tǒng)的一個或多個屬性(如確定性、功耗或吞吐量)。正如“What is adaptive computing?”中介紹的,F(xiàn)PGA 是實現(xiàn)自適應(yīng)計算的理想技術(shù)。FPGA 最早由賽靈思聯(lián)合創(chuàng)始人之一 Freeman 在 1984 年提出,它為自適應(yīng)計算奠定了基礎(chǔ)。FPGA 兼具通用性和強(qiáng)大功能,同時效率高、成本低。因為在 FPGA 上實現(xiàn)其他處理架構(gòu),還可以實現(xiàn)并行處理,因此 FPGA 可以用于處理幾乎任何機(jī)器人內(nèi)部的任務(wù)。讓 FPGA 成為自適應(yīng)計算的另一特征在于,能夠針對每一種機(jī)器人應(yīng)用的需求專門定制數(shù)據(jù)路徑寬度和寄存器長度。如何在機(jī)器人中使用自適應(yīng)計算的示例包括為加速運動規(guī)劃而設(shè)計的計算流水線、分布式同步或時間敏感型彈性通信等。有關(guān)機(jī)器人自適應(yīng)計算的更多示例可參閱“A survey of FPGA-based robotic computing”和“A survey on FPGA-based sensor systems: towards intelligent and reconfigurable low-power sensors for computer vision, control and signal processing”。
連載三:為什么 FPGA 能在機(jī)器人中起到重要作用
CPU 和 GPU 擅長控制流計算。它們的控制驅(qū)動機(jī)器模型基于控制令牌,控制令牌提示應(yīng)執(zhí)行語句的時間。這賦予 CPU 和 GPU 完全的控制力,能輕松實現(xiàn)復(fù)雜的數(shù)據(jù)和控制結(jié)構(gòu)。然而,這樣做的代價是效率較低且難以毫無差錯地準(zhǔn)確編程。相反,F(xiàn)PGA 擅長數(shù)據(jù)流運算。它們遵循數(shù)據(jù)驅(qū)動機(jī)器的模式,一旦所有操作數(shù)可用就執(zhí)行語句。這樣的結(jié)果就是 FPGA 能釋放巨大的并行性和吞吐量潛力,同時避免出錯或產(chǎn)生副作用。
總體而言,作為 CPU 和 GPU 通用平臺的替代技術(shù),F(xiàn)PGA 能夠自適應(yīng)生成定制計算架構(gòu),滿足機(jī)器人的需求。因為擁有前所未有的靈活性,并能縮短設(shè)計周期,同時降低開發(fā)成本,F(xiàn)PGA 已經(jīng)z在各類知名工業(yè)機(jī)器人制造商和醫(yī)療機(jī)器人應(yīng)用中大量采用。在 “A survey of FPGA- based robotic computing”中,讀者可以看到一份有關(guān)基于 FPGA 的機(jī)器人計算的調(diào)研,該調(diào)研展示了 FPGA 在機(jī)器人應(yīng)用領(lǐng)域的廣泛適用性。下面是對 FPGA 特征的詳細(xì)描述:
● 自適應(yīng):當(dāng)同時需要控制流和數(shù)據(jù)流時,CPU 和 GPU因為時延和響應(yīng)時間問題無法使用,而 FPGA 則能生成無與倫比的定制計算架構(gòu),滿足嚴(yán)格的實時要求和多重關(guān)鍵性要求。CPU 和 GPU 所采用的固定計算架構(gòu),限制了它們的整體能力,包括響應(yīng)時間和時延。
● 高性能:FPGA 通過建立深度流水線化的數(shù)據(jù)路徑(流計算)來提升計算性能,而不是像 CPU 和 GPU 那樣依靠計算單元數(shù)量的增加。流計算的工作原理是一個計算單元產(chǎn)生的數(shù)據(jù)立即被流水線中的下一個計算單元處理,這樣就免去了數(shù)據(jù)流通道中“提取-計算-存儲 (fetch-compute-store)”的環(huán)節(jié),便于數(shù)據(jù)產(chǎn)生者和消費者的運算操作,從而提升了性能。相反,由于存在架構(gòu)固定、核數(shù)量固定、指令集固定、存儲器架構(gòu)僵化等多重限制,CPU 和 GPU 只能以犧牲性能的方式進(jìn)行計算。
● 高能效:速度和功耗是數(shù)字電路的基本品質(zhì)因數(shù) (FOM,figures of merit)。功率是表示數(shù)字電路頻率和觸發(fā)率的函數(shù)。 FPGA 通過并行和直接執(zhí)行算法調(diào)節(jié)頻率。FPGA 保持較低頻率和較低切換率(無指令獲?。┻M(jìn)行計算,但與 CPU 和 GPU 的等效計算性能相比,F(xiàn)PGA 在更高的頻率下具有更大的并行性優(yōu)勢,從而客戶以實現(xiàn)更好的功率指數(shù)和更高的能效。
● 不浪費算力:FPGA 借助靈活性實現(xiàn)芯片利用率最大化以提升性能。動態(tài)功能交換(DFX,過去被稱為“部分重配置”)允許在 CPU 上運行的線程化應(yīng)用分時共享 FPGA。由此當(dāng)給定線程正在處理 FPGA 生成的結(jié)果時,另一線程能使用 FPGA 進(jìn)行不同的計算。
● 可預(yù)測:FPGA 幫助 CPU 和 GPU 卸載嚴(yán)格意義的實時計算,在執(zhí)行時間上提供納秒級預(yù)測能力,而且不會受到與 GPU 和 CPU 計算有關(guān)的軟件變更或抖動的影響。
● 可重配置:機(jī)器人算法仍處于高速演進(jìn)發(fā)展中,F(xiàn)PGA 能夠按需進(jìn)行動態(tài)重配置和更新。此外,還可以輕松地對 FPGA 進(jìn)行重新編程以滿足異構(gòu)需求,實現(xiàn) CPU 和 GPU 才能提供的通用能力。
● 安全:FPGA 能夠按需靈活地構(gòu)建安全電路,保障機(jī)器人數(shù)據(jù)流的安全。此外,F(xiàn)PGA 能充分利用重配置功能修正其硬件架構(gòu)的缺陷(避免硬件風(fēng)險)。這樣設(shè)計人員就能迅速解決在固定計算架構(gòu)上難以解決或者無法解決的安全風(fēng)險(避免未來的風(fēng)險,例如“熔毀”和“幽靈”)。
然而也有觀點認(rèn)為,盡管 FPGA 是機(jī)器人專家心目中理想的計算基干,但是它們提供的靈活性是以增加復(fù)雜性和所需的設(shè)計技能為代價的。“A survey of FPGA- based robotic computing”列出了部分所需的額外技能。只有能夠全面綜合地運用含多核 CPU、GPU 和 FPGA 在內(nèi)的所有這些技術(shù),才能實現(xiàn)最優(yōu)異的機(jī)器人性能。實際不然,賽靈思所提供這種集成式片上系統(tǒng) (SoC) 解決方案,是將 CPU 通用軟件的可編程能力與 FPGA 自適應(yīng)硬件功能完美結(jié)合在了同一器件之中。
這些自適應(yīng) SoC 為機(jī)器人應(yīng)用提供了軟硬件兼有的高靈活性計算基礎(chǔ),并可提供高性能、低功耗、確定性、硬件可重配置、安全,以及自適應(yīng)特性等價值。
要點總結(jié):CPU 和 GPU 擅長控制流計算,而 FPGA 擅長數(shù)據(jù)流計算。自適應(yīng) SoC 解決方案為機(jī)器人應(yīng)用提供了軟硬件兼具的高靈活性計算基干,可提供低功耗、高性能、確定性、硬件可重配置、安全,以及自適應(yīng)等特性。
連載四:如何理解面向機(jī)器人的“軟件定義硬件”
術(shù)語“軟件定義硬件software-defined hardware o”往往指將應(yīng)用映射至 FPGA,從而通過軟件創(chuàng)建運行時可重配置硬件。軟件定義硬件旨在實現(xiàn)特定算法或計算的運行時效率最大化,是基于固定的馮諾依曼計算架構(gòu)的 CPU 和 GPU或是成本高、同樣功能不可變的 ASIC 的替代產(chǎn)品。因此,面向機(jī)器人的軟件定義硬件,應(yīng)被理解成能夠通過軟件重新編程和適配的運行時可重配置機(jī)器人硬件。.
傳統(tǒng)的機(jī)器人軟件編程是在預(yù)定義的架構(gòu)和約束條件下,在給定機(jī)器人的 CPU 中進(jìn)行功能編程。正如前文所述,一旦機(jī)器人遇到適配需求,就會導(dǎo)致復(fù)雜的系統(tǒng)集成操作。然而如果使用 FPGA,構(gòu)建機(jī)器人的行為就是為解決任務(wù)的架構(gòu)編程。機(jī)器人架構(gòu)師可以純粹從軟件創(chuàng)建自己的硬件設(shè)計,并可以通過各種平臺完成交付,如圖1所示。
圖1 賽靈思自適應(yīng)計算解決方案
對于機(jī)器人專家來說,有三種與 FPGA 技術(shù)交互的途徑。首先是芯片級入手( chip-down)的方法(圖 1a),既將片上系統(tǒng) (SoC) 集成到定制設(shè)計的 PCB 中,以滿足應(yīng)用需求。這種方法最適合機(jī)器人制造商,是大批量和成本優(yōu)化型批量的理想選擇。第二種方法是采用系統(tǒng)模塊 (SOM)(圖 1b),將預(yù)裝配電路板插入定制的承載電路板。SOM 幫助硬件工程師加快產(chǎn)品開發(fā)速度,將他們從計算平臺上解放出來,把精力集中在更有價值的創(chuàng)新上。第三種方法是采用已經(jīng)集成大量外設(shè)的完全裝配好的電路板(圖 1c)。對于高計算強(qiáng)度的運算而言,可直接插入工作站的完整電路板代表了最佳的權(quán)衡取舍。
要點總結(jié):傳統(tǒng)的機(jī)器人軟件編程是在預(yù)定義的架構(gòu)和約束條件下,在給定機(jī)器人的 CPU 中進(jìn)行功能編程。而采用自適應(yīng)計算后,構(gòu)建機(jī)器人行為則是對架構(gòu)的編程。
連載五:為什么是通過 ROS 2集成自適應(yīng)計算?
機(jī)器人操作系統(tǒng) (ROS) 是機(jī)器人應(yīng)用開發(fā)的實際框架。在 Open Robotics 的維護(hù)和指導(dǎo)下,ROS 不僅是一種操作系統(tǒng),也是一種框架。它由構(gòu)建和管理機(jī)器人的不同工具構(gòu)成,包括調(diào)試和可視化實用工具、編排工具、機(jī)器人庫(如運動規(guī)劃、導(dǎo)航、定位等),以及促進(jìn)機(jī)器人系統(tǒng)開發(fā)的通信工具。
目前,原始版本的 ROS 文章已被引用 8,500 次以上,充分證明其在研究和學(xué)術(shù)領(lǐng)域得到廣泛的認(rèn)可,ROS 就誕生在這樣的環(huán)境下。其主要目的是為開展前沿研發(fā)的用戶提供所需的軟件工具。在像 ROS-Industrial(簡稱 ROS-I)這樣項目的支持下,ROS 在業(yè)界的熱度持續(xù)增長。ROS-I 是一個開源計劃,目的是將 ROS 軟件的先進(jìn)功能推廣到工業(yè)應(yīng)用。由于 ROS-I 聯(lián)盟的帶動,ROS 現(xiàn)已在業(yè)界成功部署。日前該聯(lián)盟已擁有 80 多家成員,每年在歐洲、美國和亞洲舉辦會議,廣聚數(shù)百位機(jī)器人專家和知名制造商。后者藉此機(jī)會,通過演示介紹他們自己的 ROS 驅(qū)動程序。
隨著 ROS 超越學(xué)術(shù)層面開始進(jìn)入工業(yè)和其他領(lǐng)域,ROS 的局限性也日漸凸顯,如缺乏嵌入式支持和深度嵌入的原生支持,單機(jī)器人軟件架構(gòu),無實時功能和缺乏安全性等。為了解決這些問題,Open Robotics 于 2014 年開始重新設(shè)計 ROS,由此 ROS 2 問世。ROS 2 通過將通信中間件與機(jī)器人邏輯分離,突破了大部分已知的局限性。具體而言,Open Robotics 選擇“數(shù)據(jù)分發(fā)服務(wù)”(DDS) 作為初始通信中間件,并針對各種 DDS 解決方案構(gòu)建適配器,同時對上層暴露 DDS 特性。盡管如此,ROS 核心層仍然保持免受通信中間件的影響。ROS 2 軟件架構(gòu)具體如圖1所示:
圖1 軟件架構(gòu)
上層建立在中間件抽象層 (rmw) 上,后者負(fù)責(zé)將 ROS 抽象轉(zhuǎn)譯成具體的中間件。ROS 客戶端庫 (rcl) 不會暴露任何具體中間件的實現(xiàn)細(xì)節(jié)(如 DDS)。這樣一來,rcl 保持免受中間件的影響,且能夠輕松擴(kuò)展到其他需要不同傳輸方式的應(yīng)用。
ROS 擁有數(shù)千名活躍用戶,目前已是規(guī)模最大的機(jī)器人專家群體。ROS 因研究而誕生,現(xiàn)已演進(jìn)發(fā)展有十多年的時間,在各種應(yīng)用領(lǐng)域得到廣泛采用,并且還能服務(wù)于工業(yè)需求。
ROS 不僅提供工具、庫和慣例,而且還擁有不斷擴(kuò)大的機(jī)器人專家社區(qū)。從概念上講,ROS 在大多數(shù)方面圍繞著被稱為 ROS 計算圖的抽象。計算圖內(nèi)的每個節(jié)點都能開展機(jī)器人計算,并通過用底層通信中間件實現(xiàn)的通用點對點數(shù)據(jù)總線與其他節(jié)點交換信息。數(shù)據(jù)總線內(nèi)的通信通道按話題組織。因此,機(jī)器人的總體行為取決于計算圖,而計算圖可以實現(xiàn)在一部或多部計算機(jī)上(以分布方式)。這就完成了第二次抽象,也就是將計算圖映射到機(jī)器人中可用的計算基干形成 ROS 數(shù)據(jù)層圖。數(shù)據(jù)層圖代表的是物理分組和連接,用于在計算圖中實現(xiàn)建模行為。簡單地說,其捕獲的是機(jī)器人的物理現(xiàn)實,包括通信總線、機(jī)器人組件(包括傳感器和/或致動器),以及計算圖與現(xiàn)有機(jī)器人組件中可用的計算基干間的映射。
ROS 計算圖可以涉及一個或多個機(jī)器人,并且本質(zhì)上是模塊化的,能夠以分布式或集中式的方式實現(xiàn)。圖 2 所示的是 ROS 計算圖(圖 2 的上部分)和數(shù)據(jù)層圖(圖 2 的下部分)。表 1 是對一些最重要的ROS概念的總結(jié)。
(a) ROS 2 計算圖:通過每個表示為節(jié)點的單獨計算,為機(jī)器人總體行為建模的數(shù)據(jù)結(jié)構(gòu)。
(b) ROS 2 數(shù)據(jù)層圖:表示用于在計算圖中實現(xiàn)建模行為的物理分組和連接。
圖2 ROS 抽象用于具備導(dǎo)航能力的 2 輪機(jī)器人
表1 ROS 最相關(guān)概念的總結(jié)
ROS 概念 | 解讀 |
計算圖 | 通過每個表示為節(jié)點的單獨運算,為機(jī)器人總體行為建模的數(shù)據(jù)結(jié)構(gòu)。節(jié)點間按話題和其他抽象與其他計算節(jié)點通信。計算圖不僅有助于將機(jī)器人行為可視化,而且也通過將每個機(jī)器人計算劃分成節(jié)點,加快了設(shè)計流程。從電氣工程師的角度來看,可以將計算圖理解為機(jī)器人總體行為的原理圖。 |
數(shù)據(jù)層圖 | 表示在計算圖中實現(xiàn)建模行為的物理分組和連接。從電氣工程的角度來看,如果計算圖映射的是原理圖,那么數(shù)據(jù)層圖對應(yīng)的就是布局圖。 |
節(jié)點 | 執(zhí)行計算的流程。ROS 設(shè)計旨在以精細(xì)粒度級實現(xiàn)模塊化;機(jī)器人控制系統(tǒng)通常由多個節(jié)點構(gòu)成。節(jié)點執(zhí)行任意邏輯都會影響到機(jī)器人的總體行為。 |
話題 | 數(shù)據(jù)總線(底層通信通道)內(nèi)的連續(xù)數(shù)據(jù)流。數(shù)據(jù)總線上的節(jié)點可通過發(fā)布/訂閱通信范式來交換信息。話題一般用于連續(xù)數(shù)據(jù)流(傳感器數(shù)據(jù)、機(jī)器人狀態(tài)等)。它們通常表示為多對多連接。數(shù)據(jù)可以隨時在獨立于任意發(fā)送方/接收方的情況下發(fā)布和訂閱。 |
服務(wù) | 數(shù)據(jù)總線上針對具體機(jī)器人任務(wù)的按需阻塞連接。在計算圖中作為 RPC 實現(xiàn)。主要用于需要特定數(shù)據(jù)的較快速任務(wù)。在語義學(xué)上,用于處理請求。 |
行動 | 數(shù)據(jù)總線上的按需非阻塞連接,通常用于移動機(jī)器人的任何離散行為,或是運行較長時間但在執(zhí)行過程中提供反饋的任何離散行為。行動可以是預(yù)先考慮過的。廣泛用于啟動較低級別的控制任務(wù)。在語義學(xué)上,用于現(xiàn)實世界的行動。 |
要點總結(jié): ROS 計算圖是一種為機(jī)器人總體行為建模的數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)層圖捕獲的則是機(jī)器人組件(用于在計算圖中實現(xiàn)建模行為)的物理分組和連接。
評論