ROS 2

Launch file

정지홍 2025. 2. 5. 12:58

Launch file

  • ROS에서 여러개의 node , parameter 설정등을 한번에 실행할 수 있게 해주는 XML 기반의 파일이다.
    보통 확장자는 .launch이다.
    • ROS1에서는 주로 XML형식이며, ROS2에서는 python 형식도 지원한다.
  • 왜 launch 파일이 필요한가?
    • 로봇 시스템은 하나의 노드로 끝나는 경우가 거의 없다. 만약에 SLAM을 실행하려면, LiDAR 드라이버와 SLAM알고리즘과 RViz 노드 등이 필요한데 이러한 여러 노드를 동시에 실행해야한다.
      • 그래서 각 노드의 설정을 launch파일에서 한번에 정의하는 것이 가능하여 편리하다. 그리고 한번 작성한 launch 파일은 여러 프로젝트에서 재사용이 가능하며 조금씩 수정해서 다른 상황에서도 사용이 가능하다.

 

 

 

Launch file의 기본구조

<launch>
    <!-- 파라미터 설정 -->
    <param name="parameter_name" value="parameter_value" />

    <!-- 노드 실행 -->
    <node pkg="패키지명" type="노드 실행 파일" name="노드 이름" output="screen">
        <param name="내부_파라미터" value="값" />
        <remap from="/기존_토픽" to="/새_토픽" />
    </node>
</launch>
  • <launch>
    • 모든 launch파일은 <launch>태그로 감싸야한다.
  • <param>
    • ros 파라미터 서버에 파라미터를 설정
  • <node>
    • 노드를 실행하는 명령어
      • pkg 노드가 속한 패키지 이름
      • type 실행할 노드의 이름
      • name 노드에 부여할 이름
      • output 로그 출력 방식
  • <remap>
    • 토픽이름을 변경할 수 있다

 

 

 

Launch file의 기본구조 ( python )

from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='패키지명',
            executable='노드 실행 파일',
            name='노드 이름',
            output='screen',
            parameters=[{'파라미터 이름': '값'}],
            remappings=[('/기존_토픽', '/새_토픽')]
        )
    ])
  • LaunchDescription
    • Launch파일의 핵심 컨테이너이며, 실행할 노드와 액션들을 담는다.