- 通过
launch文件以及roslaunch命令可以一次性启动多个节点,并且可以设置丰富的参数- 通常存放路径:工作空间目录 / launch /
xxx.launch - launch 文件本质是一个
xml类型的文件,基本格式如下<launch> <node .../> ## 最重要的标签 <param .../> <rosparam .../> <include .../> <remap .../> <arg .../> <group> </group> </launch>
- 通常存放路径:工作空间目录 / launch /
- _________________
<node>标签:指定一个准备运行的ROS节点<node pkg="package_name" type="executable_node" name="node_name" args="$()" respawn="true" output="sceen">pkg:节点所在功能包名称type:可执行文件的名称name:节点运行时的名称args:传递命令行设置的参数respawn:异常关闭后是否自动重启output:是否将节点信息输出到屏幕
- _________________
<param>标签:实现传递参数的功能,运行时的参数,参数会存储在参数服务器中<param name="param_name" type="param_type" value="param_value" /> <!-- param 标签可以嵌入到 node 标签中,以此来作为该 node 的私有参数 --> <node> <param name="param_name" type="param_type" value="param_value" /> </node>name:参数名称type:参数类型 double,str,int,bool,yamlvalue:需要设置的参数值
- _________________
<rosparam>标签:从参数服务器上加载(load)、导出(dump)和删除(delete)YAML文件<!-- 加载package_name功能包下的example.yaml文件 --> <rosparam command="load" file="$(find package_name)/example.yaml"> <!-- 导出example_out.yaml文件到package_name功能包下 --> <rosparam command="dump" file="$(find package_name)/example_out.yaml" /> <!-- 删除参数 --> <rosparam command="delete" param="xxx/param">command:功能类型(load、dump、delete)file:参数文件路径param:参数名称
- _________________
<include>标签:和编程语言中的include预处理类似,导入其他launch文件<include file="$(find package_name)/launch_file_name">file:文件路径
- _________________
<remap>标签:实现节点名称的重映射<remap from="turtle1/cmd_vel" to="/cmd_vel" /> <!-- remap 标签同样可以嵌入到 node 标签中,以此来作为该 node 的私有重映射 --> <node> <remap from="turtle1/cmd_vel" to="/cmd_vel" /> </node>
- _________________
<arg>标签:局部参数,启动时的参数,只在launch文件中有意义<arg name="arg_name" default="arg_default" /> <arg name="arg_name" value="arg_value" /> <!-- 命令行传递的 arg 参数可以覆盖 default,但不能覆盖 value。 -->
- _________________
<group>标签:可以将不同的节点放入不同的 namespace<!-- 用法1 --> <group ns="namespace_1"> <node pkg="pkg_name1" .../> <node pkg="pkg_name2" .../> ... </group> <group ns="namespace_2"> <node pkg="pkg_name3" .../> <node pkg="pkg_name4" .../> ... </group> <!-- 用法2 --> <!-- if = value:value 为 true 则包含内部信息 --> <group if="$(arg foo1)"> <node pkg="pkg_name1" .../> </group> <!-- unless = value:value 为 false 则包含内部信息 --> <group unless="$(arg foo2)"> <node pkg="pkg_name2" .../> </group> <!-- 当 foo1 == true 时包含其标签内部 当 foo2 == false 时包含其标签内部 -->
2551

被折叠的 条评论
为什么被折叠?



