劉子貴
(江門職業(yè)技術(shù)學院,江門 529090)
隨著國內(nèi)勞動力成本的不斷上升,工業(yè)機器人在投資成本方面展現(xiàn)了強勁的競爭力。然而,面對如此大的市場需求,國內(nèi)工業(yè)機器人制造商在工業(yè)機器人市場競爭中長期處于劣勢地位。國內(nèi)90%以上的機器人市場被國外知名機器人廠商占據(jù),究其原因是我國工業(yè)機器人行業(yè)起步晚,在機器人關鍵技術(shù)上與發(fā)達國家存在較大差距[1]。因此,開展機器人運動控制、機器人外部軸協(xié)同與多機協(xié)同、多傳感器數(shù)據(jù)融合等關鍵技術(shù)研究,研發(fā)一款具備高性能、開放式、平臺化、網(wǎng)絡化以及標準化的機器人運動控制器,對國產(chǎn)品牌機器人加速產(chǎn)業(yè)化和提升我國工業(yè)制造競爭力、國家科技創(chuàng)新與高端制造業(yè)水平具有重要意義。
當前,機器人應用主要集中在搬運、分揀以及上下料等簡單場景下,對于焊接、打磨及涂膠等高端應用場景,尚少有機器人可以解決這些場景下的關鍵問題。傳統(tǒng)控制器在控制系統(tǒng)架構(gòu)以及機器人的運動控制算法和工藝算法上,均存在較大不足。軟件框架上的不足會影響機器人控制器的處理效率和實時性。傳統(tǒng)控制器一般僅考慮機器人的運動學,忽略了機器人的動力學。在機器人的工藝層面上,更少有研究。因此,發(fā)展高性能的機器人運動控制器,需要加大對軟件框架、機器人學算法和工藝的研究。
隨著機器人應用的發(fā)展,人們已經(jīng)不能單把機器人當成是一個單一的嵌入式設備。智能制造的核心要求是希望工廠能夠?qū)崿F(xiàn)柔性化生產(chǎn),即基于固有的硬件設備,能夠根據(jù)需求的變化,靈活進行配置,生產(chǎn)符合要求的產(chǎn)品。這就要求機器人控制器在保證高性能的運動控制基礎上,開放足夠多的運動控制接口和工藝接口,方便用戶根據(jù)自己的需求進行自由配置,實現(xiàn)滿足自己需求的機器人應用。目前,傳統(tǒng)控制器一個封閉的系統(tǒng)缺少能夠用于二次開發(fā)的接口。
理論上,機器人設計的目標是能夠替換目前大部分需要人工參與的工作崗位。然而,機器人是一款專用的自動化產(chǎn)品,需要根據(jù)實際需求定制化開發(fā)軟硬件,以實現(xiàn)某種功能,一定程度上阻礙了機器人的推廣。解決這一問題的核心在于需要把機器人控制器設計成一款平臺化系統(tǒng),除了可以實現(xiàn)機器人的運動控制,還需要能夠接入大量第三方設備,包含傳感器、執(zhí)行機構(gòu)及機床等,實現(xiàn)與這些設備的通信,并將獲取的信息進行融合處理,更好地規(guī)劃機器人的任務。
傳統(tǒng)的機器人在工業(yè)現(xiàn)場是一個個獨立的工位,按照各自的程序完成相應的任務。流水線的生產(chǎn)方式可以加快工廠的生產(chǎn)效率,但是由于機器人是獨立的個體,在一條由多臺機器人組成的產(chǎn)線上,這些機器人難以組成一個系統(tǒng)進行管理,會對生產(chǎn)監(jiān)控和任務更改帶來巨大困難。開發(fā)網(wǎng)絡化的機器人控制器,結(jié)合物聯(lián)網(wǎng)技術(shù)和云計算技術(shù),可以在更大的時空范圍內(nèi)對機器人的運行狀態(tài)和任務執(zhí)行進行監(jiān)管,也可以更加高效地對機器人發(fā)布任務。
當前,國內(nèi)外存在大大小小上百家機器人生產(chǎn)廠家,每家都有自己的控制系統(tǒng),在操作方式、任務編程上各不相同,導致基本不可能在同一條產(chǎn)線使用兩個不同品牌的機器人,帶來了額外的部署和維護成本。為了能夠在機器人行業(yè)達成統(tǒng)一標準,需要根據(jù)現(xiàn)有機器人的應用情況,總結(jié)在實際場景中的問題,制定機器人系統(tǒng)的開發(fā)標準,以助于機器人的推廣應用。
運動控制是機器人控制器技術(shù)的核心功能,包含機器人的運動學和動力學算法,機器人的軌跡規(guī)劃和路徑規(guī)劃算法,機器人的線性、非線性控制以及力控制等。優(yōu)秀的運動控制算法能夠?qū)崿F(xiàn)運動學與動力學的快速解算,以最優(yōu)理論規(guī)劃機器人的軌跡和路徑,避開奇異位置和運動性能極限點。另外,需要在機器人運動過程中補償本體自身的重力、摩擦力和慣性力,保證機器人軌跡的精度,抑制外部因素的干擾等。
外部軸協(xié)同和多機協(xié)同可以在更大程度上擴展機器人的自由度,幫助機器人完成更加復雜的作業(yè)任務。常用的外部軸包含機器人的行走軸和變位機等。外部軸協(xié)同和多機協(xié)同技術(shù)的核心難點在于解決不同機構(gòu)之間的聯(lián)動問題,即需要保證不同機構(gòu)工具中心點的位姿隨時間的變化保持一致。
機器人在實際中除了簡單的搬運碼垛應用外,更多的是用到復雜工藝的場景,包括焊接、打磨及涂膠等。機器人在執(zhí)行這些工藝時,需要隨時讀入傳感器數(shù)據(jù)和改變輸出控制量。工藝往往需要大量的人工經(jīng)驗,如何將這些經(jīng)驗參數(shù)化,并由控制器自動根據(jù)這些參數(shù)形成工作流程,是實現(xiàn)機器人工藝的重點。工藝參數(shù)將生成機器人運動路徑上的控制點,然后控制器基于這些控制點規(guī)劃產(chǎn)生最終的軌跡。
機器人運動性能的保證一方面來自機器人的控制算法,另一方面來自控制器的嵌入式技術(shù),尤其在于系統(tǒng)的實時內(nèi)核和現(xiàn)場總線兩部分。實時系統(tǒng)能夠保證在一定的時間限制內(nèi)完成特定的功能,而現(xiàn)場總線能夠連接現(xiàn)場設備,實現(xiàn)高效、可靠的通信。
控制器要預留足夠多樣化的電氣接口,讀取各類現(xiàn)場傳感器的數(shù)據(jù)。比讀取更加重要的是處理傳感器數(shù)據(jù),尤其是在多個傳感器同時作業(yè)時,如何將這些數(shù)據(jù)進行綜合,消除現(xiàn)場的干擾,降低數(shù)據(jù)的不確定性,得到最準確的結(jié)果,是多傳感器融合技術(shù)需要解決的問題。
支持虛擬仿真的機器人控制器,要求系統(tǒng)能夠高度模仿機器人的運動和狀態(tài)。這需要借助計算機圖形學和機器人學的基本理論知識。需要對機器人進行結(jié)構(gòu)和慣量分布的建模,隨后對機器人進行運動編程,在機器人虛擬運行過程中實時預估機器人的狀態(tài),預報機器人超限運動、碰撞、超負載等情況。
編譯技術(shù)是將源代碼編譯成目標代碼的技術(shù)。需要設計一種標準化的機器人編程語言,能夠高效地運行于控制器,同時支持將目前主流機器人廠家的編程語言快速通過編譯器轉(zhuǎn)化為該語言。編譯技術(shù)包含文法分析、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優(yōu)化和目標代碼生成等過程。
制定控制器的軟件框架并編程實現(xiàn),基于框架逐個完成方案內(nèi)容,包含電路硬件和嵌入式軟件接口的研發(fā)、機器人運動控制算法的研發(fā)、外部通信協(xié)議整合以及數(shù)據(jù)融合算法的開發(fā)、機器人編程語言的設計和實現(xiàn)、機器人三維仿真功能的實現(xiàn)以及機器人工藝包的開發(fā)。
控制器采用的系統(tǒng)架構(gòu)如圖1所示,自下而上可以分為5層,分別為硬件層、系統(tǒng)和驅(qū)動層、算法和工藝層、任務層和接口層。
圖1 控制器系統(tǒng)架構(gòu)
硬件層主要指控制器底層的電路硬件,采用X86+FPGA的處理器方案,兼顧運算能力和信號處理能力,同時設計豐富的外部電氣接口,如Ethernet、Modbus、RS232/485等,為控制器的外部擴展提供硬件支持。
系統(tǒng)和驅(qū)動層涵蓋控制器底層操作系統(tǒng)和硬件驅(qū)動部分。本文采用Linux作為控制器的底層操作系統(tǒng),搭配實時內(nèi)核補丁,提高系統(tǒng)的實時性,保障底層通信的精度。同時,在操作系統(tǒng)上安裝EtherCAT、CANopen等主流現(xiàn)場總線的主站協(xié)議,為運動控制提供通信支持。
算法和工藝層是機器人控制器的核心,囊括了機器人的運動學算法、動力學算法、軌跡規(guī)劃算法、路徑規(guī)劃算法、線性和非線性的控制算法以及力控算法等機器人運動控制的核心技術(shù),同時包括焊接工藝、打磨工藝、涂膠工藝以及噴涂工藝在內(nèi)的機器人主流應用的成熟工藝包。
任務層主要負責機器人控制指令和程序代碼的解析,同時負責控制器整體系統(tǒng)的任務調(diào)度和狀態(tài)監(jiān)測,更像是機器人的操作系統(tǒng)。
接口層主要負責向上提供控制器的二次開發(fā)接口,包括機器人的運動控制接口和工藝接口。該層主要支持開發(fā)者在提供的機器人硬件和系統(tǒng)軟件功能基礎上,開發(fā)面向場景的應用。
操作系統(tǒng)可以分為實時系統(tǒng)和非實時系統(tǒng)兩類,兩者的核心區(qū)別在于對任務調(diào)度處理策略有所不同。非實時系統(tǒng)采用非搶占式的調(diào)度策略和基于時間片原則的搶占式調(diào)度策略。所謂非搶占式調(diào)度策略即一旦內(nèi)核把運算資源分配給某個任務后,便會一直執(zhí)行該任務,直到該任務完成后才會把資源再分配給新的任務。基于時間片原則的搶占式調(diào)度策略則由內(nèi)核給任務分配時間片,只有在一個時間片結(jié)束后,內(nèi)核才能把資源分配給別的任務。綜合來說,非實時內(nèi)核任務調(diào)度的原則是先到先得,后執(zhí)行的任務不能打斷先執(zhí)行的任務,只能排隊等待,因此不能保證在約定時間內(nèi)完成特定任務。實時內(nèi)核則引入了優(yōu)先級概念,優(yōu)先級高的任務可以無條件搶占正在執(zhí)行的低優(yōu)先級任務。因此,對于實時系統(tǒng),原則上只需要給予對完成時間有較高要求的任務足夠高的優(yōu)先級,就可以保證任務完成的實時性。
本文采用Linux作為底層操作系統(tǒng)。Linux的官方內(nèi)核并非實時內(nèi)核,它的時間精度只有毫秒級,對于工業(yè)產(chǎn)品是完全不可以接受的。時間的誤差會帶來設備精度和穩(wěn)定性上的問題。選擇雙內(nèi)核方案,即非實時內(nèi)核和實時內(nèi)核并存,通過在常規(guī)Linux系統(tǒng)上安裝實時補丁來增加系統(tǒng)的實時性。采用Xenomai+Linux系統(tǒng),為用戶提供了用戶空間和核空間兩種模式。用戶空間的執(zhí)行模式保證了系統(tǒng)的可靠性和良好的軟實時性,內(nèi)核空間程序則能提供優(yōu)秀的硬實時性[2]。
機器人學主要的研究內(nèi)容包括機器人的參數(shù)建模、機器人的運動學和動力學、機器人的軌跡規(guī)劃以及機器人的運動控制等。機器人學建模通常采用D-H(Denavit-Hartenberg)參數(shù)建模。機器人可以看作由多個連桿組成,連桿之間由運動副連接,在機器人中稱之為關節(jié)。大部分的機器人都由移動關節(jié)和旋轉(zhuǎn)關節(jié)連接而成。機器人的每個連桿均可以用4個參數(shù)來描述,如圖2所示。這些參數(shù)組成了最后的D-H參數(shù)表。對于實際中常用的串聯(lián)型機械臂構(gòu)型,如常規(guī)六軸機器人、協(xié)作機器人和選擇順應性裝配機器手臂(Selective Compliance Assembly Robot Arm,SCARA)機器人,均可以列出它們的D-H參數(shù)。
圖2 連桿的參數(shù)建模
機器人的運動學和動力學主要研究機器人關節(jié)空間和任務空間的換算關系。機器人的動力來源于關節(jié)的電機,控制器的信號主要用于驅(qū)動關節(jié)電機的運動。而在實際應用中,更加關心機器人的工具中心點在任務空間的運動狀況。因此,控制器在機器人運行過程中需要不斷換算關節(jié)空間和任務空間的對應值,以保證機器人按照設想的模式運行。運動學主要解決在靜止狀態(tài)下各關節(jié)角度值和工具中心點在笛卡爾空間的位置姿態(tài)關系。動力學則主要解決在運動過程中,關節(jié)輸出扭矩和末端輸出力和扭矩的關系。根據(jù)實際場景不同,機器人會有選擇地運行位置模式和力矩模式。
位置、速度以及加速度是運動常用的幾個要素。為了實現(xiàn)機器人的平穩(wěn)運行,要求在運動過程中時刻保證機器人在關節(jié)空間和任務空間的位置、速度以及加速度連續(xù)。軌跡規(guī)劃即在路徑已知的情況下,規(guī)劃位移相對于時間的函數(shù),保證機器人的運動性能。常用的軌跡規(guī)劃算法包括多項式樣條曲線、S形加減速曲線以及三角函數(shù)角速度曲線等。
傳統(tǒng)的機器人控制方法能夠在保障環(huán)境精度的情況下精確完成任務。然而,現(xiàn)實中的情況更為復雜。純剛性的控制方法難以應對柔性的應用場合,如裝配、打磨等場景。這就需要在機器人的控制方法上創(chuàng)新,其中力位混合控制器就可以解決這一問題。在運動過程中,混合控制器反饋得到機器人末端的力值,再將其輸入控制器改變末端的狀態(tài)。
外部軸是相對于機器人的本體軸而言,在電氣接口上與本體軸并無不同,只是在機器人算法上會將機器人的本體軸整體建模計算,而外部軸需要單獨定義并進行計算。根據(jù)實際的應用場景,外部軸可定義為地軌、變位機和其他伺服設備。
對于外部軸為地軌即為機器人增加行走軸的情況下,機器人末端的可達空間在地軌的方向上得到了極大延伸。理論上,機器人在可達空間內(nèi)的任意一點都有無限多組解,如何在這無限多組解中求得最優(yōu)解是行走軸問題的關鍵。對于僅有本體軸的情況,六軸機器人在任務空間的一組位姿點的逆運算至多對應8組解,通常采用計算關節(jié)空間距離取最小值為逆解。而對于行走外部軸的情況,可以選用能量最優(yōu)的方式求取機器人的逆解,得到機器人和外部軸的控制量。
對于外部軸為變位機的情況,更加注重機器人與變位機的配合。變位機可以彌補機器人在某些位姿上不可達的問題。通常以變位機為主動設備,機器人為從動設備。先規(guī)劃變位機的運動過程,后得到機器人的軌跡信息,在運動過程中實時結(jié)算機器人的關節(jié)姿態(tài),實現(xiàn)機器人的隨動效果。
多個機器人協(xié)作需要解決軌跡位置的一致性問題和機器人之間的碰撞問題。本文采用虛擬力算法實時計算各關節(jié)的受力情況,從而調(diào)整方向防止機器人之間發(fā)生碰撞。根據(jù)雙臂之間的距離建立虛擬力場的虛擬引力和虛擬斥力,其中引力場接近目標,斥力場排斥環(huán)境中的障礙物[3]。
多傳感器數(shù)據(jù)融合技術(shù)是利用計算機技術(shù)將來自多傳感器或多源的信息和數(shù)據(jù)在一定的準則下加以自動分析和綜合,以完成所需要的決策和估計而進行的信息處理過程[4]。機器人控制器常用的傳感器數(shù)據(jù)包括視覺傳感器、力傳感器、激光雷達以及溫濕度觸感器等??刂破鞑捎梅植际綌?shù)據(jù)融合方式,即觸感器獲取的原始數(shù)據(jù)已經(jīng)由傳感器的控制器進行初步處理得到了局部結(jié)果,再將結(jié)果傳入機器人控制器,由機器人控制器綜合數(shù)據(jù)得到最后的結(jié)果。該過程可以抽象為數(shù)據(jù)層、特征層和決策層3個層次。多傳感器數(shù)據(jù)融合技術(shù)常用的方法包括卡爾曼濾波、人工神經(jīng)網(wǎng)絡等。
標準的機器人編程語言應該包含數(shù)據(jù)類型、運算和表達式、過程語句、運動指令及通信指令等要素。機器人編程語言中的數(shù)據(jù)類型應該包含布爾型、整型、浮點型、關節(jié)結(jié)構(gòu)體、位姿結(jié)構(gòu)體、坐標點結(jié)構(gòu)體、姿態(tài)角結(jié)構(gòu)體以及字符串等。運算和表達式除了四則運算外,還應該包含常用的數(shù)學函數(shù),如三角函數(shù)、指數(shù)運算以及對數(shù)運算等。過程語句包含循環(huán)語句、條件循環(huán)語句、條件判斷語句以及子函數(shù)等。運動指令包含直線、圓弧、關節(jié)、自定義路徑以及對應的相對運動等。通信指令則涵蓋各類電氣接口的通信,如數(shù)字模擬輸入/輸出(Input/Output,I/O)、Modbus以及傳輸控制協(xié)議(Transmission Control Protocol,TCP)等。編譯器的工作流程,如圖3所示。
圖3 編譯器的工作流程
代碼編譯其實是將字符流轉(zhuǎn)換為目標機器代碼的過程,對程序代碼的編譯也就是對字符串的處理,編譯的流程包括詞法分析、語法分析、語義分析、中間代碼生成、機器無關代碼優(yōu)化、代碼生成以及機器相關代碼優(yōu)化等[5]。
機器人虛擬仿真功能包含三維仿真、物理引擎以及機器人狀態(tài)的模擬3個技術(shù)要素。三維仿真平臺可以選擇基于OpenGL庫進行開發(fā)。物理引擎通過為剛性物體賦予真實的物理屬性的方式來計算運動、旋轉(zhuǎn)和碰撞反映。為了在機器人仿真過程中增加重力、摩擦力、碰撞等對仿真效果的影響,采用帶物理引擎的仿真平臺V-REP或者Gazebo進行機器人仿真。模擬機器人的狀態(tài)除了需要模擬機器人的姿態(tài)外,也需要使用物理引擎模擬機器人的力學狀態(tài),使仿真效果更加逼近真實的情況。
本文提出了一套標準化的機器人編程語法規(guī)則,一方面能夠方便處理現(xiàn)有的主流廠家的機器人程序代碼,將其統(tǒng)一格式,另一方面能夠極大地提高機器人執(zhí)行程序的效率,并能夠提升控制器的通信能力,將傳感器數(shù)據(jù)融合技術(shù)用于機器人控制器,使機器人能夠更好地適應非結(jié)構(gòu)化的環(huán)境,實現(xiàn)柔性作業(yè)。在控制器中融入虛實結(jié)合的機器人仿真技術(shù),能夠?qū)崿F(xiàn)控制器在脫離機械本體的情況下完成任務編程和效果仿真,還能將仿真結(jié)果運行在實際機器人上,有利于降低機器人操作中存在的試錯風險,提高實際編程的效率。同時,控制器能夠基于網(wǎng)絡實現(xiàn)互聯(lián),通過一個中心節(jié)點實現(xiàn)多臺機器人同時監(jiān)控和互相協(xié)作,更有利于機器人在大批量應用場景下的管理和部署。