劉子貴
(江門職業技術學院,江門 529090)
隨著國內勞動力成本的不斷上升,工業機器人在投資成本方面展現了強勁的競爭力。然而,面對如此大的市場需求,國內工業機器人制造商在工業機器人市場競爭中長期處于劣勢地位。國內90%以上的機器人市場被國外知名機器人廠商占據,究其原因是我國工業機器人行業起步晚,在機器人關鍵技術上與發達國家存在較大差距[1]。因此,開展機器人運動控制、機器人外部軸協同與多機協同、多傳感器數據融合等關鍵技術研究,研發一款具備高性能、開放式、平臺化、網絡化以及標準化的機器人運動控制器,對國產品牌機器人加速產業化和提升我國工業制造競爭力、國家科技創新與高端制造業水平具有重要意義。
當前,機器人應用主要集中在搬運、分揀以及上下料等簡單場景下,對于焊接、打磨及涂膠等高端應用場景,尚少有機器人可以解決這些場景下的關鍵問題。傳統控制器在控制系統架構以及機器人的運動控制算法和工藝算法上,均存在較大不足。軟件框架上的不足會影響機器人控制器的處理效率和實時性。傳統控制器一般僅考慮機器人的運動學,忽略了機器人的動力學。在機器人的工藝層面上,更少有研究。因此,發展高性能的機器人運動控制器,需要加大對軟件框架、機器人學算法和工藝的研究。
隨著機器人應用的發展,人們已經不能單把機器人當成是一個單一的嵌入式設備。智能制造的核心要求是希望工廠能夠實現柔性化生產,即基于固有的硬件設備,能夠根據需求的變化,靈活進行配置,生產符合要求的產品。這就要求機器人控制器在保證高性能的運動控制基礎上,開放足夠多的運動控制接口和工藝接口,方便用戶根據自己的需求進行自由配置,實現滿足自己需求的機器人應用。目前,傳統控制器一個封閉的系統缺少能夠用于二次開發的接口。
理論上,機器人設計的目標是能夠替換目前大部分需要人工參與的工作崗位。然而,機器人是一款專用的自動化產品,需要根據實際需求定制化開發軟硬件,以實現某種功能,一定程度上阻礙了機器人的推廣。解決這一問題的核心在于需要把機器人控制器設計成一款平臺化系統,除了可以實現機器人的運動控制,還需要能夠接入大量第三方設備,包含傳感器、執行機構及機床等,實現與這些設備的通信,并將獲取的信息進行融合處理,更好地規劃機器人的任務。
傳統的機器人在工業現場是一個個獨立的工位,按照各自的程序完成相應的任務。流水線的生產方式可以加快工廠的生產效率,但是由于機器人是獨立的個體,在一條由多臺機器人組成的產線上,這些機器人難以組成一個系統進行管理,會對生產監控和任務更改帶來巨大困難。開發網絡化的機器人控制器,結合物聯網技術和云計算技術,可以在更大的時空范圍內對機器人的運行狀態和任務執行進行監管,也可以更加高效地對機器人發布任務。
當前,國內外存在大大小小上百家機器人生產廠家,每家都有自己的控制系統,在操作方式、任務編程上各不相同,導致基本不可能在同一條產線使用兩個不同品牌的機器人,帶來了額外的部署和維護成本。為了能夠在機器人行業達成統一標準,需要根據現有機器人的應用情況,總結在實際場景中的問題,制定機器人系統的開發標準,以助于機器人的推廣應用。
運動控制是機器人控制器技術的核心功能,包含機器人的運動學和動力學算法,機器人的軌跡規劃和路徑規劃算法,機器人的線性、非線性控制以及力控制等。優秀的運動控制算法能夠實現運動學與動力學的快速解算,以最優理論規劃機器人的軌跡和路徑,避開奇異位置和運動性能極限點。另外,需要在機器人運動過程中補償本體自身的重力、摩擦力和慣性力,保證機器人軌跡的精度,抑制外部因素的干擾等。
外部軸協同和多機協同可以在更大程度上擴展機器人的自由度,幫助機器人完成更加復雜的作業任務。常用的外部軸包含機器人的行走軸和變位機等。外部軸協同和多機協同技術的核心難點在于解決不同機構之間的聯動問題,即需要保證不同機構工具中心點的位姿隨時間的變化保持一致。
機器人在實際中除了簡單的搬運碼垛應用外,更多的是用到復雜工藝的場景,包括焊接、打磨及涂膠等。機器人在執行這些工藝時,需要隨時讀入傳感器數據和改變輸出控制量。工藝往往需要大量的人工經驗,如何將這些經驗參數化,并由控制器自動根據這些參數形成工作流程,是實現機器人工藝的重點。工藝參數將生成機器人運動路徑上的控制點,然后控制器基于這些控制點規劃產生最終的軌跡。
機器人運動性能的保證一方面來自機器人的控制算法,另一方面來自控制器的嵌入式技術,尤其在于系統的實時內核和現場總線兩部分。實時系統能夠保證在一定的時間限制內完成特定的功能,而現場總線能夠連接現場設備,實現高效、可靠的通信。
控制器要預留足夠多樣化的電氣接口,讀取各類現場傳感器的數據。比讀取更加重要的是處理傳感器數據,尤其是在多個傳感器同時作業時,如何將這些數據進行綜合,消除現場的干擾,降低數據的不確定性,得到最準確的結果,是多傳感器融合技術需要解決的問題。
支持虛擬仿真的機器人控制器,要求系統能夠高度模仿機器人的運動和狀態。這需要借助計算機圖形學和機器人學的基本理論知識。需要對機器人進行結構和慣量分布的建模,隨后對機器人進行運動編程,在機器人虛擬運行過程中實時預估機器人的狀態,預報機器人超限運動、碰撞、超負載等情況。
編譯技術是將源代碼編譯成目標代碼的技術。需要設計一種標準化的機器人編程語言,能夠高效地運行于控制器,同時支持將目前主流機器人廠家的編程語言快速通過編譯器轉化為該語言。編譯技術包含文法分析、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成等過程。
制定控制器的軟件框架并編程實現,基于框架逐個完成方案內容,包含電路硬件和嵌入式軟件接口的研發、機器人運動控制算法的研發、外部通信協議整合以及數據融合算法的開發、機器人編程語言的設計和實現、機器人三維仿真功能的實現以及機器人工藝包的開發。
控制器采用的系統架構如圖1所示,自下而上可以分為5層,分別為硬件層、系統和驅動層、算法和工藝層、任務層和接口層。

