ubuntu16.04下ROS作業系統學習(五 / 二)URDF機器人建模
1.什麼是URDF模型?
- Unified Robot Description Format,統一機器人描述格式;
- ROS中一個非常重要的機器人模型描述格式;
- 可以解析URDF檔案中適用XML格式描述的機器人模型,xml能夠方便地使用標籤、屬性來描述模型當中的相關資訊;
- 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