ROS(drone포함)

ROS 기본 개념 (topic, service, action, parameter)

728x90

노드(node)는 아래의 그림처럼 Node A, Node B, Node C라는 노드가 있을 때 각각의 노드들은 서로 유기적으로 Message로 연결되어 사용된다. 수행하고자 하는 테스크가 많아질수록 메세지로 연결되는 노드가 늘어나며 시스템이 확장될 수 있게된다.

 

노드들 간의 메세지가 토픽, 서비스, 액션, 파라미터이다.

 

 

 

토픽(Topic)은 아래와 같이 `Node A - Node B`, `Node A - Node C`처럼 비동기식 단방향 메시지 송수신 방식으로 msg 메시지 형태의 메시지를 발간하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신이라고 볼 수 있다. 이는 1:N, N:1, N:N 통신도 가능하며 ROS 메시지 통신에서 가장 널리 사용되는 통신 방법이다.

Topic

 


서비스(Service)는 아래의 그림과 같이 `Node B - Node C`처럼 동기식 양방향 메시지 송수신 방식으로 서비스의 요청(Request)을 하는 쪽을 Service client라고 하며 서비스의 응답(Response)을 하는 쪽을 Service server라고 한다. 결국 서비스는 특정 요청을 하는 클라이언트 단과 요청받은 일을 수행 후에 결괏값을 전달하는 서버 단과의 통신이라고 볼 수 있다. 서비스 요청 및 응답(Request/Response) 또한 위에서 언급한 msg 메시지의 변형으로 srv 메시지라고 한다.

Service

 

액션(Action)은  `Node A - Node B`처럼 비동기식+동기식 양방향 메시지 송수신 방식으로 액션 목표 Goal를 지정하는 Action client과 액션 목표를 받아 특정 태스크를 수행하면서 중간 결괏값에 해당되는 액션 피드백(Feedback)과 최종 결괏값에 해당되는 액션 결과(Result)를 전송하는 Action server 간의 통신이라고 볼 수 있다. 액션의 구현 방식을 더 자세히 살펴보면 그림 5와 같이 토픽(topic)과 서비스(service)의 혼합이라고 볼 수 있는데 액션 목표 및 액션 결과를 전달하는 방식은 서비스와 같으며 액션 피드백은 토픽과 같은 메시지 전송 방식이다. 액션 목표/피드백/결과(Goal/Feedback/Result) 메시지 또한 위에서 언급한 msg 메시지의 변형으로 action 메시지라고 한다.

 

Topic과 Service로 구성된 action

 

 

파라미터(Parameter)는 각 노드에 파라미터 관련 Parameter server를 실행시켜 외부의 Parameter client 간의 통신으로 파라미터를 변경하는 것으로 서비스와 동일하다고 볼 수 있다. 단 노드 내 매개변수 또는 글로벌 매개변수를 서비스 메시지 통신 방법을 사용하여 노드 내부 또는 외부에서 쉽게 지정(Set) 하거나 변경할 수 있고, 쉽게 가져(Get)와서 사용할 수 있게 하는 점에서 목적이 다르다고 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 -오로카  https://cafe.naver.com/openrt/24086

 

008 ROS 2 노드와 데이터 통신

Created Date: 2020.08.19 Modified Date: 2020.09.10 revision 14 * 로봇 운영체제 ROS 강좌 목차: https://cafe...

cafe.naver.com

 

728x90

'ROS(drone포함)' 카테고리의 다른 글

CMake 불가 디버깅 과정  (0) 2021.08.25
dronekit 설치하기  (0) 2021.08.19
ROS topic 통신  (0) 2021.06.15
urdf를 이용하여 로봇청소기 만들기  (0) 2021.06.04
원통좌표형 매니퓰레이터 URDF 만들기  (0) 2021.06.03