YAML 파라미터 파일
설정값이 스무 개라면 실행할 때마다 -p로 다 적어야 할까?
파일의 모양
노드 이름 아래 ros__parameters
파라미터 파일(parameter file)은 YAML로 씁니다. 맨 위에 노드 이름, 그 아래 ros__parameters:, 그 아래에 이름: 값을 줄마다 적습니다. 들여쓰기는 공백으로 하고 탭은 쓰지 않습니다.
ros__parameters의 밑줄은 두 개입니다. driver.yaml은 예시 파일 이름입니다.
따라 하기
시작할 때 --params-file로 넣습니다
4편의 -p 자리에 --params-file driver.yaml을 적으면 파일의 값이 한꺼번에 들어갑니다. turtlesim처럼 다른 사람이 만든 노드에도 똑같이 넣을 수 있습니다(8편).
driver.yaml이 지금 터미널의 폴더에 있다고 가정했습니다.
주의
노드 이름이 다르면 조용히 무시됩니다
파일 맨 위의 노드 이름이 실행된 노드 이름과 다르면, 오류 없이 그 부분을 건너뜁니다. 노드는 코드에 적힌 기본값으로 돕니다. 값이 들어갔는지 ros2 param get으로 꼭 확인합니다. /**는 어느 노드에나 맞는 이름입니다.
패키지에 넣기
YAML도 data_files로 설치합니다
파일은 패키지 안 config/ 폴더에 두고, setup.py의 data_files에 한 줄을 더합니다. 그래야 colcon build --symlink-install이 YAML을 설치 폴더에 넣습니다. 10강 8편에서 런치 파일을 설치하는 방법과 같습니다.
이 줄이 없으면 빌드해도 YAML이 설치되지 않습니다. --symlink-install이면 YAML도 링크로 설치되어 내용만 고칠 때는 다시 빌드하지 않아도 되지만, 새 파일을 더하거나 setup.py를 고치면 다시 빌드합니다.
설치된 곳
설치된 파일을 찾아서 씁니다
설치된 파일은 install/my_turtle/share/my_turtle/config/에 있습니다. 이 share 폴더는 ros2 pkg prefix --share my_turtle이 알려 주므로, 어느 폴더에서든 같은 명령으로 실행할 수 있습니다.
보통은 런치 파일에서 이 YAML을 넘깁니다(10강 6편).
순서
나중에 넣은 값이 이깁니다
코드의 기본값은 시작할 때 YAML이나 -p로 덮이고, 실행 중에는 ros2 param set이 다시 덮습니다. 노드를 다시 켜면 실행 중에 바꾼 값은 사라지고, 시작할 때 넣은 값부터 다시 시작합니다.
다음 편