[ROS2] Node와 데이터 통신
노드(Node)는 최소 단위의 실행 가능한 프로세스를 가리키는 용어이다. ROS에서는 보통 최소한의 실행 단위로 프로그램을 나누어 작업을 진행하며, 노드들이 연동되는 ROS 시스템을 위해서는 노드와 노드 사이에 입출력 데이터를 서로 주고 받을 수 있도록 설계해야만 한다. 여기서 주고받는 데이터를 메시지(Message)라고 하며, 메시지를 주고받는 통신 방법에 따라 토픽(Topic), 서비스(Service), 액션(Action), 파라미터(Parameter) 로 나눌 수 있다.
기본적으로 노드를 실행시키는 방법에는 다음과 같다.
- 하나의 노드를 실행
ros2 run
- 하나 이상의 노드 실행
ros2 launch
1. 토픽 (Topic):
- 개념: 토픽은 메시지를 주고받을 수 있도록 하는 통신 메커니즘 중 하나이다. 노드 간에 비동기식 통신을 할 수 있다.
- 활용: 여러 노드가 동일한 토픽에 메시지를 발행(Publish)하고, 다른 노드가 해당 토픽을 구독(Subscribe)하여 메시지를 수신한다.
- 예시: 센서 데이터, 로봇 위치 정보 등을 주고받을 때 사용된다.
2. 서비스 (Service):
- 개념: 서비스는 두 노드 간에 요청(Request)와 응답(Response)를 통해 통신하는 메커니즘이다. 동기식 통신을 제공한다.
- 활용: 클라이언트 노드가 서버 노드에게 요청을 보내고, 서버는 해당 요청에 응답한다.
- 예시: 로봇 팔을 특정 위치로 이동시키는 요청과 응답, 서비스 호출을 통한 계산 등이 있다.
3. 액션 (Action):
- 개념: 액션은 장기적이거나 중단 가능한 목표를 가진 비동기식 통신 메커니즘입니다. 행동에 대한 목표를 설정하고, 그 목표를 달성하기 위한 상태 정보를 주기적으로 제공한다.
- 활용: 액션은 일반적으로 서비스보다 더 복잡하고 지속적인 작업을 수행할 때 사용된다.
- 예시: 로봇이 특정 지점으로 이동하도록 명령하고, 그 동안의 진행 상태를 주기적으로 확인할 수 있다.
4. 파라미터 (Parameter):
- 개념: 파라미터는 노드의 동작을 제어하거나 설정하기 위한 값들을 저장하는 메커니즘이다.
- 활용: 노드의 동작에 영향을 미치는 설정 값들을 저장하고, 런타임 중에 업데이트할 수 있다.
- 예시: 로봇 속도, 센서 감도, 주행 경로 등을 파라미터로 설정할 수 있다.