LaunchDescription 객체는 모든 노드와 설정을 포함하며, 이 객체를 통해 실행할 노드와 관련 설정을 정의한다.
간단한 launch 파일 예제
아래는 로봇 시뮬레이션 노드와 gz 명령어로 가제보를 실행하는 예제이다.
from launch import LaunchDescriptionfrom launch.actions import ExecuteProcessfrom launch_ros.actions import Nodedefgenerate_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 객체에 노드와 시뮬레이션 프로세스 추가returnLaunchDescription([ robot_node, gazebo,])
위 예제에서는 두 가지 주요 요소를 포함한다.
Node: ROS2 노드를 정의하는데, my_robot_package 패키지에서 robot_controller 실행 파일을 실행한다.
ExecuteProcess: gz 명령어로 가제보 시뮬레이션을 실행하며, simple_world.sdf 파일을 로드한다.
매개변수 및 환경 변수 설정
노드를 실행할 때 매개변수와 환경 변수를 설정하여 유연하게 제어할 수 있다.
매개변수 파일 설정
매개변수를 YAML 파일로 정의하고, Node에 parameters 속성을 사용하여 매개변수 파일을 로드할 수 있다.
환경 변수 설정
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_time을 true로 설정한다.
가제보 (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_package의 another_launch_file.launch.xml을 포함하고, robot_controller 노드를 추가로 실행한다.
XML launch 파일 실행
XML 형식의 launch 파일을 실행하려면 다음과 같은 명령어를 사용한다.
이 XML launch 파일을 사용하여 ROS2 노드와 gz 시뮬레이션을 함께 관리할 수 있다.