Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

Sequence of two revolute joints allows link to "bounce" linearly

I am using the (rather simple) SDF I have included at the bottom of this post. When I load it into Gazebo 9.0, the "base_turret" link bounces vertically immediately on load. My (apparently flawed) understanding was that rotational joints shouldn't allow movement which is not rotation around their axis, and thus my link should be able to only rotate, and should do so along two axes (pitch and yaw). What's going on here? What am I missing about joint behavior?

image description

<sdf version='1.6'>
  <model name='demo'>
    <link name='base_center'>
      <pose frame=''>0 0 0 0 -0 0</pose>
      <inertial>
        <pose frame=''>0 0 0.2 0 -0 0</pose>
        <mass>15</mass>
        <inertia>
          <ixx>100</ixx>
          <ixy>0</ixy>
          <ixz>0</ixz>
          <iyy>100</iyy>
          <iyz>0</iyz>
          <izz>100</izz>
        </inertia>
      </inertial>
      <collision name='base_center_collision'>
        <pose frame=''>0 0 0 0 -0 0</pose>
        <geometry>
          <box>
            <size>0.5 0.5 0.1</size>
          </box>
        </geometry>
      </collision>
      <visual name='base_center_visual'>
        <pose frame=''>0 0 0 0 -0 0</pose>
        <geometry>
          <box>
            <size>0.5 0.5 0.1</size>
          </box>
        </geometry>
      </visual>
    </link>
    <link name='base_turret_yaw'>
      <pose frame=''>0 0 0 0 -0 0</pose>
      <inertial>
        <pose frame=''>0 0 0 0 -0 0</pose>
        <mass>1e-05</mass>
        <inertia>
          <ixx>0</ixx>
          <ixy>0</ixy>
          <ixz>0</ixz>
          <iyy>0</iyy>
          <iyz>0</iyz>
          <izz>0</izz>
        </inertia>
      </inertial>
    </link>
    <joint name='turret_yaw_joint' type='revolute'>
      <child>base_turret_yaw</child>
      <parent>base_center</parent>
      <axis>
        <xyz>0 0 1</xyz>
      </axis>
    </joint>
    <link name='base_turret'>
      <pose frame=''>0 0 0.5 0 -0 0</pose>
      <inertial>
        <pose frame=''>0.1 0 0.05 0 -0 0</pose>
        <mass>5</mass>
        <inertia>
          <ixx>100</ixx>
          <ixy>0</ixy>
          <ixz>0</ixz>
          <iyy>100</iyy>
          <iyz>0</iyz>
          <izz>100</izz>
        </inertia>
      </inertial>
      <visual name='base_turret_visual'>
        <pose frame=''>0 0 0 0 -0 0</pose>
        <geometry>
          <box>
            <size>0.1 0.02 0.02</size>
          </box>
        </geometry>
      </visual>
    </link>
    <joint name='turret_pitch_joint' type='revolute'>
      <child>base_turret</child>
      <parent>base_turret_yaw</parent>
      <axis>
        <xyz>0 1 0</xyz>
      </axis>
    </joint>
  </model>
</sdf>