警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
创建启动文件
目标 创建启动文件,运行复杂的 ROS 2 系统。
辅导水平: 初学者
时间 10 分钟
背景介绍
在迄今为止的教程中,每运行一个新节点,都要打开新的终端。随着您创建的系统越来越复杂,同时运行的节点越来越多,打开终端和重新输入配置细节就会变得繁琐。
通过启动文件,可以同时启动和配置多个包含 ROS 2 节点的可执行文件。
使用 玫瑰2 启动
命令将一次性启动整个系统,包括所有节点及其配置。
先决条件
本教程使用 rqt_graph 和 turtlesim 打包。
您还需要使用自己喜欢的文本编辑器。
与往常一样,别忘了在 您打开的每个新终端.
任务
1 设置
创建一个新目录来存储启动文件:
mkdir launch
创建一个名为 turtlesim_mimic_launch.py
在终端中输入以下命令:
touch launch/turtlesim_mimic_launch.py
touch launch/turtlesim_mimic_launch.py
type nul > launch/turtlesim_mimic_launch.py
您也可以使用图形用户界面进入系统的文件目录,创建一个新文件。
用你喜欢的文本编辑器打开新文件。
2 编写启动文件
让我们使用 海龟
软件包及其可执行文件。
将完整的代码复制并粘贴到 turtlesim_mimic_launch.py
锉刀
从 启动 舶来品 启动说明
从 launch_ros.actions 舶来品 节点
捍卫 生成发射描述():
返回 启动说明([
节点(
包装='turtlesim';,
节点名称空间='turtlesim1';,
节点可执行='turtlesim_node',
节点名='sim';
),
节点(
包装='turtlesim';,
节点名称空间='turtlesim2';,
节点可执行='turtlesim_node',
节点名='sim';
),
节点(
包装='turtlesim';,
节点可执行='模仿';,
节点名='模仿';,
重置=[
('/input/pose';, '/turtlesim1/turtle1/pose';),
('/output/cmd_vel';, '/turtlesim2/turtle1/cmd_vel';),
]
)
])
2.1 检查启动文件
这些导入语句将一些 Python 启动
模块。
从 启动 舶来品 启动说明
从 launch_ros.actions 舶来品 节点
接下来,开始进行发射说明:
捍卫 生成发射描述():
返回 启动说明([
])
在 启动说明
是一个由三个节点组成的系统,均来自 海龟
软件包。该系统的目标是启动两个海龟模拟窗口,让一只海龟模仿另一只海龟的动作。
启动说明中的前两个操作会启动两个 turtlesim 窗口:
节点(
包装='turtlesim';,
节点名称空间='turtlesim1';,
节点可执行='turtlesim_node',
节点名='sim';
),
节点(
包装='turtlesim';,
节点名称空间='turtlesim2';,
节点可执行='turtlesim_node',
节点名='sim';
),
请注意,这两个节点之间唯一的区别是它们的命名空间值。独特的命名空间允许系统启动两个模拟器,而不会出现节点名称或主题名称冲突。
在这个系统中,两只海龟在同一个主题上接收指令,并在同一个主题上发布它们的姿势。如果没有唯一的命名空间,就无法区分消息是发给一只乌龟还是另一只乌龟。
最后一个节点也来自 海龟
软件包,但可执行文件不同: 模仿
.
节点(
包装='turtlesim';,
节点可执行='模仿';,
节点名='模仿';,
重置=[
('/input/pose';, '/turtlesim1/turtle1/pose';),
('/output/cmd_vel';, '/turtlesim2/turtle1/cmd_vel';),
]
)
该节点以重置的形式添加了配置细节。
模仿
's /input/pose
主题重新映射为 /turtlesim1/turtle1/pose
和它的 /output/cmd_vel
议题 /turtlesim2/turtle1/cmd_vel
.这意味着 模仿
将订阅 /turtlesim1/sim
的姿势主题,并将其重新发布为 /turtlesim2/sim
的速度指令主题进行订阅。换句话说 turtlesim2
将模仿 turtlesim1
的动作。
3 ros2 发射
启动 turtlesim_mimic_launch.py
进入之前创建的目录,运行以下命令:
cd 启动
ros2 launch turtlesim_mimic_launch.py
备注
可以直接启动启动文件(如上所述),也可以由软件包提供启动文件。当启动文件由软件包提供时,语法为
ros2 启动 <package_name> <launch_file_name>;
您将进一步了解 创建软件包 将在后面的教程中介绍。
将打开两个图标窗口,您将看到以下内容 [信息]
消息,告诉你启动文件启动了哪些节点:
[INFO] [启动]:默认日志冗余度设置为 INFO
[INFO] [turtlesim_node-1]: 进程以 pid [11714] 启动
[INFO] [turtlesim_node-2]: 进程以 pid [11715] 启动
[INFO] [mimic-3]:进程以 pid [11716] 启动
要查看系统运行情况,请打开一个新终端并运行 玫瑰2 主题 酒吧
上的 /turtlesim1/turtle1/cmd_vel
话题,让第一只乌龟动起来:
ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y:0.0, z: 0.0}, angular:{x: 0.0, y:0.0, z: -1.8}}";
你会看到两只乌龟沿着相同的路径前进。

4 使用 rqt_graph 对系统进行自省
当系统仍在运行时,打开一个新终端并运行 rqt_graph
以更好地了解启动文件中节点之间的关系。
运行该命令:
rqt_graph

一个隐藏节点(即 玫瑰2 主题 酒吧
命令)将数据发布到 /turtlesim1/turtle1/cmd_vel
左边的主题 /turtlesim1/sim
节点被订阅。图表的其余部分显示了前面所描述的内容: 模仿
已订阅 /turtlesim1/sim
的姿势主题,并发布到 /turtlesim2/sim
的速度命令主题。
摘要
启动文件可简化运行具有许多节点和特定配置细节的复杂系统。您可以使用 Python 创建启动文件,并使用 玫瑰2 启动
指挥。
下一步工作
在下一个教程中 记录和播放数据您将了解到另一个有用的工具、 ros2bag
.