文|林偉
寫在最前:
本文主要面向人形機器人行業的專業人士,正文一萬八千字。建議讀者先閱讀到第3.1.1節(三千四百字),再根據個人判斷,決定是否看後續內容。
本文由筆者(並非人形機器人業內人士)在多方學習的基礎上獨立創作。限於檢索資料的範圍,筆者不聲稱所述技術思想是本人原創。任何先於本文公開釋出的、與本文部份內容相同或相近的技術資訊的原創者,享有更優先的智慧財產權。
請讀者從實用主義的角度看待本文所述技術思想,若有想法/問題/質疑,歡迎留言、私信、微信交流。
引言
筆者於2023年12月在知乎、CSDN釋出了一篇技術文件 -- 【在實用化人形機器人研發流程中深入套用FPGA技術的流程圖(基於工信部【人形機器人創新發展指導意見】)】(以下簡稱【 流程圖 】,並將其在業內廣泛傳播。
文件之中雖然就所涉研發流程給出了具體的描述、豐富的說明,但對於不了解FPGA技術的人形機器人研發團隊、相關決策者來說,其表述仍偏於抽象,有可能成為做出實質性決策的主要障礙之一。
因此,筆者基於多年來在FPGA套用領域的實踐、近年來在機器人領域的學習(沒有實踐),結合【流程圖】的內容,針對實用化人形機器人的控制系統,以深入套用FPGA技術為指導思想做了一個框架設計,提供一個具象化的設計例項、參考技術方案,協助各研發團隊及相關決策者了解這一技術思路的價值。
進而,筆者希望讀者將這個框架設計與【流程圖】結合起來進行分析、思考,希望:
進一步降低將FPGA深入套用於人形機器人在純粹技術維度上的門檻;
助力更多正在人形機器人領域參與競爭的團隊 -- 及時做出實質性決策,及時將更多資源分配到深入套用FPGA技術這一競爭維度。
註:本文所說的「深入」套用FPGA,是相對於已有的、將FPGA套用於工業機器人伺服電機的驅動及反饋控制(可能也用於實作關節軌跡點插值)的方案而言的。大約在9年前,采用此類方案的工業機器人產品就已經面世。
1、特斯拉Optimus-Gen2人形機器人的硬體系統設定
設計人形機器人控制系統,最好能有一個現成的機器人本體硬體系統作為基礎(如【流程圖】中間通道第3個步驟所述)。筆者未曾物理接觸過人形機器人,目前在網上能找到的、技術資訊最豐富的人形機器人是特斯拉的Optimus-Gen2,本文將基於它的硬體系統展開相關論述。
1.1 電機
Optimus-Gen2的硬體系統共有52個主動驅動的自由度,每個自由度需要一個電機加以驅動,各部位的電機數量如下表所列(合並參考資料1、2的內容)。
基於參考資料1、2中的分析、統計,這些電機分為兩類:位於兩側手部的22個空心杯電機,位於其他部位的30個無框力矩電機(分別用於16個旋轉關節、14個直線關節)。這兩類電機的基本驅動-反饋控制原理都與永磁同步電機類似(參考資料3、4),即,基於SVPWM-逆變器的電機向量驅動、電流-速度-位置三環巢狀PI控制。所以,在後續的設計、分析中,為簡化表述,將這兩類電機統稱為電機,都采用相同的、基礎版本的驅動-控制機構。
1.2 傳感器
網上目前找不到Optimus-Gen2的傳感器數量統計結果,已經明確具備的有:
30個磁致伸縮力傳感器,每個無框力矩電機配備1個(參考資料1,結合參考資料2所述,其數量可能略有減少),具體分布見上表;
分別位於兩側腕部、踝部的4個一體式六維力/扭矩傳感器(參考資料2);
至少52個編碼器,每個電機至少配備1個,具體分布見圖1;
位於手指指腹的10個觸覺傳感器。
進而,筆者估計,為了實作自身平衡,Optimus-Gen2必須感知本體在運動過程中的3D加速度、角速度。所以,安裝於軀幹內的至少一個 IMU (慣性測量單元)是必須的。
並且,為了在站立狀態下確定腳的位姿(實用化套用場景中的地面未必水平、穩固)從而為各肢節的位姿解算提供更準確的起點,也為了在邁步過程中更好地控制邁出腳的姿態以減輕腳在落地時刻所受的沖擊力,每只腳的內部應該配備了一個IMU芯片。
為了使雙手能執行精確度較高的、依賴於局部位姿感知的任務,或許每個手掌裏也配備了一個IMU芯片。
同時,考慮到特斯拉在視覺感知技術領域的獨特優勢,Optimus-Gen2必定裝備了至少1個視覺傳感器(探測可見光或紅外光),並且很可能裝備了RGB-D這類能測距(尤其是基於結構光的近場測距,類似於大王峰掃車換殼的那種)的視覺傳感器,或許還有相應的距離-速度傳感器(例如 FMCW 雷射/公釐波雷達)與視覺傳感器協同工作。
在各電機及其控制系統中,霍爾元件、電流測量、IPM內建的故障報警電路也屬於傳感器的範疇。
另外,監控CPU、FPGA的溫度要用到溫度傳感器,考慮到適應具體的套用場景,Optimus-Gen2可能配備了更多溫度傳感器。
在後續設計中,將有側重地考慮上述各種傳感器的套用。
2、 深入套用FPGA的人形機器人控制系統設計思路
基本設計思路如【流程圖】的註1所述: 將人形機器人視為一個多入多出的反饋控制系統,針對實作工信部【人形機器人創新發展指導意見】所要求的以應對真實場景下的復雜環境與任務、應對突發情況為特征的實用化人形機器人功能需求,在基於CPU+軟體體系結構的人形機器人控制系統之中涉及多通道並列處理且需精準協同、強即時性(低延遲量+低延遲抖動量,下同)、大運算量、大數據傳輸量且構成即時性效能瓶頸的環節中匯入FPGA。
即,FPGA承擔所有強即時性的外圍任務,使CPU可以專心致誌執行強即時性的高層次演算法。
具體而言:
在系統層面,本文以【人形機器人創新發展指導意見】強調的感知-運算-控制(電機驅動)反饋控制回路為主線,運用FPGA作為「膠合邏輯專使用者」(參考資料5)的傳統藝能,發揮FPGA在數據靈活排程與片內/片間數據高效能傳輸方面的優勢,針對數據傳輸頻寬瓶頸以及傳輸延遲管理進行全域統籌規劃、細節最佳化(如參考資料9註2第4自然段所述),將FPGA作為連線感知子系統與運算子系統、連線運算子系統與控制子系統的中介,簡化芯片間互聯,以提高數據傳輸效率、降低數據傳輸延遲、減少遠距離走線數量、降低數據傳輸的綜合成本,同時盡可能將運算CPU從繁雜的數據傳輸任務中解脫出來,使其能將更多資源用於完成高層次運算任務。
在感知環節,發揮FPGA功能靈活、多個功能低延遲精準協同並列執行、引腳豐富的優勢,將其作為管理各種傳感器的核心,進而對來自傳感器的多路資訊進行匯總、預處理,盡可能將運算CPU從繁雜的數據采集任務、初級感知演算法任務中解脫出來,使其能將更多資源用於完成高層次運算任務。
在運算環節,發揮FPGA內建大量並列執行的運算資源(乘法+加法+累加運算的硬體模組、RAM塊、寄存器)且功能極其靈活、用硬體直接實作演算法、記憶體存取模式高效、運算模組與數據傳輸模組在芯片內實作緊耦合的優勢,將其作為運算CPU的協處理器,分擔後者的一部份運算任務,使其能以更好的即時性完成高層次運算任務。
在控制環節,發揮FPGA功能靈活、多個功能模組低延遲精準協同並列執行、引腳豐富的優勢,將其作為管理各個執行器(當前僅考慮電機)的核心,借用已經很成熟的基於FPGA的伺服電機控制方法,實作高效能的控制子系統。
在表述方式上,本文以 「感知-運算-控制」反饋控制回路為主線,將人形機器人控制系統的軟-硬體功能劃分為多個子系統-模組,以系統框圖的形式分色予以表述,進而以框圖為索引,定性描述各子系統-模組的基本功能及彼此之間的協作關系,使讀者在深入套用FPGA技術的人形機器人控制系統的功能、結構、執行方式、重要特性等方面獲得一個清晰的總體概念。
[註:本文將多次提到「體系結構」這個關鍵詞匯,其定義是:為實作所要求的目標、功能而針對組織及硬體進行的設計(參考資料8)。按照筆者的理解,CPU+軟體體系結構的核心特征是:單個/少量運算核心以通用的流程依次讀取級聯對映的多級記憶體中的指令與運算元、解碼指令並序列執行以實作演算法功能;FPGA體系結構的核心特征是:大量分布式硬體資源直接讀取單級記憶體中的運算元、並列執行、用個人化硬體結構直接實作演算法功能。]
3、 深入套用FPGA的人形機器人控制系統框架設計
3.1 系統整體設計
3.1.1 系統框圖
如圖2所示,以各主要芯片為核心,控制系統在硬體上劃分為5個部份:運算CPU(及其最小系統、周邊的輔助功能器件,下同)、工控CPU(及其最小系統、周邊的輔助功能器件,下同)、軀幹內建FPGA及相關的測量-控制器件、雙手手掌內建的兩片FPGA及各自相關的測量-控制器件。
以上主要芯片之間的互聯,不需要借助於任何通訊協定芯片。
空間布置方面,在軀幹內,建議將運算CPU與軀幹內建FPGA一並布設在背板上,兩者之間以PCIe匯流排、GPIO連線在PCB上布線直連;工控CPU專用一個插卡;30組IPM以及適合集中布置的電機相關器件置於插在背板插槽中的各個插卡上。當然,如果用一塊尺寸不超限的、便於向外引線的PCB就能以可接受的器件/飛線互擾而安放所有這些器件,肯定是最理想的方案。
進而,基於具體的職能,圖中將5個子系統(系統管理、感知、運算、控制、芯片間數據即時傳輸)按照橙、淺藍、紅、綠、深藍予以著色,以方便讀者理清模組之間的協作關系,降低決策者做出實質性決策在純粹技術維度上的門檻。
3.1.2 基於FPGA解決Optimus-Gen2靈巧手腕部走線困境
3.1.2.1 Optimus-Gen2靈巧手腕部的走線困境
Optimus-Gen2每只靈巧手包含很多感知、驅動裝置,包括,5指指腹的觸覺感知器,11個主動自由度(參考資料2)各自對應的IPM+電機+編碼器+霍爾傳感器+力/力矩傳感器,22個電流傳感器(2相法測3相,很可能與ADC整合、可以多路共用輸出數據線),可能存在的IMU。
如果只在軀幹設定單一的運算-控制核心,在運算-控制核心與上述器件之間將存在大量導線,即使把IPM置於主控芯片附近、不考慮動力線對訊號線的幹擾,從IPM到11個手指驅動電機的動力線就有33根;如果將IPM置於手掌內部,則從運算-控制核心到IPM的PWM脈沖訊號線就有66根。另外,還應考慮IPM控制/告警、電機抱閘、編碼器輸出、霍爾傳感器輸出、力/力矩傳感器輸出、IMU輸出等訊號,即使其中一部份可以共用 I2C匯流排 (易受幹擾),也要再多出來幾十根訊號線。
因此,在實用場景下,如果僅在軀幹設定單一的運算-控制核心,則在肩/肘/腕部位的物理空間內(由仿人皮膚及組織包裹、塑形,例如機械姬裏的丹妮麗絲)將既匯集多個機械、測量部件又需要穿行大量導線,而且需要分別在這3個部位的3/1/3個自由度上做大振幅的運動,致使線束的外徑、剛度、磨損防控需求與走線空間、關節的運動振幅需求產生尖銳的矛盾,各條走線所受周邊環境(包括機體內環境)的幹擾、彼此之間的串擾也將難以處理,這就是所謂的走線困境。其中,尤以腕部為甚。
3.1.2.2 解決方案
如圖2下半部份的虛線框所示,以位於手掌中的一片FPGA為核心,實作上述運算-控制核心在手掌部位的大部份功能,僅以少量序列差分訊號線對實作手掌內建FPGA、軀幹內建FPGA之間的強即時性資訊交換,再以後者為中介,實作手掌內建FPGA所控制的感知-驅動裝置與運算CPU之間的強即時性主線資訊(傳輸在感知-運算-控制這一反饋控制環路主中的資訊)交換、與工控CPU之間的非即時性管理資訊交換。
具體而言,FPGA能並列且靈活地執行大量強即時性、強時序耦合的大運算量任務,並且能提供大量使用者I/O引腳,因而可以以15x15mm(CSG324)的本體芯片平面區域占用而獨力(不需要外接記憶體、芯片組)即時執行11個電機的軌跡點插值及其基於SVPWM-逆變器的三環反饋向量控制演算法,並且以點對點的、基於差分訊號(抗共模幹擾)的高速序列通訊實作與軀幹內建FPGA的全雙工強即時性數據交換,並且為相關感知、驅動訊號出入FPGA提供引腳。
同時,將配置FPGA所需的序列FLASH(基本上不參與即時執行)挪到下臂空間內,再將11片IPM(典型尺寸12x12mm)、1片IMU(典型尺寸5x4mm,圖3中按照7.5x6mm)一並擠進手掌空間內(PCB只能在手掌厚度方向上與11個包含電機-編碼器-力/力矩傳感器的關節驅動機構重疊放置),單面平面布置如圖3(真實比例)所示,其中,手掌內部空間的平面尺寸為78x90 mm。
如此,在手腕部位就只需穿行少量序列差分訊號線、SPI(FLASH用)路線、電源線、地線,問題得以解決。
3.1.2.3 待確認的問題:布線、電磁相容、散熱
從手掌內建FPGA引出的數位量訊號線有一百多條,可能還需要與IPM的動力線輸出線保持距離,IPM動力輸出線在PCB上的布線可能會比較寬(不了解具體情況),再加上其他傳感器的布線,的確是「螺螄殼裏做道場」的感覺,並且有把腕部的問題轉移到手掌的嫌疑。
顯而易見,電磁相容問題肯定也會很復雜。甚至,將FPGA、ADC(即使一部份ADC可以整合在FPGA內部)、IPM三者放在一塊PCB上,管控電磁相容的成本是否將非常高甚至根本就不可行?
另外,長期工作過程中,如何在局促、密閉的空間內為手掌中的關節驅動機構、IPM、FPGA散熱?這也需要在後續工作中深入研究。
3.1.2.4 將這一布局方式拓展到肩部、髖部
現實情況有可能是,即使按照3.1.2.2節的方案,在肩部的走線難度仍然非常大。
倘若如此,可以考慮將這一布局方式向上拓展,在下臂空間內增設一片FPGA,負責為腕部、肘部的4組IPM-電機-傳感器提供強即時性的運算、控制、通訊服務。
下臂內建FPGA內部模組的設計與手掌內建FPGA類似,電機、IPM數量減為4,取消指端觸覺傳感器、IMU,對外以全雙工高速序列通訊方式直連軀幹內建FPGA(與手掌內建FPGA共同作為星形拓撲的外圍節點),後者的FPGA片間全雙工序列直連線口模組的數量由x2改為x4,並且將其中的軌跡點插值-電機控制子系統的數量減為22(=30-4x2)。
同理,如果髖部、膝部的走線也存在類似問題,亦可用類似的方式解決:增設的FPGA置於小腿內部空間,負責為踝部、膝部的3組IPM-電機-傳感器提供強即時性的運算、控制、通訊服務,星形拓撲,相應在軀幹內建FPGA中增加FPGA片間全雙工序列直連線口模組的數量至x6、減少軌跡點插值-電機控制子系統的數量至16(=22-3x2)。
為簡化敘述,後續內容將不考慮本節述及的對系統框架的備選更改項。
3.1.3 關於內建CPU硬核的FPGA(SOC)
目前,以Xilinx的Zynq系列芯片為代表的、內建CPU硬核(通常是雙ARM核)的FPGA已經獲得比較廣泛的套用。將其套用於圖2所述系統,可以使運算CPU、管理CPU、軀幹內建FPGA整合在一片芯片內,形成一個初級的片上系統(SOC,System On Chip),圖2中比較累贅的PCIe匯流排(通常用於板間經插槽互聯)將被 AXI 之類的片內匯流排取代,通訊體系結構顯著化簡,通訊效率顯著提高。
更重要的是,內建CPU硬核的FPGA在架構上更接近於工信部【人形機器人創新發展指導意見】強調的「‘感-算-控’一體化的高效能運動控制器」+「具有多模態空間感知、行為規劃建模與自主學習等能力的智慧芯片」這一終極形態,高端芯片中甚至額外整合了GPU,很適合用作抵達終極形態過程中的中間版本。
事實上,以這類芯片為核心的機器人/AGV計畫,網上已經能找到不少。
本文之所以沒有采用這種芯片,不僅因為其在本質上與圖2所述架構並無不同,更重要的是,筆者不希望在將FPGA深入套用於人形機器人這一核心主題之下節外生枝。即:
對於不熟悉FPGA的人形機器人業內人士來說,把握本文的核心思想、理解其工作機制,這件事本身已經需要在很大程度上轉換既有的思路。如果再加上Zynq這類芯片的各種專用表述、附加特征,將顯著增大讀者的閱讀負擔,不利於讀者理解、把握本文的主旨。
所以,本文采用了FPGA與CPU分立的架構,將已經廣泛套用的PCIe作為兩者之間的主通道。
3.2 管理子系統(橙色)
管理子系統的主體部份位於人形機器人的軀幹內,其核心是工控CPU,硬體包括CPU、基礎外圍芯片(例如南橋、記憶體),執行常規版本的工控軟體系統,用於實作非即時的系統管理功能。
位於圖中左上角的基於世界時時標的同步訊號序列的生成與分發模組,實作的是強即時性功能。由於其具備很強的管理內容,也被劃歸本子系統。
3.2.1 FPGA所涉系統管理資訊的收發
工控CPU經I2C匯流排(采用I2C是為了節省FPGA的I/O引腳)與位於軀幹內建FPGA內部的I2C介面模組通訊,經後者向系統管理資訊匯集排程與分發模組發送系統管理指令資訊、從系統管理資訊匯集排程與分發模組獲取由FPGA內各模組反饋的系統管理所需資訊。
為避免圖面路線繁雜,圖2中未示出系統管理資訊匯集排程與分發模組與FPGA內其他各模組之間的資訊傳輸通道。
與位於軀幹內建FPGA內部的系統管理資訊匯集排程與分發模組類似,左、右手掌內建FPGA中也設定了這一模組,其功能與前者基本相同,區別在於需要經一對FPGA片間全雙工序列直連線口模組與前者通訊,實作系統管理用資訊在左、右手掌內建FPGA內部各模組與工控CPU之間的往來傳輸。同理,圖2中未示出系統管理資訊匯集排程與分發模組與FPGA內各其他模組之間的資訊傳輸通道。
3.2.2 運算CPU、使用者裝置的管理
運算CPU模組經PCIe匯流排、位於軀幹內建FPGA內部的系統管理資訊匯集排程與分發模組、I2C匯流排實作與工控CPU的連線,以往來傳輸特定格式的套用層數據幀的形式接受工控CPU的管理。
使用者IO埠模組掛接在工控CPU的外部匯流排上,包含網口、管理用射頻通訊介面、USB埠、TF卡槽、顯視器介面、鍵盤滑鼠介面等,用於在使用者與人形機器人之間實作非即時的資訊互動。
3.2.3 世界時時標的建立與分發
人形機器人的實用化,應實作本體與世界時時標的協同執行。例如,它可能需要按時給老人服藥、按時帶小朋友乘坐民航班機。
位於軀幹內建FPGA內部的時標建立與保持及系統同步時序管理模組從位於芯片外部的世界時時鐘源模組(例如北鬥、GPS接收模組或其位於原生的次級子系統)獲取世界時時標資訊並將其周期性發往系統管理資訊匯集排程與分發模組,由後者將其轉發給工控CPU、實作整機時標與世界時的同步;以及,經GPIO將世界時時標資訊周期性發送給運算CPU。
3.2.4 同步訊號序列的生成與分發
時標建立與保持及系統同步時序管理模組以世界時時標為基準產生人形機器人控制系統所需的各種同步訊號序列,發往系統內的各子系統、模組,實作人形機器人動作序列與世界時時標的統一,實作控制系統內部各子模組動作之間的精確同步 – 由於各片FPGA之間形成以軀幹內建的FPGA為中心的星形拓撲,沒有中間環節,各FPGA內部各模組的各個動作時序的各個時間節點之間的同步精度是深亞微秒級。
同時,這一機制也為將人形機器人的動作細節精確同步於世界時鐘、適配於高精度實用場景提供了底層技術支持。
3.2.5 世界時時鐘源失效後的時間保持
作為以實用化為設計目標的人形機器人控制系統,必須應對世界時時鐘源失效的狀況,避免因此影響服務品質甚至造成不良後果(例如在錯誤的時間服藥、錯過登機時間)。
在衛星訊號缺失並且衛星定時次級子系統也工作不正常的情況下,世界時時鐘源將失效。此時,除了應由工控CPU經人機介面發出告警資訊,時標建立與保持及系統同步時序管理模組必須在故障前世界時時標的基礎上基於板載晶振(以及特定的晶振頻偏補償演算法)自行保持世界時時標的更新、同步訊號序列的發送,即所謂時間保持。
為確保人形機器人所提供服務的時效性,時間保持必須滿足一定的精度。例如,自行生成的時標在1天內相對於真實衛星時標的誤差絕對值曲線的峰值小於0.1秒。
並且,當世界時時鐘源回復之後,本地保持的世界時時標應以漸變方式(而非跳變方式)恢復與世界時時鐘源的同步,以免造成精確定時系統的紊亂。
本節所述思想借鑒自智慧變電站領域,已有成熟的規範,建議參閱IEC-61850或相關技術文獻。
3.3 感知子系統(淺藍色)
感知子系統用於獲取本體、環境的資訊,為控制系統做決策提供原始數據。
3.3.1 感知裝置及其驅動、資訊接收與解算
圖2所示感知裝置的廠家已經提供了規範的介面,用於對其進行存取,裝置的驅動、資訊接收與解算按照數據手冊做即可,不予贅述。
電機周邊的電流檢測、編碼器、霍爾元件原則上也屬於傳感器,但由於其功能緊密耦合電機驅動功能且與電機一一對應、配套提供,為使控制子系統看上去功能完整而將這些傳感器歸入其中。
3.3.2 傳感器資訊預處理、初級的傳感器融合
傳感器融合是人形機器人控制系統的必備功能,本框架設計將其分為兩級:位於FPGA中的多維度傳感器資訊預處理、傳感器融合基層演算法模組用於對傳感器資訊的數據模式進行變換(例如影像的色度空間變換)、從中提取特征資訊(例如頻譜譜峰的位置、強度),進而實作相對簡單、初級的傳感器融合演算法,高級的傳感器融合演算法交由運算子系統(圖2中標記為紅色)執行。
同類傳感器的初級融合的例項:將多個網路攝影機所攝視訊影像按幀拼接(通常需要基於ORB、SURF之類的影像特征子提取與配對)、形成周邊環境的全景視訊數據流。
異類傳感器的初級融合的例項:將網路攝影機所攝視訊影像與雷射雷達獲取的距離場+速度場點雲數據做配準,形成世界時時標下的對周邊環境的多維數據描述序列。
不論實作傳感器資訊預處理演算法,還是實作傳感器融合的初級演算法,都應考慮充分運用神經網路(例如CNN、GNN)技術、從傳感器輸出的原始數據流(及其預處理後的形態)中直接提取高維資訊。
上述多維數據描述序列(以及其他傳感器采集的資訊)經由FPGA片內數據排程中心模組、PCIe端點模組、PCIe匯流排傳遞給運算CPU,由軟體實作傳感器融合演算法的高級部份,相關任務在第3.4節介紹。
上述運算過程涉及大量影像、點雲等數據的緩沖,很可能用到容量較大的FPGA片外專用記憶體,其中最常用的是DDRx-SDRAM記憶體芯片,如圖2右上角所示。
3.3.3 數據處理過程與世界時時標的同步
需要特別關註的是,對各感知裝置輸出資訊的采集、預處理、融合(包括由運算CPU執行的高層次融合)操作,都應在世界時時標(見第3.2.3節)之下進行。即,這些數據處理操作都應同步於時標建立與保持及系統同步時序管理模組輸出的、同步於世界時時標的、屬於本操作的同步訊號序列(包括經由FPGA芯片間序列直連線口傳輸的或者經由運算CPU-GPIO傳輸的同步訊號序列及其衍生訊號序列)-- FPGA內部數量極其豐富的、延遲可預知的布線資源為這些訊號序列的傳輸提供了可靠的支持。
後續的各子系統中的運算CPU演算法的執行、FPGA內部各模組的數據處理操作,也都應以這種方式同步於世界時時標,不再贅述。
3.3.4 關於自研傳感器
如果希望像特斯拉那樣為Optimus-Gen2自研某些傳感器,則需要研發團隊深入研究相關傳感器中將理/化資訊轉化為電訊號特征的原理、傳遞函式、數據後處理機制,例如【流程圖】註7第2自然段所述技術項:傳感器的動態自適應驅動與反饋控制,輸出數據的動態自適應預處理(例如針對六維力/加速度傳感器輸出數據波形的頻譜生成與分析+自適應濾波降噪+特征子辨識與量化分析進而據此即時反饋調節傳感器的工作模式、參數)。
一般來說,自研傳感器涉及的運算、控制過程,會用到以低延遲實作大運算量演算法(若演算法構思無誤則其運算量大機率與效果正相關)、低延遲的數據傳輸、精準的時序控制、更多的控制芯片I/O引腳,非常適合用FPGA予以實作。
3.4 運算子系統(紅色)
如圖2所示,運算子系統由運算CPU模組、位於軀幹內建FPGA中的關節運動軌跡點插值模組和運算CPU演算法任務協處理模組、分別位於左右手掌內建FPGA中的關節運動軌跡點插值模組這5個模組組成。
運算子系統基於感知子系統提供的資訊,周期性地完成對環境、本體、工作目標的即時建模,基於所建模型算出下一個軌跡點輸出時刻各關節的軌跡點參數,完成各關節的軌跡插值,再將插值結果發往控制子系統中對應於各關節的電機控制通道。
3.4.1 運算CPU
3.4.1.1 運算CPU工作周期
運算CPU模組經GPIO定期由時標建立與保持及系統同步時序管理模組獲得世界時時標,在這一時標的統一定時之下,與感知子系統、控制子系統的工作時序相配合,劃定自己的工作周期,稱為運算CPU工作周期。
圖4是以運算CPU工作周期為核心劃分的、人形機器人控制流程中各個步驟的時間關系示意圖,以下對照此圖介紹運算CPU模組所執行的演算法任務及其與前、後數據處理步驟之間的邏輯、時序關系。
圖4中,時間箭頭從上向下,涵蓋了3個運算CPU工作周期(編號N~N+2),彩色字型標記的是完成一次反饋控制(感知-運算-控制)的數據處理過程,各彩色字型子系統的字型顏色與圖2一致。
必須說明的是,圖4僅僅是示意圖,其中不同列內各單元格在時間維度上的關系,僅表明其邏輯、時序關系誰先誰後,不排除在時間軸上存在部份重疊。例如,不需要等到淺藍色單元格的傳感器資訊的接收、解算工作完全結束,針對這些數據的傳感器資訊預處理乃至傳感器融合初級演算法就可以部份啟動了。
3.4.1.2 執行傳感器融合上層演算法以及對環境、本體、工作目標的即時建模
在時標建立與保持及系統同步時序管理模組的統一排程下,運算CPU在圖4中運算CPU工作周期N+1的起始時刻,已經借助用於控制PCIe根復合體的DMA控制器從3片FPGA中的多維度傳感器資訊預處理、傳感器融合基層演算法模組獲得了地球空間座標下的對環境、本體、工作目標的多維數據描述序列(在運算CPU工作周期N內生成、傳輸,如圖4中淺藍色字型的單元格內容所示)(見3.3.2節),然後執行傳感器融合上層演算法,進而從上述描述序列中提取高維資訊,完成對環境、本體、工作目標的即時建模,獲得三者的即時模型在本周期內的版本。
本節所涉演算法很復雜,筆者對其細節的理解很少,只知道其運算量極為龐大。在近年來的公開資料中,基於CPU+軟體針對其中某個環節(甚至是某個環節中的某項運算),在抽象程度較高的套用場景下的單次運算耗時通常為10ms數量級(請專業人士指正),不能滿足實用化需求,尤其是不能滿足【人形機器人創新發展指導意見】所提出的應對突發情況的需求。所以,用FPGA提供低延遲的、靈活的運算-數據傳輸協處理服務(見3.4.1.4、3.4.3節),分擔運算CPU的計算壓力,必將為本節所涉演算法的實用化提供有效的助力。
3.4.1.3 運動規劃
在當前周期的建模完成後,以環境、本體、工作目標的即時模型為基礎,執行即時運動規劃演算法,將當前解算出的任務目標對映為此後一段時間(在最簡模式下是一個運算CPU工作周期的時長)內人形機器人的動作過程,再將對這一段動作過程的描述對映為人形機器人的52個關節在此期間的運動軌跡中的一系列分立的(通常是等時間間隔的)軌跡點,在預設的各個軌跡點輸出時刻輸出52個關節的軌跡點參數(圖4中紅色字型的運動規劃環節),進而將這些參數經PCIe匯流排發往軀幹內建FPGA、經由後者發往左右手掌內建FPGA,由這3片FPGA中的關節運動軌跡點插值模組完成軌跡點插值運算(圖4中紅色字型的關節運動軌跡點插值環節)(見3.4.2節)。
本節所涉演算法造成的算力壓力與3.4.1.2節類似,不再贅述。
3.4.1.4 將運算任務解除安裝給FPGA中的協處理模組
如果3.4.1.2、3.4.1.3節所涉任務的運算量太大,不能在當前的運算CPU工作周期內完成,則需要修改軟、硬體任務的劃分,將一部份可以規範化、格式化的運算任務從整個運算流程中剝離出來,經PCIe匯流排交由軀幹內建FPGA中的運算CPU演算法任務協處理模組予以執行、回傳結果(見3.4.3節,圖4中未示出),再將回傳的結果代入軟體運算流程中其所屬任務被套用的位置,繼續執行相關的高層次演算法。
在上述「剝離-代入」的過程中,運算CPU所執行的演算法應能夠允許運算CPU轉而執行其他任務,從而實作運算CPU與運算CPU演算法任務協處理模組的並列執行,只要這種硬體並列在時間上的收益大於開銷(剝離操作、往來傳輸運算任務及其結果的操作、代入操作),就能降低運算CPU執行整個演算法的耗時。
在1個運算CPU工作周期內,上述「剝離-代入」的過程可以針對不同的運算元、演算法而多次執行。
具體移交哪些演算法任務、各演算法任務在時序上如何排程,需要在【流程圖】中間通道的第5個環節予以初步確定,並且在後續環節進行調整。
運算CPU演算法任務協處理模組執行協處理演算法的更多資訊,請參閱第3.4.3節。
3.4.1.5 深入套用FPGA技術為高層次演算法的前沿探索提供助力
第3.4.1.2、3.4.1.3節所述高層次演算法非常復雜,並且,基於筆者涉獵範圍內的資料,其中一些重要環節的原始理論、基礎模型、數學形式最佳化工作都還處在探索之中(請專業人士指正),本文只能就其在深入套用FPGA的控制系統中的位置、與其他模組的關系(尤其是其他模組能為其提供的幫助)做出定性描述。
在具體的人形機器人研發過程中,所涉環節的演算法可以先移植已有的、相對成熟演算法,將其套用於本文所述的控制系統,驗證在這一系統下所實作的人形機器人效能相對於既有控制系統的優勢,再在後續工作中及時跟隨、套用相關理論與演算法的最新研究成果。
並且,基於本文所述系統所做的驗證工作,也很有希望拓展後續理論、演算法前沿研究工作的思路,理由是:
理論、演算法研究必須考慮其硬體可實作性。一旦在實際的人形機器人上驗證了深入套用FPGA之後的硬體系統可以在相同的時間段內支持更復雜的演算法,今後的理論、演算法研究工作就可以考慮一些此前被放棄了的高效能演算法 -- 這些演算法在CPU+軟體體系結構(或現有的、僅在3.5節所述控制子系統中套用FPGA的CPU+軟體+FPGA體系結構)下因為太復雜、不能即時執行而被理論、演算法的前沿研究者放棄。
3.4.2 關節運動軌跡點插值
在控制邏輯上,關節運動軌跡點插值模組共有52個(對應於52個電機),軀幹內建FPGA中30個,左、右手內建FPGA中各11個,視需求情況可以考慮在FPGA程式碼中對模組進行分時多工以減少對片內硬體資源的占用。
這52個插值模組經PCIe匯流排從演算法CPU(執行運動規劃演算法模組)獲得各自需處理的軌跡點參數序列,按照預設演算法對其進行插值,得到52個插值後軌跡點參數序列(其中相鄰軌跡點的時間間隔遠小於插值前的、由運動規劃演算法軟體模組獲得的相鄰軌跡點的時間間隔),發送給控制子系統中各自對應的電機控制通道。
此即圖4中紅色字型的關節運動軌跡點插值環節。
3.4.3 FPGA對運算CPU演算法任務的協處理
鑒於運算CPU所需執行演算法(第3.4.1.2、3.4.1.3節)的運算量巨大,且具有強即時性要求,其算力可能不足以在運算CPU工作周期內完成規定的演算法任務。
因此,本框架設計在FPGA中為運算子系統設定了運算CPU演算法任務協處理模組,作為運算CPU的「協處理器」(如【流程圖】註2第3自然段所述)。
3.4.3.1 基礎/通用運算任務的協處理
運算CPU在執行高層次演算法的過程中,在某些特定步驟,將後續的一些步驟(程式作者知道在一段時間之後才會執行這些步驟,以下稱之為後繼步驟)中的一部份已知運算內容且已知運算所需運算元的基礎/通用運算任務(例如乘法運算、三角函式運算、矩陣運算、解線性方程式組)提取出來,以預定義的任務序號+任務代號+任務內容列表+運算元列表的形式打包,經PCIe匯流排發給運算CPU演算法任務協處理模組,由後者排程FPGA內建的幾百上千個運算核心(能夠以高效能執行類似於乘法+加法+累加運算的可配置硬體模組)以及與之臨近的儲存、布線硬體資源,以靈活適配於相關運算任務的模式多路並列執行、執行與任務代號對應的運算任務。運算任務完成之後,將運算結果與任務序號打包,經PCIe匯流排即時回傳給運算CPU,運算CPU將這些結果儲存,到後繼步驟執行時,就可以直接呼叫這些計算結果。
這樣,就實作了將高層次演算法中的部份基礎/通用運算任務解除安裝到FPGA中執行,實作兩者在一定程度上的並列執行,助力運算CPU即時完成高層次傳感器融合、內外建模、軌跡規劃運算。
另外,關於上述被解除安裝演算法中的運算元,還存在兩種情況:
第一,這些運算元是在後繼步驟之前執行的高層次演算法步驟中產生的,這種情況應該按照上述方式操作。
第二,這些運算元是由FPGA經PCIe匯流排傳遞過來的、基於傳感器資訊由多維度傳感器資訊預處理、傳感器融合基層演算法模組、電機位置/轉速檢測模組產生的。在這種情況下,就可以省略上述將任務代號+任務內容列表+運算元列表打包下傳的操作,而是由FPGA按照已知的任務代號+任務內容列表+運算元列表執行這些運算操作(因為位於資料來源頭、由物理上獨立工作的硬體資源執行,這些操作必定能在運算CPU執行上述後繼步驟之前執行完畢),完成後將運算結果打包、經PCIe匯流排即時上傳給運算CPU,由後者在執行後繼步驟時直接呼叫。
3.4.3.2 專項業務運算任務的協處理
這裏所說的專項業務,是指人形機器人控制流程中的、針對某個相對獨立的目標的具體業務。
由FPGA以協處理器的方式承擔專項業務的運算任務,在形式上與執行基礎/通用運算任務沒有本質區別。之所以將其單獨列為一節,是希望不熟悉FPGA的業內人士重視這一思路的可行性、重視其套用對提升人形機器人效能的意義。
以下借助人形機器人肢節在足部有可靠支撐狀態下的運動學、動力學基礎參數即時解算(這是本體動力學建模、運動規劃演算法的前置任務)的例子,闡述這一思路的套用方法。
如圖2所示,除了與運算CPU通訊的介面之外,運算CPU演算法任務協處理模組的資料來源還包含52個電機的轉動位置、角速度的即時測量結果(雙手22個電機的測量結果經FPGA片間全雙工序列直連線口模組即時傳輸給運算CPU演算法任務協處理模組),以及來自支撐足IMU的位姿資訊。
針對某個運動學、動力學參數解算周期(可以是運算CPU工作周期的幾分之一或與之相同)對應的上述資料來源(稱為當前周期資料來源),運算CPU演算法任務協處理模組以當前周期資料來源中的支撐足IMU位姿資訊為起點,根據預存在FPGA片內RAM塊中的各肢節簡化模型(例如僅包括肢節的長度、徑向質心位置、品質)的參數,自下而上逐級計算各關節等效中心在3D方向上的位置投影的縱聯累加和(類似於工業機器人在基座固定這一前提下的各肢節空間位置、角度的解算),從而算出當前周期資料來源對應的人形機器人各肢節的空間位姿參數。
同時,如果在上述解算過程中加入當前周期資料來源中52個電機的角速度資訊,就能自下而上逐級計算各關節的等效中心在3D方向上的速度投影的縱聯累加和;進而,基於預存在FPGA片內RAM塊中的各肢節的質心位置、品質參數,在各關節位置、速度解算過程中,隨同計算得到各肢節的動力學參數。
另外,基於上述各肢節的空間位置參數、質心位置,還可以自下而上逐級計算得到各肢節所受重力相對於雙足(單足)支撐區域的力矩(姑且稱之為重力力矩參數)。
最後,將當前解算周期解算得到的各肢節的運動學、動力學、重力學參數經PCIe埠上傳給運算CPU,後者就可以不再做上述基礎參數解算工作,將更多算力用於對人形機器人本體執行動力學建模的上層演算法、從環境及任務約束的角度評估其站立姿態的穩定性(及其發展趨勢),進而執行運動規劃演算法。
3.4.3.3 「真空球形雞」之辯
人形機器人的任何一種專項業務演算法,只要面向實用化套用場景,演算法內容都必須處理各種實際情況,以第3.4.3.2節的例子為例:
其一,如果人形機器人的當前狀態是雙足支撐,則對於從兩個起點開始的、自下而上的運動學--動力學參數解算,在兩路解算完成髖部3個自由度的運算、到達骨盆時,對骨盆參數解算的兩個結果之間必定存在差異。此時,最簡單的處理方法是對兩路運算的結果取均值,但這種做法的精度有可能無法滿足實用化套用場景的需求的。
具體如何確定兩路解算結果在被采納結果中的權重,與很多因素相關。例如,當前雙腿姿態的差異對解算誤差的影響(承重比例、扭轉方向都將影響關節間隙的大小進而影響解算結果的可信度),必定是影響權重的因素之一。
其二,從足部支撐點開始向上進行的解算過程,當到達軀幹部位時,其對軀幹姿態的解算結果,與基於軀幹內建IMU輸出數據而解算得到的軀幹姿態相比,兩者同樣必定存在差異,同樣存在上述權重問題。
也就是說,第3.4.3.2節中針對所述例子列出的演算法內容,本質上僅僅是一個概略的演算法框架,距離實用化還存在很大的差距。嚴肅地說,這屬於「真空球形雞」方案。
同樣的情況,也出現在本文對人形機器人所涉其他演算法、方案的闡述中,例如,在第1.1節,將無框力矩電機、空心杯電機統稱為電機,都采用基礎版本的驅動-控制機構,未考慮轉速測量的精度與時效性、對電流測量結果的特征提取與濾波等問題;述及IMU時,未考慮其零點漂移、誤差累積問題;在第3.1.2.2節,布置芯片時僅考慮了FPGA、IPM、IMU,未考慮其他器件 ……
第3.4.3.2節中之所以采用這個方案作為例子,是因為本文闡述的是在人形機器人控制系統中深入套用FPGA技術的框架設計,所強調的是,相關演算法的基礎部份、主體部份可以在FPGA中予以實作,希望不熟悉FPGA的業內人士了解這一情況,進而深入思考這一技術思路的價值。
至於本節所述的、實作過程中的各種具體問題的解決,首先不在本文闡述的範圍之內;其次,在具體的解決方案中,FPGA由於其功能靈活性、低延遲的大運算量並列處理能力,很可能也是最適用的底層技術選項。
3.5 控制子系統(綠色)
控制子系統用於控制電機。
圖2中的電機控制采用經典的基於座標變換+SVPWM+逆變器的電流-速度-位置三環反饋向量控制方法。本文主要面向機器人行業的專業人士,不再針對其中的具體模組做詳細介紹(相關資料在網上有很多)。
在圖2所述電機控制通道的基礎上,實際產品中還必須用到各種附加功能,本文做的是框架設計,對此不予詳述。
3.5.1 電機控制演算法通道
圖2中單片FPGA中的綠色模組共同構成一個電機控制演算法通道(其中執行運算任務的模組因與本通道其他模組強關聯而被包含在本通道內)。這樣的演算法通道共有52個,軀幹內建FPGA中30個,左、右手內建FPGA中各11個,在邏輯上每個IPM-電機組合都對應一個控制演算法通道,與關節運動軌跡點插值模組一一對應。視具體情況,可以考慮在FPGA硬體層面對其中的部份模組進行分時多工,以減少資源占用。
對於電流-速度-位置三環巢狀PI控制,位於外環的速度、位置環的控制周期遠大於位於內環的電流環,可供執行運算的時間比較充裕,因此,在已有的基於CPU+FPGA的工業機器人控制系統中,通常僅在FPGA中實作電流環,而將速度、位置環交由CPU實作。
本框架設計中考慮到,運算CPU需要承擔的運算量巨大且對運算過程有強即時性要求,還需要經由PCIe埠與FPGA即時交換大量數據(即使借助於DMA控制器,CPU-軟體系統也要面向記憶體讀寫大量數據),因而在圖2中將速度、位置環也合並進FPGA中予以實作,以減少對PCIe埠有效頻寬、CPU軟-硬體件資源的占用。
3.5.2 電機抱閘
從實用化的角度看,人形機器人對於靜止狀態下的結構穩定性有很高的要求,尤其是在執行任務過程中。如果靜止狀態下正在對目標物體進行支撐(例如抱著個寶寶),就需要嚴格確保各關節的穩固。
基於這一考慮,控制通道中應提供電機抱閘功能。即,各電機控制通道的位置環檢測到電機轉動到了設定的角度之後,向電機發出抱閘訊號,使電機軸穩固釘選在當前角度,確保人形機器人在不需要運動的時段內不動如山。
當然,更高層次的安全並非這種抱閘後的固定不動,而是各關節隨同實用化外部環境的變化而主動轉動,用「接-化」的方式(致敬馬老師)消除一部份幹擾乃至外部沖擊(例如各種演示視訊中人形機器人被踹或腳踩障礙物的場景),保持自身整體的相對穩固,確保對任務目標物(寶寶)的保護。
進而,在解除抱閘、由靜到動的過渡瞬間,大機率不可以一股腦地開閘、載入PWM波形了事。如何精微管控52次解除抱閘與52次啟動電機之間的時序關系(即使只有1個電機也存在兩種操作時序關系的最佳化問題),如何設計電機啟動過程中的反饋控制微操細節,以實作人形機器人動作啟動過程的安全、平穩、平滑,實作被服務人類個體視覺、體感乃至聽覺的舒適,有可能成為(或者,已經成為)友商之間比拼效能的重要著力點之一。
這種在上層建模、模型分析、運動規劃演算法的指揮下實作精準的多點時序控制、精微的反饋控制過程最佳化,正是FPGA的用武之地。
3.6 芯片間數據即時傳輸子系統(深藍色)
這裏的「芯片間」是指運算CPU與軀幹內FPGA之間、軀幹內FPGA與手掌內FPGA之間。
3.6.1 PCIe匯流排
PCIe端點模組作為本文所述PCIe匯流排中的唯一從節點,用於實作軀幹內建FPGA與運算CPU之間的通訊,PCIe匯流排的主節點是運算CPU中的PCIe匯流排根復合體。
之所以采用PCIe匯流排,是因為這是目前最成熟的、最便於整合到現有人形機器人控制系統之中的、可以實作運算CPU與FPGA高速通訊的匯流排。
本框架設計中的運算CPU的PCIe匯流排上只有軀幹內建FPGA這一個從裝置,所以完全可以設計為板內經PCB布線直連(未來ASIC化時肯定要換成AXI之類的片內匯流排),以此省下被接外掛程式占用的空間,同時降低高速布線的長度、降低PCB設計難度、最佳化訊號品質。
3.6.2 FPGA片內數據排程中心
如圖2所示,FPGA片內數據排程中心模組,在軀幹內建FPGA中是運算CPU經PCIe端點模組與軀幹內建FPGA中各模組通訊的中介,在手掌內建FPGA中是軀幹內建FPGA經PCIe端點模組與手掌內建FPGA中各模組通訊的中介,其在這3片FPGA中都是多條數據路徑的匯總、轉接、分發之處。
這個模組所轉接的各路數據及其各自的作用,大多數已經在前面各節中介紹過,不再贅述。
需要註意的是,必須設計特別的機制,以確保經由手掌內建FPGA的FPGA片內數據排程中心模組發往FPGA內各模組的同步訊號與軀幹內建FPGA中對應的同步訊號之間的時間誤差不超過系統設計所要求的門限,以確保手指22個關節的動作過程與其他30個關節的協同程度。
3.6.3 FPGA片間全雙工序列直連線口
FPGA片間全雙工序列直連線口模組用於實作軀幹內建FPGA與手掌內建FPGA之間的高速、序列、強即時性的點對點直連通訊(不需要附加PHY芯片)。最簡模式下,每對介面僅需2對傳輸差分訊號的雙絞線/印制薄排線(可能需要附加少量驅動電路)。
由於是以軀幹內建FPGA為中心的、星形拓撲點對點的FPGA直連通訊,所以只需由軀幹內建FPGA基於世界時時標而以固定的時間間隔向其他FPGA發出特定格式的訊號,就能在所有FPGA間實作深亞微秒級精度的時間同步,並且不需要借助任何附加的時鐘同步協定(例如1588、EtherCAT分布式時鐘),從而既能提高通道頻寬利用率,又能簡化系統、減少潛在的故障點、節省成本。
4、 將框架設計與【流程圖】相結合
4.1 一體兩面
這一框架設計與【流程圖】是一體兩面的關系:
流程圖提供抽象的實施步驟,框架設計提供具體的實施中間結果,兩者分別是深入套用FPGA的人形機器人控制系統這一擬議中的研發計畫在上述兩個維度上的投影,從各自的角度出發,協助讀者直觀、深入地理解這一技術思想。
4.2 框架設計在【流程圖】中的位置
具體而言,本文所述框架設計是【流程圖】中間通道的第5個步驟的執行結果,即:
FPGA專家與(人形機器人)系統專家、各子系統專家討論,分析系統中即時算力需求的時空分布、對各演算法通道協同程度的需求,分析在CPU+軟體體系結構中原始數據、中間數據、指令訊號、狀態資訊的傳輸頻寬瓶頸、延遲量大/延遲量顯著抖動的傳輸路徑,初步確定由CPU+軟體、FPGA分別實作哪些演算法模組與數據傳輸通道(即軟、硬體任務劃分),就考慮機械結構等約束的通訊系統設計提供參考意見,就結構、PCB設計提供參考意見。
4.3 筆者能力短板導致的缺憾
然而,這一框架設計,是筆者在不具備人形機器人從業經驗、「單打獨鬥」的前提下做的,由此導致,以上述及的人形機器人系統專家、各子系統專家的角色缺位。
在這種情況下,筆者只能基於自學得到的、關於人形機器人的功能、效能需求及其實作方法的有限資訊,對其控制系統的框架,尤其是軟、硬體任務在CPU與FPGA之間的劃分,做出規劃。
因此,這種規劃,只能是非常粗略的、不夠專業的。
例如,對於非常重要的、工信部【人形機器人創新發展指導意見】中反復強調的多模態感知,筆者由於對高層次多模態傳感器融合演算法了解很少,只能在第3.3.2節就傳感器資訊預處理、初級的傳感器融合進行闡述,等到第3.4.1.2節述及高層次多模態傳感器融合,就只能籠統地一帶而過,只能基於對其演算法復雜度的感性認知,假設其中存在適合提取出來、交由FPGA加以協處理的子任務(請專業人士指正),設計了第3.4.1.4、3.4.2、3.4.3節所述方法,以實作對整機反饋控制環路即時性的最佳化。
同樣的情況,也存在於對環境、本體、工作目標的即時建模(第3.4.1.2節)、運動規劃(第3.4.1.3節)所涉演算法的協處理方法的設計過程中。
至於【流程圖】中間通道第2、3、4個步驟所述的各項工作,這一框架設計就只能基本予以忽略了。
4.4 特斯拉人形機器人Optimus-Gen2資訊的幫助
幸運的是,如本文第1節所述,網上能查到專業網友分析、總結的特斯拉Optimus-Gen2的硬體系統的基本構成(參考資料1、2),也就是【流程圖】中間通道第3個步驟所述的「可用做研發基礎的人形機器人產品或設計方案的結構、控制系統的資訊」,使本文的工作有了一個基本的、可以被專業讀者接受的分析物件,不至於完全淪為自說自話的「對空輸出」。
4.5 對研發單位的建議
如果有研發單位認可本文所做的工作,願意以此為借鑒在人形機器人中深入套用FPGA技術,筆者建議其借鑒【流程圖】所述的實施步驟,尤其是,建議借鑒其中由軟、硬體人員協作劃分各自的任務 – 用MATLAB叠代驗證演算法功能 – 用HDL實作的方法(見【流程圖】左側的通道)。
進而,用基於這一方法得到的結果,替代筆者在本文所述框架設計中對軟–硬體任務的劃分(例如第3.2.2節對多模態傳感器融合演算法軟-硬體任務的劃分)、替代筆者對劃歸FPGA實作的演算法的具體內容(例如第3.4.3.2節逐級解算各肢節運動學、動力學、重力學參數的演算法)所做的非專業表述。
5、 將框架設計「泛化」到其他領域
如很多讀者已經想到的,以FPGA效能特征的通用性為基礎,本文所述的框架設計,很適合「泛化」套用於人形機器人之外的領域,尤其是,泛化套用於同樣基於「多通道傳感器融合分析 + 多維度套用場景建模 + 多路電機協同規劃、精準協同伺服控制」的領域,例如:
機器狗(/豹/蜘蛛/蛇/魚/鳥等等);
工業機器人;
手術機器人;
AGV(及其與工業機器人的組合體,例如波士頓動力的strech);
數控機床/加工中心;
高速+精細3D打印系統;
基於特定傳感器機制+高速、高定位精度上/下試件的醫療樣品檢測系統;
電動汽車電機驅動+剎車+懸掛一體化控制系統(第3.5.2節所述的多電機協同啟動控制應是其典型需求);
燃油汽車發動機油路+噴燃+剎車+懸掛一體化控制系統;
多閥門一體化液壓伺服驅動系統(閥門伺服驅動最終仍要落實到電機伺服驅動);
電力系統廣域協同繼電保護主保護系統(廣域範圍內中多個斷路器的驅動電機動作曲線的微秒、亞微秒級精準協同);
起重裝置精細操控系統;
物料傳送機構精細平衡系統;
礦山挖掘機系統;
地磅不停車稱重系統;
盾構機刀盤姿態控制系統;
………………
如果這個框架設計在上述某些領域獲得實際套用、取得經濟效益,大機率將對其在人形機器人領域的實際套用起到促進作用。
6、 結語:行動最重要
2023年11月,工信部釋出【人形機器人創新發展指導意見】,對人形機器人提出了以應對真實場景下的復雜環境與任務、應對突發情況為特征的實用化功能需求,為業內競爭提供了指導方向。
實作具備上述特征的實用化功能,必須基於高頻寬多模態資訊的采集與傳輸而對環境、任務、控制約束進行建模,必須對機器人本體進行動力學建模,必須在這些模型的共同約束下對幾十個關節的運動軌跡進行宏觀規劃,並且,上述工作必須即時(低延遲量、低延遲抖動量)完成。
上述演算法的即時執行,對控制系統底層技術提出了前所未有的要求,即,多通道並列處理且需精準協同、強即時性、大運算量、大數據傳輸量。並且,對這些要求的同時滿足,已經顯著超越了作為當前人形機器人控制系統主流技術的CPU+軟體的效能上限。
FPGA相比於CPU+軟體,在同時滿足上述效能需求的維度上,其在體系結構層面具備顯著的優勢。在當前以CPU+軟體為核心的控制系統中深入套用FPGA(而非僅用於電機驅動),必將顯著提升人形機器人產品的效能、顯著提升其實用化程度,因而,必將成為人形機器人行業技術競爭的下一個熱點。
本文所做的工作,就是在這一指導思想下,為業內人士、潛在業內人士提供了一個具象化的設計例項、參考技術方案。本文與【流程圖】結合,將有望顯著降低這一技術思路的付諸實施在純粹技術維度上的門檻。
現在,對於正在人形機器人行業參與競爭的企業來說,最重要的是:
正視CPU+軟體體系結構的效能已經不能滿足現實需求,正視FPGA對行業技術體系發展的促進作用,將認知付諸行動,果斷、及時地投入資源,用底層技術的演進推進人形機器人的實用化,建立屬於自己的專利護城河,博取自身在行業競爭中的優勢地位。
參考資料:
1 任賾宇:Tesla人形機器人Optimus各伺服關節技術拆解
2 王興興:Gen2更新:Tesla 機器人 Optimus 你沒註意到的設計細節?
3 面向外骨骼機器人的空心杯電機位置伺服控制研究(圖2-6),作者:曾青山,電子科技大學2013年度碩士畢業論文
4 一體化關節模組驅控系統關鍵技術研究(圖4-1),作者:焦露,江南大學2023年度碩士畢業論文
5 林偉:FPGA的效能特征及其尷尬處境
6 林偉:關於在機器人領域深入套用FPGA技術的一些思考
7 林偉:關於在機器人領域深入套用FPGA技術的一些思考(續)
8 【電腦體系結構:量化研究方法】(第五版)(第1.3節),作者:John L. Hennessy,David A. Patterson。
9 在實用化人形機器人研發流程中深入套用FPGA技術的流程圖(基於工信部【人形機器人創新發展指導意見】)(建議下載到PC觀看)
相關連結:
、 、
轉載申明:轉載 本號文章請 註明作者 和 來源 ,本號釋出文章若存在版權等問題,請留言聯系處理,謝謝。
推薦閱讀
更多 架構相關技術 知識總結請參考「 架構師全店鋪技術資料打包 (全) 」相關電子書( 41本 技術資料打包匯總詳情 可透過「 閱讀原文 」獲取)。
全店內容持續更新,現下單「 架構師技術全店資料打包匯總(全) 」一起發送「 」 和「 」 pdf及ppt版本 ,後續可享 全店 內容更新「 免費 」贈閱,價格僅收 249 元(原總價 399 元)。
溫馨提示:
掃描 二維碼 關註公眾號,點選 閱讀原文 連結 獲取 「 架構師技術全店資料打包匯總(全) 」 電子書資料詳情 。