Home | Tutorials | Wiki | Issues
Ask Your Question
0

Link pose, Visual pose and Collision pose

asked 2019-05-15 08:09:44 -0500

Viktor gravatar image

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 flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
0

answered 2019-05-17 09:36:17 -0500

Viktor gravatar image

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.)

edit flag offensive delete link more

Comments

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. comment button If you are satisfied with the answer, click the check-mark button at the top left of the respective answer. comment button

kumpakri gravatar imagekumpakri ( 2019-05-20 00:49:09 -0500 )edit
0

answered 2019-05-17 08:43:09 -0500

kumpakri gravatar image

updated 2019-05-20 00:42:29 -0500

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'>
    <link name='link1'>
      <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>
            <radius>0.5</radius>
            <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>
            <radius>0.5</radius>
            <length>0.10669</length>
          </cylinder>
        </geometry>
      </collision>
    </link>


    <link name='link2'>
      <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>
            <radius>0.5</radius>
            <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>
            <radius>0.5</radius>
            <length>0.10669</length>
          </cylinder>
        </geometry>
      </collision>
    </link>

    <joint name='joint0' type='fixed'>
      <parent>link1</parent>
      <child>link2</child>
      <pose frame=''>0 0 0 0 -0 0</pose>
    </joint>

  </model>
</sdf>

It has two links and a fixed joint ... (more)

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower

Stats

Asked: 2019-05-15 08:09:44 -0500

Seen: 132 times

Last updated: May 20