概述
- sensor/proposals
传感器描述,如相机和雷达等 - link
描述连杆的运动学参数和动态参数 - transmission
描述关节和驱动器之间的转换关系 - joint
描述关节的运动学参数和动态参数 - gazebo
描述仿真内容,如阻尼和摩擦等 - sensor
传感器描述,如相机和雷达等 - model_state
描述模型当前状态 - model
描述模型运动学参数和动态参数
模块具体分析
注意
因URDF文件的标签与move_group可调用的标签不相等,即部分标签在move_group中无效,使用这部分标签会使得为定义数据被忽略或者导致数据导入失败。
1、link
属性
- name(必需)
- link的名字
子元素
- <inertial> (可选)
- 连杆的惯性特性
- <origin> (可选,defaults to identity if not specified)
- 定义相对于连杆坐标系的惯性参考系的参考坐标,该坐标必需定义在连杆重心处,其坐标轴可与惯性主轴不平行。
- xyz (可选,默认为零向量)
- 表示 方向的偏置,单位为米。
- rpy(可选: defaults to identity if not specified)
- 表示坐标轴在RPY方向上的旋转,单位为弧度。
- <mass>
- 连杆的质量属性
- <inertia>
- 3×3旋转惯性矩阵,由六个独立的量组成:ixx, ixy, ixz, iyy, iyz, izz。
- <visual> (可选)
- 连杆的可视化属性。用于指定连杆显示的形状(矩形、圆柱体等),同一连杆可以存在多个visual元素,连杆的形状为多个元素两个形成。一般情况下模型较为复杂可以通过soildwork绘制后生成stl调用,简单的形状如添加末端执行器等可以直接编写。同时可以在此处可根据理论模型和实际模型差距调整几何形状的位置。
- <namel> (可选)
- 连杆几何形状的名字。
- <origin> (可选,defaults to identity if not specified)
- 相对于连杆的坐标系的几何形状坐标系。
- xyz (optional: defaults to zero vector)
- 表示 方向的偏置,单位为米。
- rpy (optional: defaults to identity if not specified)
- 表示坐标轴在RPY方向上的旋转,单位为弧度。
- <geometry> (必需)
- 可视化对象的形状,可以是下面的其中一种:
- <box>
- 矩形,元素包含长、宽、高。原点在中心。
- <cylinder>
-圆柱体,元素包含半径、长度。原点中心。
- <sphere>
- 球体,元素包含半径。原点在中心。
- <mesh>
- 网格,由文件决定,同时提供 scale ,用于界定其边界。推荐使用 Collada .dae 文件, 也支持.stl文件,但必须为一个本地文件。
- <material> (可选)
- 可视化组件的材料。可以在link标签外定义,但必需在robot标签内,在link标签外定义时,需引用link的名字。
- <color>(可选)
- 颜色,由 red/green/blue/alpha 组成,大小范围在 [0,1] 内。
- <texture>(可选)
- 材料属性,由文件定义。
- <collision> (可选)
- 连杆的碰撞属性。碰撞属性和连杆的可视化属性不同,简单的碰撞模型经常用来简化计算。同一个连杆可以有多个碰撞属性标签,连杆的碰撞属性表示由其定义的几何图形集构成。
- name (可选)
- 指定连杆几何形状的名称
- <origin> (可选,defaults to identity if not specified)
- 碰撞组件的参考坐标系相对于连杆坐标系的参考坐标系。
- xyz (可选, 默认零向量)
- 表示 方向的偏置,单位为米。
- rpy (可选, defaults to identity if not specified)
- 表示坐标轴在RPY方向上的旋转,单位为弧度。
- <geometry>
- 与上述geometry元素描述相同
例子
<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>
2、joint
属性
- name (必需的)
指定joint的名字(唯一的) - type (必需的)
指定joint的类型,有下列选项:- revolute:可以绕着一个轴旋转的铰链关节,有最大值和最小值限制。
- continuous:连续型的铰链关节,可以绕一个轴旋转,没有最大值和最小值限制。
- prismatic:滑动关节,可以沿着一个轴滑动,有最大值和最小值限制。
- fixed:这不是一个实际的关节,因为它无法运动,所有的自由度都被锁定。这种类型的关节不需要指定轴、动力学特征、标度和最大值最小值限制。
- floating:这是一个具有6个自由度的关节。
- planar:此关节在一个平面内运动,垂线是运动轴。
子元素
-
<origin> (可选,defaults to identity if not specified)
从parent link到child link的变换,joint位于child link的原点,修改该参数可以调整连杆的位置,可用在调整实际模型与理论模型误差,但不建议大幅度修改,因为该参数影响连杆stl的位置,容易影响碰撞检测效果,具体如图所示。- xyz (可选: 默认为零向量)
代表 轴方向上的偏移,单位米。 - rpy (可选: 默认为零向量)
代表绕着固定轴旋转的角度:roll绕着x轴,pitch绕着y轴,yaw绕着z轴,用弧度表示。
- xyz (可选: 默认为零向量)
-
<parent> (必需)
- parent link的名字是一个强制的属性。
- link
- parent link的名字,是这个link在机器人结构树中的名字。
-
<child> (必需)
- child link的名字是一个强制的属性。
- link
- child link的名字,是这个link在机器人结构树中的名字。
-
<axis>(可选: 默认为(1,0,0))
- joint的axis轴在joint的坐标系中。这是旋转轴(revolute joint),prismatic joint移动的轴,是planar joint的标准平面。这个轴在joint坐标系中被指定。修改该参数可以调整关节的旋转所绕着的轴,常用于调整旋转方向,若模型旋向与实际相反,只需乘-1即可。固定(fixed)和浮动(floating)类型的joint不需要用到这个元素。
- xyz(必需)
- 代表轴向量的 分量,为标准化的向量。
-
<calibration> (可选)
- joint的参考点,用来矫正joint的绝对位置。
- rising (可选)
- 当joint正向运动时,参考点会触发一个上升沿。
- falling (可选)
- 当joint正向运动时,参考点会触发一个下降沿。
-
<dynamics>(可选)
- 该元素用来指定joint的物理性能。它的值被用来描述joint的建模性能,尤其是在仿真的时候。
- damping(可选,默认为0)
- joint的阻尼值。(移动关节为 ,旋转关节为 )
- friction(可选,默认为0)
- joint的摩擦力值(移动关节为 ,旋转关节为 )
-
<limit> (当关节为旋转或移动关节时为必需)
-
<mimic>(可选)
- 这个标签用于指定已定义的joint来模仿已存在的joint。这个joint的值可以用以下公式计算,此元素不在move_group中启用,使用会导致报错。
value = multiplier * other_joint_value + offset. - joint(可选)
- 需要模仿的joint的名字。
- multiplier(可选)
- 指定上述公式中的乘数因子。
- offset(可选)
- 指定上述公式中的偏移项。默认值为0(revolute joint的单位为弧度,prismatic joint的单位为米)。
- 这个标签用于指定已定义的joint来模仿已存在的joint。这个joint的值可以用以下公式计算,此元素不在move_group中启用,使用会导致报错。
-
<safety_controller> (可选)
- 该元素为安全控制限制,此元素下数据会读入到move_group中,但实际上时无效,move_group会跳过此处限制直接读取limit下的参数内容,同时设置该元素有几率会导致规划失败。
例子
<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>