鄒 洵,張 帆,張國勝,馬保平,張召穎
(上海工程技術大學 機械與汽車工程學院,上海 200072)
當前,隨著對機器人應用的大力普及與精度要求的不斷提高,其硬件設計和控制系統研發層出不窮.由于機器人型號日益增多,故而需要研發各種控制系統[1].
目前,雖然機器人研發公司眾多,但是他們研發的控制系統都是對單一機器人本體做針對性的研發,普遍適用性和市場推廣度較低,不利于機器人控制系統的發展.因此,需要開發出一套擁有普遍適用性,契合當下大多數主流機器人的控制系統才能順應當前市場的剛需.
在實現與主流機器人相配套的控制系統設計中,可充分考慮利用一些開發平臺,如:Microsoft visual,Matlab,MRDS 等.這些平臺各有特點,Microsoft visual[2]適合在windows 系統環境下開發,較為全面,但過程繁瑣,程序易報錯;Matlab[3]多用于仿真實驗,但難以實現實體機器人的控制工作;MRDS[4]重點在圖形化編程,但應用范圍較小.并且由于這些軟件對于部分算法做了封裝,如:OpenCV,Ompl 等.所以需要尋求一個能夠兼容各種算法,實現多平臺運用,上手容易的開發平臺.
為此,本文基于開源機器人操作系統ROS(Robot Operating System),搭建了控制系統平臺[5],進行了控制系統設計并作出了相應的仿真及實物控制實驗.
Robot Operating System (ROS)是一款機器人控制開發系統.它包含了三維重建、動態仿真、實時場景仿真、實物控制等多種功能,能夠最大化地提供機器人開發的各種需求[6].
ROS 是建立在優班圖 (以下簡稱Ubuntu)系統下的一款內置操作系統,但與系統的進程管理沒有關系.它提供各種功能包,然后通過點對點機制建立功能包之間的通訊,搭建控制平臺,實現機器人的仿真和實物控制,由此衍生出“節點”,“主題”,“服務”,“消息”等基本概念,如圖1所示,通過它們之間的配合為控制系統提供數據.
節點是ROS 里面的各種可執行文件,各節點之間通過主題,服務來通信.以此來提高系統的運行效率和可維護性.節點在系統中具有唯一性,各節點名稱不可重復.這樣,使得節點間的通訊亦具有唯一性.
主題是各節點間傳輸數據的總線.通過主題發送的發布者和接收的訂閱者之間不需要知道彼此之間的存在.同一個主題可以擁有多個訂閱者,一個主題也可以擁有多個訂閱者或者多個發布者,但需要不同的節點發布同樣的主題,否則會出現錯誤.
服務是用于直接與節點進行通信并且獲取反饋.服務由一對消息組成,一個發送請求消息,另一個接收并應答.服務是用戶自行開發的,存儲在srv 文件夾中,通過編譯轉換為源碼.
消息用于一個節點向事先定義好的主題發布消息,從而將數據發送到另一個節點.ROS 里面的所有數據皆可定義為消息.消息的發送格式具有固定的類型和結構:功能包名稱/.msg 文件名稱.
通過節點、主題、服務、消息就可以搭建構建所有 進程的控制框架.如圖1所示.

圖1 ROS 的控制框架
由于協作機器人在控制過程中需要對各個關節進行精確控制,達到流暢運動的目的,故而在運動的過程中需要一定的控制算法.本研究的主體算法為機器人運動過程中的路徑規劃算法.由于設計方案為輸入初始位置和末端位置,進而控制機器人運動.根據此特點,本控制系統采用基于快速擴展樹算法[7](Rapidly exploring Random Tree,以下簡稱RRT 算法).RRT 算法是建立在隨機樹的基礎上,通過從根節點隨機生長分支節點的方式,進行運動空間中的采樣點碰撞檢測,不需要進行三維立體建模,解決了三維空間和多條件約束的路徑規劃問題.由于其效率高、準確度高、入門容易,因此適用于多自由度機器人在空間中的運動.RRT 算法是以初始位置為根節點,通過隨機采樣,生成子節點,進而生成一個擴大的隨機擴展樹,當隨機擴展樹接觸到目標節點時,就可以在隨機擴展樹里找到一條從根節點到目標節點的路徑,即機器人運動的路徑規劃.其基本算法如下所示:

Function RRTPlan:BOOL(env:environment,T:RRTTree,Sgoal:node)1.Var Starget,Snearest,Snew,node 2.While(search time/space remaining) do 3. Starget=ChooseTarget(Sgoal)4. Snearest=Nearest(T,Starget)5.IF (Distance (Snearest,Sgoal) < Distance Threshold) then 6.Return true 7. Snew=Extend (Snearest,Starget)8.IF (Snew ≠ NULL) then

