标签名
ROS1
node标签
<node name="listener1" pkg="rospy_tutorials" type="listener.py" args="--test" respawn="true" />
- pkg=“mypackage”
包名 - type=“nodetype”
节点名(可执行文件) - name=“nodename”
节点名字 - args=“arg1 arg2 arg3”(optional)
传递参数到节点可执行文件 - machine=“machine-name”(optional)
在特定机器上启动节点 - respawn=“true”(optional, default: False)
节点崩溃后自动重启 - respawn_delay=“30” (optional, default 0)
如果respawn="true"
,在检测到节点崩溃后延迟启动的时间 - required=“true”(optional)
如果节点挂掉,结束整个roslaunch中的节点。 - ns=“foo”(optional)
节点的命名空间 - clear_params=“true|false”(optional)
Delete all parameters in the node’s private namespace before launch. - output=“log|screen”(optional)
如果为log
,节点的stdout/stderr输出到log文件;如果为screen
,节点的stdout/stderr输出到终端屏幕。 - cwd=“ROS_HOME|node”(optional)
如果为node
,则节点的工作目录将被设置为与节点的可执行程序相同的目录,默认是ROS_HOME
- launch-prefix=“prefix arguments”(optional)
在节点启动命令前添加的前缀,例子:
相当于在终端输入<node pkg="tf2_ros" name="tf_pub" type="static_transform_publisher" output="screen" args="0.20, 0.15, 0.06 2.06298 -3.14159 1.56207 frame_id child_frame_id" launch-prefix="bash -c 'xterm -e'"/>
在launch-prefix中也可以使用shell脚本特殊符号,在上例中xterm -e /opt/ros/noetic/lib/tf2_ros/static_transform_publisher 0.20, 0.15, 0.06 2.06298 -3.14159 1.56207 aft_mapped camera_link __name:=tf_pub __log:=/home/long/.ros/log/1b13cb6e-8c03-11ed-9452-831fa7732a53/tf_pub-2.log
$0
为/opt/ros/noetic/lib/tf2_ros/static_transform_publisher
,
$@
为0.20, 0.15, 0.06 2.06298 -3.14159 1.56207 aft_mapped camera_link __name:=tf_pub __log:=/home/long/.ros/log/1b13cb6e-8c03-11ed-9452-831fa7732a53/tf_pub-2.log
延迟启动:launch-prefix="bash -c 'sleep 5;$0 $@'"
include 标签
<launch>
<!-- file:要包含的文件路径 ns(可选):在指定命名空间导入文件-->
<include file="$(find 包名)/launch/xx.launch" ns="xxx" />
</launch>
rosparam标签
<!--导入 装载-->
<rosparam command="load" file="$(find launch01_basic)/launch/params.yaml" />
<rosparam>
param1: 1
param2: 2
param3: 3
</rosparam>
<!--以上写法将参数转成YAML文件加载,注意param前面必须为空格,不能用Tab,否则YAML解析错误-->
<!--导出-->
<rosparam command="dump" file="$(find launch01_basic)/launch/params_out.yaml" />
<!-- 删除参数 -->
<rosparam command="delete" param="bg_B" />
-
command=“load | dump | delete” (可选,默认 load)
加载、导出或删除参数 -
file=“$(find xxxxx)/xxx/yyy…”
加载或导出到的 yaml 文件 -
param=“参数名称”
-
ns=“命名空间” (可选)
param标签
<param name="" value="" type=""/>
- name=“namespace/name”
设置参数的名称 - value=“value”(optional)
设置参数的值 - type=“str|int|double|bool|yaml”(optional)
<!-- xacro.py执行了robot.xacro之后的输出结果作为值赋值给robot_description -->
<param name="robot_description" command="$(find xacro)/xacro.py $(find robot_sim_demo)/urdf/robot.xacro" />
group标签
<group ns="first">
</group>
条件属性
- if=value (optional)
If value evaluates to true, include tag and its contents. - unless=value (optional)
Unless value evaluates to true (which means if value evaluates to false), include tag and its contents.
重映射规则
ROS2
- 单独重映射Topic:
rosTopic://name:=newname
- 单独重映射Service:
rosService://name:=newname
- 单独重映射某节点中的:
nodename:
- 单独重映射某节点中的Topic:
ndoename:rosTopic://name:=newname
- 改变默认命名空间:
__ns:=new_namespace
- 改变节点名称:
__name:=newnode
或__node:=newnode
- 通配符:
*
:匹配一个由/
分隔的符号**
:匹配0个或多个由 // or/
分隔的符号
substitutions替代
ROS1
$(find <packge_name>)
:获取某个功能包的路径$(env ENV_VARIABLE)
:获取某个环境变量的值$(optenv ENV_VARIABLE default_value)
:如果环境变量存在就是用环境变量的值,如果环境变量不存在就使用default_value
$(arg name)
:用arg参数的值替代$(eval <expression>)
:
For example:
Note: As a limitation, $(eval) expressions need to span the whole attribute string. A mixture of other substitution args with eval within a single string is not possible:<param name="circumference" value="$(eval 2.* 3.1415 * arg('radius'))"/>
To remedy this limitation, all substitution commands are available as functions within eval as well:<param name="foo" value="$(arg foo)$(eval 6*7)bar"/>
For your convenience, arguments are also implicitly resolved, i.e. the following two expressions are identical:"$(eval arg('foo') + env('PATH') + 'bar' + find('pkg') )"
"$(eval arg('foo'))" "$(eval foo)"
ROS2
-
$(find-pkg-prefix <pkg-name>)
用指定功能包的安装(install)目录路径前缀代替
-
$(find-pkg-share <pkg-name>)
用指定功能包的共享(share)目录路径前缀代替,共享路径包含
<pkg-install-prefix>/share/<pkg-name>
<pkg-install-prefix>
为功能包安装空间的路径,例如:workspace/install/<pkg-name>
-
$(find-exec <exec-name>)
由本地文件系统的可执行文件路径代替,可执行文件在环境变量PATH中查找
-
$(exec-in-package <exec-name> <pkg-name>)
由本地文件系统的可执行文件的路径代替,可执行文件在功能包的LIB目录中查找
-
$(var <name>)
由launch文件配置变量代替
-
$(env <env-var> [default-value])
由给定环境变量替换,如果给定环境变量未设置,则由default-value代替。
-
$(eval <python-expression>)
由python表达式的运行结果代替
-
$(dirname)
由当前启动文件的目录名代替