launch 파일 작성

ROS2에서 launch 파일은 노드 및 설정을 정의하고, 여러 노드를 동시에 시작하는 데 유용하다. ROS2 Humble부터는 launch 파일이 Python으로 작성되며, 이 파일에서 노드 실행, 파라미터 설정, 환경 변수 설정 등을 관리할 수 있다.

기본 구조

ROS2의 launch 파일은 Python 스크립트 형태로 작성되며, launch 라이브러리를 사용해 노드를 정의하고 실행한다.

  1. 라이브러리 가져오기

    ROS2 launch 파일을 작성하려면 먼저 launchlaunch_ros 라이브러리를 가져온다.

    from launch import LaunchDescription
    from launch.actions import DeclareLaunchArgument, ExecuteProcess
    from launch_ros.actions import Node
  2. LaunchDescription 정의

    LaunchDescription 객체는 모든 노드와 설정을 포함하며, 이 객체를 통해 실행할 노드와 관련 설정을 정의한다.

간단한 launch 파일 예제

아래는 로봇 시뮬레이션 노드와 gz 명령어로 가제보를 실행하는 예제이다.

from launch import LaunchDescription
from launch.actions import ExecuteProcess
from launch_ros.actions import Node

def generate_launch_description():
    # ROS2 노드 정의
    robot_node = Node(
        package='my_robot_package',
        executable='robot_controller',
        name='robot_controller',
        output='screen'
    )

    # Gazebo 시뮬레이션 실행
    gazebo = ExecuteProcess(
        cmd=['gz', 'sim', '-v', '4', 'worlds/simple_world.sdf'],
        output='screen'
    )

    # LaunchDescription 객체에 노드와 시뮬레이션 프로세스 추가
    return LaunchDescription([
        robot_node,
        gazebo,
    ])

위 예제에서는 두 가지 주요 요소를 포함한다.

  • Node: ROS2 노드를 정의하는데, my_robot_package 패키지에서 robot_controller 실행 파일을 실행한다.

  • ExecuteProcess: gz 명령어로 가제보 시뮬레이션을 실행하며, simple_world.sdf 파일을 로드한다.

매개변수 및 환경 변수 설정

노드를 실행할 때 매개변수와 환경 변수를 설정하여 유연하게 제어할 수 있다.

매개변수 파일 설정

매개변수를 YAML 파일로 정의하고, Nodeparameters 속성을 사용하여 매개변수 파일을 로드할 수 있다.

환경 변수 설정

ROS2 노드에서 환경 변수를 설정하려면 env 속성을 사용한다.

Launch 파일 실행 방법

작성한 launch 파일을 실행하려면 다음 명령어를 사용한다.

이렇게 하면 정의된 노드와 가제보 시뮬레이션이 함께 실행된다.

XML로 launch 파일 작성

ROS2에서 launch 파일은 기본적으로 Python으로 작성되는 것이 일반적이지만, XML로도 launch 파일을 작성할 수 있다. XML 형식의 launch 파일은 ROS1과 유사하지만, ROS2에서 XML 형식의 launch 파일을 사용할 때는 일부 구문이 다를 수 있다.

기본 구조

XML 형식의 launch 파일은 <launch> 태그 안에 노드와 관련 설정을 포함하여 구성된다.

간단한 XML launch 파일 예제

아래는 my_robot_package라는 패키지의 robot_controller라는 노드를 실행하는 XML 형식의 launch 파일 예제이다.

위 파일은 ROS2에서 my_robot_package 패키지의 robot_controller라는 노드를 실행하고, 매개변수 use_sim_timetrue로 설정한다.

가제보 (gz)와 함께 사용하는 XML launch 파일 예제

ROS2 Humble에서는 Gazebo가 gz로 변경되었기 때문에 gz 명령어를 사용하여 시뮬레이션을 실행할 수 있다. 아래는 gz와 함께 사용하는 XML launch 파일 예제이다.

위 예제에서는 gz sim 명령어를 사용해 Gazebo 시뮬레이션을 실행하고, robot_controller 노드를 함께 실행한다.

XML launch 파일에서 환경 변수 설정

환경 변수를 설정하여 노드가 특정 환경을 인식하도록 할 수 있다. <env> 태그를 사용하여 환경 변수를 지정한다.

위 예제에서는 GAZEBO_MODEL_PATH라는 환경 변수를 설정하여 가제보 모델 파일의 경로를 지정한다.

XML launch 파일에서 Include 사용

다른 launch 파일을 포함할 때는 <include> 태그를 사용하여 구성할 수 있다. 예를 들어, 추가적인 노드 실행 설정을 포함하는 별도의 launch 파일이 있을 때 이를 포함하여 사용한다.

위 예제는 another_packageanother_launch_file.launch.xml을 포함하고, robot_controller 노드를 추가로 실행한다.

XML launch 파일 실행

XML 형식의 launch 파일을 실행하려면 다음과 같은 명령어를 사용한다.

이 XML launch 파일을 사용하여 ROS2 노드와 gz 시뮬레이션을 함께 관리할 수 있다.

Last updated