前言
上一篇我们单独创建了文件夹(可以任何路径),并在其中创建编写了一份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(DIRECTORYlaunchDESTINATION share/${PROJECT_NAME}/
)
编写launch文件
在launch文件里面新建名叫my_script_launch.py的launch文件,将下面内容复制其上:
import launch
import launch_ros.actionsdef 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
本篇完。