이번에는 ROS 2에서 사용하는 Parameter(파라미터) 개념과 파라미터 목록을 확인하는 방법을 정리했다.
ROS 2의 Parameter는 각 노드에서 사용하는 다양한 매개변수를 설정하고 관리하기 위한 기능이다.
파라미터 관련 기능은 ROS Client Libraries(RCL)의 기본 기능으로 제공되며, 각 노드는 자신의 Parameter Server를 가지고 있다. 또한 Parameter Client를 통해 자신의 파라미터뿐만 아니라 다른 노드의 파라미터도 읽고 쓸 수 있다.
Parameter Client
│
읽기 / 쓰기
↓
Node
│
Parameter Server
이를 이용하면 노드에서 사용하는 다양한 매개변수를 외부에서 변경할 수 있기 때문에, 값을 변경할 때마다 프로그램을 다시 작성하거나 컴파일하지 않아도 된다.
또한 파라미터는 YAML 파일 형태의 설정 파일로 저장할 수 있으며, 노드를 실행할 때 해당 설정 파일을 불러와 초기 파라미터 값을 설정할 수도 있다.
ROS 2의 각 노드는 자신의 파라미터를 관리하기 위한 Parameter Server를 가지고 있다.
Parameter Client를 사용하면 해당 노드의 파라미터 값을 읽거나 변경할 수 있으며, 다른 노드의 파라미터에도 접근할 수 있다.
Node
├── Parameter Server
│ └── 자신의 Parameter 관리
│
└── Parameter Client
├── 자신의 Parameter 접근
└── 다른 Node의 Parameter 접근
이러한 구조를 이용하면 노드의 설정값을 외부에서 동적으로 변경할 수 있다.
Parameter는 노드에서 사용하는 다양한 설정값을 관리하는 데 활용할 수 있다.
특히 YAML 형식의 파라미터 설정 파일을 이용하면 노드의 초기 파라미터 값을 미리 지정하고, 노드를 실행할 때 해당 설정을 불러올 수 있다.
따라서 프로그램의 코드를 직접 수정하지 않고도 파라미터 값을 변경하여 노드의 동작을 조정할 수 있다.
현재 실행 중인 노드에서 사용할 수 있는 파라미터 목록은 ros2 param list 명령어를 이용하여 확인할 수 있다.
먼저 TurtleSim과 키보드 조작 노드를 실행한다.
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
그다음 다음 명령어를 실행한다.
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 노드가 각각 여러 개의 파라미터를 가지고 있는 것을 확인할 수 있다.
예를 들어 /turtlesim 노드에는 다음과 같은 파라미터가 있다.
background_b
background_g
background_r
use_sim_time
여기서 background_r, background_g, background_b는 TurtleSim의 배경색과 관련된 파라미터이며, use_sim_time도 파라미터로 확인할 수 있다.
이번에는 ROS 2의 Parameter가 무엇인지 알아보고, Parameter Server와 Parameter Client의 구조를 확인했다.
또한 YAML 형식의 설정 파일을 이용하여 파라미터를 관리할 수 있다는 점을 확인했으며, 실제 TurtleSim을 실행한 뒤 다음 명령어를 사용하여 현재 노드에서 사용하는 파라미터 목록을 확인했다.
ros2 param list
실습 내용을 정리하면 다음과 같다.
Parameter
→ 노드에서 사용하는 매개변수 관리
Parameter Server
→ 노드의 Parameter를 관리
Parameter Client
→ Parameter를 읽고 쓰기
YAML
→ Parameter 설정 파일로 활용
ros2 param list
→ 현재 실행 중인 노드의 Parameter 목록 확인
이번 실습을 통해 ROS 2에서 노드의 다양한 설정값을 Parameter로 관리하고, 실행 중인 노드가 어떤 Parameter를 가지고 있는지 확인하는 방법을 알아보았다.