ROS 中的 joint 和 link

ROS 中的 joint 和 link

在实际使用 urdf 描述机器人时,老是忘记它们的关系,这里做一个记录,争取一次理清楚二者关系。
首先编写一个简单的 urdf 文件,并编写 launch 文件加载 urdf 模型在 rviz 中显示。
urdf 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) 
     Commit Version: 1.6.0-1-g15f4949  Build Version: 1.6.7594.29634
     For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot name="test_joint_link">
    <link name="link1">
        <visual>
            <origin xyz="0 0 0.5" 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>
    </link>

    <joint name="link1_link2" type="continuous">
        <origin xyz="0 0 1" rpy="0 0 3.1416"/>
        <parent link="link1"/>
        <child link="link2"/>
        <axis xyz="0 0 1"/>
    </joint>

    <link name="link2">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
            <cylinder radius="0.1" length="0.08"  />
            </geometry>
            <material name="Cyan">
            <color rgba="0 1.0 1.0 1.0"/>
            </material>
        </visual>
    </link>
</robot>

urdf 中加载了两个 link,并通过 joint 将 link 连接起来。

<launch>
  <arg
    name="model" />
  <param
    name="robot_description"
    textfile="$(find ranger_mini)/urdf/test_joint_link.urdf" />
  <node
    name="joint_state_publisher_gui"
    pkg="joint_state_publisher_gui"
    type="joint_state_publisher_gui" />
  <node
    name="robot_state_publisher"
    pkg="robot_state_publisher"
    type="robot_state_publisher" />
  <node
    name="rviz"
    pkg="rviz"
    type="rviz"
    args="-d $(find ranger_mini)/test_joint_link.rviz"
     />
</launch>

ROS 中的 joint 和 link_第1张图片

为了方便理解,我们将每一个 link 视为一个部件,每一个 joint 视为一个坐标系。
launch 文件加载 urdf 模型并启动 rviz 显示加载模型。对于每个 urdf 文件来说,会有一个根 link,该 link 的参考 rviz 中 fixed_frame 坐标系,这里可以理解为大地坐标系。
我们注意到,在 link 和 joint 中均有 origin这个参数,这里也是容易产生混淆的地方。
其中每一个 joint 都参考 parent link 所在的 joint ,也就是 parent link 所在的坐标系进行偏移旋转等操作。link本身的偏移参考自身的 joint 坐标系。根 link 中 origin 参数参考fixed_frame进行调整,对于其他 link,查看它是哪一级 joint 的 child_link,相应的该 link 就在该级 joint 中进行调整。

你可能感兴趣的:(自动驾驶,人工智能,机器学习)