<launch>

  <!-- localhost definition can be omitted. -->
  <machine name="localhost" address="localhost" default="true" />
  <machine name="localhost-altroot" address="localhost" env-loader="/opt/ros/fuerte/env.sh" />

  <!-- 

  Parameter Server parameters. You can omit the 'type' attribute if
  value is unambiguous. Supported types are str, int, double, bool.
  You can also specify the contents of a file instead using the
  'textfile' or 'binfile' attributes.
  
  -->
  <param name="somestring1" value="bar" />
  <!-- force to string instead of integer -->
  <param name="somestring2" value="10" type="str" />
  
  <param name="someinteger1" value="1" type="int" />
  <param name="someinteger2" value="2" />
  
  <param name="somefloat1" value="3.14159" type="double" />  
  <param name="somefloat2" value="3.0" />
  
  <!-- you can set parameters in child namespaces -->
  <param name="wg/childparam" value="a child namespace parameter" />  
  
  <!-- upload the contents of a file as a param -->
  <param name="configfile" textfile="$(find roslaunch)/resources/example.launch" />
  <!-- upload the contents of a file as base64 binary as a param -->
  <param name="binaryfile" binfile="$(find roslaunch)/resources/example.launch" />
  <!-- upload the output of a command as a param. -->
  <param name="commandoutput" command="cat &quot;$(find roslaunch)/resources/example.launch&quot;" />
  
  <!-- Group a collection of tags. ns attribute is optional -->
  <group ns="wg"> 
    <!-- remap applies to all future nodes in this group -->
    <remap from="chatter" to="hello"/> 

    <node name="listener" pkg="rospy" type="listener.py" respawn="true" />

    <node name="talker1" pkg="rospy" type="talker.py">
      <env name="ENV_EXAMPLE" value="example value" />
      <remap from="foo" to="bar"/>
      <!-- params within node tags are equivalent to ~params. 
           You must set the 'name' attribute of a node to use this feature. -->
      <param name="talker_param" value="a value" />
    </node>

    <node name="talker2" pkg="rospy" type="talker.py" />

  </group>

  
  <!-- import another roslaunch config file -->
  <group ns="included">
     <include file="$(find roslaunch)/resources/example-include.launch" />
  </group>
  <!-- more compact import syntax -->
  <include ns="included2" file="$(find roslaunch)/resources/example-include.launch" />
  
  <!-- Pass over an include and node with if-attributes that evaluate to false. -->
  <arg name="false_arg" value="false" />
  <include if="$(arg false_arg)" file="does/not/exist.launch" />
  <node if="$(arg false_arg)" pkg="doesnt_exist" type="nope" name="nope" />

  <!-- Pass over a group with an unless-attribute that evaluate to true. -->
  <arg name="true_arg" value="true" />
  <group unless="$(arg true_arg)">
    <include file="does/not/exist.launch" />
    <node pkg="doesnt_exist" type="nope" name="nope" />
  </group>
</launch>
