Size: 2359
Comment:
|
Size: 5833
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 44: | Line 44: |
== Example .launch XML Config Files == NOTE: by convention, the roslaunch XML files are named with the extension `.launch`, e.g. `example.launch`. === Minimal Example === The following example shows a minimal launch configuration script. It launches a single 'talker' node, which is part of the 'rospy_tutorials' package. This node will launch on the local machine using the currently configured ROS environment (i.e. ROS_ROOT, etc...). {{{ <launch> <node name="talker" pkg="rospy_tutorials" type="talker" /> </launch> }}} === A More Complicated Example === {{{ <launch> <!-- localhost definition can be omitted unless you want to set a different ROS_ROOT --> <machine name="localhost" address="localhost" default="true" ros-root="/u/user/sf/ros/" ros-package-path="/u/user/sf/ros-pkg" /> <!-- a basic listener node --> <node name="listener-1" pkg="rospy_tutorials" type="listener" /> <!-- pass args to the listener node --> <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" /> <!-- a respawn-able listener node --> <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" /> <!-- start listener node in the 'wg1' namespace --> <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" /> <!-- start a group of nodes in the 'wg2' namespace. the 'ns' attribute is optional --> <group ns="wg2"> <!-- remap applies to all future statements in this scope. this remap renames the chatter topic to hello --> <remap from="chatter" to="hello"/> <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" /> <node pkg="rospy_tutorials" type="talker" name="talker"> <!-- set a private parameter for the node --> <param name="talker_1_param" value="a value" /> <!-- nodes can have their own remap args that override outer remap args --> <remap from="chatter" to="hello-1"/> <!-- you can set environment variables for a node --> <env name="ENV_EXAMPLE" value="some value" /> </node> </group> </launch> }}} === Setting parameters === You can also set parameters on the [[Parameter Server]]. These parameters will be stored on the Parameter Server before any nodes are launched. 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. Example: {{{ <launch> <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 to the server --> <param name="configfile" textfile="$(find roslaunch)/example.xml" /> <!-- upload the contents of a file as base64 binary to the server --> <param name="binaryfile" binfile="$(find roslaunch)/example.xml" /> <!-- to be implemented (#264) import an xmlparam-formatted parameter file --> <!-- xmlparam file="param.xml" / --> </launch> }}} |
Contents
This page describes the XML format used for roslaunch .launch files. For background on roslaunch, its functionality, and related tools, please consult the roslaunch page first.
substitution args
Roslaunch tag attributes can make use of substitution args, which roslaunch will resolve prior to launching nodes. The currently supported substitution args are:
$(env ENVIRONMENT_VARIABLE)
- substitute the value of an environment variable. The launch will fail if environment variable is not set.
$(optenv ENVIRONMENT_VARIABLE)
$(optenv ENVIRONMENT_VARIABLE default)
substitute the value of an environment variable if it is set. If default is provided, it will be used if environment variable is not set.
$(find pkg)
e.g. $(find rospy)/manifest.xml. Specifies a package-relative path. The filesystem path to the package directory will be substituted inline. Use of package-relative paths is highly encouraged as hard-coded paths inhibit the portability of the launch configuration. Forward and backwards slashes will be resolved to the local filesystem convention.
$(anon name)
e.g. $(anon rviz-1). New in ROS 0.8. Generates an anonymous id based on name. name itself is a unique identifier: multiple uses of $(anon foo) will create the same "anonymized" name. This is used for <node> name attributes in order to create nodes with anonymous names, as ROS requires nodes to have unique names. For example:
<node name="$(anon foo)" pkg="rospy_tutorials" type="talker.py" /> <node name="$(anon foo)" pkg="rospy_tutorials" type="talker.py" />
Will generate an error that there are two <node>s with the same name.
Substitution args are currently resolved on the local machine. In otherwords, environment variables and ROS package paths will be set to their values in your current environment.
Tag Reference
Deprecated Tags
Example .launch XML Config Files
NOTE: by convention, the roslaunch XML files are named with the extension .launch, e.g. example.launch.
Minimal Example
The following example shows a minimal launch configuration script. It launches a single 'talker' node, which is part of the 'rospy_tutorials' package. This node will launch on the local machine using the currently configured ROS environment (i.e. ROS_ROOT, etc...).
<launch> <node name="talker" pkg="rospy_tutorials" type="talker" /> </launch>
A More Complicated Example
<launch> <!-- localhost definition can be omitted unless you want to set a different ROS_ROOT --> <machine name="localhost" address="localhost" default="true" ros-root="/u/user/sf/ros/" ros-package-path="/u/user/sf/ros-pkg" /> <!-- a basic listener node --> <node name="listener-1" pkg="rospy_tutorials" type="listener" /> <!-- pass args to the listener node --> <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" /> <!-- a respawn-able listener node --> <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" /> <!-- start listener node in the 'wg1' namespace --> <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" /> <!-- start a group of nodes in the 'wg2' namespace. the 'ns' attribute is optional --> <group ns="wg2"> <!-- remap applies to all future statements in this scope. this remap renames the chatter topic to hello --> <remap from="chatter" to="hello"/> <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" /> <node pkg="rospy_tutorials" type="talker" name="talker"> <!-- set a private parameter for the node --> <param name="talker_1_param" value="a value" /> <!-- nodes can have their own remap args that override outer remap args --> <remap from="chatter" to="hello-1"/> <!-- you can set environment variables for a node --> <env name="ENV_EXAMPLE" value="some value" /> </node> </group> </launch>
Setting parameters
You can also set parameters on the Parameter Server. These parameters will be stored on the Parameter Server before any nodes are launched.
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.
Example:
<launch> <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 to the server --> <param name="configfile" textfile="$(find roslaunch)/example.xml" /> <!-- upload the contents of a file as base64 binary to the server --> <param name="binaryfile" binfile="$(find roslaunch)/example.xml" /> <!-- to be implemented (#264) import an xmlparam-formatted parameter file --> <!-- xmlparam file="param.xml" / --> </launch>