警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
将启动文件集成到 ROS 2 软件包中
目标 为 ROS 2 软件包添加启动文件
辅导水平: 中级
时间 10 分钟
先决条件
您应该已经通过教程了解了如何 创建 ROS 2 软件包.
与往常一样,别忘了在 您打开的每个新终端.
背景介绍
在 上一个教程之前,我们学习了如何编写独立的启动文件。本教程将介绍如何在现有软件包中添加启动文件,以及通常使用的约定。
任务
1 创建软件包
为软件包创建一个工作空间:
mkdir -p launch_ws/src
CD launch_ws/src
mkdir -p launch_ws/src
CD launch_ws/src
医学博士 launch_ws\src
CD launch_ws\src
ros2 pkg create py_launch_example --build-type ament_python
ros2 pkg create cpp_launch_example --build-type ament_cmake
2 创建容纳启动文件的结构
按照惯例,软件包的所有启动文件都存储在 启动
目录。确保创建一个 启动
目录下的文件。
对于 Python 软件包,包含软件包的目录应如下所示:
源代码
py_launch_example/
package.xml
py_launch_example/
资源/
setup.py
setup.cfg
测试/
为了让 colcon 找到启动文件,我们需要使用 数据文件
的参数 设置
.
我们的 setup.py
锉刀
舶来品 os
从 水珠 舶来品 水珠
从 设置工具 舶来品 设置
包名 = 'py_launch_example'
设置(
# 其他参数 ...
数据文件=[
# ...其他数据文件
# 包括所有启动文件。
(os.路.加入('分享';, 包名), 水珠('launch/*launch.[pxy][yma]*'))
]
)
对于 C++ 软件包,我们只需调整 CMakeLists.txt
文件,添加
# 安装启动文件。
安装(目录
启动
目的地 分享/${项目名称}/
)
到文件末尾(但在 ament_package()
).
3 编写启动文件
您的 启动
目录下,新建一个名为 my_script_launch.py
.
_launch.py
建议用作 Python 启动文件的后缀,但不是必需的。但是,启动文件名需要以 launch.py
将由 玫瑰2 启动
.
启动文件应定义 generate_launch_description()
函数,该函数返回一个 launch.LaunchDescription()
将由 玫瑰2 启动
动词
舶来品 启动
舶来品 launch_ros.actions
捍卫 生成发射描述():
返回 启动.启动说明([
发射.行动.节点(
包装='demo_nodes_cpp',
可执行='talker';,
名字='talker';),
])
您的 启动
目录下,新建一个名为 my_script_launch.xml
.
_launch.xml
建议用作 XML 启动文件的后缀,但不是必需的。
启动>;
节点 pkg="demo_nodes_cpp"; exec=健谈; 名称健谈;/>;
</launch>;
您的 启动
目录下,新建一个名为 my_script_launch.yaml
.
_launch.yaml
建议用作 YAML 启动文件的后缀,但不是必需的。
启动:
- 网站:
包: "demo_nodes_cpp";
执行: 健谈;
名字: 健谈;
4 构建并运行启动文件
转到工作区的顶层,并构建它:
Colcon build
在 胶管 构建
成功创建工作区后,就可以运行启动文件了:
ros2 启动 py_launch_example my_script_launch.py
ros2 启动 py_launch_example my_script_launch.xml
ros2 launch py_launch_example my_script_launch.yaml
ros2 launch cpp_launch_example my_script_launch.py
ros2 launch cpp_launch_example my_script_launch.xml
ros2 launch cpp_launch_example my_script_launch.yaml
文件
发射文件 中也使用的概念提供了更多详细信息。 发射
.
有关发射功能的其他文档/示例即将发布。请参见源代码 (https://github.com/ros2/launch 和 https://github.com/ros2/launch_ros)。