노드마다 따로 갖는 설정값
속도 숫자 하나 바꾸려고 매번 코드를 고치고 다시 띄워야 할까?
화면을 누르면 다음 장으로 넘어갑니다
문제
숫자를 코드에 박으면 다시 띄웁니다
거북이 속도를 코드에 1.0으로 적어 두면, 2.0으로 바꿀 때마다 코드를 고치고 돌던 노드를 껐다가 다시 띄워야 합니다. C++ 노드라면 그 사이에 다시 빌드도 해야 합니다(5강). 로봇을 맞추다 보면 이런 숫자를 수십 번 바꿉니다.
파이썬 노드는 --symlink-install로 빌드해 두면 다시 빌드하지 않아도 됩니다(5강 8편). self.speed는 예시 이름입니다.
파라미터
노드가 가진 설정값입니다
파라미터(parameter)는 노드의 설정값입니다. turtlesim 노드는 연못 배경색을 background_r, background_g, background_b 세 파라미터로 갖고 있습니다. 값만 바꾸면 코드를 고치거나 노드를 다시 띄우지 않아도 동작이 바뀝니다.
1강 7편에서 본 것처럼 파라미터는 대화법이 아니라 노드의 설정값입니다.
노드마다
설정값은 노드마다 따로 있습니다
파라미터는 그것을 가진 노드에 딸려 있습니다. 키보드 노드 /teleop_turtle은 키 한 번에 얼마나 움직일지를 scale_linear, scale_angular로 갖습니다. 그래서 파라미터를 찾을 때는 언제나 노드 이름 + 파라미터 이름으로 찾습니다.
ROS 1과 다른 점
ROS 1 같은 전역 서버는 없습니다
ROS 1에는 모든 노드의 값을 한곳에 모아 두는 파라미터 서버(parameter server)가 있었습니다. ROS 2에는 그런 전역 서버가 없습니다. 값은 각 노드 안에 있고, 노드가 꺼지면 그 노드의 파라미터도 함께 사라집니다.
끈 뒤에도 값을 남기는 방법은 8편(dump·load)에서 봅니다.
정하는 곳
값을 넣는 곳은 세 군데
기본값은 노드 코드에 적습니다. 노드를 띄울 때 YAML 파일로 한꺼번에 덮어쓸 수 있고, 실행 중에는 ros2 param set 명령으로 바꿉니다. 이 강에서는 이 세 곳을 차례로 다룹니다.
speed와 값 1.0, 2.0, 3.0은 예시입니다.
값의 종류
파라미터에는 타입이 있습니다
파라미터 값은 참거짓, 정수, 실수, 문자열과 그 목록 가운데 하나입니다. 한 번 정해진 타입은 바뀌지 않습니다. 정수인 background_r에 1.5를 넣으면 노드가 거절합니다.
가운데 열은 ros2 param 명령이 타입을 부르는 이름입니다(2편).
다음 편