news 2026/9/9 3:33:23

ROS2学习之launch文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ROS2学习之launch文件

文章目录

    • 简介
    • 编写Launch文件
    • 修改启动文件

简介

在实际的机器人项目中,一个系统可能包含几十个节点(雷达驱动、底盘控制、SLAM、导航等),如果全靠手动开终端启动,不仅效率极低,而且无法统一管理节点的参数和命名空间。为了协调这些功能,ROS2的标准方案是采用Launch文件。

采用Launch文件,可以通过一条命令,同时启动多个节点,而且支持条件执行,想启动哪个节点,就启动哪个节点。另一方面,也支持在文件中统一配置节点参数、重映射话题、设置命名空间等。

下面基于之前的话题通信教程,编写Launch,一键启动发布者和订阅者节点。

编写Launch文件

在外层【restaurant_robot】中,创建launch目录,在launch目录中,新建一个Python文件,命名为pub_sub_launch.py。

mkdir launch vim launch/pub_sub_launch.py

文件内容如下

# 导入 Launch 核心库fromlaunchimportLaunchDescriptionfromlaunch_ros.actionsimportNodedefgenerate_launch_description():# 这是 Launch 文件的入口函数,必须返回一个 LaunchDescription 对象# 1. 定义 Publisher 节点pub=Node(package='restaurant_robot',# 功能包名executable='run_publisher',# setup.py 中注册的可执行文件名name='my_custom_pub',# 【可选】为节点重命名(如果不写,默认使用代码里的名字)output='screen'# 将节点的日志输出到当前终端屏幕)# 2. 定义 Subscriber 节点sub=Node(package='restaurant_robot',executable='run_subscriber',name='my_custom_sub',output='screen')# 3. 将所有需要启动的节点放入 LaunchDescription 列表中并返回returnLaunchDescription([pub,sub])

修改启动文件

像之前所有示例一样,Launch文件也需要指明入口,即需要修改外层restaurant文件夹中的setup.py文件。

vim setup.py

首先确保文件顶部导入了 os 和 glob 模块,如果没有,就手动添加

importosfromglobimportglob

然后找到data_files列表,在现有列表中,追加一行配置,用于包含launch目录

data_files=[# 现有内容不用动# 添加下面这一行:将 launch 目录下所有匹配的文件安装到 share 目录中(os.path.join('share',package_name,'launch'),glob(os.path.join('launch','*launch.[pxy][yma]*'))),],

这行代码用glob匹配launch目录下所有以launch.py或launch.xml结尾的文件,并将它们复制到安装目录的 share/restaurant_robot/launch 路径下。

至此,就可以编译、激活环境并运行了,回到ros2_ws路径

colcon build source install/setup.bash ros2 launch restaurant_robot pub_sub_launch.py

运行后,输出内容如下

[INFO] [launch]: All log files can be found below /home/vboxuser/.ros/log/2026-07-28-01-01-05-589710-Ubuntu-3898 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [run_publisher-1]: process started with pid [3906] [INFO] [run_subscriber-2]: process started with pid [3907] [run_subscriber-2] [INFO] [1785200467.613633520] [my_sub]: received data:Hello ROS2: 0 [run_publisher-1] [INFO] [1785200467.613682214] [my_pub]: publishHello ROS2: 0 [run_publisher-1] [INFO] [1785200468.275424669] [my_pub]: publishHello ROS2: 1 [run_subscriber-2] [INFO] [1785200468.275892154] [my_sub]: received data:Hello ROS2: 1 [run_publisher-1] [INFO] [1785200469.274379359] [my_pub]: publishHello ROS2: 2 [run_subscriber-2] [INFO] [1785200469.274828949] [my_sub]: received data:Hello ROS2: 2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 3:33:14

网络安全很火,薪资水平如何?做了一个调查

网络安全很火,薪资水平如何?做了一个调查近年来,网络安全行业火热,网络安全业者成为备受关注的就业群体,一方面需求旺盛,另一方面又供给不足,专业人才方面的供需矛盾,和屡屡发生的网…

作者头像 李华
网站建设 2026/8/31 1:39:06

基于微信小程序云开发的失物招领系统:从架构设计到性能优化实战

简介:云开发作为一种创新的后端即服务(BaaS)模式,通过整合数据库、存储和计算资源,为开发者提供了免运维、一体化的解决方案。其核心原理在于利用云服务商的基础设施,将服务器管理、环境配置等复杂工作抽象…

作者头像 李华
网站建设 2026/8/31 3:23:26

蓝桥杯国赛DHT11温湿度传感器驱动:从时序破解到稳定读取实战

1. 项目概述:从国赛真题到实战复现如果你正在准备蓝桥杯单片机国赛,或者对嵌入式开发中的传感器应用感兴趣,那么“温湿度传感器”这个题目你一定不陌生。它不仅仅是国赛客观题里的一个考点,更是综合考察选手单片机系统设计、外设驱…

作者头像 李华
网站建设 2026/9/1 9:58:19

EEPROM 24C0x 的理解

参考文章:AT24C02、04、08、16 操作说明 - schips - 博客园 单字节写入 Start 起始发送器件写地址 0xA0 → 等待 ACK发送 EEPROM 内部内存地址(8bit)→等待 ACK发送要写入的 1 字节数据 →等待 ACK发送 STOP 停止信号 ✅(必须 …

作者头像 李华
网站建设 2026/8/30 19:58:56

C# Socket+串口Modbus设备通信 全套知识点

一、项目整体架构与核心流程(必考大题)1.1 项目架构本项目为Socket-TCP服务端 串口SerialPort 双向转发网关,实现 客户端 ↔ 服务器 ↔ 硬件设备 数据透传。服务器:TCP多客户端服务端 串口通信,核心转发中间层1.2 标…

作者头像 李华
网站建设 2026/8/31 5:13:07

多目标规划序贯算法:从原理到Matlab实战,解决目标冲突问题

1. 项目概述:当数学建模遇上多目标难题 在数学建模竞赛和实际的科研、工程问题里,我们常常会遇到一个让人头疼的局面:目标不止一个,而且它们之间还经常“打架”。比如,在设计一个产品时,我们既希望它的成本…

作者头像 李华