ROS 2边学边练(28)-- 将launch文件集合到ROS 2包中

发布于:2024-04-19 ⋅ 阅读:(27) ⋅ 点赞:(0)

前言

        上一篇我们单独创建了文件夹(可以任何路径),并在其中创建编写了一份launch文件,调用了小海龟例程,但通常情况下这并非是launch文件的典型应用场景,更多的是在ROS 2功能包中创建使用launch文件。

动动手

        今天的内容也是比较轻松的,但一定要动手实践。

创建一个功能包

        我们重新创建一个工作空间launch_ws及其子文件夹src:

$mkdir -p launch_ws/src

        进入src,添加一个功能包:

$ros2 pkg create --build-type ament_cmake --license Apache-2.0 cpp_launch_example

新建launch文件夹

        在功能包的根路径下新建launch文件夹用来放置我们的launch文件,并在CMakeLists.txt文件里添加以下内容指明launch文件安装信息:

# Install launch files.
install(DIRECTORY
  launch
  DESTINATION share/${PROJECT_NAME}/
)

编写launch文件

        在launch文件里面新建名叫my_script_launch.py的launch文件,将下面内容复制其上:

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'),
  ])

        或者是xml格式的my_script_launch.xml(最简明的launch格式,但有的书籍推荐我们使用python格式的,因为其灵活性和扩展性都要优于xml,见仁见智吧):

<launch>
  <node pkg="demo_nodes_cpp" exec="talker" name="talker"/>
</launch>

        或者yaml格式的my_script_launch.yaml:

launch:

- node:
    pkg: "demo_nodes_cpp"
    exec: "talker"
    name: "talker"

构建运行launch

        返回到launch_ws工作空间根路径下,开始构建我们的包(目前只有一个包,简单点就全构建了):

$colcon build

        构建完成后我们再source下环境(source install/setup.bash),运行launch文件,几种格式的launch文件调用方式一样,均为ros2 launch <package_name> <launch_file_name>,我们只以python版本为例(其他版本的只需将launch文件的后缀改为对应的格式即可):

$ros2 launch cpp_launch_example my_script_launch.py

文档资料

         launch文档里提供了对launch文件更多更详细的描述,大家可前往一观,另外官方还提供了两份源码工程项目,更多的文档/例子即将补充上:

GitHub - ros2/launch: Tools for launching multiple processes and for writing tests involving multiple processes.

https://github.com/ros2/launch_ros 

本篇完。