2017年6月6日 星期二

ROS筆記 - 機器人模型URDF

  URDF (Unified Robot Description Format) - 統一機器人描述格式, 是一種特殊的XML文件格式,用來描述機器人的模型。

1. URDF語法規範

參考:XML specifications

2. URDF教程

      1. 使用URDF建立機器人模型
          了解如何構建可在Rviz中查看的機器人的可視化模型
      
      2. 建立可移動的URDF機器人模型
          了解如何在URDF中定義可移動關節

      3. 在URDF模型中加入碰撞與物理屬性
          了解如何加入關節碰撞與慣性特性,以及關節動學特性(friction, damping)

      4. 使用Xacro整理URDF文件
          了解如何Xacro精簡URDF文件內容

3. 建立URDF文件 


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

沒有留言:

張貼留言

apt-get update異常處理

1. 問題描述 系統環境:Ubuntu 18.04.3 LTS 執行apt-get update更新時遇到如下狀況 錯誤訊息: Err:1 http://security.ubuntu.com/ubuntu bionic-security InRe...