ROS2之launch的xml,yaml实现
·
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:节点标签。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)