ROS 2Launch文件允许您同时启动和配置包含ROS 2节点的多个可执行文件。
一、为什么需要Launch文件
1、需要启动的节点太多,手动启动太麻烦
2、客户端服务端通信时,需要相互依赖(顺序启动)
3、在描述可重复使用的launch文件时,用参数文件yaml替换可用于提供更大的灵活性
4、启动配置好的RViz
5、在新版(ros2)的launch文件可以使用python编写,可以加入规则集(if)
二、launch文件编写
1、在功能包新建一个launch的文件夹
2、新建launch.py(名称自定)文件,我以nat.launch.py为例
内容为:
from launch import LaunchDescription #引入功能函数库
import launch_ros.actions
def generate_launch_description(): #默认函数名
'''
程序名称变量 = 函数打开(
package='功能包名',
executable='要启动程序名', #(在python功能被,setup.py中你已经定义了程序名,不用后缀)
name='usb_cam', #(随便名称)(可选)
#arguments=['0', '0', '0','0', '0','0','子坐标','父坐标'] TF坐标定义(可选)
arguments=['0', '0', '0','0', '0','0','yolo_link','base_link']
)
'''
usb_cam = launch_ros.actions.Node(
package='usb_cam',
executable='usb_cam_node_exe',
name='usb_cam',
)
#这个程序是我自己的,使用前需要更改或者删掉
nat_link = launch_ros.actions.Node(
package='nat_ros2',
executable='nat_node',
name='nat',
)
ld_pkg = LaunchDescription() #赋值对象
ld_pkg.add_action(usb_cam) #调用函数
ld_pkg.add_action(nat_link)
return ld_pkg
3、回到luanch文件夹里面打开终端,输入以下命令行
ros2 launch nat.launch.py
在终端检测是否有问题
4、如果已经可以在终端使用成功,就要在setup.py文件添加一行参数,让这个launch文件可以全局使用
from setuptools import find_packages, setup
from glob import glob #添加库文件
import os #添加库文件
package_name = 'nat_ros2'
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']),
#添加这一行,直接复制就可以了
(os.path.join('share',package_name,'launch'),glob('launch/*.launch.py')),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='xp01',
maintainer_email='xp01@todo.todo',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'nat_ros2 = nat_ros2.nat:main',
'nat_node = nat_ros2.nat_node:main',
'nat_po = nat_ros2.nat_po:main'
],
},
)
多launch文件启动:ROS2——启动多个launch文件_ros launch文件启动另一个launch文件-CSDN博客