10.4 transmission

元素transmission用于描述将执行器连接到关节并表示它们之间机械耦合的传动装置。

<transmission>元素是URDF机器人描述模型的扩展,用于描述执行器和关节之间的关系。该元素使得用户可以对齿轮比(gear ratios)和平行链接等概念进行建模。<transmission>元素会对作用力(effort)/流量(flow)变量进行转换,以使它们的乘积—功率保持不变。通过复杂的<transmission>元素,可以将多个执行器链接到多个关节。

下面是一个<transmission>元素的示例:

<transmission name="simple_trans">
  <type>transmission_interface/SimpleTransmission</type>
  <joint name="foo_joint">
    <hardwareInterface>EffortJointInterface</hardwareInterface>
  </joint>
  <actuator name="foo_motor">
    <mechanicalReduction>50</mechanicalReduction>
    <hardwareInterface>EffortJointInterface</hardwareInterface>
  </actuator>
</transmission>

10.4.1 属性

<transmission>元素只有一个必须的属性name,用于指定某个传动装置的唯一名称。

10.4.2 子元素

<transmission>元素具有以下3个子元素:

1、<type>子元素

该子元素只会出现一次,用于指定传动装置的类型。

2、<joint>子元素

该子元素可以出现一次或者多次,用于指定传动装置要连接到的关节。该关节是通过其name属性来指定的,且具有以下子元素:

(1)<hardwareInterface>子元素

该子元素可以出现一次或者多次,用于指定支持的关节空间硬件接口。请注意,当在Gazebo中加载这种传动装置时,这个标签的值应该是EffortJointInterface,而当在RobotHW中加载这种传动装置时,这个标签的值应该是hardware_interface/EffortJointInterface。

3、<actuator>子元素

该子元素可以出现一次或者多次,用于指定传动装置要连接到的行动器(actuator)。该行动器是通过其name属性指定的,且具有以下子元素:

(1)<mechanicalReduction>

可选子元素,用于指定关节/执行器传动装置的机械减少量。可能并非所有传动装置都需要此标签。

(2)<hardwareInterface>

可选子元素,可以出现一次或者多次,用于指定支持的关节空间硬件接口。请注意,只应在Indigo之前的ROS发行版中指定<hardwareInterface>标签。指定此标签的正确位置是在<joint>标签中。 可以在此处找到有关更多详细信息。

10.4.3 开发说明

目前,只有ros_control项目使用这个<transmission>元素。开发一种可以扩展到所有用例的更新<transimission>格式是一项复杂的工作,可以在此处查看更多详细信息。

10.5 gazebo

元素<gazebo>用于描述诸如阻尼、摩擦等仿真属性。

<gazebo>元素是URDF机器人描述格式的一个扩展,用于在仿真软件Gazebo中进行仿真。

有关<gazebo>元素的完整文档,请参阅教程“在Gazebo中使用URDF”。

10.6 sensor

元素<sensor>用于描述诸如相机、激光(ray)传感器等传感器。

*注:<sensor>元素已在URDF Dom中实现,但从未真正在应用程序中使用过。这是一个被放弃的项目,鼓励任何人重新捡起该项目并将其扩展到传感器硬件应用程序中。请对此做出贡献!

10.6.1 <sensor>元素

<sensor>元素用于描述视觉传感器(即相机/激光传感器)的基本属性。

下面是一个相机<sensor>元素的示例:

<sensor name="my_camera_sensor" update_rate="20">
  <parent link="optical_frame_link_name"/>
  <origin xyz="0 0 0" rpy="0 0 0"/>
  <camera>
    <image width="640" height="480" hfov="1.5708" format="RGB8" near="0.01" far="50.0"/>
  </camera>
</sensor>

而下面这个则是激光扫描(射线)<sensor>元素的示例:

<sensor name="my_ray_sensor" update_rate="20">
  <parent link="optical_frame_link_name"/>
  <origin xyz="0 0 0" rpy="0 0 0"/>
  <ray>
    <horizontal samples="100" resolution="1" min_angle="-1.5708" max_angle="1.5708"/>
    <vertical samples="1" resolution="1" min_angle="0" max_angle="0"/>
  </ray>
</sensor>

10.6.2 属性

<sensor>元素具有以下两个属性:

1、name属性

