Ubuntu ROS 실습(37)

zeusqoi·5일 전

개인공부 - ubuntu

목록 보기
56/58

이번 실습에서는 ROS 2의 Launch 프로그래밍을 학습했다. Python으로 Launch 파일을 작성하고, 여러 노드를 한 번에 실행하면서 파라미터 파일을 적용하는 과정을 실습했다.


1. ROS 2 Launch 프로그래밍

ROS 2의 Launch는 여러 개의 노드를 한 번에 실행하거나 노드의 이름, 네임스페이스, 파라미터 파일 등의 실행 옵션을 설정할 수 있다. 이번 실습에서는 Python으로 Launch 파일을 작성했다. ROS 실습 자료

이번 실습에서는 기존에 사용했던 argument와 calculator 노드를 하나의 Launch 파일에서 실행하도록 구성했다.


2. Launch 파일 확인

Launch 파일은 다음 경로에 있는 arithmetic.launch.py를 사용했다.

~/robot_ws/src/ros2-seminar-examples/topic_service_action_rclpy_example/launch/arithmetic.launch.py

파일의 기본 구조는 generate_launch_description() 함수를 사용하고, LaunchConfiguration으로 파라미터 파일의 경로를 설정한다.

def generate_launch_description():
    param_dir = LaunchConfiguration(
        'param_dir',
        default=os.path.join(
            get_package_share_directory(
                'topic_service_action_rclpy_example'),
            'param',
            'arithmetic_config.yaml'))

여기서 param_dir은 다음 YAML 파일을 가리킨다.

topic_service_action_rclpy_example/param/arithmetic_config.yaml

3. argument와 calculator 노드 설정

Launch 파일에서는 Node를 사용해 실행할 노드를 지정한다.

Node(
    package='topic_service_action_rclpy_example',
    executable='argument',
    name='argument',
    parameters=[param_dir],
    output='screen'),

Node(
    package='topic_service_action_rclpy_example',
    executable='calculator',
    name='calculator',
    parameters=[param_dir],
    output='screen'),

따라서 Launch 파일 하나를 실행하면 argument와 calculator가 함께 실행된다.

또한 두 노드에 동일한 arithmetic_config.yaml 파라미터 파일을 적용하도록 설정했다.


4. setup.py에서 Launch 파일 설치 설정

Python 패키지에서는 setup.py의 data_files에 Launch 파일과 YAML 파일을 등록해야 한다.

(share_dir + '/launch',
 glob.glob(os.path.join('launch', '*.launch.py'))),

(share_dir + '/param',
 glob.glob(os.path.join('param', '*.yaml'))),

이를 통해 launch 디렉터리의 .launch.py 파일과 param 디렉터리의 YAML 파일을 패키지 설치 과정에 포함시킬 수 있다.


5. 패키지 빌드

Launch 파일을 패키지에서 사용할 수 있도록 패키지를 다시 빌드했다.

cd ~/robot_ws

colcon build --symlink-install \
--packages-select topic_service_action_rclpy_example

빌드가 정상적으로 완료된 후 ROS 2 환경을 다시 적용했다.

source ~/robot_ws/install/setup.zsh

6. Launch 실행

이제 ros2 launch 명령어를 이용해 Launch 파일을 실행했다.

ros2 launch topic_service_action_rclpy_example arithmetic.launch.py

Launch 파일을 실행하면 argument와 calculator 노드가 함께 실행되며, 설정된 파라미터 파일도 적용된다.


마무리

이번 실습에서는 Python으로 작성된 ROS 2 Launch 파일을 이용해 여러 노드를 한 번에 실행하는 방법을 확인했다.

특히 LaunchConfiguration을 이용해 파라미터 파일을 지정하고, Node를 이용해 argument와 calculator를 실행하는 과정을 직접 실습했다.

또한 setup.py에 Launch 파일과 YAML 파일을 등록한 후 패키지를 빌드하고 ros2 launch 명령으로 정상적으로 실행되는 것을 확인했다.

이번 실습을 통해 ROS 2에서 여러 노드를 각각 ros2 run으로 실행하는 대신 Launch 파일을 사용해 여러 노드와 파라미터 설정을 한 번에 관리하고 실행하는 방법을 익혔다.

0개의 댓글