圖1 控制器系統架構
硬件層主要指控制器底層的電路硬件,采用X86+FPGA的處理器方案,兼顧運算能力和信號處理能力,同時設計豐富的外部電氣接口,如Ethernet、Modbus、RS232/485等,為控制器的外部擴展提供硬件支持。
系統和驅動層涵蓋控制器底層操作系統和硬件驅動部分。本文采用Linux作為控制器的底層操作系統,搭配實時內核補丁,提高系統的實時性,保障底層通信的精度。同時,在操作系統上安裝EtherCAT、CANopen等主流現場總線的主站協議,為運動控制提供通信支持。
算法和工藝層是機器人控制器的核心,囊括了機器人的運動學算法、動力學算法、軌跡規劃算法、路徑規劃算法、線性和非線性的控制算法以及力控算法等機器人運動控制的核心技術,同時包括焊接工藝、打磨工藝、涂膠工藝以及噴涂工藝在內的機器人主流應用的成熟工藝包。
任務層主要負責機器人控制指令和程序代碼的解析,同時負責控制器整體系統的任務調度和狀態監測,更像是機器人的操作系統。
接口層主要負責向上提供控制器的二次開發接口,包括機器人的運動控制接口和工藝接口。該層主要支持開發者在提供的機器人硬件和系統軟件功能基礎上,開發面向場景的應用。
操作系統可以分為實時系統和非實時系統兩類,兩者的核心區別在于對任務調度處理策略有所不同。非實時系統采用非搶占式的調度策略和基于時間片原則的搶占式調度策略。所謂非搶占式調度策略即一旦內核把運算資源分配給某個任務后,便會一直執行該任務,直到該任務完成后才會把資源再分配給新的任務。基于時間片原則的搶占式調度策略則由內核給任務分配時間片,只有在一個時間片結束后,內核才能把資源分配給別的任務。綜合來說,非實時內核任務調度的原則是先到先得,后執行的任務不能打斷先執行的任務,只能排隊等待,因此不能保證在約定時間內完成特定任務。實時內核則引入了優先級概念,優先級高的任務可以無條件搶占正在執行的低優先級任務。因此,對于實時系統,原則上只需要給予對完成時間有較高要求的任務足夠高的優先級,就可以保證任務完成的實時性。
本文采用Linux作為底層操作系統。Linux的官方內核并非實時內核,它的時間精度只有毫秒級,對于工業產品是完全不可以接受的。時間的誤差會帶來設備精度和穩定性上的問題。選擇雙內核方案,即非實時內核和實時內核并存,通過在常規Linux系統上安裝實時補丁來增加系統的實時性。采用Xenomai+Linux系統,為用戶提供了用戶空間和核空間兩種模式。用戶空間的執行模式保證了系統的可靠性和良好的軟實時性,內核空間程序則能提供優秀的硬實時性[2]。
機器人學主要的研究內容包括機器人的參數建模、機器人的運動學和動力學、機器人的軌跡規劃以及機器人的運動控制等。機器人學建模通常采用D-H(Denavit-Hartenberg)參數建模。機器人可以看作由多個連桿組成,連桿之間由運動副連接,在機器人中稱之為關節。大部分的機器人都由移動關節和旋轉關節連接而成。機器人的每個連桿均可以用4個參數來描述,如圖2所示。這些參數組成了最后的D-H參數表。對于實際中常用的串聯型機械臂構型,如常規六軸機器人、協作機器人和選擇順應性裝配機器手臂(Selective Compliance Assembly Robot Arm,SCARA)機器人,均可以列出它們的D-H參數。