9.T.AddNODE(Snew)10.Return false Function ChooseTarget (Sgoal:node) :ndoe 11.Var p:real 12. p = Random(0,1.0)13.If o<p<aim then 14.Return goal 15.Else if aim<p1<1.0 then 16.Return RandomNode ();
在隨機數的生長過程中(line 1~10),初試節點為根節點Sinit.首先,ChooseTarget 函數在工作空間中隨機生成點Starget;其次,Nearest 函數在隨機函數中選擇一個距離Starget最近的中繼節點Snearest;最后,通過Extend 函數從Snearest向Starget擴展一段距離α(α為RRT 算法的最小步長),最終得到新節點Snew.如果Snew與障礙物發生碰撞,則Extend 函數返回0,視為生長失?。环駝t將Snew加入到隨機數中.重復以上步驟,直到隨機數生長到目標點或者距離目標點的距離小于一個閥值,算法完成.
為加快路徑規劃的速度,現將隨機樹改進為:先計算出初試位置和末端位置在空間中的中點,機器人先運動至中點,在運動至末端位置,這樣可以通過隨機概率來決定下一個運動點是否是正確的目標點還是隨機點.事先設定參數aim,然后生成0~1 的隨機數bp,當0<bp<aim 時,隨機數朝目標點運動;當aim<bp<1 時,隨機數的生長方向隨機[8].
通過RRT 算法,輸入機器人的初試位置和目標位置,可計算出機器人在運動中各個關節的轉動速度、弧度等參數,并輸出.
通信接口模塊是搭建上位機電腦與下位機協作機器人的連接.用于實現兩者間控制信息的發布和反饋信息的傳送.由于傳統的ROS 通訊使用ID 連接的通訊方式,適用范圍狹隘,僅對于優傲等少數先進的機器人適用,然而基于控制器局域網[9](Controller Area Network,以下簡稱CAN 通訊)的通訊方式在當下具有普遍適用性,所以本研究僅調用了ROS 的路徑規劃算法與仿真環境,將其與CAN 通訊相結合,建立了一種新型的通訊方式.
將上位機計算出的協作機器人各電機參數,如:電機ID、轉動角度、速度等,調用CAN 通訊,將各參數發送給協作機器人的各個電機上的控制芯片,進而控制協作機器人.本通訊方法跳過了ROS 通訊,直接建立了與電機之間的通訊,該方法在原有的穩定性好,即時性好等特點基礎上,增加了通訊簡單、適用性廣、移植性高的特點,可適用于市面上大多數協作機器人.
本控制過程分為三個部分:路徑規劃運算,通訊連接,電機控制.對于協作機器人的控制,實質上是對于各個關節處電機轉動角度、速度、開關時間的控制.故而本控制系統控制步驟如下:
(1) 搭建機器人的三維圖,調用ROS 的環境配置,設定末端執行器的初始位置.
(2) 在ROS 的3D 可視化工具 (Rviz)界面打開配置好的仿真機器人,在編輯界面里拖動鏈條或輸入末端執行器坐標,即可調用RRT 算法計算出每個關節運動到目標位置所需要的轉動角度、速度、加速度、位置等參數,并且依次將每部分的計算結果發送出去.
(3) 調用CAN 通訊的方式建立上下位機的通訊,將計算出的每個關節的轉動角度及其他必要參數通過通信接口發送給下位機.
(4) 下位機芯片接收數據,轉換為電機可識別的參數發送給電機,進而控制機器人運動.
控制流程圖如圖2所示.
為了驗證協作機器人控制系統的實際控制效果,用UR5 協作機器人進行了實驗驗證.搭建了如下的實驗平臺.
在仿真實驗中,搭建控制界面,在界面里可設置末端執行器的坐標,通過改變坐標的數值,進而控制rviz 中的仿真機器人.通過仿真界面觀察到水平機器人為初始化位置,通過在界面拖動或輸入末端執行器的坐標軸,即可改變目標位置,首先,使得末端執行器坐標歸位,回到原點.其次,在界面改變末端執行器坐標,使得機器人運動到目標位置,觀察到能夠改變機器人各個方向的目標位置并作出相應的路徑規劃.如圖3所示.
通過仿真實驗結果可知,人為輸入末端執行器的目標坐標,在仿真程序中調用RRT 算法,可計算出各個關節轉動角度,并在仿真界面里體現出來,從而實現對于仿真協作機器人的控制.實驗輸入的具體坐標,如表1所示.
實物機器人采用UR 協作機器人[10].上位機界面拖動鏈條,發送信息,通過通訊發送給機器人內置芯片,芯片通過分析接收的數據,轉換為電機可識別的參數,進而控制電機的轉速、轉動時間等.機器人實驗過程如圖4所示.上位機發送指令后,下位機接收并作出相應的動作,完成路徑規劃,機器人實體做出相應的動作.

圖3 仿真機器人控制實驗

表1 輸入的末端執行器的坐標
由于機器人硬件精度誤差和ROS 算法的偏差,因此在控制系統內對發送的運動參數進行校準.驅動協作機器人勻速運動,通過讀取各關節絕對位置,發現機器人并不能運動到指定位置,誤差范圍在2 mm 以內.經修改控制參數并且完善程序等調試,可通過上位機界面精確控制機器人的空間運動,使得機器人有較高的魯棒性和實時性.

圖4 實物機器人控制實驗
通過調用ROS 自帶的打印功能,可在輸出界面輸出各個關節的速度、時間、加速度等參數.表2記錄了機器人在輸入表1的末端執行器坐標后運動到指定位置所需時間.通過輸出的時間表明運動較為平緩,有較好的魯棒性和實時性.

表2 運動到指定位置點所需時間(s)
本文基于Ubuntu 系統下結合ROS 實現了對于協作機器人的控制.并且優化了路徑規劃算法,改進了ROS 中上下位機的通訊方式,建立了在保證原有實時性和魯棒性前提下適用性廣、操作簡單的通訊方式,并搭建了仿真實驗和實物控制實驗.由實驗可知,控制系統能夠實現協作機器人基本的工作.有一定的應用價值.但其他功能的開發,如:視覺系統開發、末端抓手開發,有待進一步的研究,以達到更佳的使用效果和應用前景.