在ROS2中,launcher
文件是通过Python构建的,它们的功能是声明用哪些选项或参数来执行哪些程序,可以通过 launcher
文件快速同时启动多个节点。一个 launcher
文件内可以引用另一个 launcher
文件。
使用 launcher
文件 ros2 launch
可以代替 ros2 run
启动包内的程序。
在下面的例子中,我们在一个Python程序中,使用 generate_launch_description()
函数,返回 LaunchDescription
对象。
每一个LaunchDescription
对象包含了一些 action
Node
action:运行程序IncludeLaunchDescription
action:包含其他launcher
文件DeclareLaunchArgument
action:声明启动器参数SetEnvironmentVariable
action:设置环境变量
使用 launcher
时,需要在 CMakeLists.txt
中添加 install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
from launch import LaunchDescription
from launch_ros.actions import Nodedef generate_launch_description():pub_cmd=Node(package='br2_basics',executable='publisher',output='screen')sub_cmd=Node(package='br2_basics',executable='subscriber_class',output='screen')ld=LaunchDescription()ld.add_action(pub_cmd)ld.add_action(sub_cmd)
还有另一种 launcher
的写法:
from launch import LaunchDescription
from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(package='br2_basics',executable='publisher',output='screen'),Node(package='br2_basics',executable='subscriber_class',output='screen')])