圖2 連桿的參數建模
機器人的運動學和動力學主要研究機器人關節空間和任務空間的換算關系。機器人的動力來源于關節的電機,控制器的信號主要用于驅動關節電機的運動。而在實際應用中,更加關心機器人的工具中心點在任務空間的運動狀況。因此,控制器在機器人運行過程中需要不斷換算關節空間和任務空間的對應值,以保證機器人按照設想的模式運行。運動學主要解決在靜止狀態下各關節角度值和工具中心點在笛卡爾空間的位置姿態關系。動力學則主要解決在運動過程中,關節輸出扭矩和末端輸出力和扭矩的關系。根據實際場景不同,機器人會有選擇地運行位置模式和力矩模式。
位置、速度以及加速度是運動常用的幾個要素。為了實現機器人的平穩運行,要求在運動過程中時刻保證機器人在關節空間和任務空間的位置、速度以及加速度連續。軌跡規劃即在路徑已知的情況下,規劃位移相對于時間的函數,保證機器人的運動性能。常用的軌跡規劃算法包括多項式樣條曲線、S形加減速曲線以及三角函數角速度曲線等。
傳統的機器人控制方法能夠在保障環境精度的情況下精確完成任務。然而,現實中的情況更為復雜。純剛性的控制方法難以應對柔性的應用場合,如裝配、打磨等場景。這就需要在機器人的控制方法上創新,其中力位混合控制器就可以解決這一問題。在運動過程中,混合控制器反饋得到機器人末端的力值,再將其輸入控制器改變末端的狀態。
外部軸是相對于機器人的本體軸而言,在電氣接口上與本體軸并無不同,只是在機器人算法上會將機器人的本體軸整體建模計算,而外部軸需要單獨定義并進行計算。根據實際的應用場景,外部軸可定義為地軌、變位機和其他伺服設備。
對于外部軸為地軌即為機器人增加行走軸的情況下,機器人末端的可達空間在地軌的方向上得到了極大延伸。理論上,機器人在可達空間內的任意一點都有無限多組解,如何在這無限多組解中求得最優解是行走軸問題的關鍵。對于僅有本體軸的情況,六軸機器人在任務空間的一組位姿點的逆運算至多對應8組解,通常采用計算關節空間距離取最小值為逆解。而對于行走外部軸的情況,可以選用能量最優的方式求取機器人的逆解,得到機器人和外部軸的控制量。
對于外部軸為變位機的情況,更加注重機器人與變位機的配合。變位機可以彌補機器人在某些位姿上不可達的問題。通常以變位機為主動設備,機器人為從動設備。先規劃變位機的運動過程,后得到機器人的軌跡信息,在運動過程中實時結算機器人的關節姿態,實現機器人的隨動效果。
多個機器人協作需要解決軌跡位置的一致性問題和機器人之間的碰撞問題。本文采用虛擬力算法實時計算各關節的受力情況,從而調整方向防止機器人之間發生碰撞。根據雙臂之間的距離建立虛擬力場的虛擬引力和虛擬斥力,其中引力場接近目標,斥力場排斥環境中的障礙物[3]。
多傳感器數據融合技術是利用計算機技術將來自多傳感器或多源的信息和數據在一定的準則下加以自動分析和綜合,以完成所需要的決策和估計而進行的信息處理過程[4]。機器人控制器常用的傳感器數據包括視覺傳感器、力傳感器、激光雷達以及溫濕度觸感器等。控制器采用分布式數據融合方式,即觸感器獲取的原始數據已經由傳感器的控制器進行初步處理得到了局部結果,再將結果傳入機器人控制器,由機器人控制器綜合數據得到最后的結果。該過程可以抽象為數據層、特征層和決策層3個層次。多傳感器數據融合技術常用的方法包括卡爾曼濾波、人工神經網絡等。
標準的機器人編程語言應該包含數據類型、運算和表達式、過程語句、運動指令及通信指令等要素。機器人編程語言中的數據類型應該包含布爾型、整型、浮點型、關節結構體、位姿結構體、坐標點結構體、姿態角結構體以及字符串等。運算和表達式除了四則運算外,還應該包含常用的數學函數,如三角函數、指數運算以及對數運算等。過程語句包含循環語句、條件循環語句、條件判斷語句以及子函數等。運動指令包含直線、圓弧、關節、自定義路徑以及對應的相對運動等。通信指令則涵蓋各類電氣接口的通信,如數字模擬輸入/輸出(Input/Output,I/O)、Modbus以及傳輸控制協議(Transmission Control Protocol,TCP)等。編譯器的工作流程,如圖3所示。

