是什么
ros2的多节点启动工具。
作用
通过launch工具执行launch文件,可以启动launch文件中配置的多个节点,以及这些启动的节点配置数据。
launch文件的实现
ROS2的launch文件有三种格式,python、xml、yaml。
python语言创建launch文件:
1,创建launch文件
工作目录的src目录下创建launch功能包和launch目录,xxx.launch.py文件。
dev_ws/src/example_launch/launch/test.launch.py
一个功能包下的launch目录下可以有多个launch文件;
2,编写.launch.py文件
(1)导入两个库:
from launch_ros.actions import Node
from launch import LaunchDescription
Node
用于创建一个个的节点对象,这个python中的节点对象,这个节点的参数一个是需要启动节点所在的包,一个是包中的节点的名称:
action_robot_01 = Node(
package="example_action_rclcpp" ,
executable="action_robot_01" )
用于声明节点所在的位置。
包的路径需要指定到什么位置
因为包是在installl目录下的,所以我们只需要指定包名即可;
如果项目中包被放入到其他目录下,需要配置(待补充)。
LaunchDescription
用于对launch文件内容进行描述;
(2)实现函数
def generate_launch_description():
launch_description = LaunchDescription( [action_robot_01, action_control_01])
# 返回让ROS2根据launch描述执行节点
return launch_description
这个函数的函数名不能写错,这个函数由执行ros2 launch时,由launch工具调用。
函数返回值:
函数的返回值中描述了需要启动的节点,launch工具执行这个函数,接受返回值就知道需要启动那些包中的哪些节点,以及进行什么配置。
3,cmake--install launch.py
cmake--install launch.py文件到工作空间install目录下的launch功能包下的share目录下。
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
最后编译launch功能包:
colcon build --packages-select launch功能包名
launch运行launch文件
运行指令:
ros2 launch launch文件所在功能包 launch文件
launch文件可以是.py .xml .yaml文件
launch设置节点参数值
parameters_basic2 = Node(
package="example_parameters_rclpy",
executable="parameters_basic",
parameters=[{'rcl_log_level': 50}]
)
launch设置节点命名空间
这个命名空间有什么作用:
当启动的节点名称相同,或者启动一个节点的多份的时候,我们需要加上一个namespace作为相同名称的节点的区分:
def generate_launch_description():
#定义需要启动的第一个节点对象
node_01=Node(package="node_namespace",namespace="instance_1",executable="node_01")
#启动同一个节点的第二个对象
node_02=Node(package="node_namespace",namespace="instance_2",executable="node_01")
launch_description=LaunchDescription([node_01,node_02])
return launch_description
运行这个launch之后,查看启动的节点: