1. 为什么我们需要Launch文件
在ROS 2开发中,Launch文件就像是一个智能管家。想象一下,你每天早上起床需要完成一系列动作:开灯、煮咖啡、打开电视看新闻。如果每次都要手动一个个操作,那得多麻烦?ROS 2的Launch文件就是帮你把这些日常操作自动化。
我刚开始接触ROS 2时,每次测试都要手动开5-6个终端窗口,输入各种命令。不仅容易出错,还经常忘记启动某些关键节点。直到发现了Launch文件这个"核武器",开发效率直接翻倍。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Launch文件基础解析
2.1 Launch文件的核心结构
一个典型的Python格式Launch文件包含三个关键部分:
python复制from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
# 这里放置你要启动的节点和操作
])
这个结构就像是一个菜谱:
- 先准备食材(导入需要的模块)
- 定义烹饪步骤(编写generate_launch_description函数)
- 最后把菜装盘(返回LaunchDescription对象)
2.2 节点(Node)与进程(ExecuteProcess)的区别
在Launch文件中,你会遇到两种主要的启动方式:
python复制Node(
package='turtlesim',
executable='turtlesim_node',
name='sim'
)
ExecuteProcess(
cmd=['ros2', 'run', 'package_name', 'executable_name'],
output='screen'
)
Node是ROS 2特有的节点启动方式,而ExecuteProcess则是通用的系统命令执行。简单来说:
- 当你要启动ROS节点时,优先使用Node
- 当需要执行系统命令或非ROS程序时,使用ExecuteProcess
3. 实战:创建你的第一个Launch文件
3.1 准备工作环境
在开始编写前,确保:
- 已经安装ROS 2(推荐Humble或Foxy版本)
- 创建一个干净的工作空间
- 所有依赖包已安装(如turtlesim)
提示:建议使用VS Code作为编辑器,它提供了优秀的Python语法高亮和自动补全功能。
3.2 编写turtle_mimic.launch.py
让我们完善输入中提到的乌龟模仿示例:
python复制from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import ExecuteProcess
def generate_launch_description():
return LaunchDescription([
# 启动乌龟模拟器
Node(
package='turtlesim',
executable='turtlesim_node',
name='simulator',
output='screen'
),
