매개변수 이해하기

목표: ROS 2에서 매개변수를 가져오고 설정하고 저장 및 다시 불러오는 방법을 배웁니다.

배경

매개변수는 노드의 설정 값으로 생각할 수 있습니다. 매개변수를 노드 설정으로 생각할 수 있습니다. 노드는 정수, 부동 소수점, 부울, 문자열 및 목록과 같은 형식으로 매개변수를 저장할 수 있습니다. ROS 2에서 각 노드는 자체 매개변수를 유지합니다. 매개변수에 대한 자세한 내용은 개념 문서 를 참조하십시오.

필수 준비물

이 튜토리얼은 turtlesim 패키지 를 사용합니다.

항상, 새로운 터미널을 열 때마다 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_rbackground_b 에 대해 실행하면 각각 69255 값을 얻게 됩니다.

4 ros2 param set

실행 중에 매개변수 값을 변경하려면 다음 명령을 사용하십시오:

ros2 param set <node_name> <parameter_name> <value>

/turtlesim 의 배경 색상을 변경해 보겠습니다:

ros2 param set /turtlesim background_r 150

터미널은 다음 메시지를 반환해야 합니다:

Set parameter successfulㄴ

그리고 turtlesim 창의 배경 색상이 변경되어야 합니다:

../../_images/set.png

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

매개변수 파일이 노드 시작 시 사용되면 읽기 전용인 것을 포함하여 모든 매개변수가 업데이트됩니다.

요약

노드는 기본 구성 값을 정의하기 위해 매개변수를 가지고 있습니다. 매개변수 값을 명령 줄에서 getset 할 수 있습니다. 매개변수 설정을 파일에 저장하여 나중에 다시로드할 수도 있습니다.

다음 단계

ROS 2 통신 방법으로 돌아가서 다음 튜토리얼에서는 actions 에 대해 알아보겠습니다.