Robot Operating System/Tutorial 따라하기

[Dashing][CLI Tools] 6. Understanding ROS 2 parameters

jstar0525 2021. 5. 11. 11:37
반응형

이 글은 아래의 자료를 참고로 만들어졌습니다.

 

docs.ros.org/en/dashing/Tutorials/Parameters/Understanding-ROS2-Parameters.html

 

Understanding ROS 2 parameters — ROS 2 Documentation: Dashing documentation

Goal: Learn how to get, set, save and reload parameters in ROS 2. A parameter is a configuration value of a node. You can think of parameters as node settings. A node can store parameters as integers, floats, booleans, strings and lists. In ROS 2, each nod

docs.ros.org


 

Understanding ROS 2 parameters

Goal: Learn how to get, set, save and reload parameters in ROS 2.

 

Tutorial level: Beginner

 

Background

parameter은 node의 configuration 값입니다. parameters은 node의 설정으로 생각할 수 있습니다.

node는 정수, 실수, 문자열, list들로 parameters에 저장할 수 있습니다.

ROS 2에서는 각 노드가 각자의 parameters을 관리합니다.

 

Prerequisites

이 튜토리얼에서는 turtlssim package가 사용됩니다.

 

항상 새로운 터미널에 설정파일을 소싱하는 것을 잊지 마세요.

 

Tasks

 

1 Setup

2개의 turtlesim nodes(/trutlesim/teleop_turtle)을 실행합니다.

 

새로운 터미널을 열어 아래의 명령을 실행합니다.

$ ros2 run turtlesim turtlesim_node

 

또 다른 터미널을 열어 아래의 명령을 실행합니다.

$ ros2 run turtlesim turtle_teleop_key

 

2 ros2 param list

실행한 nodes의 parameters을 보기 위해,

새로운 터미널을 열어 아래의 명령을 실행합니다.

$ ros2 param list

/teleop_turtle:
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  use_sim_time

각 노드들(/teleop_turtle/turtlesim)에 대해서 paramters을 확인할 수 있습니다. 

 

각 노드에는 use_sim_time parameter을 가지고 있습니다.

 

/turtlesim의 parameters은 이름에서 알 수 있듯이

RGB 값을 이용하여 배경색을 결정할 수 있습니다.

 

3 ros2 param get

위의 parameters의 list를 알 수 있었으므로

아래의 명령을 통해 현재 parameter 값을 가져올 수 있습니다.

$ ros2 param get <node_name> <parameter_name>

/turtlesim의 parameter인 background_g의 현재 값을 알아보기 위해

아래의 명령을 실행합니다.

$ ros2 param get /turtlesim background_g

Integer value is: 86

background_r과 background_b에 대해서도

위의 명령어를 수정하여 알 수 있습니다.

$ ros2 param get /turtlesim background_r

Integer value is: 69
$ ros2 param get /turtlesim background_b

Integer value is: 255

 

4 ros2 param set

parameter의 값을 바꾸기 위해서

아래의 명령을 실행합니다.

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

아래의 명령으로 /turtlesim의 배경화면을 바꿔봅시다.

$ ros2 param set /turtlesim background_r 150

Set parameter successful

set 명령으로 바꾼 parameters setting은 현재의 session에서만 적용되며,

영구적으로 적용되지는 않습니다.

 

하지만 이후의 배울 내용(ros2 param dump)으로 변경된 setting 내용을 저장하고

node를 실행하였을 때, 그 값을 불러올 수 있습니다.

 

5 ros2 param dump

Dashing에서는

현재 변경한 parameters를 바로 저장해주는

param dump 명령을 사용할 수 없습니다.

 

하지만 직접 작성하여 저장한 parameters을 불러와

node를 실행하는 것은 가능합니다.

아래의 명령어를 실행하여 해당 내용을 적고 저장합니다.

$ nano ./turtlesim.yaml

turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    use_sim_time: false

 

만약 dashing보다 높은 버전의 ROS 2를 사용한다면

아래의 명령으로 현재의 parameters를 저장 가능합니다.

$ ros2 param dump <node_name>
$ ros2 param dump /turtlesim

Saving to:  ./turtlesim.yaml

해당 내용은 아래의 명령을 확인할 수 있습니다.

$ cat ./turtlesim.yaml

turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    use_sim_time: false

 

6 Load parameter file

Dashing에서 yaml 파일을 불러와

이미 설정한 parameters로 node를 실행하는 명령은 아래와 같습니다.

$ ros2 run turtlesim turtlesim_node __params:=./turtlesim.yaml

여기서 __params은 parameter file의 경로입니다.

 

만약 Dashing보다 높은 버전의 ROS 2에서 dump 명령을 사용했다면

아래의 명령으로 parameter file을 불러 올 수 있습니다.

$ ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
$ ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
반응형