Manipulator with multiple tip_links in SRDF.

asked 2019-10-25 04:16:26 -0600

machinekoder gravatar image

updated 2019-10-25 04:19:46 -0600

I have a robot manipulator with one effector and two tip links (tool0,tool1). My tool has 4 fingers mounted in 2 pairs in a 90-degree angle. So there is no actuated joint between those two tip links, both finger pairs are actuated by the same gripper.

What I want to achieve is to make planning to both tip links possible in MoveIt. I managed to get both displayed in RViz by specifying 2 end-effectors. However, I get some complaints on the console output.

[ WARN] [1571994439.576069188]: Could not identify parent group for end-effector 'gripper0'
[ WARN] [1571994439.576094887]: Could not identify parent group for end-effector 'gripper1'
[ERROR] [1571994439.576049115]: Group 'manipulator' was specified as parent group for end-effector 'gripper0' but it does not include the parent link 'tool0'
[ERROR] [1571994439.576085790]: Group 'manipulator' was specified as parent group for end-effector 'gripper1' but it does not include the parent link 'tool1'

My SRDF looks as follows.

<group name="manipulator">
<chain base_link="borunte_stand_link" tip_link="flange" />
</group>
<group name="gripper0">
<joint name="flange-tool0"/>
<link name="tool0" />
</group>
<group name="gripper1">
<joint name="flange-tool1"/>
<link name="tool1" />
</group>
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<end_effector name="gripper0" parent_link="tool0" group="gripper0" parent_group="manipulator"/>
<!--<end_effector name="gripper0" parent_link="flange" group="gripper0" parent_group="manipulator" />-->
<end_effector name="gripper1" parent_link="tool1" group="gripper1" parent_group="manipulator" />

Here is how it looks in RViz

image description

Any ideas on how to make this work correctly?

NOTE: I noticed that I can make one of the error messages go away by specifying tool0 as the tip_link in the manipulator chain. However, adding and the additional link tool1 or joint breaks the kinematic chain.

edit retag flag offensive close merge delete

Comments

The whole SRDF can be found here: SRDF and the URDF here: URDF files

machinekoder gravatar imagemachinekoder ( 2019-10-25 04:26:20 -0600 )edit
1

I have a robot manipulator with one effector and two tip links (tool0,tool1).

just a comment: it's not accepted yet (nor submitted), but see Coordinate Frames for Serial Industrial Manipulators: Application-Specific Tool Frames for why using toolN for actual application tool frames is strongly discouraged.

Edit: if you just happen to use the name tool0 and tool1 for frames on your robot, but are not concerned by any of the ideas described in that REP, then please ignore my comment of course.

gvdhoorn gravatar imagegvdhoorn ( 2019-10-25 05:04:03 -0600 )edit

Thanks. So the way to go is to move tool0 to the flange position and to convert the application EEF to the tool0 frame before planning? Would I drag around tool0 or one of the EEF's in RViz?

machinekoder gravatar imagemachinekoder ( 2019-10-26 10:36:56 -0600 )edit

Note that this question might be related to: https://answers.ros.org/question/3136...

The Moveit RViz plugin always seems to position the virtual marker at the end effector parent_link. That explains why my first attempt at defining two end effectors with the actual tool eefs as parent_link worked for the visualization RViz.

I'm still not sure what is the correct way to make this work with Moveit and RViz.

machinekoder gravatar imagemachinekoder ( 2019-10-26 13:45:39 -0600 )edit

So the way to go is to move tool0 to the flange position

if that is where your robot controller has its "unconfigured / all-zeros" toolframe, then: yes. tool0 should correspond to the all-zeros toolframe position.

and to convert the application EEF to the tool0 frame before planning?

If you mean: manually transforms all target poses for the EEF to tool0, then: no.

My suggestion would be to remove your tool1, add two new toolframes with appropriate names (or perhaps gripper0 and gripper1 already capture the semantics of those toolframes sufficiently) and make flange the parent of both those new toolframes.

That would get everything compliant with the (future) REP (on the tool side, I don't know about the rest of your robot).

gvdhoorn gravatar imagegvdhoorn ( 2019-10-27 05:37:56 -0600 )edit

Okay, this makes sense. However, I couldn't get Moveit to use those 2 EEFs, at least not in RViz.

machinekoder gravatar imagemachinekoder ( 2019-10-29 11:41:07 -0600 )edit