Launch可以实现同时启动多节点,这一不需要在终端一个一个窗口进行ros2 run
运行launch文件:
ros2 launch (功能包)(launch文件)
1 编写一个launch文件:
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package = 'learning_topic',
executable = 'topic_helloworld_pub',
),
Node(
package = 'learning_topic',
executable = 'topic_helloworld_sub',
),
])
1 from launch import LaunchDescription
from launch_ros.actions import Node
引入launch相关库,LaunchDescription描述了需要运行的节点
2 Node(
package = ‘learning_topic’,
executable = ‘topic_helloworld_pub’,
),
在LaunchDescription里声明要调用的节点,这里的调用内容可见(https://blog.csdn.net/Raine_Yang/article/details/125349724?spm=1001.2014.3001.5501)
3 def generate_launch_description():
generate_launch_description为自动生成Launch文件的函数
2 launch文件作为软件启动配置文件
(以rviz2为例)
ros2 run rviz2 rviz2 -d (launch文件完整路径)
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
rviz_config = os.path.join(
get_package_share_directory('learning_launch'),
'rviz',
'turtle_rviz.rviz'
)
return LaunchDescription([
Node(
package = 'rviz2',
executable = 'rviz2',
name = 'rviz2',
arguments = ['-d', rviz_config]
)
])
1 rviz_config = os.path.join(
get_package_share_directory(‘learning_launch’),
‘rviz’,
‘turtle_rviz.rviz’
)
在这里标明配置文件路径,类似于使用-d后面的文件完整路径
2 name = ‘rviz2’,
对节点重命名为rviz2。在launch文件里可以覆盖节点在源码里的名称,进行重命名
3 launch文件对节点和话题的重命名
该程序会打开两个turtlesim程序
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package = 'turtlesim'