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
패키지/config 경로에 parameters.yaml 파일을 하나 만든다
yaml 파일은 다음과 같이 구성된다.
노드이름:
ros__parameters:
파라미터그룹1:
하위파라미터1: "어떤문자열"
하위파라미터2: 12345
파라미터그룹2:
하위파라미터1: true
여기서 노드이름을 /** 와 같이 지정하면 패키지 내의 모든 노드에서 사용 가능하다. (와일드카드)
(!) ros와 parameters 사이에 ‘_’ 기호가 2개 들어가는 것에 유의할 것.
install 항목에 config 내용을 추가한다.
install(DIRECTORY config/
DESTINATION share/${PROJECT_NAME}/config
)
/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]
)
])