鄒 洵,張 帆,張國(guó)勝,馬保平,張召穎
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海 200072)
當(dāng)前,隨著對(duì)機(jī)器人應(yīng)用的大力普及與精度要求的不斷提高,其硬件設(shè)計(jì)和控制系統(tǒng)研發(fā)層出不窮.由于機(jī)器人型號(hào)日益增多,故而需要研發(fā)各種控制系統(tǒng)[1].
目前,雖然機(jī)器人研發(fā)公司眾多,但是他們研發(fā)的控制系統(tǒng)都是對(duì)單一機(jī)器人本體做針對(duì)性的研發(fā),普遍適用性和市場(chǎng)推廣度較低,不利于機(jī)器人控制系統(tǒng)的發(fā)展.因此,需要開(kāi)發(fā)出一套擁有普遍適用性,契合當(dāng)下大多數(shù)主流機(jī)器人的控制系統(tǒng)才能順應(yīng)當(dāng)前市場(chǎng)的剛需.
在實(shí)現(xiàn)與主流機(jī)器人相配套的控制系統(tǒng)設(shè)計(jì)中,可充分考慮利用一些開(kāi)發(fā)平臺(tái),如:Microsoft visual,Matlab,MRDS 等.這些平臺(tái)各有特點(diǎn),Microsoft visual[2]適合在windows 系統(tǒng)環(huán)境下開(kāi)發(fā),較為全面,但過(guò)程繁瑣,程序易報(bào)錯(cuò);Matlab[3]多用于仿真實(shí)驗(yàn),但難以實(shí)現(xiàn)實(shí)體機(jī)器人的控制工作;MRDS[4]重點(diǎn)在圖形化編程,但應(yīng)用范圍較小.并且由于這些軟件對(duì)于部分算法做了封裝,如:OpenCV,Ompl 等.所以需要尋求一個(gè)能夠兼容各種算法,實(shí)現(xiàn)多平臺(tái)運(yùn)用,上手容易的開(kāi)發(fā)平臺(tái).
為此,本文基于開(kāi)源機(jī)器人操作系統(tǒng)ROS(Robot Operating System),搭建了控制系統(tǒng)平臺(tái)[5],進(jìn)行了控制系統(tǒng)設(shè)計(jì)并作出了相應(yīng)的仿真及實(shí)物控制實(shí)驗(yàn).
Robot Operating System (ROS)是一款機(jī)器人控制開(kāi)發(fā)系統(tǒng).它包含了三維重建、動(dòng)態(tài)仿真、實(shí)時(shí)場(chǎng)景仿真、實(shí)物控制等多種功能,能夠最大化地提供機(jī)器人開(kāi)發(fā)的各種需求[6].
ROS 是建立在優(yōu)班圖 (以下簡(jiǎn)稱Ubuntu)系統(tǒng)下的一款內(nèi)置操作系統(tǒng),但與系統(tǒng)的進(jìn)程管理沒(méi)有關(guān)系.它提供各種功能包,然后通過(guò)點(diǎn)對(duì)點(diǎn)機(jī)制建立功能包之間的通訊,搭建控制平臺(tái),實(shí)現(xiàn)機(jī)器人的仿真和實(shí)物控制,由此衍生出“節(jié)點(diǎn)”,“主題”,“服務(wù)”,“消息”等基本概念,如圖1所示,通過(guò)它們之間的配合為控制系統(tǒng)提供數(shù)據(jù).
節(jié)點(diǎn)是ROS 里面的各種可執(zhí)行文件,各節(jié)點(diǎn)之間通過(guò)主題,服務(wù)來(lái)通信.以此來(lái)提高系統(tǒng)的運(yùn)行效率和可維護(hù)性.節(jié)點(diǎn)在系統(tǒng)中具有唯一性,各節(jié)點(diǎn)名稱不可重復(fù).這樣,使得節(jié)點(diǎn)間的通訊亦具有唯一性.
主題是各節(jié)點(diǎn)間傳輸數(shù)據(jù)的總線.通過(guò)主題發(fā)送的發(fā)布者和接收的訂閱者之間不需要知道彼此之間的存在.同一個(gè)主題可以擁有多個(gè)訂閱者,一個(gè)主題也可以擁有多個(gè)訂閱者或者多個(gè)發(fā)布者,但需要不同的節(jié)點(diǎn)發(fā)布同樣的主題,否則會(huì)出現(xiàn)錯(cuò)誤.
服務(wù)是用于直接與節(jié)點(diǎn)進(jìn)行通信并且獲取反饋.服務(wù)由一對(duì)消息組成,一個(gè)發(fā)送請(qǐng)求消息,另一個(gè)接收并應(yīng)答.服務(wù)是用戶自行開(kāi)發(fā)的,存儲(chǔ)在srv 文件夾中,通過(guò)編譯轉(zhuǎn)換為源碼.
消息用于一個(gè)節(jié)點(diǎn)向事先定義好的主題發(fā)布消息,從而將數(shù)據(jù)發(fā)送到另一個(gè)節(jié)點(diǎn).ROS 里面的所有數(shù)據(jù)皆可定義為消息.消息的發(fā)送格式具有固定的類型和結(jié)構(gòu):功能包名稱/.msg 文件名稱.
通過(guò)節(jié)點(diǎn)、主題、服務(wù)、消息就可以搭建構(gòu)建所有 進(jìn)程的控制框架.如圖1所示.
圖1 ROS 的控制框架
由于協(xié)作機(jī)器人在控制過(guò)程中需要對(duì)各個(gè)關(guān)節(jié)進(jìn)行精確控制,達(dá)到流暢運(yùn)動(dòng)的目的,故而在運(yùn)動(dòng)的過(guò)程中需要一定的控制算法.本研究的主體算法為機(jī)器人運(yùn)動(dòng)過(guò)程中的路徑規(guī)劃算法.由于設(shè)計(jì)方案為輸入初始位置和末端位置,進(jìn)而控制機(jī)器人運(yùn)動(dòng).根據(jù)此特點(diǎn),本控制系統(tǒng)采用基于快速擴(kuò)展樹(shù)算法[7](Rapidly exploring Random Tree,以下簡(jiǎn)稱RRT 算法).RRT 算法是建立在隨機(jī)樹(shù)的基礎(chǔ)上,通過(guò)從根節(jié)點(diǎn)隨機(jī)生長(zhǎng)分支節(jié)點(diǎn)的方式,進(jìn)行運(yùn)動(dòng)空間中的采樣點(diǎn)碰撞檢測(cè),不需要進(jìn)行三維立體建模,解決了三維空間和多條件約束的路徑規(guī)劃問(wèn)題.由于其效率高、準(zhǔn)確度高、入門(mén)容易,因此適用于多自由度機(jī)器人在空間中的運(yùn)動(dòng).RRT 算法是以初始位置為根節(jié)點(diǎn),通過(guò)隨機(jī)采樣,生成子節(jié)點(diǎn),進(jìn)而生成一個(gè)擴(kuò)大的隨機(jī)擴(kuò)展樹(shù),當(dāng)隨機(jī)擴(kuò)展樹(shù)接觸到目標(biāo)節(jié)點(diǎn)時(shí),就可以在隨機(jī)擴(kuò)展樹(shù)里找到一條從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑,即機(jī)器人運(yùn)動(dòng)的路徑規(guī)劃.其基本算法如下所示:
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 ();
在隨機(jī)數(shù)的生長(zhǎng)過(guò)程中(line 1~10),初試節(jié)點(diǎn)為根節(jié)點(diǎn)Sinit.首先,ChooseTarget 函數(shù)在工作空間中隨機(jī)生成點(diǎn)Starget;其次,Nearest 函數(shù)在隨機(jī)函數(shù)中選擇一個(gè)距離Starget最近的中繼節(jié)點(diǎn)Snearest;最后,通過(guò)Extend 函數(shù)從Snearest向Starget擴(kuò)展一段距離α(α為RRT 算法的最小步長(zhǎng)),最終得到新節(jié)點(diǎn)Snew.如果Snew與障礙物發(fā)生碰撞,則Extend 函數(shù)返回0,視為生長(zhǎng)失?。环駝t將Snew加入到隨機(jī)數(shù)中.重復(fù)以上步驟,直到隨機(jī)數(shù)生長(zhǎng)到目標(biāo)點(diǎn)或者距離目標(biāo)點(diǎn)的距離小于一個(gè)閥值,算法完成.
為加快路徑規(guī)劃的速度,現(xiàn)將隨機(jī)樹(shù)改進(jìn)為:先計(jì)算出初試位置和末端位置在空間中的中點(diǎn),機(jī)器人先運(yùn)動(dòng)至中點(diǎn),在運(yùn)動(dòng)至末端位置,這樣可以通過(guò)隨機(jī)概率來(lái)決定下一個(gè)運(yùn)動(dòng)點(diǎn)是否是正確的目標(biāo)點(diǎn)還是隨機(jī)點(diǎn).事先設(shè)定參數(shù)aim,然后生成0~1 的隨機(jī)數(shù)bp,當(dāng)0<bp<aim 時(shí),隨機(jī)數(shù)朝目標(biāo)點(diǎn)運(yùn)動(dòng);當(dāng)aim<bp<1 時(shí),隨機(jī)數(shù)的生長(zhǎng)方向隨機(jī)[8].
通過(guò)RRT 算法,輸入機(jī)器人的初試位置和目標(biāo)位置,可計(jì)算出機(jī)器人在運(yùn)動(dòng)中各個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)速度、弧度等參數(shù),并輸出.
通信接口模塊是搭建上位機(jī)電腦與下位機(jī)協(xié)作機(jī)器人的連接.用于實(shí)現(xiàn)兩者間控制信息的發(fā)布和反饋信息的傳送.由于傳統(tǒng)的ROS 通訊使用ID 連接的通訊方式,適用范圍狹隘,僅對(duì)于優(yōu)傲等少數(shù)先進(jìn)的機(jī)器人適用,然而基于控制器局域網(wǎng)[9](Controller Area Network,以下簡(jiǎn)稱CAN 通訊)的通訊方式在當(dāng)下具有普遍適用性,所以本研究?jī)H調(diào)用了ROS 的路徑規(guī)劃算法與仿真環(huán)境,將其與CAN 通訊相結(jié)合,建立了一種新型的通訊方式.
將上位機(jī)計(jì)算出的協(xié)作機(jī)器人各電機(jī)參數(shù),如:電機(jī)ID、轉(zhuǎn)動(dòng)角度、速度等,調(diào)用CAN 通訊,將各參數(shù)發(fā)送給協(xié)作機(jī)器人的各個(gè)電機(jī)上的控制芯片,進(jìn)而控制協(xié)作機(jī)器人.本通訊方法跳過(guò)了ROS 通訊,直接建立了與電機(jī)之間的通訊,該方法在原有的穩(wěn)定性好,即時(shí)性好等特點(diǎn)基礎(chǔ)上,增加了通訊簡(jiǎn)單、適用性廣、移植性高的特點(diǎn),可適用于市面上大多數(shù)協(xié)作機(jī)器人.
本控制過(guò)程分為三個(gè)部分:路徑規(guī)劃運(yùn)算,通訊連接,電機(jī)控制.對(duì)于協(xié)作機(jī)器人的控制,實(shí)質(zhì)上是對(duì)于各個(gè)關(guān)節(jié)處電機(jī)轉(zhuǎn)動(dòng)角度、速度、開(kāi)關(guān)時(shí)間的控制.故而本控制系統(tǒng)控制步驟如下:
(1) 搭建機(jī)器人的三維圖,調(diào)用ROS 的環(huán)境配置,設(shè)定末端執(zhí)行器的初始位置.
(2) 在ROS 的3D 可視化工具 (Rviz)界面打開(kāi)配置好的仿真機(jī)器人,在編輯界面里拖動(dòng)鏈條或輸入末端執(zhí)行器坐標(biāo),即可調(diào)用RRT 算法計(jì)算出每個(gè)關(guān)節(jié)運(yùn)動(dòng)到目標(biāo)位置所需要的轉(zhuǎn)動(dòng)角度、速度、加速度、位置等參數(shù),并且依次將每部分的計(jì)算結(jié)果發(fā)送出去.
(3) 調(diào)用CAN 通訊的方式建立上下位機(jī)的通訊,將計(jì)算出的每個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)角度及其他必要參數(shù)通過(guò)通信接口發(fā)送給下位機(jī).
(4) 下位機(jī)芯片接收數(shù)據(jù),轉(zhuǎn)換為電機(jī)可識(shí)別的參數(shù)發(fā)送給電機(jī),進(jìn)而控制機(jī)器人運(yùn)動(dòng).
控制流程圖如圖2所示.
為了驗(yàn)證協(xié)作機(jī)器人控制系統(tǒng)的實(shí)際控制效果,用UR5 協(xié)作機(jī)器人進(jìn)行了實(shí)驗(yàn)驗(yàn)證.搭建了如下的實(shí)驗(yàn)平臺(tái).
在仿真實(shí)驗(yàn)中,搭建控制界面,在界面里可設(shè)置末端執(zhí)行器的坐標(biāo),通過(guò)改變坐標(biāo)的數(shù)值,進(jìn)而控制rviz 中的仿真機(jī)器人.通過(guò)仿真界面觀察到水平機(jī)器人為初始化位置,通過(guò)在界面拖動(dòng)或輸入末端執(zhí)行器的坐標(biāo)軸,即可改變目標(biāo)位置,首先,使得末端執(zhí)行器坐標(biāo)歸位,回到原點(diǎn).其次,在界面改變末端執(zhí)行器坐標(biāo),使得機(jī)器人運(yùn)動(dòng)到目標(biāo)位置,觀察到能夠改變機(jī)器人各個(gè)方向的目標(biāo)位置并作出相應(yīng)的路徑規(guī)劃.如圖3所示.
通過(guò)仿真實(shí)驗(yàn)結(jié)果可知,人為輸入末端執(zhí)行器的目標(biāo)坐標(biāo),在仿真程序中調(diào)用RRT 算法,可計(jì)算出各個(gè)關(guān)節(jié)轉(zhuǎn)動(dòng)角度,并在仿真界面里體現(xiàn)出來(lái),從而實(shí)現(xiàn)對(duì)于仿真協(xié)作機(jī)器人的控制.實(shí)驗(yàn)輸入的具體坐標(biāo),如表1所示.
實(shí)物機(jī)器人采用UR 協(xié)作機(jī)器人[10].上位機(jī)界面拖動(dòng)鏈條,發(fā)送信息,通過(guò)通訊發(fā)送給機(jī)器人內(nèi)置芯片,芯片通過(guò)分析接收的數(shù)據(jù),轉(zhuǎn)換為電機(jī)可識(shí)別的參數(shù),進(jìn)而控制電機(jī)的轉(zhuǎn)速、轉(zhuǎn)動(dòng)時(shí)間等.機(jī)器人實(shí)驗(yàn)過(guò)程如圖4所示.上位機(jī)發(fā)送指令后,下位機(jī)接收并作出相應(yīng)的動(dòng)作,完成路徑規(guī)劃,機(jī)器人實(shí)體做出相應(yīng)的動(dòng)作.
圖3 仿真機(jī)器人控制實(shí)驗(yàn)
表1 輸入的末端執(zhí)行器的坐標(biāo)
由于機(jī)器人硬件精度誤差和ROS 算法的偏差,因此在控制系統(tǒng)內(nèi)對(duì)發(fā)送的運(yùn)動(dòng)參數(shù)進(jìn)行校準(zhǔn).驅(qū)動(dòng)協(xié)作機(jī)器人勻速運(yùn)動(dòng),通過(guò)讀取各關(guān)節(jié)絕對(duì)位置,發(fā)現(xiàn)機(jī)器人并不能運(yùn)動(dòng)到指定位置,誤差范圍在2 mm 以內(nèi).經(jīng)修改控制參數(shù)并且完善程序等調(diào)試,可通過(guò)上位機(jī)界面精確控制機(jī)器人的空間運(yùn)動(dòng),使得機(jī)器人有較高的魯棒性和實(shí)時(shí)性.
圖4 實(shí)物機(jī)器人控制實(shí)驗(yàn)
通過(guò)調(diào)用ROS 自帶的打印功能,可在輸出界面輸出各個(gè)關(guān)節(jié)的速度、時(shí)間、加速度等參數(shù).表2記錄了機(jī)器人在輸入表1的末端執(zhí)行器坐標(biāo)后運(yùn)動(dòng)到指定位置所需時(shí)間.通過(guò)輸出的時(shí)間表明運(yùn)動(dòng)較為平緩,有較好的魯棒性和實(shí)時(shí)性.
表2 運(yùn)動(dòng)到指定位置點(diǎn)所需時(shí)間(s)
本文基于Ubuntu 系統(tǒng)下結(jié)合ROS 實(shí)現(xiàn)了對(duì)于協(xié)作機(jī)器人的控制.并且優(yōu)化了路徑規(guī)劃算法,改進(jìn)了ROS 中上下位機(jī)的通訊方式,建立了在保證原有實(shí)時(shí)性和魯棒性前提下適用性廣、操作簡(jiǎn)單的通訊方式,并搭建了仿真實(shí)驗(yàn)和實(shí)物控制實(shí)驗(yàn).由實(shí)驗(yàn)可知,控制系統(tǒng)能夠?qū)崿F(xiàn)協(xié)作機(jī)器人基本的工作.有一定的應(yīng)用價(jià)值.但其他功能的開(kāi)發(fā),如:視覺(jué)系統(tǒng)開(kāi)發(fā)、末端抓手開(kāi)發(fā),有待進(jìn)一步的研究,以達(dá)到更佳的使用效果和應(yīng)用前景.