一,機器人建模的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