<?xml version="1.0"?>
<sdf xmlns:drake="http://drake.mit.edu" version="1.7">
  <model name="test_robot">
    <!-- This sdf file defines a simple test robot with multiple links so that
         we can test visuals and collisions are properly added to each link.
         Values in <inertial> are not important for this test model since
         it's only to test the parsing of visuals and collisions into a
         MultibodyPlant.
         This file is meant to be kept in sync with the corresponding unit
         test file multibody_plant_sdf_parser_test.cc -->
    <!-- We will define the model frame as `M`. The parent, which tends to be
         the world, will be denoted as `P`.
         Because there is no <pose> tag at the root level, `X_PM` will be
         identity. -->
    <link name="link1">
      <!-- We will denote this link frame as `L1`.
           Since there is no pose and no joints referring to this link,
           X_ML1 will be identity. -->
      <visual name="link1_visual1">
        <geometry>
          <sphere>
            <radius>1.0</radius>
          </sphere>
        </geometry>
      </visual>
      <visual name="link1_visual2">
        <geometry>
          <mesh>
            <uri>package://drake/multibody/parsing/test/tri_cube.obj</uri>
          </mesh>
        </geometry>
      </visual>
      <collision name="link1_collision1">
        <pose>0.0 0.0 0.0 0.0 0.0 0.0</pose>
        <geometry>
          <plane>
            <normal>1.0 2.0 3.0</normal>
          </plane>
        </geometry>
        <surface>
          <friction>
            <ode>
              <mu>0.8</mu>
              <mu2>0.3</mu2>
            </ode>
          </friction>
        </surface>
      </collision>
      <collision name="link1_collision2">
        <geometry>
          <sphere>
            <radius>1.0</radius>
          </sphere>
        </geometry>
        <surface>
          <friction>
            <ode>
              <mu>1.5</mu>
              <mu2>0.6</mu2>
            </ode>
          </friction>
        </surface>
      </collision>
    </link>
    <!-- Link 2 has no collision geometry. Even though it is not needed, we
         explicitly state it with an <empty/> tag for testing purposes. -->
    <link name="link2">
      <visual name="link2_visual1">
        <geometry>
          <sphere>
            <radius>1.0</radius>
          </sphere>
        </geometry>
      </visual>
      <visual name="link2_visual2">
        <geometry>
          <cylinder>
            <radius>0.5</radius>
            <length>2.0</length>
          </cylinder>
        </geometry>
      </visual>
      <visual name="link2_visual3">
        <geometry>
          <plane>
            <normal>1 2 3</normal>
          </plane>
        </geometry>
      </visual>
      <collision name="link2_collision">
        <geometry>
          <empty/>
        </geometry>
      </collision>
    </link>
    <!-- Link 3 has no visuals. Even though it is not needed, we explicitly
         state it with an <empty/> tag for testing purposes. -->
    <link name="link3">
      <visual name="link3_visual1">
        <geometry>
          <empty/>
        </geometry>
      </visual>
      <collision name="link3_collision">
        <geometry>
          <box>
            <size>1.0 2.0 3.0</size>
          </box>
        </geometry>
      </collision>
    </link>
    <!-- Ensure we can weld to the world. -->
    <joint name="weld_link1" type="fixed">
      <parent>world</parent>
      <child>link1</child>
    </joint>
    <!-- Test frames -->
    <!-- We will define this frame as `F1`. -->
    <frame name="model_scope_link1_frame" attached_to="link1">
      <!-- This pose represents `X_L1F1`. -->
      <pose>0.1 0.2 0.3 0.4 0.5 0.6</pose>
    </frame>
    <!-- We will define this frame as `F2`. -->
    <frame name="model_scope_link1_frame_child" attached_to="model_scope_link1_frame">
      <!-- This pose represents `X_F1F2`. -->
      <pose>0.1 0 0 0 0 0</pose>
    </frame>
    <!-- We will define this frame as `F3`.
         NOTE: An unnamed frame implies this element's parent frame. At model
         scope, this implies the model frame. -->
    <frame name="model_scope_model_frame_implicit">
      <!-- This pose represents `X_MF3`. -->
      <pose>0.7 0.8 0.9 0 0 0</pose>
    </frame>
    <drake:collision_filter_group name="filter_group1">
      <drake:member>link1</drake:member>
      <drake:member>link2</drake:member>
    </drake:collision_filter_group>
  </model>
</sdf>
