매개변수 이해하기
목표: ROS 2에서 매개변수를 가져오고 설정하고 저장 및 다시 불러오는 방법을 배웁니다.
배경
매개변수는 노드의 설정 값으로 생각할 수 있습니다. 매개변수를 노드 설정으로 생각할 수 있습니다. 노드는 정수, 부동 소수점, 부울, 문자열 및 목록과 같은 형식으로 매개변수를 저장할 수 있습니다. ROS 2에서 각 노드는 자체 매개변수를 유지합니다. 매개변수에 대한 자세한 내용은 개념 문서 를 참조하십시오.
작업
1 설정
/turtlesim 및 /teleop_turtle 두 개의 turtlesim 노드를 시작합니다.
새로운 터미널을 열고 다음 명령을 실행합니다:
ros2 run turtlesim turtlesim_node
다른 터미널을 열고 다음 명령을 실행합니다:
ros2 run turtlesim turtle_teleop_key
2 ros2 param list
노드에 속한 매개변수를 보려면 새로운 터미널을 열고 다음 명령을 입력합니다:
ros2 param list
노드 네임스페이스인 /teleop_turtle 와 /turtlesim 이 나열되며, 각 노드의 매개변수가 표시됩니다:
/teleop_turtle:
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
scale_angular
scale_linear
use_sim_time
/turtlesim:
background_b
background_g
background_r
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
use_sim_time
모든 노드는 use_sim_time 매개변수를 가지고 있으며, 이는 turtlesim에 고유하지 않습니다.
이름을 기반으로 하면, /turtlesim 의 매개변수가 RGB 색상 값을 사용하여 turtlesim 창의 배경 색상을 결정하는 것으로 보입니다.
매개변수의 유형을 확인하려면 ros2 param get 을 사용할 수 있습니다.
3 ros2 param get
매개변수의 유형과 현재 값을 표시하려면 다음 명령을 사용하십시오:
ros2 param get <node_name> <parameter_name>
지금 /turtlesim 의 매개변수 background_g 의 현재 값을 알아보겠습니다:
ros2 param get /turtlesim background_g
이 명령은 다음 값을 반환합니다:
Integer value is: 86
이제 background_g 가 정수 값을 보유하고 있음을 알게 되었습니다.
동일한 명령을 background_r 및 background_b 에 대해 실행하면 각각 69 및 255 값을 얻게 됩니다.
4 ros2 param set
실행 중에 매개변수 값을 변경하려면 다음 명령을 사용하십시오:
ros2 param set <node_name> <parameter_name> <value>
/turtlesim 의 배경 색상을 변경해 보겠습니다:
ros2 param set /turtlesim background_r 150
터미널은 다음 메시지를 반환해야 합니다:
Set parameter successfulㄴ
그리고 turtlesim 창의 배경 색상이 변경되어야 합니다:
set 명령을 사용하여 매개변수를 변경하면 현재 세션에서만 변경되며 영구적으로 변경되지 않습니다.
그러나 설정을 저장하고 다음 번 노드 시작 시 다시로드할 수 있습니다.
5 ros2 param dump
노드의 현재 매개변수 값을 모두 볼 수 있습니다. 다음 명령을 사용하십시오:
ros2 param dump <node_name>
이 명령은 기본 출력 (stdout)에 출력되지만 나중에 저장할 파일로 매개변수 값을 리디렉션할 수도 있습니다.
/turtlesim 의 현재 매개변수 구성을 “turtlesim.yaml” 파일에 저장하려면 다음 명령을 입력하십시오:
ros2 param dump /turtlesim > turtlesim.yaml
현재 작업 디렉토리에서 새로운 파일이 생성됩니다. 이 파일을 열면 다음 내용을 찾을 수 있습니다:
/turtlesim:
ros__parameters:
background_b: 255
background_g: 86
background_r: 150
qos_overrides:
/parameter_events:
publisher:
depth: 1000
durability: volatile
history: keep_last
reliability: reliable
use_sim_time: false
매개변수를 덤프하는 것은 나중에 노드를 동일한 매개변수로 다시로드하려는 경우에 유용합니다.
6 ros2 param load
명령을 사용하여 파일에서 현재 실행 중인 노드의 매개변수를 로드할 수 있습니다:
ros2 param load <node_name> <parameter_file>
ros2 param dump 로 생성된 turtlesim.yaml 파일을 /turtlesim 노드의 매개변수에 로드하려면 다음 명령을 입력하십시오:
ros2 param load /turtlesim turtlesim.yaml
터미널은 다음 메시지를 반환할 것입니다:
Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter qos_overrides./parameter_events.publisher.depth failed: parameter 'qos_overrides./parameter_events.publisher.depth' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.durability failed: parameter 'qos_overrides./parameter_events.publisher.durability' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.history failed: parameter 'qos_overrides./parameter_events.publisher.history' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.reliability failed: parameter 'qos_overrides./parameter_events.publisher.reliability' cannot be set because it is read-only
Set parameter use_sim_time successful
Note
읽기 전용 매개변수는 시작할 때만 수정할 수 있으며 그 이후에는 수정할 수 없으므로 qos_overrides 매개변수에 대한 일부 경고가 있습니다.
7 노드 시작 시 매개변수 파일 로드
저장된 매개변수 값을 사용하여 동일한 노드를 시작하려면 다음을 사용하십시오:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
이는 항상 turtlesim을 시작할 때 사용하는 명령과 동일하지만 추가된 플래그 --ros-args 와 --params-file 이 있으며 그 뒤에 로드하려는 파일이 따릅니다.
실행 중인 turtlesim 노드를 중지하고 다음 명령을 사용하여 저장된 매개변수로 다시로드해 보십시오.
ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
turtlesim 창은 평소처럼 나타나지만 이전에 설정한 보라색 배경이 적용됩니다.
Note
매개변수 파일이 노드 시작 시 사용되면 읽기 전용인 것을 포함하여 모든 매개변수가 업데이트됩니다.
요약
노드는 기본 구성 값을 정의하기 위해 매개변수를 가지고 있습니다.
매개변수 값을 명령 줄에서 get 및 set 할 수 있습니다.
매개변수 설정을 파일에 저장하여 나중에 다시로드할 수도 있습니다.