launch文件

标签名

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'"/>
    
    相当于在终端输入
    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
    
    在launch-prefix中也可以使用shell脚本特殊符号,在上例中
    $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

  1. 单独重映射Topic:rosTopic://name:=newname
  2. 单独重映射Service:rosService://name:=newname
  3. 单独重映射某节点中的:nodename:
  4. 单独重映射某节点中的Topic:ndoename:rosTopic://name:=newname
  5. 改变默认命名空间:__ns:=new_namespace
  6. 改变节点名称:__name:=newnode__node:=newnode
  7. 通配符:
    • *:匹配一个由/分隔的符号
    • **:匹配0个或多个由 // or/分隔的符号

substitutions替代

ROS1

  • $(find <packge_name>):获取某个功能包的路径
  • $(env ENV_VARIABLE):获取某个环境变量的值
  • $(optenv ENV_VARIABLE default_value):如果环境变量存在就是用环境变量的值,如果环境变量不存在就使用default_value
  • $(arg name):用arg参数的值替代
  • $(eval <expression>)
    For example:
    <param name="circumference" value="$(eval 2.* 3.1415 * arg('radius'))"/>
    
    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="foo" value="$(arg foo)$(eval 6*7)bar"/>
    
    To remedy this limitation, all substitution commands are available as functions within eval as well:
    "$(eval arg('foo') + env('PATH') + 'bar' + find('pkg') )"
    
    For your convenience, arguments are also implicitly resolved, i.e. the following two expressions are identical:
    "$(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)

    由当前启动文件的目录名代替

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shilong Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值