圖3 編譯器的工作流程
代碼編譯其實是將字符流轉換為目標機器代碼的過程,對程序代碼的編譯也就是對字符串的處理,編譯的流程包括詞法分析、語法分析、語義分析、中間代碼生成、機器無關代碼優化、代碼生成以及機器相關代碼優化等[5]。
機器人虛擬仿真功能包含三維仿真、物理引擎以及機器人狀態的模擬3個技術要素。三維仿真平臺可以選擇基于OpenGL庫進行開發。物理引擎通過為剛性物體賦予真實的物理屬性的方式來計算運動、旋轉和碰撞反映。為了在機器人仿真過程中增加重力、摩擦力、碰撞等對仿真效果的影響,采用帶物理引擎的仿真平臺V-REP或者Gazebo進行機器人仿真。模擬機器人的狀態除了需要模擬機器人的姿態外,也需要使用物理引擎模擬機器人的力學狀態,使仿真效果更加逼近真實的情況。
本文提出了一套標準化的機器人編程語法規則,一方面能夠方便處理現有的主流廠家的機器人程序代碼,將其統一格式,另一方面能夠極大地提高機器人執行程序的效率,并能夠提升控制器的通信能力,將傳感器數據融合技術用于機器人控制器,使機器人能夠更好地適應非結構化的環境,實現柔性作業。在控制器中融入虛實結合的機器人仿真技術,能夠實現控制器在脫離機械本體的情況下完成任務編程和效果仿真,還能將仿真結果運行在實際機器人上,有利于降低機器人操作中存在的試錯風險,提高實際編程的效率。同時,控制器能夠基于網絡實現互聯,通過一個中心節點實現多臺機器人同時監控和互相協作,更有利于機器人在大批量應用場景下的管理和部署。