visual for joints in URDF cause collision checking and make link selectable in rviz

1,188 views
Skip to first unread message

Peter Schueller

unread,
Jun 26, 2013, 4:42:03 AM6/26/13
to moveit-users
Dear all,

I do motion planning for two robots in MoveIt.

As planar and free joints are not handled by the URDF parser (there is
no code to treat them) I use a virtual "world link" and for each robot
a prismatic "x coordinate" and a prismatic "y coordinate" and a
rotational "theta" joint.

To see the orientation of the links between these joints I added
visuals to them, without visuals a link is not visible in the moveit
rviz plugin.

However the visuals cause collision checking, so I need to add
collision check disabling directives.

Why can a link be considered for collision checking if it has no
<collision> tag in URDF?

Why are links only displayed in the rviz plugin if they have a
<visual> tag? (Displaying their TF can be useful even if they are
"virtual" as in my case.)

Remark: I could not use a true "virtual" joint in SRDF as this would
make my URDF have two root links ... that's why I manually
reconstructed the virtual planar joint.

Now I got an additional problem: the (virtual) links between my
prismatic joints collide with objects in the environment (they have no
<collision> element), but the names of these objects are not know in
URDF, so if I specify them in SRDF I get an error "Link 'pay' is not
known to URDF. Cannot disable collisons.".

Best,
Peter

Ioan Sucan

unread,
Jun 26, 2013, 6:29:45 AM6/26/13
to Peter Schueller, moveit-users
On Wed, Jun 26, 2013 at 11:42 AM, Peter Schueller <schue...@gmail.com> wrote:
Dear all,

I do motion planning for two robots in MoveIt.

As planar and free joints are not handled by the URDF parser (there is
no code to treat them)

erm... what do you mean? They are in the URDF spec and I used that code just recently.
 
I use a virtual "world link" and for each robot
a prismatic "x coordinate" and a prismatic "y coordinate" and a
rotational "theta" joint.

This should not be needed.
 
To see the orientation of the links between these joints I added
visuals to them, without visuals a link is not visible in the moveit
rviz plugin.

Moveit defaults to displaying visual tags.
 
However the visuals cause collision checking, so I need to add
collision check disabling directives.

Why can a link be considered for collision checking if it has no
<collision> tag in URDF?

When there is no <collision>  tag, the <visual> tag is used for collision detection.

Why are links only displayed in the rviz plugin if they have a
<visual> tag? (Displaying their TF can be useful even if they are
"virtual" as in my case.)
only <visual> tags are displayed.
 

Remark: I could not use a true "virtual" joint in SRDF as this would
make my URDF have two root links ... that's why I manually
reconstructed the virtual planar joint.

Why would that be a problem?
 
Now I got an additional problem: the (virtual) links between my
prismatic joints collide with objects in the environment (they have no
<collision> element), but the names of these objects are not know in
URDF, so if I specify them in SRDF I get an error "Link 'pay' is not
known to URDF. Cannot disable collisons.".
This is a missing feature. We should have the name '*'  or 'any' mean anything.

Ioan

Best,
Peter

Peter Schueller

unread,
Jun 26, 2013, 6:56:30 AM6/26/13
to Ioan Sucan, moveit-users
Hi Ioan,

On Wed, Jun 26, 2013 at 1:29 PM, Ioan Sucan <isu...@willowgarage.com> wrote:
>
>
>
> On Wed, Jun 26, 2013 at 11:42 AM, Peter Schueller <schue...@gmail.com>
> wrote:
>>
>> Dear all,
>>
>> I do motion planning for two robots in MoveIt.
>>
>> As planar and free joints are not handled by the URDF parser (there is
>> no code to treat them)
>
>
> erm... what do you mean? They are in the URDF spec and I used that code just
> recently.
>

I got the message "Converting unknown joint type of joint 'planar'
into a fixed joint"

I use groovy, perhaps this is implemented only after groovy?

I found the error message in the (diamondback) source at
http://mirror.umd.edu/roswiki/doc/diamondback/api/kdl_parser/html/kdl__parser_8cpp_source.html

>>
>> I use a virtual "world link" and for each robot
>> a prismatic "x coordinate" and a prismatic "y coordinate" and a
>> rotational "theta" joint.
>>
> This should not be needed.
>
>>
>> To see the orientation of the links between these joints I added
>> visuals to them, without visuals a link is not visible in the moveit
>> rviz plugin.
>>
> Moveit defaults to displaying visual tags.
>
>>
>> However the visuals cause collision checking, so I need to add
>> collision check disabling directives.
>>
>> Why can a link be considered for collision checking if it has no
>> <collision> tag in URDF?
>>
> When there is no <collision> tag, the <visual> tag is used for collision
> detection.

Can I make a visual but not collideable link by adding an empty
<collision> tag to the link?

>
>> Why are links only displayed in the rviz plugin if they have a
>> <visual> tag? (Displaying their TF can be useful even if they are
>> "virtual" as in my case.)
>
> only <visual> tags are displayed.
>
>>
>>
>> Remark: I could not use a true "virtual" joint in SRDF as this would
>> make my URDF have two root links ... that's why I manually
>> reconstructed the virtual planar joint.
>>
> Why would that be a problem?

Because with two root links I get the error message

Error: Failed to find root link: Two root links found:
[base_footprint_y2] and [world_origin]
at line 216 in
/tmp/buildd/ros-groovy-urdfdom-0.2.7-0precise-20130326-0224/urdf_parser/src/model.cpp

And a NULL URDF model is returned by the parser.

Best,
Peter

Ioan Sucan

unread,
Jun 26, 2013, 7:01:16 AM6/26/13
to Peter Schueller, Ioan Sucan, moveit-users
Hello Peter,

The KDL parser indeed does not support this type of joints. This will cause some issues with tf being broadcasted correctly. But if you use the models only in moveit, things should work fine.
Unfortunately, the way things are now is that if any geometry can be found for a link, it is used for collision checking. This is because some times people make models that look fine, but have no collision information. Perhaps that decision should be reverted though, to allow you do make such changes.

For the two roots -- sorry, I assumed you were adding a virtual root link for the two 'roots'.

Ioan

Peter Schueller

unread,
Jun 26, 2013, 9:04:39 AM6/26/13
to Ioan Sucan, Ioan Sucan, moveit-users
Thank you, yes, for the moment I will remove the <visual> and then it
works as expected.
Reply all
Reply to author
Forward
0 new messages