Notice
Recent Posts
Recent Comments
Link
반응형
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

To Be Develop

[ROS] 기본 구성 요소 이해하기: Node, Topic, Message, Service, Action 본문

dev/Ros

[ROS] 기본 구성 요소 이해하기: Node, Topic, Message, Service, Action

To Be Develop 2024. 2. 29. 01:54
반응형

ROS의 기본 구성 요소에는 노드(Node), 토픽(Topic), 메시지(Message), 서비스(Service), 액션(Action) 등이 있습니다. 이러한 구성 요소들은 ROS 시스템을 이루는 핵심적인 요소이며, 각각의 역할과 기능을 이해하는 것이 ROS를 효과적으로 사용하는 데 중요합니다. 이제 각 구성 요소에 대해 자세히 살펴보겠습니다.

 


1. 노드 (Node)

ROS에서 노드(Node)실행 가능한 프로세스로, 로봇 시스템에서 수행되는 개별적인 작업을 담당합니다. 노드는 다양한 기능을 수행할 수 있으며, 각 노드는 독립적으로 실행됩니다. 예를 들어, 로봇 팔을 제어하는 노드, 센서 데이터를 수신하는 노드, 로봇의 상태를 모니터링하는 노드 등이 있을 수 있습니다.

예시:

로봇 팔 제어를 위한 노드를 작성한다고 가정해봅시다. 이 노드는 팔의 각 관절을 제어하고, 원하는 동작을 수행하는 역할을 합니다. 이 노드는 팔 제어에 관련된 로직을 수행하고, 다른 노드들과 통신하여 로봇 시스템을 제어합니다.

 

 


2. 토픽 (Topic)

ROS에서 토픽(Topic)노드들 간에 메시지를 교환하는 매커니즘입니다. 토픽은 발행-구독(Publish-Subscribe) 형태의 통신을 지원하며, 하나의 토픽에는 여러 개의 발행자(Publisher)와 구독자(Subscriber)가 존재할 수 있습니다. 토픽을 통해 데이터를 효율적으로 공유하고, 노드들 간의 비동기적 통신을 가능하게 합니다.

예시:

로봇 팔의 현재 위치를 토픽으로 게시하는 노드와 해당 위치를 구독하여 화면에 표시하는 시각화 노드를 생각해봅시다. 팔 위치를 발행하는 노드는 주기적으로 팔의 현재 위치를 메시지로 발행하고, 시각화 노드는 이를 수신하여 화면에 표시합니다. 이렇게 함으로써 팔의 움직임을 실시간으로 모니터링할 수 있습니다.

 

참고:

[ROS] Publish-Subscribe 발행 구독 디자인 패턴이란?

 

[ROS] Publish-Subscribe 발행 구독 디자인 패턴이란?

발행-구독(Publish-Subscribe)은 소프트웨어 아키텍처에서 많이 사용되는 디자인 패턴 중 하나로, 여러 컴포넌트 간의 느슨한 결합을 가능하게 합니다. ROS에서도 발행-구독 패턴이 중요한 역할을 합

perfect-dev.tistory.com

 


3. 메시지 (Message)

ROS에서 메시지(Message)는 노드들 간에 토픽을 통해 교환되는 데이터의 형식을 정의합니다. 메시지는 일반적으로 텍스트 기반의 형식으로 작성되며, JSON이나 XML과 유사한 구조를 가지고 있습니다. 메시지는 토픽에서 발행되어 다른 노드로 전달되며, 각 노드는 메시지를 읽고 해석하여 작업을 수행합니다.

예시:

로봇 팔의 현재 위치를 나타내는 메시지를 정의한다고 가정해봅시다. 이 메시지는 팔의 각 관절 별로 현재 각도를 포함할 수 있습니다. 이러한 메시지는 각 관절의 각도를 정확히 표현하는 데 필요한 데이터를 포함하고 있으며, 팔 제어 노드와 시각화 노드 간의 통신에 사용될 수 있습니다.

 

 


4. 서비스 (Service)

ROS에서 서비스(Service)는 노드들 간에 요청-응답(Request-Response) 형태의 통신을 지원합니다. 서비스특정 작업을 요청하고 그 결과를 받는 데 사용되며, 요청을 처리하는 노드는 서비스 서버(Service Server)라고 하고, 요청을 보내는 노드는 서비스 클라이언트(Service Client)라고 합니다.

예시:

로봇 팔을 특정 위치로 이동시키는 서비스를 제공하는 노드를 생각해봅시다. 이 서비스는 팔의 목표 위치를 요청받고, 팔을 해당 위치로 이동시키는 작업을 수행합니다. 팔 이동 작업이 완료되면 결과를 응답하여 요청을 보낸 노드에게 알려줍니다.

 

 

 


5. 액션 (Action)

ROS에서 액션(Action)은 서비스와 유사한 요청-응답 형태의 통신을 지원하지만, 추가적인 기능을 제공합니다. 액션요청을 보내고 응답을 받는 동안 진행 상황을 모니터링하고, 작업이 완료될 때까지 대기할 수 있습니다. 이러한 특징은 시간이 오래 걸리는 작업이나 작업의 진행 상태를 확인해야 하는 경우에 유용합니다.

예시:

로봇 팔을 특정 위치로 이동시키는 작업을 액션으로 구현한다고 가정해봅시다. 이 액션은 팔의 목표 위치를 요청받고, 팔을 해당 위치로 이동시키는 작업을 수행하며, 작업이 진행되는 동안 작업의 진행 상태를 모니터링할 수 있습니다. 팔 이동 작업이 완료되면 결과를 응답하여 요청을 보낸 노드에게 알려줍니다. (로봇 이동 제어, 센서 데이터 수집, 장애물 회피 및 경로 계획)

 

 


 

전체적인 예시:

graph TD;

subgraph ROS 시스템
    subgraph 노드
        A[팔 제어 노드] -->|메시지 발행| C[팔 위치 토픽]
        B[시각화 노드] -->|메시지 수신| C
    end

    subgraph 토픽
        style topic fill:#f9f,stroke:#333,stroke-width:2px;
        C[팔 위치 토픽] 
    end

    subgraph 서비스
        style service fill:#fc9,stroke:#333,stroke-width:2px;
        D[팔 이동 서비스]
    end

    subgraph 메시지
        style message fill:#9cf,stroke:#333,stroke-width:2px;
        E[팔 위치 메시지]
    end

    D -.->|요청| A
    A -.->|응답| D
end

 

그림 1. ROS 시스템 예시

 

위의 Mermaid 코드에서, 노드는 각각 "팔 제어 노드"와 "시각화 노드"로 나타내었고, 이들은 토픽을 통해 메시지를 주고받습니다. "팔 위치 토픽"은 "팔 제어 노드"가 팔의 현재 위치를 발행하고, "시각화 노드"가 해당 위치를 수신하여 화면에 표시합니다. 또한, "팔 제어 노드"는 "팔 이동 서비스"를 제공하고, "팔 이동 서비스"는 "팔 제어 노드"로부터 요청을 받아 움직임 작업을 수행한 후 응답을 보냅니다.

 

 

 


 

 

 

 

 

 

반응형