找回密码
 会员注册
查看: 36|回复: 0

ROS2笔记八ROS2编写Pythonlaunch文件

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-9-10 09:21:38 | 显示全部楼层 |阅读模式
【ROS2笔记八】ROS2编写Pythonlaunch文件文章目录【ROS2笔记八】ROS2编写Pythonlaunch文件1.创建功能包和launch文件2.编写Python的launch文件3.将launch文件拷贝到工作空间下4.编译与测试Reference在ROS2中launch文件有三种格式,python,mxl,yaml。其中ROS2官方推荐使用python来编写launch文件,原因在于python是一种编程语言,更加灵活,可以完成许多别的特性。这里主要介绍如何使用python来编写launch文件。1.创建功能包和launch文件在这里我们使用前面教程中(【ROS2笔记五】ROS2服务通信)已经创建好的工作空间colcon_test03_ws和功能包example_service_rclcpp作为基础。首先我们新建一个功能包用于存放launch文件cd~/colcon_test03_ws/srcros2pkgcreaterobot_startup--build-typeament_cmake12然后新建一个launch目录,接着touch一个launch.py文件mkdir-psrc/robot_startup/launchtouchsrc/robot_startup/launch/example_start.launch.py122.编写Python的launch文件首先,我们需要import两个库,分别用于对launch文件内容进行描述和声明节点的位置#导入库fromlaunchimportLaunchDescriptionfromlaunch_ros.actionsimportNodedefgenerate_launch_description():"""launch内容描述函数,由ros2launch扫描调用"""node1=Node(package="example_service_rclcpp",executable="service_server_01")node2=Node(package="example_service_rclcpp",executable="service_client_01")#创建LaunchDescription对象launch_description,用于描述launch文件launch_description=LaunchDescription([node1,node2])#返回让ROS2根据launch描述执行节点returnlaunch_description12345678910111213141516171819注意,这里函数的名字必须为generate_launch_description,ROS2会对该函数的名字进行识别。3.将launch文件拷贝到工作空间下我们需要配置CMakeLists.txt来让这个功能包robot_startup中的launch文件拷贝到工作空间colcon_test03_ws中的install目录中,我们使用的是ament_camke类型的功能包,所以这里直接配置CMakeListst.txt来进行拷贝。CMakeLists.txt...#acopyrightandlicenseisaddedtoallsourcefilesset(ament_cmake_cpplint_FOUNDTRUE)ament_lint_auto_find_test_dependencies()endif()#>>>addthesetowlines<<< install(directory>>>addthisline<<< find_package(example_service_rclcpp REQUIRED) # uncomment the following section in order to fill in # further dependencies manually. # find_package(REQUIRED)1234567package.xmlament_cmakeexample_service_rclcppament_lint_autoament_lint_common1234564.编译与测试然后我们就能够进行编译了,cd~/colcon_test03_wscolconbuild--packages-selectrobot_startup12等待编译完成,我们可以在colcon_test03_ws/launch/robot_startup/share目录下看到拷贝过去的.launch.py文件,然后我们直接可以启动launch文件了sourceinstall/setup.bashros2launchrobot_startupexample_startup.launch.py12运行的结果如下:sjh@sjh:~/colcon_test03_ws$ros2launchrobot_startupexample_start.launch.py[INFO][launch]:Alllogfilescanbefoundbelow/home/sjh/.ros/log/2024-04-23-09-48-15-916564-tclsjh-343849[INFO][launch]efaultloggingverbosityissettoINFO[INFO][service_server_01-1]:processstartedwithpid[343857][INFO][service_client_01-2]:processstartedwithpid[343859][service_server_01-1][INFO][1713836896.557137503][service_server_01]:Node:service_server_01hasbeenlaunched[service_client_01-2][INFO][1713836896.557686664][service_client_01]:Node:service_client_01hasbeenlaunched[service_client_01-2][INFO][1713836896.560214629][service_client_01]:Calculate5+6+7[service_server_01-1][INFO][1713836896.561889115][service_server_01]:Recievea:5b:6c:7[service_client_01-2][INFO][1713836896.562288840][service_client_01]:Result:1812345678910可以看到,我们成功启动了两个节点。Reference[1]d2lros2[2]Creatingalaunchfile
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-7 06:14 , Processed in 0.446767 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表