鹿霖 謝樹(shù)新
摘 要: 在眾多的機(jī)器人仿真平臺(tái)中,ROS可以封裝機(jī)器人硬件。提出在ROS環(huán)境下構(gòu)建機(jī)器人的仿真模型方法。設(shè)計(jì)了機(jī)器人仿真模型的導(dǎo)入方法及過(guò)程,利用所提方法將模型導(dǎo)入具體的應(yīng)用實(shí)例。將SolidWorks裝配文件解析成機(jī)器人模型的URDF文件,并在MoveIt!中進(jìn)行驗(yàn)證。結(jié)果表明,該仿真模型構(gòu)建的方法是有效的,模型是可操作的,為后續(xù)的機(jī)器人運(yùn)動(dòng)規(guī)劃和軌跡規(guī)劃問(wèn)題的研究提供了易實(shí)現(xiàn)和易操作的機(jī)器人模型。
關(guān)鍵詞: 機(jī)器人仿真; 機(jī)器人建模; 開(kāi)源操作系統(tǒng); 仿真模型; 運(yùn)動(dòng)規(guī)劃; 軌跡規(guī)劃
中圖分類號(hào): TN98?34; TP391.9 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2018)07?0102?04
Construction method of robot simulation model in ROS environment
LU Lin1, 2, XIE Shuxin1
(1. School of Mechanical and Electric Engineering, Soochow University, Suzhou 215021, China;
2. Suzhou Institute of Industrial Technology, Suzhou 215104, China)
Abstract: Among many robot simulation platforms, the robot operating system (ROS) can encapsulate the robot hardware. A construction method of robot simulation model in ROS environment is proposed. The import method and process of the robot simulation model are designed. The model is imported into a specific application instance by using the proposed method. The SolidWorks assembly file is parsed into the URDF file of the robot model. The model is verified in MoveIt!. The results show that the construction method of the simulation model is effective, and the model is operable. This method provides a robot model with easy implementation and easy operation for the follow?up research of robot motion planning and trajectory planning.
Keywords: robot simulation; robot modeling; open source operating system; simulation model; motion planning; trajectory planning
0 引 言
機(jī)械手臂在工業(yè)生產(chǎn)中應(yīng)用廣泛,例如使用機(jī)械手臂進(jìn)行碼跺、裝配、焊接等工作。對(duì)機(jī)械手臂技術(shù)研究而言,最重要的環(huán)節(jié)就是如何正確精準(zhǔn)地規(guī)劃其軌跡路徑,機(jī)器人仿真技術(shù)在該問(wèn)題的解決過(guò)程中發(fā)揮著重要的作用。
在機(jī)器人的仿真研究中,大部分研究者以Matlab作為平臺(tái)仿真機(jī)器人運(yùn)動(dòng),然而,Matlab語(yǔ)言不方便直接構(gòu)造復(fù)雜的3D機(jī)器人模型。另有很多研究者采用OpenGL結(jié)合Visual C++開(kāi)發(fā)機(jī)器人仿真平臺(tái)[1]。此外,也有學(xué)者將VRML(虛擬現(xiàn)實(shí)建模語(yǔ)言)引入機(jī)器人研究中,輔以3ds Max作為建模工具,建立機(jī)器人的三維模型。再有就是購(gòu)買商業(yè)化的機(jī)器人仿真軟件進(jìn)行機(jī)器人研究。以上這些方式存在開(kāi)發(fā)耗時(shí)、不易掌握、軟件價(jià)格昂貴等問(wèn)題,最重要的就是這些仿真平臺(tái)都不開(kāi)源,重復(fù)性工作太多。當(dāng)前的開(kāi)源軟件不能滿足需要,開(kāi)源機(jī)器人操作系統(tǒng)(ROS)隨之誕生并很快在機(jī)器人研究領(lǐng)域展開(kāi)了學(xué)習(xí)和使用的熱潮。本文設(shè)計(jì)了機(jī)器人仿真模型的導(dǎo)入方法及過(guò)程,利用所提方法將模型導(dǎo)入具體的應(yīng)用實(shí)例。將SolidWorks裝配文件解析成機(jī)器人模型的URDF文件,并在MoveIt!中進(jìn)行驗(yàn)證。結(jié)果表明,該仿真模型構(gòu)建的方法是有效的,模型是可操作的。
1 基于ROS的機(jī)器人仿真研究
1.1 開(kāi)源機(jī)器人操作系統(tǒng)(ROS)簡(jiǎn)介
ROS(Robot Operating System)可用來(lái)封裝不同結(jié)構(gòu)機(jī)器人的硬件。ROS的優(yōu)勢(shì)在于無(wú)論機(jī)器人是何種結(jié)構(gòu)或類型,均可以使用相同的形式(如topic)表示。利用節(jié)點(diǎn)(Node)表示應(yīng)用程序,在不同節(jié)點(diǎn)間通過(guò)固定格式的消息、動(dòng)作與服務(wù)協(xié)調(diào)實(shí)現(xiàn)鏈接[2]。
1.2 URDF 文件介紹
URDF(Unified Robot Description Format,統(tǒng)一機(jī)器人描述格式)[3?6]是ROS中使用的一種機(jī)器人描述文件[7],使用XML(可擴(kuò)展標(biāo)記語(yǔ)言)格式描述機(jī)器人模型。包含的內(nèi)容有:連桿、關(guān)節(jié)、運(yùn)動(dòng)學(xué)參數(shù)、動(dòng)力學(xué)參數(shù)、可視化模型、碰撞檢測(cè)模型等。在ROS下創(chuàng)建URDF文件需要通過(guò)編輯器建立URDF的XML格式文件,建立機(jī)器人各個(gè)關(guān)節(jié)的三維幾何模型文件,創(chuàng)立文件夾存儲(chǔ)所建立的文件。ROS的URDF目前只支持兩種格式的模型文件,STL(Stereo Lithography)與DAE(Digital Asset Exchange)。STL文件只記錄了文件的三維坐標(biāo)信息,沒(méi)有紋理信息,DAE可以包含文件的紋理等信息[8]。URDF可單獨(dú)指定可視化模型與碰撞模型??梢暬P鸵蟊M量精細(xì)、漂亮,最好與實(shí)際機(jī)器人尺寸相同,可采用DAE文件的模型,而碰撞模型要求盡量精簡(jiǎn),可以適當(dāng)大于機(jī)器人尺寸,可采用STL文件模型。
ROS環(huán)境下建立模型有一定局限性:繁瑣的程序式建模及模型的結(jié)構(gòu)分析。本文在編程創(chuàng)立URDF文件時(shí)采用將外部機(jī)器人模型導(dǎo)入到ROS中的方法,利用三維軟件建模的優(yōu)勢(shì)來(lái)避免這個(gè)問(wèn)題。通過(guò)導(dǎo)入其他軟件建立的模型,可極大地縮短建模時(shí)間,提高工作效率。專業(yè)的三維設(shè)計(jì)軟件能夠?yàn)闄C(jī)器人運(yùn)動(dòng)規(guī)劃及復(fù)雜的結(jié)構(gòu)仿真提供高質(zhì)量的三維模型。
1.3 外部模型的建立與導(dǎo)入
本文選擇具有IGES輸出接口的三維造型軟件SolidWorks進(jìn)行機(jī)器人各關(guān)節(jié)三維幾何模型的建立。
ROS中的可視化模擬環(huán)境RViz和三維多機(jī)器人動(dòng)力學(xué)仿真環(huán)境Gazebo都支持URDF文件。本文采用由Stephen Brawner開(kāi)發(fā)的SolidWorks轉(zhuǎn)URDF的插件——sw_URDF_exporter,此導(dǎo)出器能完成由三維軟件SolidWorks所建立的模型文件到URDF文件的解析,創(chuàng)建一個(gè)類似ROS的包,其中包含機(jī)器人模型的網(wǎng)格、紋理和URDF的XML文件等目錄。
ROS中建立機(jī)器人仿真模型的實(shí)施步驟如下:
1) 在SolidWorks中建立機(jī)器人各個(gè)關(guān)節(jié)的三維幾何模型;
2) 利用SolidWorks轉(zhuǎn)URDF的插件sw2URDF將SolidWorks零件和裝配體導(dǎo)出到URDF文件;
3) 在SolidWorks中將機(jī)器人各關(guān)節(jié)零件模型文件另存為剪裁曲面類型的IGES格式文件;
4) 將步驟3)中的IGES格式文件導(dǎo)入到3ds Max 2015中,然后導(dǎo)出為OpenCollada標(biāo)準(zhǔn)的DAE格式文件;
5) 將生成的URDF文件分別加載到RViz,Gazebo環(huán)境。
2 應(yīng)用案例
本文以實(shí)驗(yàn)室進(jìn)行熔覆實(shí)驗(yàn)所用的KUKA KR60型工業(yè)機(jī)器人為對(duì)象,建立適用于ROS的機(jī)器人仿真模型和URDF文件,并對(duì)生成的URDF文件和模型文件分別在RViz和Gazebo中加載顯示。
2.1 機(jī)器人模型文件的建立
虛擬平臺(tái)中機(jī)器人的零部件建模,根據(jù)相對(duì)運(yùn)動(dòng)的組合,大致分為七個(gè)部件,包括:底座、腰、大臂、肘、小臂、手腕、帶有激光噴頭的末端執(zhí)行器,在SolidWorks 2014中建立各部件的三維模型并組裝成機(jī)器人,如圖1所示。
2.2 輸出生成URDF文件
利用SolidWorks加載項(xiàng)sw2URDF,將1.3節(jié)中步驟1)創(chuàng)建的機(jī)器人導(dǎo)出成URDF文件,參數(shù)見(jiàn)圖2。首先,打開(kāi)插件URDF Exporter,在圖2a)窗口中設(shè)置每個(gè)連桿、關(guān)節(jié)的名字、對(duì)應(yīng)的模型文件以及相應(yīng)的參考坐標(biāo)系、參考軸、關(guān)節(jié)類型等。設(shè)置好所有連桿后,點(diǎn)擊Preview and Export,便會(huì)自動(dòng)生成各坐標(biāo)系和旋轉(zhuǎn)軸,之后會(huì)彈出圖2b)所示的界面,在此界面中具體設(shè)置各關(guān)節(jié)運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)參數(shù),在此界面中設(shè)置結(jié)束之后,點(diǎn)擊Next,出現(xiàn)圖2c)所示界面,在此界面中設(shè)置每個(gè)連桿的慣性、顯示和碰撞屬性的參數(shù)。最后點(diǎn)擊Finish在此便會(huì)生成一個(gè)package,此目錄下包含存放launch文件的launch目錄、每個(gè)連桿STL文件的meshes目錄、各連桿紋理的textures目錄以及URDF文件URDF目錄。
2.3 輸出IGES文件
分別將每個(gè)機(jī)器人另存為IGES格式,按照?qǐng)D3設(shè)置輸出選項(xiàng),輸出坐標(biāo)系選擇定義于零件上的參考系。
2.4 生成DAE格式模型文件
打開(kāi)3ds Max 2015,分別導(dǎo)入1.3節(jié)中步驟3)生成的IGES文件,并按圖4的設(shè)置導(dǎo)出成OpenCollada標(biāo)準(zhǔn)的DAE格式文件。
2.5 建立機(jī)器人模型仿真環(huán)境
在安裝有Indigo版本ROS的Ubuntu系統(tǒng)中的home目錄下建立一個(gè)名字為kr60的catkin工作空間,并創(chuàng)建一個(gè)名字為kr60的功能包,具體使用的bash終端中的命令如下:
其中KR60?3.URDF是生成的URDF文件的名字,上述命令運(yùn)行后會(huì)出現(xiàn)如圖5a)所示的RViz仿真窗口。此時(shí),meshes文件中的機(jī)器人各連桿模型文件是STL格式。將
在終端中輸入下面的命令:
$ roslaunch URDF_tutorial gazebo.launch model:=KR60?3.URDF
出現(xiàn)Gazebo仿真環(huán)境下的顯示情況,如圖6所示。
2.6 URDF文件有效性的仿真驗(yàn)證
ROS 為機(jī)械臂控制提供了集成功能包MoveIt!,涉及運(yùn)動(dòng)規(guī)劃、機(jī)器人正逆運(yùn)動(dòng)學(xué)、碰撞檢測(cè)、機(jī)械手抓取等領(lǐng)域。MoveIt!默認(rèn)使用KDL庫(kù)通過(guò)數(shù)值迭代算法求解逆運(yùn)動(dòng)學(xué)問(wèn)題,對(duì)不同機(jī)器人模型的通用性和適應(yīng)性較強(qiáng)。
使用MoveIt!的moveit_setup_assistant命令配置了KR60的運(yùn)動(dòng)學(xué)配置功能包,然后使用MoveIt!完成機(jī)械臂運(yùn)動(dòng)規(guī)劃。MoveIt!提供了方便的交互界面,給定機(jī)器人模型的起始位姿和目標(biāo)位姿,如圖7a) 所示,MoveIt!采用基于隨機(jī)采樣的運(yùn)動(dòng)規(guī)劃算法庫(kù)OMPL完成軌跡規(guī)劃,規(guī)劃的軌跡會(huì)避開(kāi)障礙物和自身干涉等碰撞狀態(tài),運(yùn)動(dòng)軌跡如圖7b)所示。圖7中,綠色為初始位姿,橙色為目標(biāo)位姿。
測(cè)試結(jié)果表明,對(duì)于合理任務(wù)要求,本文方法所建立的URDF機(jī)器人仿真模型,能夠在MoveIt!快速規(guī)劃出合適的軌跡,并控制機(jī)械臂實(shí)現(xiàn)動(dòng)作,證明了該模型是有效的。
3 結(jié) 論
本文對(duì)開(kāi)源機(jī)器人操作系統(tǒng)和ROS中機(jī)器人模型描述文件URDF進(jìn)行介紹,研究了ROS 環(huán)境下機(jī)器人模型的構(gòu)建方法,詳細(xì)介紹了模型導(dǎo)入方法、具體過(guò)程和技術(shù)要點(diǎn),同時(shí)給出模型導(dǎo)入的實(shí)例。將從SolidWorks中輸出的機(jī)器人模型導(dǎo)入到3ds Max中,創(chuàng)建了機(jī)器人模型的URDF文件,分別加載到RViz和Gazebo仿真工具中,并在MoveIt!中進(jìn)行驗(yàn)證。結(jié)果表明,該仿真模型的構(gòu)建方法是有效的,模型是可操作的,該仿真技術(shù)對(duì)機(jī)器人模型軌跡規(guī)劃問(wèn)題具有普遍的指導(dǎo)意義。
參考文獻(xiàn)
[1] 張彥斐,宮金良,魏修亭.一種串聯(lián)機(jī)器人的實(shí)時(shí)運(yùn)動(dòng)仿真[J].組合機(jī)床與自動(dòng)化加工技術(shù),2013(5):42?43.
ZHANG Yanfei, GONG Jinliang, WEI Xiuting. Real time kinematic simulation of a serial robot [J]. Modular machine tool & automatic manufacturing technique, 2013(5): 42?43.
[2] 李博,羅振軍,田永利,等.基于Modelica的并聯(lián)機(jī)器人整機(jī)建模與仿真[J].機(jī)械設(shè)計(jì)與研究,2015,35(3):1?3.
LI Bo, LUO Zhenjun, TIAN Yongli, et al. Modeling and simulation of a parallel robot based on Modelica [J]. Machine design & research, 2015, 35(3): 1?3.
[3] 陳盛龍,平雪良,曹正萬(wàn),等.基于ROS串聯(lián)機(jī)器人虛擬運(yùn)動(dòng)控制及仿真研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2015(10):108?111.
CHEN Shenglong, PING Xueliang, CAO Zhengwan, et al. Virtual motion control and simulation of serial robot based on ROS [J]. Modular machine tool & automatic manufacturing technique, 2015(10): 108?111.
[4] 曹正萬(wàn),平雪良,陳盛龍,等.基于ROS的機(jī)器人模型構(gòu)建方法研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2015(8):51?54.
CAO Zhengwan, PING Xueliang, CHEN Shenglong, et al. Research of robot model construction method based on robot opera?ting system [J]. Modular machine tool & automatic manufactu?ring technique, 2015(8): 51?54.
[5] 劉汝佳,王芳,張強(qiáng),等.基于ROS的機(jī)械臂軌跡規(guī)劃研究[J].導(dǎo)航定位與授時(shí),2016,16(3):82?88.
LIU Rujia, WANG Fang, ZHANG Qiang, et al. Research on trajectory planning of ROS?based robot arm [J]. Navigation positioning and timing, 2016, 16(3): 82?88.
[6] 陳前里,劉成良,貢亮,等.基于ROS的機(jī)械臂控制系統(tǒng)設(shè)計(jì)[J].機(jī)電一體化,2016,24(2):38?40.
CHEN Qianli, LIU Chengliang, GONG Liang, et al. The design of control system for robot arm based on ROS [J]. Mechatronics, 2016, 24(2): 38?40.
[7] 楊呂劍,沈林勇,丁航.四自由度上肢康復(fù)機(jī)器人運(yùn)動(dòng)軌跡規(guī)劃與仿真[J].計(jì)算機(jī)仿真,2016,33(8):332?337.
YANG Lüjian, SHEN Linyong, DING Hang. The trajectory planning simulation of 4?DOF upper limb rehabilitation robot [J]. Computer simulation, 2016, 33(8): 332?337.
[8] 劉坤明,徐國(guó)艷,余貴珍.駕駛機(jī)器人機(jī)械腿動(dòng)力學(xué)建模與仿真分析[J].北京航空航天大學(xué)學(xué)報(bào),2016,42(8):1709?1714.
LIU Kunming, XU Guoyan, YU Guizhen. Dynamic modeling and simulation analysis of robot driver′s mechanical legs [J]. Journal of Beijing University of Aeronautics and Astronautics, 2016, 42(8): 1709?1714.
[9] 梁春艷,李志雄,蘇清茂.六自由度機(jī)器人3D建模仿真研究[J].西南科技大學(xué)學(xué)報(bào),2016,31(2):81?86.
LIANG Chunyan, LI Zhixiong, SU Qingmao. Research on six degrees of freedom robot 3D modeling and simulation [J]. Journal of Southwest China Institute of Technology, 2016, 31(2): 81?86.