通过Moveit!创建的文件--srdf文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjiali12011/article/details/78926620

上一篇我们通过Moveit!设置助手获取了Moveit!配置包,在配置包的config文件夹中,有在演示模式里测试机械臂导航的所有配置文件。

SRDF文件

命名方式为<your robot>.srdf,例如上篇所导出的配置包内,srdf文件的文件名为seven_dof_arm.srdf

srdf文件全称'Semantic Robot Description Format',机器人语义描述格式。与urdf不同,但是在大多数的使用情况下更实用,它包含了语义信息的成分。

srdf是一个纯文本的文件,可以通过文本编辑器查阅。srdf文件包含的标签很多,几个关键的标签定义如下:

1.1<robot>

整个文档的根标签,所有的信息都包含在这个标签下。

<robot name="seven_dof_arm">

1.2<group>

对应一个规划组,呈现了组里的关节,连杆等。

上篇中的机械臂被分为了两个规划组,‘arm'和'gripper'。

 机械臂‘arm’部分:

<group name="arm">
        <chain base_link="base_link" tip_link="grasping_frame" />
    </group>


夹持器‘gripper'部分:

<group name="gripper">
        <link name="gripper_finger_link1" />
        <link name="gripper_finger_link2" />
        <joint name="finger_joint1" />
        <joint name="finger_joint2" />
    </group>


对比上篇在配置助手中对规划组的设置,可以看出是完全一致的。

1.3<group_state>

预设位姿信息。在上篇中我随意设置了一个命名为'a'的位姿,在这个标签下可以查看到具体的关节角度信息。

<group_state name="a" group="arm">
        <joint name="elbow_pitch_joint" value="1.3778" />
        <joint name="elbow_roll_joint" value="-0.0786" />
        <joint name="gripper_roll_joint" value="-0.267" />
        <joint name="shoulder_pan_joint" value="0.3035" />
        <joint name="shoulder_pitch_joint" value="-0.0852" />
        <joint name="wrist_pitch_joint" value="-1.3138" />
        <joint name="wrist_roll_joint" value="-0.0319" />
    </group_state>


1.4<end effector>

标明了末端执行器的规划组及其父极连杆。

<end_effector name="robot_eef" parent_link="grasping_frame" group="gripper" parent_group="arm" />


1.5<disable_collisions>

存储了在经过碰撞检测后的结果。

附seven_dof_arm.srdf

<?xml version="1.0" ?>
<!--This does not replace URDF, and is not an extension of URDF.
    This is a format for representing semantic information about the robot structure.
    A URDF file must exist for this robot as well, where the joints and the links that are referenced are defined
-->
<robot name="seven_dof_arm">
    <!--GROUPS: Representation of a set of joints and links. This can be useful for specifying DOF to plan for, defining arms, end effectors, etc-->
    <!--LINKS: When a link is specified, the parent joint of that link (if it exists) is automatically included-->
    <!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
    <!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
    <!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
    <group name="arm">
        <chain base_link="base_link" tip_link="grasping_frame" />
    </group>
    <group name="gripper">
        <link name="gripper_finger_link1" />
        <link name="gripper_finger_link2" />
        <joint name="finger_joint1" />
        <joint name="finger_joint2" />
    </group>
    <!--GROUP STATES: Purpose: Define a named state for a particular group, in terms of joint values. This is useful to define states like 'folded arms'-->
    <group_state name="a" group="arm">
        <joint name="elbow_pitch_joint" value="1.3778" />
        <joint name="elbow_roll_joint" value="-0.0786" />
        <joint name="gripper_roll_joint" value="-0.267" />
        <joint name="shoulder_pan_joint" value="0.3035" />
        <joint name="shoulder_pitch_joint" value="-0.0852" />
        <joint name="wrist_pitch_joint" value="-1.3138" />
        <joint name="wrist_roll_joint" value="-0.0319" />
    </group_state>
    <!--END EFFECTOR: Purpose: Represent information about an end effector.-->
    <end_effector name="robot_eef" parent_link="grasping_frame" group="gripper" parent_group="arm" />
    <!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. -->
    <disable_collisions link1="base_link" link2="bottom_link" reason="Adjacent" />
    <disable_collisions link1="base_link" link2="elbow_roll_link" reason="Never" />
    <disable_collisions link1="base_link" link2="grasping_frame" reason="Never" />
    <disable_collisions link1="base_link" link2="gripper_finger_link1" reason="Never" />
    <disable_collisions link1="base_link" link2="gripper_finger_link2" reason="Never" />
    <disable_collisions link1="base_link" link2="gripper_roll_link" reason="Never" />
    <disable_collisions link1="base_link" link2="shoulder_pan_link" reason="Adjacent" />
    <disable_collisions link1="base_link" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="base_link" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="bottom_link" link2="elbow_roll_link" reason="Never" />
    <disable_collisions link1="bottom_link" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="bottom_link" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="elbow_roll_link" reason="Adjacent" />
    <disable_collisions link1="elbow_pitch_link" link2="grasping_frame" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="gripper_finger_link1" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="gripper_finger_link2" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="gripper_roll_link" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="elbow_pitch_link" link2="wrist_roll_link" reason="Adjacent" />
    <disable_collisions link1="elbow_roll_link" link2="grasping_frame" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="gripper_finger_link1" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="gripper_finger_link2" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="gripper_roll_link" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="shoulder_pitch_link" reason="Adjacent" />
    <disable_collisions link1="elbow_roll_link" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="elbow_roll_link" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="grasping_frame" link2="gripper_finger_link1" reason="Never" />
    <disable_collisions link1="grasping_frame" link2="gripper_roll_link" reason="Adjacent" />
    <disable_collisions link1="grasping_frame" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="grasping_frame" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="grasping_frame" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="grasping_frame" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="gripper_finger_link2" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="gripper_roll_link" reason="Adjacent" />
    <disable_collisions link1="gripper_finger_link1" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link1" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="gripper_roll_link" reason="Adjacent" />
    <disable_collisions link1="gripper_finger_link2" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="gripper_finger_link2" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="gripper_roll_link" link2="shoulder_pan_link" reason="Never" />
    <disable_collisions link1="gripper_roll_link" link2="shoulder_pitch_link" reason="Never" />
    <disable_collisions link1="gripper_roll_link" link2="wrist_pitch_link" reason="Adjacent" />
    <disable_collisions link1="gripper_roll_link" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="shoulder_pan_link" link2="shoulder_pitch_link" reason="Adjacent" />
    <disable_collisions link1="shoulder_pan_link" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="shoulder_pan_link" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="shoulder_pitch_link" link2="wrist_pitch_link" reason="Never" />
    <disable_collisions link1="shoulder_pitch_link" link2="wrist_roll_link" reason="Never" />
    <disable_collisions link1="wrist_pitch_link" link2="wrist_roll_link" reason="Adjacent" />
</robot>

参考资料:

1.《ros_by_example》第二册11.11章

2.srdf-ROS wiki              https://ros.wiki.org/srdf

猜你喜欢

转载自blog.csdn.net/zhangjiali12011/article/details/78926620