1.节点设置

xml.

<launch>
    <!-- <node
        pkg="turtlesim"
        exec="turtlesim_node"
        name="t1"
        namespace="ns_1"
        exec_name="my_label_xxxx"
        respawn="True"
    /> -->
    <node pkg="turtlesim" exec="turtlesim_node" name="t1" ros_args="--remap __ns:=/xxx">
        <param name="background_r" value="100"/>
        <param name="background_g" value="50"/>
        <param name="background_b" value="90"/>
    </node>

</launch>

yaml.

launch:
  - node:
      pkg: "turtlesim"
      exec: "turtlesim_node"
      name: "t1"
      namespace:  "ns"
      exec_name:   "my_yaml"
      respawn:  "true"  
      param:
      -
        name:  "background_b"
        value: 30
        name:  "background_g"
        value: 100
        name:  "background_r"
        value: 100
              # -
      #   from:  "$(find-pkg-share cpp01_launch)/config/gg.yaml"
    #   args:  "--ros-args --remap __ns:=/xxx"
      ros_args:  "--remap __ns:=/xxx"

在 XML 实现中 node 标签用于表示节点,其属性包含:
pkg:功能包;

exec:可执行文件;

name:节点名称;

namespace:命名空间;

exec_name:流程标签;

respawn:节点关闭后是否重启;

args:调用指令时的参数列表;

ros_args:相当于 args 前缀 --ros-args。

node 标签的子级标签包含:

param,设置参数的标签,其属性包含:

name:参数名称;

value:参数值;

from:参数文件路径;

remap,话题重映射标签,其属性包含:

from:原话题名称;

to:新话题名称。

YAML 实现规则与之类似。

2.执行指令

xml

<launch>
    <executable cmd="ros2 run turtlesim turtlesim_node" output="both"/>
</launch>

yaml

launch:
-  executable:
     cmd:  "ros2 run turtlesim turtlesim_node"
     output:  "both"

在 XML 实现中 executable 标签用于表示可执行指令,其属性包含:
cmd:被执行的命令;
output:日志输出目的地设置。

YAML 实现规则与之类似

3.参数设置

xml

<launch>
    <arg name="bg_r" default="255"/>
    <node pkg="turtlesim" exec="turtlesim_node" name="t1">
        <param name="background_r" value="$(var bg_r)"/>
    </node>
</launch>

yaml

launch:
- arg:
    name:  "bg_b"
    default:  "0"
- node:
    pkg:  "turtlesim"
    exec:  "turtlesim_node"
    param:
    -
      name: "background_b"
      value: $(var bg_b)

在 XML 实现中,arg 标签用于声明参数,其属性包含:
name:参数名称;

default:参数默认值。

参数的调用语法为:

$(var 参数名称)。

4.文件包含

xml

<launch>
    <let name="bg_r" value="250" />
    <include file="$(find-pkg-share cpp01_launch)/launch/xml/xml04_args_launch.xml"/>
</launch>

yaml

launch:
- let:
    name: "bg_b"
    value: "255"
- include:
    file: "$(find-pkg-share cpp01_launch)/launch/yaml/yaml04_args_launch.yaml"

在 XML 实现中,include 标签用于实现文件包含,其属性如下:

file:被包含的 launch 文件的路径。

let 标签用于向被包含的 launch 文件中导入参数,其属性如下:

name:参数名称;
value:参数值。

5.分组设置

xml

<launch>
    <group>
        <push-ros-namespace namespace="g1"/>
        <node pkg="turtlesim" exec="turtlesim_node" name="t1"/>
        <node pkg="turtlesim" exec="turtlesim_node" name="t2"/>
    </group>
    <group>
        <push-ros-namespace namespace="g2"/>
        <node pkg="turtlesim" exec="turtlesim_node" name="t3"/>
    </group>

</launch>

yaml

launch:
- group:
    - push-ros-namespace:
        namespace: "g1"
    - node:
        pkg: "turtlesim"
        exec: "turtlesim_node"
        name: "txxx1"
    - node:
        pkg: "turtlesim"
        exec: "turtlesim_node"
        name: "txxx2"     
- group:
    - push-ros-namespace:
        namespace: "g2"
    - node:
        pkg: "turtlesim"
        exec: "turtlesim_node"
        name: "txxx3"

在 XML 实现中,group 标签用于分组,其子标签如下:

push_ros_namespace:可以通过该标签中的 namespace 属性设置组内节点使用的命名空间。
node:节点标签。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