陳永平 何永艷 王凱凱
摘 要: 機械臂建模是開源機器人操作系統(tǒng)ROS的應(yīng)用基礎(chǔ),為提高機械臂運動規(guī)劃、仿真的效率,研究了基于ROS的機械臂模型URDF文件的構(gòu)建方法,并采用常量定義、宏定義、文件包含等方法對URDF文件進行了精簡、優(yōu)化,同時介紹了一種利用三維模型生成URDF文件的方法。結(jié)果證明,經(jīng)過優(yōu)化的模型可參數(shù)化地進行修改,便于二次開發(fā),優(yōu)化方法大大提高了機械臂模型構(gòu)建的效率,為后續(xù)利用MoveIt、Gazebo工具對機械臂進行路徑規(guī)劃、仿真等操作提供了便利。
關(guān)鍵詞: 機械臂建模; 機器人操作系統(tǒng); 模型優(yōu)化
中圖分類號: TP391.9; TP242.2 ? ? ?文獻(xiàn)標(biāo)志碼: A
Research on Modeling and Optimizing Method of
Robotic Manipulator Based on ROS
CHEN Yongping, HE Yongyan, WANG Kaikai
(Department of Mechanical and Energy Engineering, Shanghai Technical Institute of
Electronics & Information, Shanghai 201411)
Abstract: Manipulator modeling is the application foundation of ROS. In order to improve the efficiency of manipulator motion planning and simulation, this paper studies the construction method of URDF file of manipulator model based on ROS, and simplifies and optimizes the URDF file by constant definition, macro definition, file inclusion and so on. At the same time, a method of URDF file generation using three-dimensional model is introduced. The results show that the optimized model can be parameterized and modified to facilitate secondary development. The optimized method greatly improves the efficiency of the manipulator model construction, and provides convenience for subsequent manipulation such as path planning and simulation using MoveIt, Gazebo tools.
Key words: Manipulator modeling; Robot operating system (ROS); Model optimization
0 引言
Robot Operating System簡稱ROS,是一種開源機器人操作系統(tǒng),2007年誕生于斯坦福。經(jīng)過10多年的發(fā)展,ROS為開發(fā)者提供了一系列非常有用的工具和先進算法,例如:超強大的3D可視化工具Rviz、機械臂運動規(guī)劃的模塊MoveIt、最著名的運動規(guī)劃開源項目OMPL、開源視覺伺服項目Visp、優(yōu)秀的開源仿真平臺Gazebo、開源點云處理庫PCL、移動機器人路徑規(guī)劃模塊Navagation等[1-3],使用它們可以大大提高開發(fā)效率?,F(xiàn)在,包括四大家族在內(nèi)的越來越多的機器人廠商開始嘗試使用ROS,通過采用統(tǒng)一的URDF模型和機器人驅(qū)動的方式來封裝機器人。這樣可以不用關(guān)心機器人的控制方式,只要在ROS環(huán)境下,用MoveIt規(guī)劃控制機械臂運動、編寫應(yīng)用程序,即可實現(xiàn)機器人的控制。
1 機械臂運動學(xué)模型及其建立
ROS中采用通用描述格式URDF( Unified Robot Description Format)來定義機械臂模型。不同于傳統(tǒng)的CAD模型文件,URDF文件以XML文本文件的格式描述機器人模型,可存儲模型的外觀、運動學(xué)、動力學(xué)等信息,同時還支持模型的自碰撞檢測[4]。
一個完整的機械臂模型由一系列連桿和關(guān)節(jié)組成[4-7],在URDF文件中,機械臂模型的描述方法為,如圖1所示。
”>
……
……
……
連桿用于描述機器人剛體,存儲其尺寸(size)、外形(shape)、顏色(color)、慣性(inertial)、碰撞(collision)等信息,其描述方法為,如圖2所示。
”>
……
……
……
關(guān)節(jié)則用于表達(dá)兩連桿的連接,如圖3所示。
描述關(guān)節(jié)的運動學(xué)和動力學(xué)屬性、關(guān)節(jié)運動的位置和速度限制等信息,描述方法為:
” type=””>
……
根據(jù)關(guān)節(jié)運動形式,可以將其分為六種類型:continuous(旋轉(zhuǎn)關(guān)節(jié),可以圍繞單軸無限旋轉(zhuǎn))、tevolute(旋轉(zhuǎn)關(guān)節(jié),類似與continuous,但是有旋轉(zhuǎn)的角度極限)、 prismatic(滑動關(guān)節(jié),沿某一軸線移動的關(guān)節(jié),帶有位置極限)、 planar(平面關(guān)節(jié),允許在平面正交方向上平移或者旋轉(zhuǎn))、 floating (浮動關(guān)節(jié),允許進行平移、旋轉(zhuǎn)運動)、fixed(固定關(guān)節(jié)、不允許運動的特殊關(guān)節(jié))。
2 URDF文件的優(yōu)化方法
URDF建模存在模型冗長,重復(fù)內(nèi)容過多,參數(shù)修改麻煩,不便于二次開發(fā),沒有參數(shù)計算的功能的缺點。因此可對URDF模型進行改進,利用xacro文件通過進行宏定義、文件包含等方法進行模型代碼的精簡,通過常量、變量、數(shù)學(xué)計算、條件語句提供可編程的接口。
xacro文件主要優(yōu)化方法如下:
1) 常量定義: ,其中name為常量名稱,value為常量值。例如,定義了一個3.14159的常量M_PI。
2) 數(shù)學(xué)計算:{ },例如:。
3) 宏定義: ? ? ……
其中name為宏名稱,params為宏參數(shù)。
4) 文件包含:
例如:,包含了一個mbot_base.xacro文件,且指明了路徑。
一帶夾爪的六軸機械臂簡化模型,對于該模型link1的采用xacro優(yōu)化后的代碼如下,圖4所示。
其屬性 (Visual)、慣性(inertial)、碰撞(collision)等屬性代碼中的link1_length、M_PI等常量都進行了定義、數(shù)學(xué)計算等預(yù)處理,這樣精簡了模型,便于修改。以圓柱體慣性矩陣為例,其宏定義如下所示。
iyy="{m*(3*r*r+h*h)/12}" iyz = "0"
izz="{m*r*r/2}" />
xcaxo文件的解析可采用2種方法:
1) 運行ros指令將xacro文件轉(zhuǎn)換成URDF文件后顯示。
例如將mbot.xacro文件轉(zhuǎn)換為mbot.urdf文件:rosrun xacro xacro.py mbot.xacro>mbot.urdf。
2) 直接調(diào)用xacro文件解析器顯示。
例如:
3 三維模型生成URDF文件方法
對于結(jié)構(gòu)較簡單的機械臂可以采用以上描述的方法手動編寫URDF文件,但對于結(jié)構(gòu)復(fù)雜的機械臂模型,大部分都是使用三維軟件創(chuàng)建的??稍赟olidWorks軟件中安裝sw2urdf插件,借助工具將CAD模型文件轉(zhuǎn)換成URDF模型文件。模型文件指向STL外部網(wǎng)格數(shù)據(jù)可以精確表現(xiàn)機械臂的模型特征[5-6]。
SolidWorks中的UR3機器人模型,在SolidWorks中設(shè)置各個基準(zhǔn)軸,各個基準(zhǔn)軸即為,如圖5所示。
打開sw2urdf插件,在插件中設(shè)置連桿屬性,設(shè)置完成后導(dǎo)出URDF模型,如圖6所示。
4 解析URDF文件
(1) 顯示URDF關(guān)系
對構(gòu)建的三維模型可使用ROS中的graphiz虛擬顯示所構(gòu)建的URDF結(jié)構(gòu)關(guān)系[8-9]。UR3模型的結(jié)構(gòu)關(guān)系圖如圖7所示。圖中矩形代表link,橢圓代表joint。
(2) 使用Rviz顯示模型
使用sw2urdf插件導(dǎo)出的模型文件夾命名為ur3,其中包含了URDF模型及一些輔助顯示的文件,可將其拷貝至src文件夾中進行編譯。然后使用roslaunch ur3 display.launch打開launch文件夾中的display.launch文件,利用rivz顯示3D模型,并可使用joint_state_publisher對機器人進行關(guān)節(jié)控制,如圖8所示。
但對于手動編寫的URDF文件,需要自己編寫顯示的launch文件進行顯示。
5 總結(jié)
本文研究了ROS 環(huán)境下機器人模型的編程構(gòu)建方法和3D模型導(dǎo)出方法,并詳細(xì)介紹了URDF模型的優(yōu)化方法。通過graphiz虛擬顯示了模型連桿、關(guān)節(jié)的結(jié)構(gòu)關(guān)系,并利用Rviz中進行了URDF模型三維加載和關(guān)節(jié)控制。實踐證明,該模型的構(gòu)建方法是有效、可靠的。后續(xù)可在ROS中利用MoveIt!、Gazebo等工具對機械臂進行路徑規(guī)劃、仿真操作等操作。
參考文獻(xiàn)
[1] 袁杰,劉祚時.基于ROS的六自由度機械臂避障研究[J].制造業(yè)自動化,2017(12):41-43.
[2] 郭建根,雙豐,闞宏林.基于ROS的六關(guān)節(jié)機器人運動規(guī)劃研究[J].安徽工程大學(xué)學(xué)報,2019(1):36-45.
[3] 孟韶南,梁雁冰,師恒.基于ROS平臺的六自由度機械臂運動規(guī)劃[J].上海交通大學(xué)學(xué)報,2016(A1):94-97.
[4] 劉啟帆,謝明,姜磊.基于ROS的工業(yè)機器人運動規(guī)劃[J].組合機床與自動化加工技術(shù),2017(5):36-39.
[5] 陳前里,劉成良,貢亮,等.基于ROS的機械臂控制系統(tǒng)設(shè)計[J].機電一體化,2016(2):38-40.
[6] 鹿霖,謝樹新.ROS環(huán)境下的機器人仿真模型構(gòu)建方法研究[J].現(xiàn)代電子技術(shù),2018(7):102-105.
[7] 曹正萬,平雪良,陳盛龍,等.基于ROS的機器人模型構(gòu)建方法研究[J].組合機床與自動化加工技術(shù),2015(8):51-54.
[8] 陳盛龍,平雪良,曹正萬,等.基于ROS串聯(lián)機器人虛擬運動控制及仿真研究[J].組合機床與自動化加工技術(shù),2015(10):108-111.
[9] 劉磊,寧祎.基于ROS的六自由度機械臂軌跡規(guī)劃[J].自動化與儀表,2018(3): 22-25.
(收稿日期: 2019.08.23)
基金項目:2018年上海高校青年科研骨干培養(yǎng)計劃(18CGB15)
作者簡介:陳永平(1977-),男,碩士,講師,研究方向:工業(yè)機器人技術(shù)應(yīng)用文章編號:1007-757X(2020)02-0013-04