ROS2 Launch 脚本的使用
一个实际的机器人一般包括 N 个节点,实际运行调试时每个节点开一个终端去启动效率太低,也不方便管理。
Launch 脚本就是用于启动多个节点,支持不同节点使用不同的配置及参数,方便在不同环境下启动配置不同的机器人程序。
Launch 启动文件支持 XML , YAML , PYTHON 格式
Python 版本 Launch
我们创建一个包用来保存 launch 文件
1ros2 pkg create launch_demo --destination-directory src --build-type ament_cmake --license Apache-2.0在包根目录下创建一个
launch目录,里面创建一个demo_launch.py文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22# -*- coding: utf-8 -*- from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): """函数名字不能修改 """ # 定义一个节点动作,表示启动这个节点 topic_publish_node = Node( package="cpp_topic_publish_demo", # 包名 executable="cpp_topic_publish_demo", # 可执行文件名 output="screen" # 日志输出位置 ) topic_subscribe_node = Node( package="cpp_topic_subscribe_demo", executable="cpp_topic_subscribe_demo", output="screen" ) # 返回启动描述,是一个 launch_ros.actions 类型的数组 return LaunchDescription([topic_publish_node, topic_subscribe_node])在 CMakeLists.txt 中将 launch 目录安装到 share 目录
然后使用
ros2 launch launch_demo demo_launch.py启动,就可以看到两个节点启动了,并且将日志输出到屏幕
YAML 格式 Launch 文件
%YAML 1.2
---
launch:
- node:
pkg: "cpp_topic_publish_demo"
exec: "cpp_topic_publish_demo"
output: "screen"
- node:
pkg: "cpp_topic_subscribe_demo"
exec: "cpp_topic_subscribe_demo"
output: "screen"启动命令: ros2 launch launch_demo demo_launch.yaml
XML 格式 Launch 文件
启动命令: ros2 launch launch_demo demo_launch.xml
Launch 传递节点参数
python 文件创建节点时可以使用 arguments , ros_arguments 或者 parameters 几种方式
xml 和 yaml 使用 args 或 ros_args 字段
python 文件从命令行动态传入参数可以声明一个参数动作,解析后传给节点
| |
启动时就可以传入参数
| |