ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

At the moment, it looks like the only workaround is to 1) define the link in your URDF where you want the marker to be placed, and 2) to define your robot planning group like this in the SRDF, and to have no end effector for this group:

<group name="your_robot">
    <joint name="your_robot_shoulder_pan_joint" />
    <joint name="your_robot_shoulder_lift_joint" />
    <joint name="your_robot_elbow_joint" />
    <joint name="your_robot_wrist_1_joint" />
    <joint name="your_robot_wrist_2_joint" />
    <joint name="your_robot_wrist_3_joint" />
    <chain base_link="your_robot_base_link" tip_link="your_robot_tool_point_link" />
</group>

The marker will be placed at the tip_link frame if no end effector has this group as its parent, or has one of the links set as its parent_link.

At the moment, it looks like the only workaround is you have two options. For both of these you first need to 1) define the a link in your URDF where at which you want the marker to be placed, and 2) to define e.g. your_robot_tool_point_link.

A) Without end effector group

Define your robot planning group using a chain of links like this in the SRDF, and to have no end effector for this group:

<group name="your_robot">
    <joint name="your_robot_shoulder_pan_joint" />
    <joint name="your_robot_shoulder_lift_joint" />
    <joint name="your_robot_elbow_joint" />
    <joint name="your_robot_wrist_1_joint" />
    <joint name="your_robot_wrist_2_joint" />
    <joint name="your_robot_wrist_3_joint" />
    <chain base_link="your_robot_base_link" tip_link="your_robot_tool_point_link" />
</group>

The marker will be placed at the tip_link frame if no end effector has this group as its parent, or has one of the links set as its parent_link.

2) With end effector group

If you define an end effector group in your SRDF, the interactive marker will be placed at the parent_link, so you can write this:

 <end_effector name="your_robot_ee_name" parent_link="your_robot_tool_point_link" group="your_robot_ee" parent_group="your_robot" />

At the moment, it looks like you have two options. For both of these you first need to define a link in your URDF at which you want the marker to be placed, e.g. your_robot_tool_point_link.

A) Without end effector group

Define your robot planning group using a chain of links like this in the SRDF, and have no end effector for this group:

<group name="your_robot">
    <joint name="your_robot_shoulder_pan_joint" />
    <joint name="your_robot_shoulder_lift_joint" />
    <joint name="your_robot_elbow_joint" />
    <joint name="your_robot_wrist_1_joint" />
    <joint name="your_robot_wrist_2_joint" />
    <joint name="your_robot_wrist_3_joint" name="your_robot_joint_1" />
    <joint name="your_robot_joint_2" />
    <joint name="your_robot_joint_3" />
    <joint name="your_robot_joint_4" />
    <joint name="your_robot_joint_5" />
    <joint name="your_robot_joint_6" />
    <chain base_link="your_robot_base_link" tip_link="your_robot_tool_point_link" />
</group>

The marker will be placed at the tip_link frame if no end effector has this group as its parent, or has one of the links set as its parent_link.

2) With end effector group

If you define an end effector group in your SRDF, the interactive marker will be placed at the parent_link, so you can write this:

 <end_effector name="your_robot_ee_name" parent_link="your_robot_tool_point_link" group="your_robot_ee" group="your_robot_ee_group" parent_group="your_robot" />

If you want multiple interactive markers on your robot, you can define multiple end_effector tags that use the same your_robot_ee_group. If you don't have a group, you can define this hacky one, although you can't use this to plan:

<group name="your_robot_dummy_group">
    <joint name="your_robot_joint_1" />
</group>