ros의 node를 실행할때 yaml 파일을 읽어서 설정을 적용할 수 있다.

이 문서는 rclcpp를 기준으로 작성되었다. (rclpy는 추가 예정)

참조할만한 문서

https://www.theconstructsim.com/how-to-read-and-write-parameters-in-ros1-and-ros2/

https://hybridego.net/2353?category=922045

yaml 파일 작성

패키지/config 경로에 parameters.yaml 파일을 하나 만든다

yaml 파일은 다음과 같이 구성된다.

노드이름:
  ros__parameters:
    파라미터그룹1:
      하위파라미터1: "어떤문자열"
      하위파라미터2: 12345
    파라미터그룹2:
      하위파라미터1: true

여기서 노드이름을 /** 와 같이 지정하면 패키지 내의 모든 노드에서 사용 가능하다. (와일드카드)

(!) ros와 parameters 사이에 ‘_’ 기호가 2개 들어가는 것에 유의할 것.

CMakeLists.txt 수정

install 항목에 config 내용을 추가한다.

install(DIRECTORY config/
  DESTINATION share/${PROJECT_NAME}/config
)

launch 파일 작성

/launch 디렉토리에 launch.py 파일을 하나 작성한다.

LaunchDescription의 Node에 parameter 항목으로 parameters.yaml 파일을 추가한다.

import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    config = os.path.join(
        get_package_share_directory('패키지이름'),
        'config',
        'parameters.yaml'
        )
    return LaunchDescription([
        Node(
            package = '패키지이름',
            executable = '노드이름',
            output = 'screen',
            parameters = [config]
        )
    ])