1. 程式人生 > >ubuntu16.04下ROS作業系統學習(五 / 二)URDF機器人建模

ubuntu16.04下ROS作業系統學習(五 / 二)URDF機器人建模

1.什麼是URDF模型?

  1. Unified Robot Description Format,統一機器人描述格式;
  2. ROS中一個非常重要的機器人模型描述格式;
  3. 可以解析URDF檔案中適用XML格式描述的機器人模型,xml能夠方便地使用標籤、屬性來描述模型當中的相關資訊;
  4. ros同時也提供URDF檔案的C++解析器,能夠在程式碼當中呼叫模型當中的一些資訊。

一個機器人拆開的話大致上可以分為兩個部分,一個是連桿、兩個連桿(link)之間通過關節(joint)來連線。

link的話主要是設定連桿部分的尺寸、顏色、形狀等等。Collision一般都畫成矩陣,會比橢圓方便點,計算起來運算量也會比較小。

joint的話主要是連線兩個關節。關節可以分為六種:無限旋轉關節(如小車車輪等)、有旋轉角度極限關節(手臂關節)、滑動關節(在某一個座標系上可以滑動的關節)、平面關節、浮動關節、固定關節。用的最多的還是旋轉關節。

 

還有一些其他的引數,想關節的參考位置,阻尼(物理模擬引擎裡面會有),mimic描述關節與已有關節之間的關係等。

整個的機器人模型是可以採用link和joint來描述的,但是整個的標籤都得在根標籤(robot)裡面。根標籤裡面指定機器人的名字是什麼:

2.建立一個機器人功能包

在工作空間的src目錄下面開啟終端,輸入以下命令:

catkin_create_pkg mbot_description urdf xacro

後面還跟了兩個功能包,urdf是用於解析整個模型。後面還有一個xacro功能包。

建立成功之後裡面有兩個檔案cmakelists.txt和package.xml。

我們需要在裡面建立幾個資料夾:

urdf:存放機器人模型的URDF或xacro檔案。

meshes:存放URDF中引用的模型渲染檔案。

launch:儲存相關啟動檔案。

config:儲存rviz的配置檔案。

第一行表示的是引數的名字,然後定義檔案位置。

joint_state_publisher:釋出每個joint(除fixed型別)的狀態,而且可以通過UI介面對joint進行控制。

robot_state_publisher:將機器人各link、joint之間的關係,通過tf的形式,整理成三維姿態資訊釋出。

然後還有一些檔案,都可以在分享的資源裡面找到,視訊裡面對檔案的原始碼都做了解析,這裡我就不寫了。

我們執行以下命令,就可以看到機器人的模型(模型描述檔案在urdf裡面):

roslaunch mbot_description display_mbot_base_urdf.launch

得到結果如上圖所示。

在urdf目錄下面,輸入以下命令:

urdf_to_graphiz mbot_with_kinect.urdf