這個系列主要介紹機器人ROS模型的建立方法,ROS系統帶來的好處之一就是:
我們無需自己建立復雜的數學模型來描述自己的機器人幾何尺寸、運動學和動力學等,只需要用它提供的模型描述方法即可實現快速建模。
ROS系統的模型描述方法主要有兩種格式: URDF 和 XACRO。
URDF:用于描述一些簡單的機器人模型,參考官網:URDF官方介紹(初學者一定要精讀這些文檔)。
XACRO:應用更普遍的機器人模型描述文件,參考官網:xacro,它有如下幾個特點:
1.語法簡練。采用編程話的腳本語言格式,可以定義變量、常量、引入數學表達式等,極易上手。
2.方便復用。它可以進行一系列的宏定義,并且可以包含其他.xacro文件。
下面,開始用xacro文件建立Rob的機器人模型。
1.第一部分是文件的頭和一些宏定義
robot name我們可以自己隨便定義,然后分別給出了幾組顏色和常數的定義,最后給出了關節傳動部分的宏定義。
< ?xml version="1.0"? >
< robot name="rob_robot" xmlns:xacro="http://ros.org/wiki/xacro" >
< !-- Include materials -- >
< material name="Black" >
< color rgba="0.0 0.0 0.0 1.0"/ >
< /material >
< material name="White" >
< color rgba="1.0 1.0 1.0 1.0"/ >
< /material >
常量的定義方法如下,在引用這里定義的常量的時候,用**{XX},例如在如果在下面的代碼中想引用M_PI,只需要用:**{M_PI} 即可。
< !-- Constants -- >
< property name="deg_to_rad" value="0.01745329251994329577"/ >
< property name="M_PI" value="3.14159"/ >
關節的傳動參數宏定義方法如下,xacro:macro name 定義了本宏的名稱。
這個名稱由用戶定義,后續引用該宏的時候就是根據名字來的。
具體如何操作參考下文介紹或git上的源代碼。
注意,這里宏定義內部的一些具體數值僅為說明而存在,具體的機器人關節應該是不一樣的。
< !-- transmission block macro definition -- >
< xacro:macro name="transmission_block" params="joint_name" >
< transmission name="tran1" >
< type >transmission_interface/SimpleTransmission< /type >
< joint name="${joint_name}" >
< hardwareInterface >PositionJointInterface< /hardwareInterface >
< /joint >
< actuator name="motor1" >
< hardwareInterface >PositionJointInterface< /hardwareInterface >
< mechanicalReduction >1< /mechanicalReduction >
< /actuator >
< /transmission >
< /xacro:macro >
-
機器人
+關注
關注
211文章
28380瀏覽量
206916 -
模型
+關注
關注
1文章
3226瀏覽量
48807 -
ROS
+關注
關注
1文章
278瀏覽量
17001
發布評論請先 登錄
相關推薦
評論