必选属性,其值为字符串,用于指定传感器本身的名称。

2、update_rate属性

可选属性,其值为浮点数,单位为赫兹(Hz),用于指定生成传感器数据的频率。如果未指定,则传感器将会在每个周期生成数据。

10.6.3 子元素

<sensor>元素有4个子元素:<parent>、<origin>、<camera>和<ray>。

1、<parent>子元素

必选子元素,用于指定传感器的父级链接。该子元素用一个数据类型为字符串的必选属性link来指定传感器要连接到的链接(即父级连接)名称。

2、<origin>子元素

可选子元素,如果未指定,则默认与父级链接的原点相同。该子元素用于指定相对于该传感器父级链接参考坐标系的光学传感器坐标系位姿。光学传感器坐标系采用z轴朝前、x轴向右和y周向下的坐标系约定。

该子元素又可以用以下两个子元素来描述:

(1)xyz

可选子元素,用于表达光学传感器参考坐标系原点对父级链接参考坐标系原点在xyz三个轴上的偏移量,默认为0向量。所有偏移量的单位均为米。

(2)rpy

可选子元素,用于表达光学传感器坐标系绕xyz三个固定轴的旋转角度即横滚角(roll)、俯仰角(pitch)和偏航角(yaw),单位为弧度。如果未指定该子元素的值,则默认情况下为0向量,即不绕三个轴旋转或与父级链接参考坐标系的三个轴方向相同。

3、<camera>子元素

可选子元素,用于指定相机传感器,该元素包括一个子元素即image子元素。

(1)image子元素

必选子元素,具有以下6个必选属性:

width属性

用于指定相机图像以像素为单位的宽度,数据类型为无符号整型。

②height属性

用于指定相机图像以像素为单位的高度,数据类型为无符号整型。

③format属性

用于指定相机图像格式,数据类型为字符串,其值可以是sensor_msgs软件包内image_encoding.h中定义的任何字符串。

④hfov属性

用于指定相机的水平视场角,单位为弧度,数据类型为浮点型。

⑤near属性

用于指定相机中心点到其视锥体近裁切面的垂直距离,单位为米,数据类型为浮点型。

⑥far属性

用于指定相机中心点到其视锥体远裁切面的垂直距离,单位为米,数据类型为浮点型,其值必须大于或等于near属性值。

4、<ray>子元素

可选子元素,用于指定激光扫描(射线)传感器。该子元素又有以下2个子元素:

(1)horizontal子元素

可选子元素,用于指定水平激光扫描或射线,具有4个可选属性:

①samples属性

用于指定每个完整的激光扫描周期生成的仿真光线数,数据类型为无符号整型,默认值为1。

②resolution属性

用于指定激光扫描的分辨率,默认值为1,数据类型为浮点型。此属性值乘以samples属性值以确定返回的距离数据点的数量。如果分辨率小于1,则会对距离数据进行插值。如果分辨率大于1,则会对距离数据求平均值

③min_angle属性

用于指定激光扫描的最小角度,默认值为0,单位为弧度,数据类型为浮点型。

④max_angle属性

用于指定激光扫描的最大角度,默认值为0,单位为弧度,数据类型为浮点型。此属性值必须大于或等于min_angle属性值。

(2)vertical子元素

可选子元素,用于指定垂直激光扫描或射线,具有4个可选属性:

①samples属性

用于指定每个完整的激光扫描周期生成的仿真光线数,数据类型为无符号整型,默认值为1。

②resolution属性

用于指定激光扫描的分辨率,默认值为1,数据类型为浮点型。此属性值乘以samples属性值以确定返回的距离数据点的数量。如果分辨率小于1,则会对距离数据进行插值。如果分辨率大于1,则会对距离数据求平均值。

③min_angle属性

用于指定激光扫描的最小角度,默认值为0,单位为弧度,数据类型为浮点型。

④max_angle属性

用于指定激光扫描的最大角度,默认值为0,单位为弧度,数据类型为浮点型。此属性值必须大于或等于min_angle属性值。

10.6.4 推荐的相机或激光扫描分辨率

仿真中,大型传感器会降低仿真的整体性能。根据所需的更新频率,建议将相机或激光扫描的分辨率和更新频率设置得尽可能低。

英语原文地址:wiki.ros.org/urdf/XML