




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 關(guān)于在機(jī)器人領(lǐng)域深入應(yīng)用FPGA技術(shù)的思考 0 引言1 機(jī)器人控制系統(tǒng)的理想化設(shè)計(jì)目2 基于ROS實(shí)現(xiàn)反饋控制環(huán)路的性能瓶頸、基于FPGA的解決方法2.1 建立作為分析對(duì)象的簡(jiǎn)化系統(tǒng)架構(gòu)2.2 對(duì)信號(hào)采集階段的分析2.2.1 基于ROS的架構(gòu)中典型的信號(hào)采集過(guò)程2.2.2 基于ROS的架構(gòu)中信號(hào)采集過(guò)程的性能瓶頸2.2.3 基于FPGA的架構(gòu)針對(duì)信號(hào)采集過(guò)程的解決方法2.3 對(duì)數(shù)據(jù)處理階段的分析2.3.1 基于ROS的架構(gòu)中典型的數(shù)據(jù)處理過(guò)程2.3.2 基于ROS的架構(gòu)中數(shù)據(jù)處理過(guò)程的性能瓶頸2.3.3 基于FPGA的架構(gòu)針對(duì)數(shù)據(jù)處理過(guò)程的解決方2.4 對(duì)指令執(zhí)行階段的分析2.4.1 基于R
2、OS的架構(gòu)中典型的指令執(zhí)行過(guò)程2.4.2 基于ROS的架構(gòu)中指令執(zhí)行過(guò)程的性能瓶頸2.4.3 基于FPGA的架構(gòu)針對(duì)指令執(zhí)行過(guò)程的解決方法2.5 關(guān)于RTOS + ROS22.6 小結(jié)3 基本思路及實(shí)施方法3.1 在機(jī)器人領(lǐng)域深入應(yīng)用FPGA技術(shù)的基本思路3.2 基本思路的實(shí)施方法4 系統(tǒng)優(yōu)化科技樹(shù) - 基于FPGA實(shí)現(xiàn)EtherCAT主站控制器之后5 建議0 引言FPGA相比于CPU、DSP,具有高速、并行、運(yùn)算及引腳資源極其豐富、定時(shí)精確、功能靈活、硬件直接實(shí)現(xiàn)算法、操作數(shù)存取機(jī)制簡(jiǎn)單高效、開(kāi)發(fā)調(diào)試手段直探硬件底層的優(yōu)點(diǎn)。個(gè)人認(rèn)為,在機(jī)器人領(lǐng)域深入應(yīng)用FPGA技術(shù)具有非常廣闊的前景,有望成
3、為行業(yè)技術(shù)創(chuàng)新的下一個(gè)突破點(diǎn)。在伺服驅(qū)動(dòng)器中應(yīng)用FPGA是業(yè)界的常規(guī)做法,在此基礎(chǔ)上更進(jìn)一步,已經(jīng)有專業(yè)的機(jī)器人技術(shù)團(tuán)隊(duì)在深入應(yīng)用FPGA的方向做出努力,我了解到的有武漢某初創(chuàng)公司的研發(fā)團(tuán)隊(duì)(以下簡(jiǎn)稱為“武漢J團(tuán)隊(duì)”)以及某大型國(guó)企。武漢J團(tuán)隊(duì)的最新方案“新一代片上驅(qū)控一體系統(tǒng)”以Zynq芯片作為硬件載體,用Zynq內(nèi)置的一個(gè)ARM核跑Linux+ROS作為系統(tǒng)的基礎(chǔ),改寫一部分ROS功能模塊以提高其實(shí)時(shí)性,用Zynq內(nèi)置的另一個(gè)ARM核無(wú)操作系統(tǒng)執(zhí)行實(shí)時(shí)性要求比較高的軟件算法(例如運(yùn)動(dòng)控制),用Zynq內(nèi)置的FPGA資源實(shí)現(xiàn)硬件加速、信號(hào)處理、電機(jī)控制(包括電流環(huán)控制)、I/O擴(kuò)展功能,在電
4、機(jī)側(cè)直接摒棄了EtherCAT。武漢J團(tuán)隊(duì)的技術(shù)負(fù)責(zé)人曾經(jīng)就他們的上述工作做過(guò)一次公開(kāi)的介紹,其內(nèi)容篇幅不長(zhǎng),并且整體來(lái)說(shuō)偏重于從系統(tǒng)架構(gòu)設(shè)計(jì)的角度進(jìn)行闡述,可能不利于讀者深入理解在架構(gòu)中引入FPGA的重要意義;他關(guān)于ROS局限性的闡述,更多的是提供一些經(jīng)驗(yàn),沒(méi)有進(jìn)行原理方面的分析。本文依據(jù)筆者對(duì)機(jī)器人系統(tǒng)、計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、ROS、FPGA技術(shù)的理解,定性分析以Linux+ROS為代表的軟件系統(tǒng)實(shí)現(xiàn)實(shí)時(shí)多任務(wù)目標(biāo)時(shí)存在的性能短板,提出關(guān)于在機(jī)器人領(lǐng)域深入應(yīng)用FPGA技術(shù)的一些想法。本文內(nèi)容復(fù)制自筆者幾年前寫的一篇技術(shù)文檔。這篇文檔當(dāng)時(shí)曾在小范圍內(nèi)傳播,現(xiàn)在以知乎文章的形式予以公布,以
5、期為機(jī)器人領(lǐng)域底層技術(shù)的更新?lián)Q代略盡綿薄之力。筆者并非機(jī)器人專業(yè)科班出身,所述內(nèi)容難免存在謬誤之處,歡迎業(yè)內(nèi)人士批評(píng)、指正。所述內(nèi)容若侵犯他人知識(shí)產(chǎn)權(quán),請(qǐng)留言告知,筆者將道歉、刪除相關(guān)內(nèi)容。1 機(jī)器人控制系統(tǒng)的理想化設(shè)計(jì)目標(biāo)為展開(kāi)分析,首先明確在已完成反饋控制算法設(shè)計(jì)的情況下機(jī)器人控制系統(tǒng)的理想化設(shè)計(jì)目標(biāo):在一定的成本約束下,在統(tǒng)一的時(shí)標(biāo)下,在盡可能短的時(shí)間周期之內(nèi),以盡可能小的周期抖動(dòng)幅度,完成對(duì)傳感器信號(hào)集的采樣、傳輸、數(shù)據(jù)處理、生成控制信號(hào)集,然后,以盡可能短的延遲,在各控制信號(hào)所需的盡可能精確的時(shí)刻,將控制信號(hào)集傳輸?shù)礁鱾€(gè)執(zhí)行器。2 基于ROS實(shí)現(xiàn)反饋控制環(huán)路的性能瓶頸、基于FPGA的
6、解決方法2.1 建立作為分析對(duì)象的簡(jiǎn)化系統(tǒng)架構(gòu)圖為方便分析問(wèn)題,首先將基于ROS的機(jī)器人反饋控制系統(tǒng)抽象為一個(gè)簡(jiǎn)化的系統(tǒng)架構(gòu)圖(圖A),然后逐一分析反饋控制環(huán)中的三個(gè)階段:信號(hào)采集、數(shù)據(jù)處理、指令執(zhí)行,指出因?yàn)檐浖膱?zhí)行必須在操作系統(tǒng)的調(diào)度下時(shí)分復(fù)用CPU而導(dǎo)致系統(tǒng)存在性能瓶頸,進(jìn)而設(shè)計(jì)了加入FPGA之后系統(tǒng)的簡(jiǎn)單架構(gòu)(圖B),分析后者在解決這些瓶頸問(wèn)題方面所能起到的作用。圖A中,在Linux內(nèi)核調(diào)度下,多個(gè)ROS節(jié)點(diǎn)以時(shí)分復(fù)用CPU的模式運(yùn)行,通過(guò)API與傳感器/執(zhí)行器的驅(qū)動(dòng)程序通信,進(jìn)而實(shí)現(xiàn)與傳感器/執(zhí)行器進(jìn)行參數(shù)、指令、數(shù)據(jù)、狀態(tài)的傳輸。圖B在圖A的基礎(chǔ)上增加了FPGA,F(xiàn)PGA一側(cè)掛在
7、CPU的外部總線上,另一側(cè)連接各傳感器/執(zhí)行器,形成驅(qū)動(dòng)程序與傳感器/執(zhí)行器之間的中間環(huán)節(jié)。對(duì)圖A、圖B的幾點(diǎn)說(shuō)明:(1) 此處著重討論軟件運(yùn)行機(jī)制對(duì)機(jī)器人性能的影響,所以并未按標(biāo)準(zhǔn)的機(jī)器人系統(tǒng)5級(jí)架構(gòu)(主機(jī)、運(yùn)動(dòng)控制器、伺服驅(qū)動(dòng)器、電機(jī)、機(jī)械結(jié)構(gòu))進(jìn)行描述,而是將其抽象為“CPU+總線+內(nèi)存+外設(shè)”的簡(jiǎn)化計(jì)算機(jī)系統(tǒng)。(2) 圖A、B中將內(nèi)存掛接在外部總線上屬于抽象的示意。實(shí)際的DDRX-SDRAM模組應(yīng)該連接到位于CPU或北橋芯片中的內(nèi)存控制器,若應(yīng)用程序/外設(shè)需對(duì)內(nèi)存進(jìn)行讀寫,就要由CPU、各級(jí)Cache控制器、內(nèi)存控制器協(xié)同執(zhí)行一系列復(fù)雜的軟硬件操作,這些操作僅僅在外部行為上可以抽象地表
8、述為“某軟/硬件讀寫了由某段地址標(biāo)定的一塊內(nèi)存空間”。(3) 如某些技術(shù)資料中提到的,在產(chǎn)品化的機(jī)器人系統(tǒng)中,純粹的ROS節(jié)點(diǎn)只能實(shí)現(xiàn)機(jī)器人所必須的大量功能中的一部分,很多功能需要由開(kāi)發(fā)者自己編寫的應(yīng)用程序予以實(shí)現(xiàn)。這些應(yīng)用程序在形式上未必與ROS節(jié)點(diǎn)相同,但兩者同屬于應(yīng)用軟件,兩者與操作系統(tǒng)、內(nèi)存、傳感器、執(zhí)行器進(jìn)行數(shù)據(jù)交互的基本過(guò)程也相差不多,所以在圖中、在后續(xù)分析中未予單獨(dú)表述。(4) 后續(xù)分析中,除了涉及EtherCAT的數(shù)據(jù)輸入/輸出操作之外,假設(shè)各應(yīng)用程序、外設(shè)獲取CPU使用權(quán)都采用中斷模式。輪詢模式存在不同的問(wèn)題,但不影響對(duì)軟件系統(tǒng)性能瓶頸的分析,從略。(5) 為簡(jiǎn)化表述,圖中忽
9、略了驅(qū)動(dòng)程序經(jīng)GPIO之類的接口訪問(wèn)傳感器/執(zhí)行器的模式。以下針對(duì)信號(hào)采集、數(shù)據(jù)處理、指令執(zhí)行三個(gè)階段分析簡(jiǎn)化機(jī)器人控制系統(tǒng)的反饋控制流程。2.2 對(duì)信號(hào)采集階段的分析2.2.1 基于ROS的架構(gòu)中典型的信號(hào)采集過(guò)程考慮圖A,對(duì)于帶EtherCAT從站接口模塊的傳感器來(lái)說(shuō),運(yùn)行于Linux內(nèi)核之上的、作為ROS節(jié)點(diǎn)之一(或獨(dú)立運(yùn)行)的EtherCAT主站程序定時(shí)發(fā)送過(guò)程數(shù)據(jù)幀到以太網(wǎng)環(huán)路(圖中未示出)上,傳感器經(jīng)EtherCAT從站接口模塊接收過(guò)程數(shù)據(jù)幀、將上一個(gè)定時(shí)周期內(nèi)采集到的狀態(tài)數(shù)據(jù)裝載進(jìn)過(guò)程數(shù)據(jù)幀,然后將其轉(zhuǎn)發(fā)到以太網(wǎng)環(huán)路上,攜帶狀態(tài)數(shù)據(jù)的過(guò)程數(shù)據(jù)幀環(huán)回到運(yùn)行EtherCAT主站程序的
10、設(shè)備之后,其他ROS節(jié)點(diǎn)就能獲得環(huán)路上的這些傳感器在上個(gè)定時(shí)周期內(nèi)采集到的狀態(tài)數(shù)據(jù)。對(duì)于不帶EtherCAT從站接口模塊的傳感器來(lái)說(shuō),Linux內(nèi)核需要響應(yīng)各傳感器的中斷信號(hào)(圖中未畫出其線路),啟動(dòng)對(duì)應(yīng)的傳感器驅(qū)動(dòng)程序,驅(qū)動(dòng)程序按照總線仲裁時(shí)序訪問(wèn)CPU外部總線上與此傳感器對(duì)應(yīng)的地址區(qū),讀取傳感器緩沖的待上傳數(shù)據(jù)(或與傳感器進(jìn)行握手操作、直至讀到其上傳的數(shù)據(jù)),寫入內(nèi)存中為其分配的地址空間,通過(guò)各自的API告知對(duì)應(yīng)的ROS節(jié)點(diǎn):有傳感器數(shù)據(jù)需要讀取。2.2.2 基于ROS的架構(gòu)中信號(hào)采集過(guò)程的性能瓶頸采集帶EtherCAT從站接口模塊的傳感器獲得的數(shù)據(jù)時(shí),作為ROS節(jié)點(diǎn)之一(或獨(dú)立運(yùn)行)的E
11、therCAT主站程序必須實(shí)時(shí)運(yùn)行,任何比較大的幀發(fā)送延遲抖動(dòng)都有可能導(dǎo)致信號(hào)采集不及時(shí),進(jìn)而影響反饋控制算法的執(zhí)行。例如,在CPU運(yùn)算、控制負(fù)荷比較大(例如算法更復(fù)雜、軸數(shù)更多)的情況下,有可能因?yàn)閿?shù)據(jù)處理不及時(shí)而迫使幀發(fā)送時(shí)刻延后。采集不帶EtherCAT從站接口模塊的傳感器獲得的數(shù)據(jù)時(shí),在傳感器數(shù)量比較多、采樣頻率比較高的情況下,Linux內(nèi)核頻繁響應(yīng)傳感器的中斷信號(hào),把大量CPU工作時(shí)間耗費(fèi)在頻繁保存-恢復(fù)現(xiàn)場(chǎng)、執(zhí)行傳感器驅(qū)動(dòng)程序上,影響承載核心業(yè)務(wù)的各ROS節(jié)點(diǎn)(包括EtherCAT主站程序)的執(zhí)行。當(dāng)然,可以用DMA模式(或者為傳感器單獨(dú)設(shè)置CPU小系統(tǒng),其實(shí)質(zhì)就是DMA控制器)以
12、防止主CPU被頻繁的外部中斷打擾,但是,大多數(shù)情況下不可能為每個(gè)傳感器都配備一個(gè)DMA控制器,而且,一旦DMA控制器或CPU小系統(tǒng)的數(shù)量多了,它們就會(huì)替代傳感器的位置,導(dǎo)致同樣的問(wèn)題。事實(shí)上,ROS1不支持RTOS,非實(shí)時(shí)Linux執(zhí)行(以及開(kāi)始執(zhí)行)EtherCAT主站程序、傳感器驅(qū)動(dòng)程序的時(shí)間(時(shí)刻)很難實(shí)現(xiàn)固定,導(dǎo)致ROS節(jié)點(diǎn)從EtherCAT主站程序、API處獲知有傳感器數(shù)據(jù)待讀的時(shí)刻也很難實(shí)現(xiàn)固定。ROS2 + RTOS的問(wèn)題后述。2.2.3 基于FPGA的架構(gòu)針對(duì)信號(hào)采集過(guò)程的解決方法考慮圖B,對(duì)于采集帶EtherCAT從站接口模塊的傳感器獲得的數(shù)據(jù),由FPGA實(shí)現(xiàn)EtherCAT
13、主站功能,以確保其發(fā)送、接收過(guò)程數(shù)據(jù)幀的實(shí)時(shí)性 - 事實(shí)上,我并不認(rèn)為這樣做是最合適的,我更傾向于武漢J團(tuán)隊(duì)的方案:在實(shí)時(shí)反饋控制環(huán)路中摒棄EtherCAT,將所有傳感器的對(duì)外接口都簡(jiǎn)單化,用本小節(jié)后述的方式完成信號(hào)采集。在FPGA中,為每個(gè)傳感器都提供一塊獨(dú)立的硬件電路作為它們的上位機(jī),形成一個(gè)“DMA控制器集群”,其中的各成員并行運(yùn)行;利用FPGA片內(nèi)硬件資源設(shè)計(jì)控制電路,對(duì)集群中的各成員實(shí)現(xiàn)高效的協(xié)同管理。FPGA中的各“DMA控制器”獨(dú)立響應(yīng)所負(fù)責(zé)傳感器的中斷請(qǐng)求,獨(dú)立按照各傳感器需要的個(gè)性化交互模式建立數(shù)據(jù)通道、讀取其數(shù)據(jù)接口(或讀取其數(shù)據(jù)緩沖區(qū)),把讀出的上傳數(shù)據(jù)緩存在片內(nèi)RAM塊
14、中,按照系統(tǒng)分配下來(lái)的CPU外部總線連續(xù)地址段對(duì)緩存的數(shù)據(jù)統(tǒng)一編址,視系統(tǒng)需求提供數(shù)據(jù)更新標(biāo)記、時(shí)間戳。FPGA根據(jù)預(yù)設(shè)的規(guī)則對(duì)傳感器上傳的中斷信號(hào)進(jìn)行合并、統(tǒng)一向Linux內(nèi)核發(fā)出中斷信號(hào),啟動(dòng)傳感器驅(qū)動(dòng)程序讀取相應(yīng)的地址空間;或者,由1個(gè)掛在CPU外部總線上的DMA控制器統(tǒng)一讀取。此時(shí),軟件系統(tǒng)中用于傳感器驅(qū)動(dòng)程序由于不再需要直接面對(duì)傳感器硬件信號(hào),因而可以被大幅度簡(jiǎn)化,并且不必為了與傳感器建立數(shù)據(jù)通道而無(wú)謂等待,從而減少了執(zhí)行驅(qū)動(dòng)程序所占用的CPU工作時(shí)間、降低了這一段CPU工作時(shí)間長(zhǎng)度的不確定程度,進(jìn)而降低了ROS節(jié)點(diǎn)獲得傳感器數(shù)據(jù)的時(shí)刻的不確定程度。2.3 對(duì)數(shù)據(jù)處理階段的分析2.3
15、.1 基于ROS的架構(gòu)中典型的數(shù)據(jù)處理過(guò)程考慮圖A,在Linux內(nèi)核的調(diào)度下,ROS節(jié)點(diǎn)在屬于自己的CPU工作時(shí)段讀取與它所涉及傳感器、關(guān)聯(lián)ROS節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存空間,獲取涉及自身狀態(tài)、操作對(duì)象、協(xié)作對(duì)象、外部環(huán)境的數(shù)據(jù),執(zhí)行反饋控制算法,生成待執(zhí)行的指令、節(jié)點(diǎn)間交互信息,寫入內(nèi)存中為其輸出指令、輸出信息分配的地址空間,通過(guò)API告知執(zhí)行器驅(qū)動(dòng)程序:有指令、傳輸信息需要讀取。不具備ROS節(jié)點(diǎn)特征的應(yīng)用程序,在上述機(jī)制涉及的層面上,其行為特征與ROS節(jié)點(diǎn)類似。2.3.2 基于ROS的架構(gòu)中數(shù)據(jù)處理過(guò)程的性能瓶頸從宏觀上看,機(jī)器人作為強(qiáng)實(shí)時(shí)反饋控制系統(tǒng),應(yīng)該采用RTOS,否則對(duì)軟件編寫的質(zhì)量要求會(huì)很
16、高。但是,ROS1不支持RTOS,實(shí)時(shí)性不好。在使用非實(shí)時(shí)操作系統(tǒng)的情況下,即使針對(duì)有實(shí)時(shí)性需求的功能自己開(kāi)發(fā)了相應(yīng)的程序模塊,或者,對(duì)涉及的ROS節(jié)點(diǎn)程序進(jìn)行了實(shí)時(shí)性優(yōu)化,各ROS節(jié)點(diǎn)、應(yīng)用程序的執(zhí)行仍然必須時(shí)分復(fù)用CPU(非規(guī)整化的應(yīng)用程序在多核CPU上的顯式并行編程是非常非常復(fù)雜的)、彼此競(jìng)爭(zhēng),而操作系統(tǒng)內(nèi)核運(yùn)行過(guò)程的不可控性、各級(jí)軟件執(zhí)行時(shí)間的不確定性又將加劇數(shù)據(jù)處理周期的不確定性,最終導(dǎo)致生成下發(fā)指令、交互信息的時(shí)刻不確定,以及執(zhí)行器的動(dòng)作效果(尤其是協(xié)同動(dòng)作效果)不確定。從微觀上看,不論是馮諾依曼體系結(jié)構(gòu)還是哈佛體系結(jié)構(gòu),反饋控制算法的每一個(gè)運(yùn)算步驟都要遵循指令/數(shù)據(jù)尋址、取指令/
17、數(shù)據(jù)、執(zhí)行指令、寫執(zhí)行結(jié)果的流程,其間還必須經(jīng)過(guò)極其復(fù)雜的Cache更新決策、多級(jí)存儲(chǔ)器映射、流水線調(diào)度等一系列底層軟-硬件操作,由此導(dǎo)致大量時(shí)間被消耗在底層指令/數(shù)據(jù)的定位、存取、傳輸、更新的過(guò)程中;并且,其間產(chǎn)生的延遲,還必將因?yàn)楦鞣N不可預(yù)知的復(fù)雜情況(例如Cache是否命中,據(jù)說(shuō)有的RTOS不惜為此關(guān)掉了Cache)及其疊加而變得難以預(yù)測(cè)。2.3.3 基于FPGA的架構(gòu)針對(duì)數(shù)據(jù)處理過(guò)程的解決方法考慮圖B,利用FPGA高速、并行、運(yùn)算資源極其豐富、定時(shí)精確、功能靈活、硬件直接實(shí)現(xiàn)算法、操作數(shù)存取模式簡(jiǎn)單高效的特征,運(yùn)用圖B中FPGA內(nèi)的硬件資源,并行執(zhí)行一部分在圖A中由CPU執(zhí)行的、不很復(fù)
18、雜的、運(yùn)算量大的ROS節(jié)點(diǎn)算法(或一部分ROS節(jié)點(diǎn)算法中的某些步驟),利用片內(nèi)硬件資源設(shè)計(jì)控制電路,對(duì)各算法模塊的運(yùn)行、彼此之間的數(shù)據(jù)交互進(jìn)行高效的協(xié)同管理,形成一個(gè)協(xié)處理器。例如,個(gè)人比較看好的是精密機(jī)械臂的靈敏控制算法,原因在于其對(duì)運(yùn)算的實(shí)時(shí)性有較高的需求。實(shí)際應(yīng)用中對(duì)軌跡/位姿復(fù)雜性、反力多變性、運(yùn)動(dòng)敏捷性、動(dòng)作平順性的要求越高,設(shè)計(jì)時(shí)考慮的現(xiàn)場(chǎng)干擾因素越多,對(duì)控制算法的復(fù)雜度的需求就會(huì)越高,對(duì)核心芯片執(zhí)行算法的實(shí)時(shí)性、并行性、協(xié)同性的需求就會(huì)越高。如果能從其反饋控制算法中切分出較多適合FPGA執(zhí)行的部分(主要標(biāo)準(zhǔn)是:運(yùn)算量大、并行性及協(xié)同性要求高,算法可以有一定的復(fù)雜度 -由于多數(shù)早期
19、的FPGA工程師是硬件出身,硬件思維比較多,以及,他們最初入手的可編程邏輯芯片是CPLD、簡(jiǎn)單FPGA,芯片對(duì)復(fù)雜算法的支持度很低,這些因素導(dǎo)致很多人誤認(rèn)為FPGA只適合執(zhí)行非常簡(jiǎn)單的算法,這已經(jīng)是非常過(guò)時(shí)的觀念了),必將顯著縮短整個(gè)系統(tǒng)的反饋控制時(shí)間、顯著提高反饋控制時(shí)間的可預(yù)測(cè)性。另外,F(xiàn)PGA在執(zhí)行圖像處理算法方面比CPU、DSP(作為基于Linux+ROS系統(tǒng)中的協(xié)處理器,下述的GPU同義)強(qiáng)得多,是最優(yōu)方案;在執(zhí)行人工智能算法(從硬件底層實(shí)現(xiàn)已經(jīng)訓(xùn)練好的人工智能網(wǎng)絡(luò))時(shí),F(xiàn)PGA是與GPU并列的主流方案,而且在功耗方面具備非常大的優(yōu)勢(shì)。進(jìn)而,F(xiàn)PGA在這兩方面的性能,又會(huì)因?yàn)槠渚邆鋵?shí)
20、質(zhì)上的SOC(System On Chip,非特指FPGA內(nèi)置CPU核的“類ZYNQ”架構(gòu))屬性,能夠和其他算法功能模塊、存儲(chǔ)功能模塊、I/O功能模塊實(shí)現(xiàn)基于芯片內(nèi)通信的高效協(xié)同(多通道、大數(shù)據(jù)量、低延遲量、低延遲抖動(dòng)量),從而在系統(tǒng)整體性能上相比于以CPU+DSP/GPU為基礎(chǔ)的Linux+ROS體系結(jié)構(gòu)獲得了更為顯著的加成。2.4 對(duì)指令執(zhí)行階段的分析2.4.1 基于ROS的架構(gòu)中典型的指令執(zhí)行過(guò)程考慮圖A,對(duì)于驅(qū)動(dòng)帶EtherCAT從站接口模塊的執(zhí)行器來(lái)說(shuō),運(yùn)行于Linux內(nèi)核之上的、作為ROS節(jié)點(diǎn)之一(或獨(dú)立運(yùn)行)的EtherCAT主站程序定時(shí)發(fā)送攜帶著各執(zhí)行器所需指令數(shù)據(jù)的過(guò)程數(shù)據(jù)幀
21、到以太網(wǎng)環(huán)路(圖中未示出)上,帶EtherCAT從站接口模塊的執(zhí)行器接收過(guò)程數(shù)據(jù)幀、從中解析出屬于自己的指令數(shù)據(jù),然后將過(guò)程數(shù)據(jù)幀轉(zhuǎn)發(fā)到以太網(wǎng)環(huán)路上,執(zhí)行器執(zhí)行收到的指令。對(duì)于驅(qū)動(dòng)不帶EtherCAT從站接口模塊的執(zhí)行器來(lái)說(shuō),在Linux內(nèi)核的調(diào)度下,執(zhí)行器驅(qū)動(dòng)程序獲知下傳指令的需求,在屬于自己的CPU時(shí)段內(nèi),按照總線仲裁時(shí)序訪問(wèn)系統(tǒng)總線上與自己對(duì)應(yīng)的地址區(qū),讀取屬于自己的內(nèi)存空間以獲取待下傳的指令、數(shù)據(jù), 將其寫入執(zhí)行器的指令緩沖區(qū),或者,以DMA方式直接訪問(wèn)系統(tǒng)總線上屬于自己的地址區(qū)段、直接對(duì)其進(jìn)行讀取操作。2.4.2 基于ROS的架構(gòu)中指令執(zhí)行過(guò)程的性能瓶頸對(duì)于驅(qū)動(dòng)帶EtherCAT從站
22、接口模塊的執(zhí)行器來(lái)說(shuō),作為ROS節(jié)點(diǎn)之一(或獨(dú)立運(yùn)行)的EtherCAT主站程序必須實(shí)時(shí)運(yùn)行,任何比較大的幀發(fā)送延遲抖動(dòng)都有可能導(dǎo)致指令數(shù)據(jù)發(fā)送不及時(shí),從而影響執(zhí)行器的動(dòng)作效果(尤其是協(xié)同動(dòng)作效果)。例如,在CPU運(yùn)算、控制負(fù)荷比較大(例如算法更復(fù)雜、各協(xié)作運(yùn)行的機(jī)械臂的總軸數(shù)更多)的情況下,有可能因?yàn)閿?shù)據(jù)處理不及時(shí)而迫使幀發(fā)送時(shí)刻延后。對(duì)于驅(qū)動(dòng)不帶EtherCAT從站接口模塊的執(zhí)行器來(lái)說(shuō),當(dāng)執(zhí)行器數(shù)量比較多、動(dòng)作頻率比較高的時(shí)候,Linux內(nèi)核就必須把大量CPU工作時(shí)間耗費(fèi)在執(zhí)行傳感器驅(qū)動(dòng)程序上,影響承載核心業(yè)務(wù)的各ROS節(jié)點(diǎn)的執(zhí)行。同時(shí),由于各執(zhí)行器的驅(qū)動(dòng)程序只能一個(gè)接一個(gè)地順序執(zhí)行(多核
23、、多線程系統(tǒng)的任務(wù)并行程度本質(zhì)上是比較低的),導(dǎo)致各驅(qū)動(dòng)器的動(dòng)作協(xié)同性是難以保證的。事實(shí)上,ROS1不支持RTOS,非實(shí)時(shí)Linux執(zhí)行(以及開(kāi)始執(zhí)行)EtherCAT主站程序、執(zhí)行器驅(qū)動(dòng)程序的時(shí)間(時(shí)刻)很難實(shí)現(xiàn)固定,導(dǎo)致執(zhí)行器從EtherCAT主站程序、執(zhí)行器驅(qū)動(dòng)程序處獲得指令數(shù)據(jù)的時(shí)刻很難實(shí)現(xiàn)固定,最終影響執(zhí)行器的動(dòng)作效果(尤其是協(xié)同動(dòng)作效果)。2.4.3 基于FPGA的架構(gòu)針對(duì)指令執(zhí)行過(guò)程的解決方法考慮圖B,對(duì)于驅(qū)動(dòng)帶EtherCAT從站接口模塊的執(zhí)行器來(lái)說(shuō),由FPGA實(shí)現(xiàn)EtherCAT主站功能,以確保其發(fā)送過(guò)程數(shù)據(jù)幀的實(shí)時(shí)性- 事實(shí)上,我并不認(rèn)為這樣做是最合適的,我更傾向于武漢J團(tuán)
24、隊(duì)的方案:在實(shí)時(shí)反饋控制環(huán)路中摒棄EtherCAT,將所有執(zhí)行器的對(duì)外接口都簡(jiǎn)單化,用本小節(jié)后述的方式完成信號(hào)采集。FPGA一側(cè)掛在CPU的外部總線上,一側(cè)連接各執(zhí)行器、作為它們的上位機(jī),形成一個(gè)“總驅(qū)動(dòng)器”。FPGA并行為各執(zhí)行器提供其所需的信號(hào)波形、指令字段,利用分布式的、并行運(yùn)行的片內(nèi)硬件資源設(shè)計(jì)控制電路,對(duì)各執(zhí)行器的動(dòng)作時(shí)刻進(jìn)行高效的協(xié)同管理,使其按照實(shí)際需要的量化時(shí)序關(guān)系進(jìn)行動(dòng)作,以確保各個(gè)執(zhí)行器協(xié)同動(dòng)作的效果。同時(shí),軟件系統(tǒng)中用于執(zhí)行器的驅(qū)動(dòng)程序由于不再需要面對(duì)各種各樣的執(zhí)行器硬件信號(hào),從而使執(zhí)行器驅(qū)動(dòng)程序可以盡可能簡(jiǎn)化,并且不必為了與執(zhí)行器建立數(shù)據(jù)通道而無(wú)謂等待,從而減少了其占用
25、的CPU工作時(shí)間,減少了這一段CPU工作時(shí)間長(zhǎng)度的不確定程度,進(jìn)而減少了執(zhí)行器獲得指令的時(shí)刻的不確定程度。2.5 關(guān)于RTOS + ROS2提高ROS節(jié)點(diǎn)、自研應(yīng)用程序模塊的運(yùn)行實(shí)時(shí)性,最直接的方法是把非實(shí)時(shí)Linux換成RTOS。事實(shí)上,據(jù)說(shuō)ROS2已經(jīng)在兼容RTOS方面做了很多工作。但是,RTOS的本質(zhì)仍然是軟件操作系統(tǒng),系統(tǒng)中的各內(nèi)核子程序以及運(yùn)行在系統(tǒng)上的中間件、應(yīng)用程序、API、驅(qū)動(dòng)程序,仍然要采用時(shí)分復(fù)用CPU的基本工作模式,其對(duì)CPU內(nèi)核流水線調(diào)度、Cache更新決策、多級(jí)存儲(chǔ)器映射、存儲(chǔ)器一致性操作等復(fù)雜、耗時(shí)、延遲不確定的底層軟硬件操作的依賴,也是不可能改變的。也就是說(shuō),即使
26、基于RTOS實(shí)現(xiàn)了機(jī)器人控制系統(tǒng),其實(shí)時(shí)性指標(biāo)也會(huì)比FPGA低很多。而且,從筆者已經(jīng)了解到的信息來(lái)看,目前ROS2對(duì)RTOS的支持仍然是不完善的。2.6 小結(jié)綜上所述,在機(jī)器人反饋控制系統(tǒng)中加入FPGA,能夠提高多路傳感器采樣的實(shí)時(shí)性、協(xié)同性,提高反饋控制算法的實(shí)時(shí)性、協(xié)同性,提高多路驅(qū)動(dòng)器動(dòng)作的實(shí)時(shí)性、協(xié)同性,進(jìn)而提高反饋控制的速度(同等速度下提高對(duì)更復(fù)雜、協(xié)同性要求更高、基于更多路傳感器/執(zhí)行器的、效果更好的反饋控制算法的承載力),降低反饋控制過(guò)程耗時(shí)的不確定性,優(yōu)化反饋控制的效果。3 基本思路及實(shí)施方法3.1 在機(jī)器人領(lǐng)域深入應(yīng)用FPGA技術(shù)的基本思路分析反饋控制流程中的所有算法、功能模
27、塊,只要適合在FPGA中予以實(shí)現(xiàn),就移植到FPGA中,以使系統(tǒng)實(shí)時(shí)性最大化、承載更多高性能算法(此前因?yàn)檫\(yùn)算量大、實(shí)時(shí)性差而被放棄了);與此同時(shí),中高端CPU(以及DSP)及其基于ROS的軟件系統(tǒng)負(fù)責(zé)實(shí)現(xiàn)反饋控制算法流程中復(fù)雜程度太大以至于不適合用FPGA實(shí)現(xiàn)的算法模塊,以及ROS節(jié)點(diǎn)等低實(shí)時(shí)性需求的復(fù)雜算法模塊;低端CPU(或者空閑時(shí)段的中高端CPU)負(fù)責(zé)非實(shí)時(shí)的慢速任務(wù),例如系統(tǒng)管理、人機(jī)界面、讀寫慢速外圍設(shè)備(如FLASH)等等,并經(jīng)外部接口完成與中高端CPU(以及DSP)、FPGA之間的慢速數(shù)據(jù)交互。FPGA的一側(cè)連接傳感器、執(zhí)行器,獲取各監(jiān)測(cè)點(diǎn)的實(shí)時(shí)狀態(tài)信息、發(fā)出控制指令及參數(shù);一側(cè)
28、連接中高端CPU(以及DSP)的高速外部總線,與之進(jìn)行反饋控制算法數(shù)據(jù)的實(shí)時(shí)交互;另一側(cè)連接低端CPU的外部接口,獲取配置信息等慢速數(shù)據(jù),提交系統(tǒng)管理、人機(jī)界面所需的狀態(tài)信息。武漢J團(tuán)隊(duì)基于Zynq的“新一代片上驅(qū)控一體系統(tǒng)”,也是可供選擇的很好的方案。但是,我認(rèn)為,除了應(yīng)考慮將更多算法移植進(jìn)FPGA,他們的一些重要設(shè)計(jì)思想應(yīng)該加以修改。另外,如果仍然希望使用帶有EtherCAT從站模塊的傳感器、執(zhí)行器,則應(yīng)將EtherCAT主站的實(shí)時(shí)部分的功能移植到FPGA中予以實(shí)現(xiàn)。在這個(gè)技術(shù)方向,華中科技大學(xué)的宋寶教授帶領(lǐng)的團(tuán)隊(duì)(并非前述的武漢J團(tuán)隊(duì))已經(jīng)獲授了一項(xiàng)發(fā)明專利:一種基于FPGA的Ether
29、CAT主站裝置(CN201510107162.X,在國(guó)家知識(shí)產(chǎn)權(quán)局網(wǎng)站能查到詳情)。3.2 基本思路的實(shí)施方法在系統(tǒng)架構(gòu)設(shè)計(jì)方面,需要首先如下個(gè)自然段所述大致確定算法移植的方案,然后由FPGA工程師與機(jī)器人系統(tǒng)架構(gòu)設(shè)計(jì)師進(jìn)行討論,針對(duì)現(xiàn)有某產(chǎn)品控制系統(tǒng)的軟硬件功能劃分方案、軟硬件底層通訊機(jī)制、軟硬件上層數(shù)據(jù)交互機(jī)制、軟硬件時(shí)序協(xié)同機(jī)制、軟件系統(tǒng)的基本框架、FPGA系統(tǒng)的基本框架、硬件系統(tǒng)的基本框架、各種傳感器/執(zhí)行器的性能參數(shù)和接口特征、整機(jī)數(shù)據(jù)流設(shè)計(jì)、整機(jī)時(shí)序配合機(jī)制進(jìn)行比較深入的討論,最終共同商討確定新版系統(tǒng)架構(gòu)。在算法移植方面,F(xiàn)PGA工程師很可能對(duì)于機(jī)器人專業(yè)涉及的位姿計(jì)算、動(dòng)力學(xué)計(jì)算
30、、運(yùn)動(dòng)規(guī)劃、運(yùn)動(dòng)控制、伺服驅(qū)動(dòng)等等算法了解不多,需要由相關(guān)的算法設(shè)計(jì)師對(duì)各種算法的原理、框架、基本的運(yùn)算流程(常規(guī)內(nèi)容即可,可以不針對(duì)相關(guān)單位實(shí)際采用的技術(shù))進(jìn)行梳理,然后由FPGA工程師研究判斷其中哪一些可以移植進(jìn)FPGA,進(jìn)而初步確定算法移植方案。事實(shí)上,根據(jù)筆者看過(guò)的一些技術(shù)資料,多軸機(jī)器人的運(yùn)動(dòng)規(guī)劃、運(yùn)動(dòng)控制算法中雖然涉及大量復(fù)雜的公式變換,但絕大多數(shù)運(yùn)算都能變換為由基礎(chǔ)算子(算術(shù)運(yùn)算、開(kāi)方、三角函數(shù)等)構(gòu)成的形式,都可以基于FPGA實(shí)現(xiàn),實(shí)現(xiàn)之后必將大幅度提高運(yùn)動(dòng)規(guī)劃、運(yùn)運(yùn)動(dòng)控制算法執(zhí)行的實(shí)時(shí)性。在初步確定算法移植方案之后,由算法設(shè)計(jì)師將現(xiàn)有產(chǎn)品的待移植算法進(jìn)行簡(jiǎn)化,然后借助數(shù)學(xué)變換
31、將其轉(zhuǎn)化為由基礎(chǔ)算子構(gòu)成的形式,由FPGA工程師或算法設(shè)計(jì)師用MATLAB驗(yàn)證其效果,由FPGA工程師依據(jù)各算法模塊本身的實(shí)現(xiàn)過(guò)程、算法模塊之間的協(xié)同情況、基礎(chǔ)算子的參數(shù)特征和應(yīng)用場(chǎng)景、資源調(diào)度需求的特征等等因素,規(guī)劃待移植算法在FPGA中實(shí)現(xiàn)的體系架構(gòu)、FPGA與外部軟/硬件模塊的接口形式及協(xié)同機(jī)制(為外部軟/硬件模塊的修改提供依據(jù)),然后寫HDL代碼予以實(shí)現(xiàn)。之后,將FPGA工程生成的加載文件寫入FPGA板的板載FLASH芯片,在新的軟/硬件系統(tǒng)的合作下運(yùn)行機(jī)器人系統(tǒng),初步驗(yàn)證加入FPGA之后的運(yùn)行效果。進(jìn)而,整理各種已研究過(guò)但尚未添加的各種優(yōu)化算法,各種有思路但因?yàn)檫\(yùn)算量大、CPU/DS
32、P+軟件的實(shí)時(shí)性不能滿足系統(tǒng)要求而被放棄的各種優(yōu)化算法,添加進(jìn)FPGA設(shè)計(jì)、系統(tǒng)設(shè)計(jì)中,針對(duì)機(jī)器人的動(dòng)力學(xué)實(shí)時(shí)運(yùn)算、精細(xì)化實(shí)時(shí)運(yùn)動(dòng)控制、反力的精細(xì)化捷變響應(yīng)等性能進(jìn)行深度優(yōu)化。4 系統(tǒng)優(yōu)化科技樹(shù) - 基于FPGA實(shí)現(xiàn)EtherCAT主站控制器之后考慮到EtherCAT仍然是當(dāng)前機(jī)器人系統(tǒng)架構(gòu)中的主流總線,在此提供基于FPGA實(shí)現(xiàn)EtherCAT主站控制器之后的系統(tǒng)優(yōu)化科技樹(shù),由業(yè)內(nèi)人士進(jìn)行參考。5 建議目前,在FPGA應(yīng)用方面,業(yè)界正處在從局部性能優(yōu)化(伺服驅(qū)動(dòng)器)到系統(tǒng)架構(gòu)優(yōu)化(武漢J團(tuán)隊(duì)、某大型國(guó)企)轉(zhuǎn)變的最初階段,一旦完成比較成熟的應(yīng)用案例,其性能優(yōu)勢(shì)必將非常顯著,不能及時(shí)跟進(jìn)的企業(yè)在產(chǎn)品性能落后、受到先行者建立的專利體系的制約的情況下,必將面臨嚴(yán)峻的挑戰(zhàn)。所以,筆者在此向從事機(jī)器人整機(jī)研發(fā)、控制系統(tǒng)/部件研發(fā)的各單位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖兔子售賣合同范本
- 窗簾墻布定制合同范本
- 橋梁勞務(wù)協(xié)作合同范本
- 預(yù)防保健科年終工作總結(jié)
- 藥品質(zhì)量與安全論文
- 蛋糕店大學(xué)生創(chuàng)業(yè)計(jì)劃
- 2020對(duì)口招生基本文化素質(zhì)測(cè)試卷
- 門診半年工作總結(jié)
- 2025年湖南省永州市第十六中學(xué)中考一模道德與法治試題(含答案)
- 內(nèi)勤年終數(shù)據(jù)工作總結(jié)
- 月字形演變的研究報(bào)告
- 《小兒積食》課件
- 2024年高等教育文學(xué)類自考-00522英語(yǔ)國(guó)家概況歷年考試高頻考點(diǎn)試題附帶答案
- 【生物防治】10植物病害生物防治課件
- 學(xué)科競(jìng)賽與成果展示情況匯報(bào)
- 六西格瑪設(shè)計(jì)DFSS
- 重慶市開(kāi)州區(qū)2022-2023學(xué)年五年級(jí)下學(xué)期期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試題
- 《中原文化》課件
- 我的家鄉(xiāng)湖南邵陽(yáng)宣傳介紹
- 管樂(lè)隊(duì)教學(xué)計(jì)劃
- 電氣工程及其自動(dòng)化畢業(yè)論文基于PLC的設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論