创建launch文件 [待校准@7562]
Goal目标: Create创建一个launch文件以运行复杂的ROS 2系统。 [待校准@7563]
教程级别: 初学者 [Alyssa@7088]
时间: 10分钟 [Alyssa@7452]
内容
先决条件
本教程使用 rqt_graph and turtlesim 包。 [待校准@7564]
您还需要使用您喜欢的文本编辑器。 [待校准@7565]
和往常一样,不要忘记在 every new terminal you open 中源文件ROS 2。 [待校准@7566]
任务
1设置 [待校准@7567]
创建一个新目录来存储您的launch文件: [待校准@7568]
mkdir launch
创建launch文件 turtlesim_mimic_launch.py
输入以下命令在终端: [待校准@7569]
touch launch/turtlesim_mimic_launch.py
touch launch/turtlesim_mimic_launch.py
type nul > launch/turtlesim_mimic_launch.py
您也可以使用GUI进入系统的文件目录,并以这种方式创建一个新文件。 [待校准@7570]
在首选文本编辑器中打开新文件。 [待校准@7571]
2写launch文件 [待校准@7572]
让我们使用 turtlesim
包及其可执行文件来整理一个ROS 2launch文件。 [待校准@7573]
将完整的代码复制并粘贴到 turtlesim_mimic_launch.py
文件中: [待校准@7574]
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='turtlesim',
namespace='turtlesim1',
executable='turtlesim_node',
name='sim'
),
Node(
package='turtlesim',
namespace='turtlesim2',
executable='turtlesim_node',
name='sim'
),
Node(
package='turtlesim',
executable='mimic',
name='mimic',
remappings=[
('/input/pose', '/turtlesim1/turtle1/pose'),
('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
]
)
])
2.1检查launch档案 [待校准@7575]
这些导入语句引入了一些Python launch
模块。 [待校准@7576]
from launch import LaunchDescription
from launch_ros.actions import Node
接下来,launch的描述开始于: [待校准@7577]
def generate_launch_description():
return LaunchDescription([
])
在 LaunchDescription
中是一个由三个节点组成的系统,全部来自 turtlesim
包。该系统的目标是让两只乌龟的窗口launch,让一只乌龟模仿另一只乌龟的运动。 [待校准@7578]
前两个动作在launch描述launch两个turtlesim windows: [待校准@7579]
Node(
package='turtlesim',
namespace='turtlesim1',
executable='turtlesim_node',
name='sim'
),
Node(
package='turtlesim',
namespace='turtlesim2',
executable='turtlesim_node',
name='sim'
),
请注意,两个节点之间的唯一区别是它们的命名空间值。唯一命名空间允许系统启动两个模拟器,没有节点名称或话题名称冲突。 [待校准@7580]
这个系统中的两只海龟接收对同一话题的命令,并在同一话题上发布它们的姿势。如果没有唯一的命名空间,就无法区分针对一只乌龟或另一只乌龟的消息。 [待校准@7581]
最后一个节点也来自 turtlesim
包,但有一个不同的可执行文件: mimic
。 [待校准@7582]
Node(
package='turtlesim',
executable='mimic',
name='mimic',
remappings=[
('/input/pose', '/turtlesim1/turtle1/pose'),
('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
]
)
此节点以重映射的形式添加了配置详细信息。 [待校准@7583]
mimic
's /input/pose
topic is remapped to /turtlesim1/turtle1/pose
and it's /output/cmd_vel
topic to /turtlesim2/turtle1/cmd_vel
. This means mimic
will subscribe to /turtlesim1/sim
's pose topic and republish it for /turtlesim2/sim
's velocity command topic to subscribe to. In other words, turtlesim2
will mimic turtlesim1
's运动。 [待校准@7584]
3 ros2launch [待校准@7585]
转launch turtlesim_mimic_launch.py
,进入目录更早运行以下命令: [待校准@7586]
cd launch
ros2 launch turtlesim_mimic_launch.py
注解
可以launchalaunch文件直接 (我们),或提供包。由包提供时,语法为: [待校准@7587]
ros2 launch <package_name> <launch_file_name>
你将在稍后的教程中了解更多关于 creating packages 的知识。 [待校准@7588]
注解
用包带launch文件,最好添加 exec_depend
依赖 ros2launch
包的 package.xml
: [待校准@7589]
<exec_depend>ros2launch</exec_depend>
这有助于确保在构建包后 ros2 launch
命令可用。它也确保所有的 launch file formats 都被识别。 [待校准@7590]
两个turtlesim窗口将打开,您将看到以下 [INFO]
消息,告诉您您的launch文件已启动的节点: [待校准@7591]
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [turtlesim_node-1]: process started with pid [11714]
[INFO] [turtlesim_node-2]: process started with pid [11715]
[INFO] [mimic-3]: process started with pid [11716]
要查看系统的动作,打开一个新的终端,在 /turtlesim1/turtle1/cmd_vel
话题上运行 ros2 topic pub
命令,让第一只乌龟移动: [待校准@7592]
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}}"
你会看到两只海龟沿着同一条路走。 [待校准@7593]
4使用rqt_graph自检系统 [待校准@7594]
当系统仍在运行时,打开一个新的终端并运行 rqt_graph
,以更好地了解launch文件中节点之间的关系。 [待校准@7595]
运行命令: [待校准@7596]
rqt_graph
一个隐藏节点 (您运行的 ros2 topic pub
命令) 正在将数据发布到左侧的 /turtlesim1/turtle1/cmd_vel
话题, /turtlesim1/sim
节点已订阅该话题。图表的其余部分显示了之前描述的内容: mimic
订阅了 /turtlesim1/sim
的姿势话题,并出版了 /turtlesim2/sim
的速度命令话题。 [待校准@7597]
总结
[需手动修复的语法]Launch文件简化了运行具有许多节点和特定配置细节的复杂系统。您可以使用Python创建launch文件,并使用 ros2 launch
命令运行它们。 [待校准@7598]
注解
有关ROS 2launch文件的更多教程,请参见 main launch file tutorial page 。 [待校准@7560]
注解
您也可以使用XML和YAML创建launch文件。您可以在以下文档中看到这些不同的ROS 2launch格式的比较: doc:'/操作指南/Launch文件不同格式'。 [待校准@7599]