ros2 param set

거북이를 끄지 않고 연못 색을 바꿀 수 있을까?

명령의 모양

누구의, 무엇을, 얼마로

형식은 ros2 param set <노드 이름> <파라미터 이름> <값>입니다. 2편의 get과 같은 자리에 새 값 하나만 더 적습니다.

따라 하기

돌고 있는 채로 배경색이 바뀝니다

2편처럼 노드 둘을 띄운 채로 새 터미널에서 ros2 param set /turtlesim background_r 150을 칩니다. Set parameter successful이 나오고, 거북이 창은 그대로 둔 채 연못만 보라색이 됩니다.

줄 끝의 \는 다음 줄로 이어 친다는 뜻입니다. 한 줄로 쳐도 됩니다.

속을 보면

사실은 서비스 호출입니다

노드는 만들어질 때 /turtlesim/set_parameters 같은 파라미터 서비스를 저절로 갖습니다. ros2 param 명령은 이 서비스를 부르는 클라이언트입니다(7강). 값이 바뀌면 노드는 /parameter_events 토픽으로 알리고, turtlesim은 그 알림을 받아 연못을 다시 그립니다.

거절

범위나 타입이 틀리면 거절합니다

2편에서 본 범위 0~255를 벗어난 300은 거절됩니다. 정수 파라미터에 실수 1.5를 넣어도 타입이 달라 거절됩니다. 거절되면 값은 그대로이고, 붉은 글씨에 이유가 적혀 나옵니다.

긴 오류 줄은 화면에 맞게 나누고 줄였습니다.

다른 노드도

키보드 노드도 그 자리에서 바뀝니다

ros2 param set /teleop_turtle scale_linear 4.0을 치고 키보드 터미널에서 위쪽 화살표를 눌러 보세요. 키 한 번에 거북이가 두 배 멀리 갑니다. 키보드 노드가 키를 누를 때마다 이 값을 새로 읽기 때문입니다.

노드가 값을 언제 읽느냐에 따라 바로 반영되지 않을 수도 있습니다(5편).

주의

껐다 켜면 원래 값으로 돌아갑니다

set은 지금 돌고 있는 노드의 값만 바꿉니다. 노드를 끄고 다시 띄우면 코드에 적힌 기본값으로 시작합니다. 1편에서 본 것처럼 값은 노드 안에만 있기 때문입니다.

바꾼 값을 파일로 남기는 방법은 8편, 시작할 때 넣는 방법은 6편에서 봅니다.

다음 편

내가 만든 노드에도 이런 설정값을 달 수 있을까요?

4편노드에서 선언하기 8강 목록