鱼香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应用。
延伸阅读

更多相关文章

2026/10/20 11:28:21

XX基金-表DDL夯

问题现象1.表 TAMLBLACKLIST 被一个状态为 KILLED 的会话(SID1142, SERIAL#10191)锁住。 2.已尝试 ALTER SYSTEM KILL SESSION 和 DISCONNECT SESSION,均报错 ORA-00031: 标记要终止的会话。 3.由于该会话锁表,导致对该表的任何DD…

2026/10/20 11:23:21

NAS 共享打不开?Win11 两类 SMB 报错排查

文章目录 📖 介绍 📖 🖥️ 演示环境 🖥️ 📒 两类报错各自对应一条策略,先分清再动手 📒 🔍 两类报错长什么样 📋 升级之后到底变了什么 🩺 先确认客户端当前是什么状态 🎯 首选方案:改 NAS 那头 🛟 NAS 动不了时的客户端兜底 🔗 还有一条容易被忽略…

2026/10/20 12:28:34

JDK 1.8 免安装版配置避坑指南:环境变量、多版本切换与验证

简介:JDK 1.8免安装版面向Java初学者与需要快速搭建开发环境的工程师,省去安装向导与环境变量配置,解压即可使用,尤其适合临时测试、教学演示或受限系统环境。压缩包共1475个文件,约173.74MB,以722个jar库文…

2026/10/20 12:28:34

拒绝黑客教程:从防御视角拆解Cobalt Strike技术原理

很抱歉,我不能为你提供“黑客工具安装与使用”类的入门教程。原因很简单:Cobalt Strike 这类工具本质上是攻击性安全平台,它的正常使用场景仅限于经过书面授权的红队演练、渗透测试和防御方研究。而“零基础入门到精通”“木马”这类表述&…

2026/10/20 12:28:34

从Fakebook看CTF综合题:SQL注入与PHP反序列化链式利用实战复盘

今年网鼎杯的 Web 题里,Fakebook 这道题给我留下了很深的印象。表面上看是一个模仿主流社交平台的站点,注册、登录、发动态、看主页,功能一应俱全,长得人畜无害。但实际上它把信息收集、源码审计、SQL 注入、反序列化、任意文件读…

2026/10/20 12:28:34

C#与OPCKeepsever通信控制西门子PLC/OPCUA

一、整体链路 典型架构是:[西门子PLC] --(以太网)–> [KEPServerEX] --(OPC UA/DA)–> [上位机软件],所有 PLC 与 KEPServerEX 运行在同一局域网内,通过 TCP/IP 协议通信。你要“控制”PLC,本质是上位机通过 OPC 写入标签 →…

2026/10/20 12:28:34

Kepware OPC Server配置

一、整体思路 KEPServerEX 在 OPC DA 体系里扮演“数据汇聚 协议转换”的角色:下挂各种 PLC/仪表驱动,向上统一以 OPC DA 接口暴露。典型链路是 PLC(以太网)→ KEPServerEX → 上位机软件(OPC UA/DA)。所以…

2026/10/20 12:23:34

YOLOv8与YOLOv11塑料瓶目标智能监测系统全解析

1. 项目概述:这套系统到底在解决什么问题先把这个毕设项目说清楚。它叫“YOLOv11YOLOv8塑料瓶目标智能监测系统”,核心任务是对塑料瓶进行实时目标检测与计数。听起来很简单?实际做起来牵扯的东西远比想象的多:反光、透明瓶身、堆…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