# Link pose, Visual pose and Collision pose

i am trying to build a simple manipulator but am not able to completely understand how to build the .sdf file(I know that Solid Works can be used to do that, but I want to do it on my own). What is the difference between Link pose, collision pose and visual pose? There are many other doubts that I have but want to start with this one.

edit retag close merge delete

Sort by » oldest newest most voted

Thank you Kumpakri for the reply it helped a lot. I didn't get this part of the answer. "If I remember correctly, for SDF file is collision part the base (but rather try it yourself). And you can position the visual and inertial parts with respect to the center of the collision geometry."
Also I still cannot understand how to define the collision pose. So I understand that the link's pose is w.r.t. the model and the inertial pose is the COM wrt the link's origin. But how is the collision frame defined (so that we can find its pose wrt the link's frame.)

more

1

Yes, the explanation was not clear. I have edited the answer. See if it makes sense now. If you want to comment to an answer, please, use the add a comment button under the answer. If you are satisfied with the answer, click the check-mark button at the top left of the respective answer.

( 2019-05-20 00:49:09 -0500 )edit

Your robot model consists of 3 parts.

• visual (used by rendering library to visualize the robot)
• collision (used by physics engine to check contacts between objects in the world)
• inertial (used by physics engine to compute all the physics of the simulation)

If I remember correctly, for SDF file is collision part the base (but rather try it yourself). And you can position the visual and inertial parts with respect to the center of the collision geometry.

So lets say you have a wheeled robot. For the collision geometry of a wheel you use simple primitive cylinder, because that makes the computation faster. For the visuals you have generated nice mesh geometry of the wheels, but you have centered it poorly. The center of the mesh is 1 cm away from the wheel center in the x axis. And now if you put the visual mesh without any pose adjustment into the model, it is shifted away from the place you want it to be. It sticks out of the robot. It doesn't have any effect on the simulation, because the collision geometry is positioned correctly (if you switch the visualization of collisions on, you will see the collision cylinder and the wheel mesh 1cm shifted from each other). So you can just specify the pose of the visual geometry as <pose frame=''>-0.01 0 0 0 -0 0</pose> and the visuals will align.

EDIT

I will show you on an example how SDF works.

Here is an SDF file:

<?xml version='1.0'?>
<sdf version='1.6'>
<model name='test'>
<pose frame=''>0 0 0 0 -0 0</pose>
<inertial>
<mass>0.10669</mass>
<inertia>
<ixx>0.00676935</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.00676935</iyy>
<iyz>0</iyz>
<izz>0.0133363</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>

<visual name='visual'>
<geometry>
<cylinder>
<length>0.10669</length>
</cylinder>
</geometry>
<pose frame=''>0 0 0 0 -0 0</pose>
</visual>

<collision name='collision'>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<length>0.10669</length>
</cylinder>
</geometry>
</collision>

<pose frame=''>0.0 0.0 0.40 0 0 0</pose>
<inertial>
<mass>0.10669</mass>
<inertia>
<ixx>0.00676935</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.00676935</iyy>
<iyz>0</iyz>
<izz>0.0133363</izz>
</inertia>
<pose frame=''>0 0 0 0 -0 0</pose>
</inertial>

<visual name='visual'>
<geometry>
<cylinder>
<length>0.10669</length>
</cylinder>
</geometry>
<pose frame=''>0 0 0 0 -0 0</pose>
</visual>

<collision name='collision'>
<pose frame=''>0 0 0 0 -0 0</pose>
<geometry>
<cylinder>
<length>0.10669</length>
</cylinder>
</geometry>
</collision>

<joint name='joint0' type='fixed'>
<pose frame=''>0 0 0 0 -0 0</pose>
</joint>

</model>
</sdf>


It has two links and a fixed joint ...

more