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 파일은 여러 프로젝트에서 재사용이 가능하며 조금씩 수정해서 다른 상황에서도 사용이 가능하다.
- 로봇 시스템은 하나의 노드로 끝나는 경우가 거의 없다. 만약에 SLAM을 실행하려면, LiDAR 드라이버와 SLAM알고리즘과 RViz 노드 등이 필요한데 이러한 여러 노드를 동시에 실행해야한다.
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파일의 핵심 컨테이너이며, 실행할 노드와 액션들을 담는다.