1. URDF語法規範
參考:XML specifications2. URDF教程
1. 使用URDF建立機器人模型
了解如何構建可在Rviz中查看的機器人的可視化模型
了解如何構建可在Rviz中查看的機器人的可視化模型
2. 建立可移動的URDF機器人模型
了解如何在URDF中定義可移動關節
了解如何在URDF中定義可移動關節
3. 在URDF模型中加入碰撞與物理屬性
了解如何加入關節碰撞與慣性特性,以及關節動學特性(friction, damping)
了解如何加入關節碰撞與慣性特性,以及關節動學特性(friction, damping)
3.1 link 和 joint
在URDF中,機器人主要結構透過link和joint來表示。link定義實際機器人的機構件,而前後link(parent link, child link)之間使用joint做連接,並可再設定joint的運動方式(fixed, revolute, contunuous...)。link與joint的位置關係是透過前後之間的相對位置來定義,child link的中心位置以joint的位置做為參考,joint則是相對於前一個joint(parent link的joint)的位置作參考。
下圖為ROS URDF教學的範例,將創建一個樹狀結構的機器人模型:
3.2 基礎模型
本節將從機器人的整體結構出發,不考慮過多的細節,可以將機器人通過如下的URDF表示:
1 <robot name="my_robot">
2 <link name="link1" />
3 <link name="link2" />
4 <link name="link3" />
5 <link name="link4" />
6
7 <joint name="joint1" type="continuous">
8 <parent link="link1"/>
9 <child link="link2"/>
10 </joint>
11
12 <joint name="joint2" type="continuous">
13 <parent link="link1"/>
14 <child link="link3"/>
15 </joint>
16
17 <joint name="joint3" type="continuous">
18 <parent link="link3"/>
19 <child link="link4"/>
20 </joint>
21 </robot>
設定完畢後,ROS為用戶提供了一個檢查URDF語法的工具
$ check_urdf my_robot.urdf
如果一切正常,將會顯示如下:
robot name is: test_robot
---------- Successfully Parsed XML ---------------
root Link: link1 has 2 child(ren)
child(1): link2
child(2): link3
child(1): link4
3.3 設定link參數
接著定義機器人機構件(link)的參數,在link中可以分成設定機構件的外觀、碰撞、慣性等項目,並分別設定機構外型<geometry> (box/cylinder/mesh等)、偏移量<origin xyz> (公尺)、旋轉量<origin rpy> (徑度)等參數。選擇自己需要的項目設定即可。
1 <link name="my_link"> 2 <inertial> 3 <origin xyz="0 0 0.5" rpy="0 0 0"/> 4 <mass value="1"/> 5 <inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" /> 6 </inertial> 7 8 <visual> 9 <origin xyz="0 0 0" rpy="0 0 0" /> 10 <geometry> 11 <box size="1 1 1" /> 12 </geometry> 13 <material name="Cyan"> 14 <color rgba="0 1.0 1.0 1.0"/> 15 </material> 16 </visual> 17 18 <collision> 19 <origin xyz="0 0 0" rpy="0 0 0"/> 20 <geometry> 21 <cylinder radius="1" length="0.5"/> 22 </geometry> 23 </collision> 24 </link>
3.4 加入joint設定
在joint中可以設定關節的類型<joint type>、偏移量<origin>、旋轉軸<axis>、上下限<liniit lower/upper>等參數,
1 <robot name="test_robot"> 2 <link name="link1" /> 3 <link name="link2" /> 4 <link name="link3" /> 5 <link name="link4" /> 6 7 <joint name="joint1" type="fixed"> 8 <parent link="link1"/> 9 <child link="link2"/> 10 <origin xyz="5 3 0" rpy="0 0 0" /> 12 </joint> 13 14 <joint name="joint2" type="continuous"> 15 <parent link="link1"/> 16 <child link="link3"/> 17 <origin xyz="-2 5 0" rpy="0 0 1.57" /> 18 <axis xyz="-0.707 0.707 0" /> 19 </joint> 20 21 <joint name="joint3" type="revolute"> 22 <parent link="link3"/> 23 <child link="link4"/> 24 <origin xyz="5 0 0" rpy="0 0 -1.57" /> 25 <axis xyz="0.707 -0.707 0" /> 26 <limit effort="300" lower="-2.617" upper="1.983" velocity="1"/> 28 </joint> 29 </robot>
3.5 顯示URDF圖形
設定完成之後,可以呼叫urdf_tutorial中提供的display.launch開啟rviz的3D模型,確認是否設定正確
$ roslaunch urdf_tutorial display.launch model:=/home/seven/dev/rosbook/seven_moveit_config/urdf/RCK100.urdf
3.6 載入mesh模型
在URDF <geometry>中,除了使用預設的幾何圖形外,亦可載入3D模型圖像
參考資料
<ROS> 機器人描述--URDF和XACRO
沒有留言:
張貼留言