ROS 2 启动文件 Launch
在 ROS 2 中,启动文件 (launch file) 是用来配置和管理多个节点的工具,可以在一次启动中启动多个节点、参数配置、配置环境变量和设置启动条件等。经典的小乌龟 (turtlesim) 是一个非常好的入门示例。它可以用于演示如何使用启动文件启动和控制多个节点。本文将以启动小乌龟仿真为例,展示如何编写 ROS 2 启动文件。
1. 创建项目与启动文件
首先,假设你已经安装了 ROS 2,并且创建了一个名为 my_turtle_launch
的 ROS 2 包:
ros2 pkg create my_turtle_launch --build-type ament_python
在这个包的 launch/
目录下,创建一个名为 turtlesim_launch.py
的启动文件。
文件结构如下:
my_turtle_launch/
├── launch/
│ └── turtlesim_launch.py
├── setup.py
├── package.xml
└── ...
2. 启动文件内容
在 turtlesim_launch.py
中,编写以下内容:
# 文件路径: launch/multi_turtlesim_launch.py
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
# 启动第一只小乌龟
Node(
package='turtlesim',
executable='turtlesim_node',
name='turtle1',
output='screen',
parameters=[{
'background_r': 255, 'background_g': 255, 'background_b': 0}], # 黄色背景
remappings=[('/turtle1/cmd_vel', '/turtle1/cmd_vel')]
),
# 启动第二只小乌龟
Node(
package='turtlesim',
executable='turtlesim_node',
name='turtle2',
output='screen',
parameters=[{
'background_r': 0, 'background_g': 255, 'background_b': 255}], # 青色背景
remappings=[('/turtle1/cmd_vel', '/turtle2/cmd_vel')]
)
])
3. setup.py设置
from setuptools import find_packages, setup
from glob import glob
package_name = 'my_turtle_launch'
setup(
name=package_name,
version='0.0.0',
packages=find_packages(exclude=['test']),
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob("launch/*launch.py")),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='ipc',
maintainer_email='[email protected]',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
],
},
)
4. 启动
现在,你可以使用以下命令启动小乌龟仿真:
colcon build
source install/setup.bash
ros2 launch my_turtle_launch turtlesim_launch.py
在这个扩展示例中,我们启动了两只小乌龟,并分别设置了背景颜色。同时,通过 remappings
参数重映射了话题,以便两个节点的控制不冲突。
6. 总结
通过这个示例,我们学习了如何在 ROS 2 中使用启动文件启动和配置节点。使用启动文件,可以轻松管理和配置多个节点、参数和话题映射。这对于复杂系统的开发和调试极为有用。
希望这篇文章能够帮助你更好地理解和掌握 ROS 2 启动文件的使用技巧。