#!/usr/bin/python3
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import LifecycleNode
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument

import lifecycle_msgs.msg
import os

def generate_launch_description():
    driver_dir = os.path.join(get_package_share_directory('lslidar_driver'), 'params', 'lslidar_c16.yaml')

    driver_node = LifecycleNode(package='lslidar_driver',
                                            namespace='c16',
                                executable='lslidar_c16driver_node',
                                name='lslidar_driver_node',
                                output='screen',
                                emulate_tty=True,
                                parameters=[driver_dir],
                                )

    rviz_dir = os.path.join(get_package_share_directory('lslidar_driver'), 'rviz_cfg', 'lslidar_c16.rviz')

    rviz_node = Node(
        package='rviz2',
        namespace='c16',
        executable='rviz2',
        name='rviz2',
        arguments=['-d', rviz_dir],
        output='screen')

    return LaunchDescription([
        driver_node,rviz_node
    ])

这是一个ROS2的launch文件,用于启动lslidar_driver包中的lslidar_c16driver_node节点和rviz2节点。

  • lslidar_c16driver_node节点是用于驱动激光雷达的节点,负责接收激光雷达数据并发布为ROS2消息。
  • rviz2节点用于可视化激光雷达数据,可以直观地查看激光雷达扫描的结果。

该launch文件使用Python编写,并调用了以下ROS2包中的函数:

  • ament_index_python.packages: 用于获取ROS2包路径。
  • launch: 用于创建和管理launch文件。
  • launch_ros.actions: 用于启动ROS2节点和其他相关操作。

代码解析:

  1. 首先,代码导入了必要的库和模块。
  2. generate_launch_description()函数是launch文件的主函数,它定义了要启动的节点和相关配置。
  3. driver_dir变量使用get_package_share_directory()函数获取lslidar_driver包的路径,并拼接出配置文件lslidar_c16.yaml的完整路径。
  4. driver_node使用LifecycleNode类定义了lslidar_c16driver_node节点,并设置了节点的包名、命名空间、可执行文件路径、节点名称、输出方式、参数文件等。
  5. rviz_dir变量同样使用get_package_share_directory()函数获取lslidar_driver包的路径,并拼接出RViz配置文件lslidar_c16.rviz的完整路径。
  6. rviz_node使用Node类定义了rviz2节点,并设置了节点的包名、命名空间、可执行文件路径、节点名称、启动参数(加载RViz配置文件)等。
  7. 最后,LaunchDescription函数将所有要启动的节点添加到launch文件中,并返回launch描述。

通过运行该launch文件,即可启动Lslidar C16激光雷达驱动和Rviz可视化,方便用户进行激光雷达数据采集和分析。

ROS2 Launch文件解析:启动Lslidar C16激光雷达驱动与Rviz可视化

原文地址: https://www.cveoy.top/t/topic/jAaD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录