实验目的:
编写三个launch文件;
第一个实现启动两个乌龟模拟器节点;
第二个实现启动发布者节点和订阅者节点;
第三个实现启动前两个launch文件。
1、C++工作空间的launch文件
本文C++工作空间基于前文所创建的工作空间:
在该工作空间下src目录中创建launch_pkg功能包
ros2 pkg create launch_pkg --build-type ament_cmake --dependencies rclcpp
编辑CMakeLists.txt文件,添加以下内容
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
在launch_pkg功能包目录中创建一个luanch文件夹,存放三个launch文件,分别新建三个launch文件_launch.py、node_launch.py、include_launch.py(这三个luanch文件名后缀最好以_launch.py结尾)
在_launch.py中实现启动两个乌龟模拟器节点
from launch import LaunchDescription
from launch_ros.actions import Node
#封装终端指令相关类
#from launch.actions import ExecuteProcess
#from launch.substitutions import FindExecutable
#参数声明与获取
#from launch.actions import DeclareLaunchArgument
#from launch.substitutions import LaunchConfiguration
#文件包含相关
#from launch.actions import IncludeLaunchDescription
#from launch.launch_description_sources import PythonLaunchDescriptionSource
#分组相关
#from launch_ros.actions import PushRosNamespace
#from launch.actions import GroupAction"
#事件相关
#from launch.event_handlers import OnProcessStart, OnProcessExit
#from launch.actions import ExecuteProcess, RegisterEventHandler,LogInfo
#获取功能包下share目录路径
#from ament_index_python.packages import get_package_share_directory
def generate_launch_description():
turtle1 = Node(package="turtlesim", executable="turtlesim_node", name="t1")
turtle2 = Node(package="turtlesim", executable="turtlesim_node", name="t2")
return LaunchDescription([turtle1, turtle2])
在node_launch.py中实现启动发布者节点和订阅者节点
'''
Node里面的参数:
executable: 可执行程序
package: 被执行程序所属的功能包
name: 节点名称
namespace: 设置命名空间
exec_name: 设置程序标签
parameters: 设置参数
remappings: 实现话题重映射
arguments: 为节点传参
ros_arguments: 为节点