[Dashing][CLI Tools] 6. Understanding ROS 2 parameters
이 글은 아래의 자료를 참고로 만들어졌습니다.
docs.ros.org/en/dashing/Tutorials/Parameters/Understanding-ROS2-Parameters.html
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