资讯详情

鱼香ros2(二十)launch脚本

📅 2026/10/20 11:28:21 | 华诺云谱 👁 阅读
鱼香ros2(二十)launch脚本
一、launch脚本启动多个节点1、为什么使用launch脚本通常我们需要三个节点的时候要使用三个终端不能同一个终端使用关闭也需要分别去CtrlC这样比较麻烦。因此我们可以将三个启动节点的代码合成一个文件里然后一起启动一起关闭ros2提供了一个工具就叫launch。launch的作用就是启动脚本。2、launch介绍使用launch启动多个节点需要两个python库也可以不用python使用xml格式yaml格式也是可以的三种方式建议使用python比较灵活。import launchimport launch_ros以上为ros2中使用launch的python版本所需要的库。3、编辑launch文件1先建文件夹launch2新建launch文件新建 ***.launch.py 或 ***.launch.xml 或 ***.launch.yaml 看自己使用哪个版本的我们这里使用***.launch.py。3编写generate_launch_description()函数名字是定死的不能改。等会我们启动文件就会使用命令行工具——ros2 launch 文件名或者功能包名字加launch文件进行启动就会调用这个generate_launch_description()这个函数而且这个函数的返回值类型也是定死的。4使用CMakeLists.txt安装#安装 demo.launch.pyinstall(DIRECTORY launchDESTINATION share/${PROJECT_NAME})注python功能包是在setup.py里做添加from glob import glob(share/ package_name/launch,glob(launch/*.launch.py)),4colcon build5使用ros2 launch demo_cpp_service demo.launch.pyCtrl键c一键就关闭三个节点了。二、launch传递参数1、ros2如何使用命令修改参数正常是使用ros2 run turtlesim turtlesim_node --ros-args -p background_g:255--ros-args -p background_g:255——这一段就是改变参数background_g的值。但是launch启动这样是无效的因为我们同时在里面启动了三个节点根本不知道这个参数是哪个节点的。2、launch传递参数1声明一个launch参数action_declare_arg_launch_backgroundlaunch.actions.DeclareLaunchArgument(launch_arg_bg,default_value150)2将launch参数手动传递给某个节点parameters[{background_g: launch.substitutions.LaunchConfiguration(launch_arg_bg,default150)}],3注意事项在launch文件中所有节点参数都要封装为动作并且一定要放到LaunchDescription([])的参数里launch才能找到对应动作。声明的参数动作除了要声明放到LaunchDescription里外还要在指定的节点里绑定节点的原始参数比如这里launch里的动作action_declare_arg_launch_background的launch_arg_bg参数就是对应的turtlesim_node节点里的background_g参数。3、使用记得修改代码了一定要colcon buildros2 launch demo_cpp_service demo.launch.py launch_arg_bg:0就很方便改参数了。三、launch进阶1、launch三大组件动作、条件和替换。1动作除了是一个节点外还可以是一句打印一段终端指令甚至是另外一个launch文件就是需要执行的。2替换使用launch的参数替换节点的参数值。3条件利用条件可以决定哪些动作启动那些不启动。相当于if。2、动作案例1导包get_package_share_directory:通过功能包的名字获取它所在的share目录。这个根据自己的业务看需不需要我这边有导入其他launch的需要。2动作使用我们调用ros2自带的小海龟的launch文件ros2 launch turtlesim multisim.launch.py3、替换、条件和刚刚学的launch的参数有点相似我们这边的需求是看传入的参数start_rqt是否为true如果true则启动rqt否则不启动默认start_rqt的值为false。在action_topic_list动作里我们要改下逻辑colcon build当我们使用ros2 launch demo_cpp_service actions.launch.py start_rqt:true四、小结1、介绍本次小结是针对鱼香的《ros2机器人开发从入门到实践》的第四章总结也就对应我的笔记《鱼香ros2十五……》到本篇的总结。2、基本概念介绍了服务和参数通信的基本概念。1服务通信通过人脸检测的例子学习了python中的服务通信以及通过巡逻海龟的例子学习了C中实现服务通信的方法。2参数通信分别使用python和C学习了如何声明和设置参数以及在修改其他节点参数时利用了服务通信机制。3launch工具学习了如何使用launch文件来启动多个借点简化了借点的启动和管理过程。3、ros2通信机制概览1截至目前已经学习了ros2的四大通信机制中的三个话题、服务和参数。2动作通信Action动作通信机制在本章中未进行详细讲解主要原因是后续实践中几乎不会用到且动作通信本质上是基于话题和服务的扩展。3未来学习方向下一个学习节点将侧重于ros2中常用的工具这将帮助用户更高效地开发和维护ros2应用。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