系列文章目錄
?文章來源地址http://www.zghlxwxcb.cn/news/detail-773344.html
前言
英文 | 中文 |
---|---|
link | 剛體 |
joint | 關節(jié) |
frame | 坐標系 |
identity element | 單位元(加法為 0) |
?文章來源:http://www.zghlxwxcb.cn/news/detail-773344.html
?
一、robot
1.1?<robot> 元素
機器人描述文件的根元素必須是 robot ,所有其他元素都必須封裝在其中。
1.2 元素
?
1.3 屬性
name
主文件必須有 name 屬性。在包含文件中,name 屬性是可選的。如果在附加的包含文件中指定了屬性名稱,其值必須與主文件中的相同。
1.4 示例
<robot name="pr2">
<!-- pr2 robot links and joints and more -->
</robot>
二、link
2.1?<link> 元素
link 元素描述了一個具有慣量(inertia)、視覺特征(visual features)和碰撞屬性(collision properties)的剛體(rigid body)。
下面是一個 link?元素的示例:
<link name="my_link">
<inertial>
<origin xyz="0 0 0.5" rpy="0 0 0"/>
<mass value="1"/>
<inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="1 1 1" />
</geometry>
<material name="Cyan">
<color rgba="0 1.0 1.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder radius="1" length="0.5"/>
</geometry>
</collision>
</link>
2.2 屬性
name(必需)
剛體(link)本身的名稱。
2.3 元素
2.3.1?<inertial>(可選:如果未指定,默認質(zhì)量為零,慣量為零)
剛體(link)的質(zhì)量、質(zhì)心位置和中心慣量特性。
2.3.1.1?<origin>(可選:如未指定,默認為單位元)
?這個姿態(tài)(平移、旋轉(zhuǎn))描述了剛體(link)的質(zhì)心坐標系(center of mass frame)?C 相對于剛體(link)坐標系 L 的位置和方向。
xyz(可選:默認為 0 向量)
表示從 Lo(剛體坐標系原點)到 Co(剛體質(zhì)量中心)的位置矢量為 x L?x + y L?y + z L?z,其中 L?x、L?y、L?z 為鏈接框架 L 的正交單位矢量。
rpy(可選:如果未指定,默認為單位元)
表示質(zhì)心坐標系 C 的單位矢量 ?x、?y、?z 相對于剛體坐標系 L 的方向,是以弧度為單位的歐拉旋轉(zhuǎn)序列 (r p y)。注意: ?x、?y、?z 不需要與剛體的慣性主軸對齊。
2.3.1.2?<mass>
?剛體的質(zhì)量由該元素的 value 屬性表示
2.3.1.3?<inertia>
固定在質(zhì)心坐標系 C 中的單位向量?x、?y、?z 相對于 Co(剛體質(zhì)心)的慣性矩 ixx、iyy、izz 和慣性積 ixy、ixz、iyz。
注意:?x、?y、?z 相對于 L?x、L?y、L?z 的方向由 <origin> 標簽中的 rpy 值指定。一些原始形狀的屬性 ixx、ixy、ixz、iyy、iyz、izz 在這里。URDF 假定慣性積為負值(更多信息,請參閱有關使用 CAD 工具的 MathWorks 文檔)。要避免與慣性積負號約定相關的兼容性問題,最簡單的方法是將?x、?y、?z 與主慣性方向?qū)R,使所有慣性積為零。
2.3.2?<visual>(可選)
剛體(link)的可視化屬性。該元素用于指定對象的形狀(方框、圓柱等),以便實現(xiàn)可視化。注意:同一剛體(link)可存在多個 <visual> 標記實例。它們定義的幾何形狀的組合構成了剛體(link)的可視化表示。?
2.3.2.1 name(可選)
指定剛體幾何體部分的名稱。這對引用剛體幾何圖形的特定的位非常有用。
2.3.2.2?<origin>(可選:如未指定,默認為單位元)?
?visual 元素相對于剛體參照系的參照系。
xyz(可選:默認為 0 向量)
表示 x、y、z 偏移量。
rpy(可選:如果未指定,默認為單位元)
表示以弧度為單位的固定軸滾動角、俯仰角和偏航角。
2.3.2.3?<geometry>
視覺對象的形狀??梢允且韵滦螤钪唬?/p>
<box>
size 屬性包含方框的三個邊長。方框的原點位于其中心。
<cylinder>
指定半徑和長度。圓柱體的原點位于其中心。
<sphere>
指定半徑。球體的原點位于其中心。
2.3.2.4?<mesh>
由文件名和可選的縮放比例指定的 trimesh 元素,縮放比例用于縮放網(wǎng)格的軸對齊包圍盒。任何幾何體格式都可接受,但具體應用的兼容性取決于實施情況。為獲得最佳紋理和顏色支持,推薦使用 Collada .dae 文件格式。網(wǎng)格文件不會在引用同一模型的機器之間傳輸。它必須是本地文件。在文件名前加上 package://<packageagename>/<path>,使網(wǎng)格文件的路徑相對于軟件包 <packageagename>。
2.3.2.5?<material>
視覺元素的材質(zhì)??梢栽?"link "對象之外的頂層?"robot?"元素中指定材質(zhì)元素。在 link 元素中,您可以通過名稱來引用材料。
name
材料名稱
<color>
rgba 材料的顏色,由代表紅/綠/藍/阿爾法的四個數(shù)字組成,每個數(shù)字的范圍為 [0,1]。
<texture>
材料的紋理由文件名指定
?2.3.4?<collision>
剛體的碰撞屬性。請注意,這可能與剛體的視覺屬性不同,例如,為了減少計算時間,通常會使用更簡單的碰撞模型。注意:同一剛體可以存在多個 <collision> 標記實例。它們定義的幾何體的組合構成了剛體的碰撞表示。
2.3.4.1?name
指定剛體幾何體部分的名稱。這對引用剛體幾何圖形的特定的位非常有用。
2.3.4.2?<origin>
?碰撞元素相對于剛體參照系的參照系。
xyz(可選:默認為 0 向量)
表示 x、y、z 偏移量。
rpy(可選:如果未指定,默認為單位元)
表示以弧度為單位的固定軸滾動角、俯仰角和偏航角。
2.3.4.3?<geometry>
參見上述視覺元素中的幾何描述。?
2.4?推薦的網(wǎng)格分辨率
在使用 ROS 運動規(guī)劃軟件包進行碰撞檢測時,建議在 URDF 中添加的碰撞網(wǎng)格每個鏈接的面數(shù)越少越好(最好少于 1000 個)。如果可能,我們鼓勵使用其他基元近似網(wǎng)格。
2.5 多碰撞體
會議決定,URDF 不應支持多組碰撞體,盡管有時會有這方面的應用。URDF 僅用于表示機器人的實際屬性,而不是用于控制器碰撞檢查等外部用途的碰撞。在 URDF 中,<visual> 元素應盡可能與真實機器人保持一致,而 <collision> 元素則應與真實機器人接近,盡管網(wǎng)格中的三角形數(shù)量要少得多。
如果您確實需要更粗粒度、更大尺寸的碰撞幾何圖形來進行碰撞檢查和控制器等操作,您可以將這些網(wǎng)格/幾何圖形移動到自定義 XML 元素中。例如,如果您的控制器需要一些特殊的粗糙碰撞檢查幾何體,您可以在 <collision> 元素后添加 <collision_checking> 標簽:
<link name="torso">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://robot_description/meshes/base_link.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
<geometry>
<mesh filename="package://robot_description/meshes/base_link_simple.DAE"/>
</geometry>
</collision>
<collision_checking>
<origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
<geometry>
<cylinder length="0.7" radius="0.27"/>
</geometry>
</collision_checking>
<inertial>
...
</inertial>
</link>
?URDF 將忽略這些自定義元素,如 "collision_checking",而您的特定程序可以自行解析 XML 來獲取這些信息。
三、Joint
3.1 <Joint> 元素
關節(jié)元素描述了關節(jié)的運動學和動力學特性,還規(guī)定了關節(jié)的安全限制。
下面是一個關節(jié)元素的示例:
<joint name="my_joint" type="floating">
<origin xyz="0 0 1" rpy="0 0 3.1416"/>
<parent link="link1"/>
<child link="link2"/>
<calibration rising="0.0"/>
<dynamics damping="0.0" friction="0.0"/>
<limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
<safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
</joint>
?
?
3.2 屬性
關節(jié)元素有兩個屬性:
name(必填)
指定接頭的唯一名稱
type(必填)
指定關節(jié)類型,其中類型可以是以下之一:
revolute?- 沿軸線旋轉(zhuǎn)的鉸鏈接頭,其范圍由上下限指定。
continuous - 一種繞軸旋轉(zhuǎn)的連續(xù)鉸鏈接頭,沒有上下限。
prismatic - 沿軸線滑動的滑動接頭,其范圍受上下限的限制。
fixed - 這不是真正意義上的關節(jié),因為它不能移動。所有自由度都被鎖定。這種關節(jié)不需要 <axis>、<calibration>、<dynamics>、<limits> 或 <safety_controller>。
floating - 這種關節(jié)允許所有 6 個自由度的運動。
planar - 這種關節(jié)允許在垂直于軸的平面內(nèi)運動。
3.3 元素
joint 元素包含以下元素:
3.3.1 <origin> (可選:如果未指定,默認為 identity)
這是從父剛體(link)到子剛體(link)的轉(zhuǎn)換。如上圖所示,關節(jié)點位于子剛體(link)的原點。
xyz(可選:默認為零向量)
代表 x、y、z 偏移量。所有位置的單位都是米。
rpy(可選:默認為零向量)
代表繞固定軸的旋轉(zhuǎn):首先繞 x 軸旋轉(zhuǎn),然后繞 y 軸旋轉(zhuǎn),最后繞 z 軸旋轉(zhuǎn)。
3.3.2 <parent>(必填)
帶有強制屬性的父剛體(link)名稱:
link
該剛體(link)在機器人樹結(jié)構中的父剛體(link)名稱。
3.3.3 <child>(必填)
帶有強制屬性的子剛體(link)名稱:
link
作為子剛體(link)的剛體(link)名稱。
3.3.4 <axis>(可選:默認為(1,0,0)
關節(jié)坐標系中指定的關節(jié)軸。對于旋轉(zhuǎn)關節(jié),這是旋轉(zhuǎn)軸;對于棱柱關節(jié),這是平移軸;對于平面關節(jié),這是表面法線。軸在關節(jié)參考坐標系中指定。固定關節(jié)和浮動關節(jié)不使用軸字段。
xyz(必填)
代表矢量的(x、y、z)分量。矢量應進行歸一化處理。
3.3.5 <calinration>(可選)
關節(jié)的參考位置,用于校準關節(jié)的絕對位置。
rising(可選)
當關節(jié)向正方向移動時,該參考位置將觸發(fā)一個上升沿。
falling(可選)
當關節(jié)向正方向移動時,該參考位置將觸發(fā)下降沿。
3.3.6 <dynamics>(可選)
指定關節(jié)物理屬性的元素。這些值用于指定關節(jié)的建模屬性,對仿真特別有用。
damping(可選,默認為 0)
關節(jié)的物理阻尼值(對于棱柱關節(jié),單位為牛頓-秒/米[N?s/m];對于旋轉(zhuǎn)關節(jié),單位為牛頓-米-秒/弧度[N?m?s/rad])。
friction(可選,默認為 0)
關節(jié)的物理靜摩擦力值(對于棱柱形關節(jié),單位為牛頓[N];對于反卷形關節(jié),單位為牛頓-米[N?m])。
3.3.7 <limit>(僅外旋式和棱柱式接頭需要)
元素可包含以下屬性:
lower (可選,默認為 0)
指定關節(jié)下限的屬性(對于旋轉(zhuǎn)關節(jié),單位為弧度;對于棱柱關節(jié),單位為米)。如果關節(jié)是連續(xù)的,則省略。
upper (可選,默認為 0)
指定關節(jié)上限的屬性(對于旋轉(zhuǎn)關節(jié)以弧度為單位,對于棱柱關節(jié)以米為單位)。如果關節(jié)是連續(xù)的,則省略。
effort(必填)
用于執(zhí)行最大關節(jié)力的屬性(|applied effort| < |effort|)。請參閱安全限制。
velocity(必填)
用于執(zhí)行最大關節(jié)速度的屬性(對于旋轉(zhuǎn)關節(jié),單位為弧度/秒 [rad/s];對于棱柱關節(jié),單位為米/秒 [m/s])。請參閱安全限制。
3.3.8 <mimic>(可選)(ROS Groovy 的新功能,參見問題)
該標簽用于指定已定義的關節(jié)模仿另一個現(xiàn)有關節(jié)。該關節(jié)的值可計算為:value = multiplier * other_joint_value + offset。
預期和可選屬性:
joint(必填)
指定要模仿的關節(jié)名稱。
multiplier(可選)
指定上述公式中的乘法因子。
offset(可選)
指定在上述公式中添加的偏移量。默認值為 0(外旋關節(jié)為弧度,棱柱關節(jié)為米)
<safety_controller>(可選)
元素可包含以下屬性:
soft_lower_limit (可選,默認為 0)
指定安全控制器開始限制關節(jié)位置的下關節(jié)邊界的屬性。該限制必須大于關節(jié)下限(見上文)。更多詳情,請參閱安全限制。
soft_upper_limit (可選,默認為 0)
指定接頭上限邊界的屬性,安全控制器從此處開始限制接頭位置。該限制必須小于關節(jié)上限(見上文)。詳情請參閱安全限制。
k_position(可選,默認為 0)
指定位置和速度限制之間關系的屬性。詳情請參閱安全限值。
k_velocity (必填)
指定力度和速度限制之間關系的屬性。詳情請參閱安全限制。
四、model
統(tǒng)一機器人描述格式(URDF)是一種描述機器人的 XML 規(guī)范。我們試圖盡可能保持該規(guī)范的通用性,但該規(guī)范顯然無法描述所有機器人。目前的主要限制是只能表示樹形結(jié)構,排除了所有并聯(lián)機器人。此外,本規(guī)范假定機器人由通過關節(jié)連接的剛性連接組成;不支持柔性元素。規(guī)范包括
- 機器人的運動學和動力學描述
- 機器人的可視化表示
- 機器人的碰撞模型
?
機器人的描述由一組剛體(link)元素和一組將剛體(link)連接在一起的關節(jié)元素組成。因此,典型的機器人描述是這樣的
<?xml version="1.0"?>
<?xml-model ?>
<robot name="pr2" xmlns="http://www.ros.org">
<link> ... </link>
<link> ... </link>
<link> ... </link>
<joint> .... </joint>
<joint> .... </joint>
<joint> .... </joint>
</robot>
可以看到,URDF 格式的根元素是 <robot> 元素。
?
五、常見幾何體的慣量矩陣
描述 | 圖形 | 慣量張量矩 |
---|---|---|
實心球,半徑為r,質(zhì)量為m | ![]() |
|
空心球,半徑為r,質(zhì)量為m | ![]() |
|
實心橢球,半軸為a、b、c,質(zhì)量為m | ![]() |
|
圓錐,半徑為r,高為h,質(zhì)量為m | ![]() |
? |
實心長方體,高為h,寬為w,長為d,質(zhì)量為m | ![]() |
? |
端點繞y軸旋轉(zhuǎn)的細棒,長為l,質(zhì)量為m | ![]() |
|
中心繞y軸旋轉(zhuǎn)的細棒,長為l,質(zhì)量為m | ![]() |
|
實心圓柱,半徑為r,高為h,質(zhì)量為m | ![]() |
|
兩端開通的厚圓柱,內(nèi)半徑為r1,外半徑為r2,高為h,質(zhì)量為m | ![]() |
?
?
?
到了這里,關于URDF - 通用機器人描述格式 - XML 規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!