ROS中3D機器人建模(一)


一,機器人建模的ROS軟件包

*urdf : 機器人建模最重要的ros軟件包是urdf軟件包。這個軟件包包含一個用於統一機器人描述格式(URDF)的C++解析器,它是一個表示機器人模型的XML文件,還有一些其他不同的組件來組成urdf:

*urdf_parser_plugin : 這個軟件包實現了寫入URDF數據結構的方法:

*urdfdom_headers : 此組件提供了使用urdf解析器的核心數據結構頭文件:

*collada_parser : 這個軟件包通過解析Collada文件來填充數據結構:

*urdfdom : 此組件通過解析URDF文件來填充數據結構:

*collada-dom : 這是一個獨立組件,可以使用Maya,Blender和Softtimage等3D計算機圖形軟件對Collada文檔進行轉換。

我們可以使用URD來定義機器人模型,傳感器和工作環境,使用URDF解析器對其進行解析。我們只能使用URDF描述一個類似樹狀連桿結構機器人,也就是說,機器人會有剛性連桿,並通過關節連接,我們無法用URDF表達柔性連桿。

URDF由特殊的XML標簽構成,我們可以使用解析器程序解析這些XML標簽以進一步處理。

*joint_state_publisher : 在使用URDF設計機器人模型時,該軟件非常有用。這個軟件包包含一個名為joint_state_publisher的節點,該節點讀取機器人模型描述,查找所有關節,並利用GUI滑動條將關節值向所有非固定關節發布。

*kdl_parser : 運動學和運動學庫(Kinematic and Dynamics,KDL)是一個ROS軟件包,它包含解析器工具,可以從URDF表示中構建KDL樹,運動學樹可以用來發布關節的狀態,也可以用來表示機器人的正/逆運動學。

*robot_state_publisher : 該軟件包可以讀取當前機器人的關節狀態,並發布由URDF構建的運動學樹中每個機器人連桿的3D姿態。

*xacro : Xacro是XML Macro 的縮寫,xacro可理解為URDF加上若干插件。xacro包含一些插件,讓URDF變得更簡短。可讀性更好,並且可以用於構建復雜的機器人描述,利用ROS相應的工具,可以在需要的時候將xacro轉換成URDF。

 

二,利用URDF理解機器人建模

我們已經討論了urdf軟件包,將進一步研究URDF XML標簽,它有助於機器人建模,我們必須創建一個文件,並編寫機器人的每個連桿和關節之間的連接關系,並用.urdf擴展名保存文件。

下面是組成URDF機器人模型常用的URDF標簽:

*link : link標簽表示機器人的單個連桿。使用此標簽,我們可以為機器人的一個連桿及其屬性建模。該模型包括大小、形狀和顏色,甚至可以導入一個3D網絡來表示機器人的連桿。我們還可以提供連桿的動態屬性,如慣性屬性和碰撞屬性。

語法如下:

<link name ="<name of the link>">

<inertial>......</inertial>

   <visual> ......</visual>

   <collision> ......</collision>

</link>

 

*joint : joint標簽表示機器人關節。我們可以指定關節的運動學和動力學,並設定關節運動和速度的極限。

joint標簽支持不同類型的關節,如旋轉關節(revolute),無限位旋轉關節(continuous),滑動關節(prismatic),固定關節(fixed),浮動關節(floating)和平面關節(planar).

語法如下:

<joint name = "<name of the joint>">

  <parent link="link1"/>

  <child link="link2"/>

  <calibration .... />

 

   <dynamics damping .... />

  <limit effort .... />

</joint>

在兩個連桿之間會形成一個URDF關節。第一個被稱為父連桿(parent),第二個被稱為子連桿(child).

 

*robot : 這個標簽封裝了用URDF表示的整個機器人模型。在robot標簽內,我們可以定義機器人的名字、各個連桿,以及機器人的各個關節。

語法如下:

<robot name= "<name of the robot>"

   <link> .... </link>

   <link> .... </link>

 

   <joint> .... </joint>

   <joint> .... </joint>

</robot>

 

*gazebo : 當我們在URDF中包含Gazebo仿真器的仿真參數時,使用這個標簽。我們可以用這個標簽包含gazebo插件、gazebo材料屬性等。

以下是一個使用gazebo標簽的例子:

<gazebo reference="link_1">

    <material>Gazebo/Black</material>

</gazebo>

 

三,為機器人創建ROS軟件包

為機器人創建URDF文件之前,讓我們在catkin_ws的工作空間src目錄下創建一個ROS軟件包來保存機器人模型:

$ catkin_create_pkg mastering_ros_robot_description_pkg roscpp tf geometry_msgs urdf rviz xacro

該軟件包主要依賴於urdf和xacro軟件包

而我是直接從git庫中下載的完整的軟件包

$ git clone https://github.com/jocacace/mastering_ros_robot_description_pkg.git

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM