乐于分享
好东西不私藏

机器人系统——ROS2文档(进阶)—启动和监测多个节点

机器人系统——ROS2文档(进阶)—启动和监测多个节点

目标: ROS 2 包中添加启动文件教程级别:中级时间: 10 分钟

目录

  • 前置条件
  • 背景
  • 任务
    • 创建包
    • 创建存放启动文件的结构
    • 编写启动文件
    • 构建并运行启动文件
  • 文档

前置条件

您应该已经完成了关于如何创建 ROS 2 的教程。和往常一样,别忘了在打开的每个新终端中加载 ROS 2 环境。

背景

上一个教程中,我们学习了如何编写独立的启动文件。本教程将展示如何将启动文件添加到现有包中,以及通常使用的约定。

任务

1创建包

为包创建一个工作空间:

$ mkdir -p launch_ws/src
$ cd launch_ws/src

Python包:

$ ros2 pkg create --build-type ament_python --license Apache-2.0 py_launch_example

创建存放启动文件的结构

按照惯例,包的所有启动文件都存放在包内的launch目录中。请确保在上面创建的包的顶层创建一个launch目录。

Python 包:包含包目录应该如下所示:

src/

py_launch_example/

launch/

package.xml

py_launch_example/

resource/

setup.cfg

setup.py

test/

为了让 colcon 能够定位和使用我们的启动文件,我们需要告知 Python  setup 工具它们的存在。为此,打开setup.py文件,在顶部添加必要的import语句,并将启动文件包含到setupdata_files参数中:

import os
from glob import glob
# Other imports ...
package_name = 'py_launch_example'
setup(
# Other parameters ...
data_files=[
# ... Other data files
# Include all launch files.
(os.path.join('share', package_name, 'launch'), glob('launch/*'))
]
)

3编写启动文件

XML 启动文件:在您的launch目录中,创建一个名为my_script_launch.xml的新启动文件。对于 XML 启动文件,推荐使用_launch.xml后缀,但不是必须的。

<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node pkg="demo_nodes_cpp" exec="talker" name="talker"/>
</launch>

Python 启动文件:在您的launch目录中,创建一个名为my_script_launch.py的新启动文件。对于 python 启动文件,推荐使用_launch.py后缀,但不是必须的。然而,启动文件的名称需要以launch.py为结尾以方便被ros2 launch识别和自动完成。

你的启动文件应该定义generate_launch_description()函数,这个函数在使用ros2 launch 命令后,将会返回launch.LaunchDescription()

import launch

import launch_ros.actions

def generate_launch_description():

    return launch.LaunchDescription([

        launch_ros.actions.Node(

            package=’demo_nodes_cpp’,

            executable=’talker’,

            name=’talker’),

4构建并运行启动文件

转到工作空间的顶层并构建它:

$ colcon build

colcon build成功完成并且您已设置工作空间后,您应该能够按如下方式运行启动文件:

Python  :

XML 启动文件:

$ ros2 launch py_launch_example my_script_launch.xml
python启动文件:

ros2 launch py_launch_example my_script_launch.py

文档

启动文档提供了有关在launch_ros中也使用的概念的更多详细信息。有关启动功能的更多文档/示例即将推出。

与此同时,请参阅源代码(https://github.com/ros2/launchhttps://github.com/ros2/launch_ros)。

本文档完整翻译自 ROS 2 Lyrical 官方文档,仅用于学习交流。