ROS2 서비스 & 액션: ROS1과의 차이점과 활용 전략 > 로봇 운영체제(ROS/ROS2) 완전 정복

본문 바로가기
사이트 내 전체검색

로봇 운영체제(ROS/ROS2) 완전 정복

ROS2 서비스 & 액션: ROS1과의 차이점과 활용 전략

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 212회 작성일 25-12-30 19:35

본문

ROS2 서비스 & 액션: ROS1과의 차이점과 활용 전략

'ROS2 서비스 & 액션: ROS1과의 차이점과 활용 전략'이라는 표현은 로봇 제작 지식 쌓기, 제어 시스템, 로봇 컨트롤러, 그리고 운영체제(ROS) 및 알고리즘 개발, 시스템의 안정성 분석, 효율성 향상에 대한 깊은 이해와 관심을 가지신 여러분의 핵심적인 고민을 정확히 담고 있습니다. 로봇 개발의 핵심 플랫폼인 ROS가 차세대 로봇 시스템의 요구사항을 충족하기 위해 ROS2로 진화하면서, 노드 간 통신 방식에도 상당한 변화와 개선이 있었습니다. 특히 **서비스(Service)**와 **액션(Action)**은 ROS1과 ROS2에서 유사한 목적을 가지지만, 그 내부 구현 방식과 활용성은 크게 달라졌습니다.


ROS2의 서비스와 액션은 **DDS(Data Distribution Service)**를 기반으로 더욱 강력해진 분산 처리, 실시간성, 보안성을 제공하며, 로봇의 복잡한 태스크를 더욱 효율적이고 안정적으로 처리할 수 있게 합니다. 이들 간의 차이점을 명확히 이해하고 적절하게 활용하는 것은 ROS2 기반 로봇 시스템을 성공적으로 개발하는 데 필수적인 역량입니다. 함께 ROS1과 ROS2의 서비스 및 액션이 무엇이며, 어떤 차이점이 있고, 로봇 개발 시 어떻게 전략적으로 활용해야 하는지 자세히 알아보겠습니다!


ROS(Robot Operating System) 환경에서 노드(Node)들은 서로 데이터를 주고받으며 로봇의 기능을 수행합니다. 이때 데이터를 주고받는 방식은 크게 세 가지입니다.


1. 토픽(Topic): 센서 데이터 스트리밍처럼 지속적이고 비동기적인 단방향 데이터 흐름에 사용됩니다. (ROS 기본 개념: 노드, 토픽, 메시지로 로봇 시스템 이해하기 참조)

2. 서비스(Service): 클라이언트가 서버에게 단발성 요청(Request)을 보내고 서버가 처리 후 응답(Response)을 반환하는 동기식 통신입니다. 클라이언트는 응답을 받을 때까지 기다립니다.

3. 액션(Action): 서비스와 유사하게 요청-응답 형태이지만, 장시간 실행되는 태스크에 적합하며, 중간 **피드백(Feedback)**을 제공하고 **취소(Preempt)**가 가능하다는 특징이 있습니다.

ROS2는 이 세 가지 통신 방식의 개념을 계승하면서도, **DDS(Data Distribution Service)**를 통신 미들웨어로 도입하여 내부적인 통신 메커니즘을 근본적으로 변경했습니다. 이러한 변화는 서비스와 액션의 활용 방식에도 큰 영향을 미쳤습니다.


1. ROS1 서비스 & 액션 간략 개요

1.1. ROS1 서비스 (Synchronous Request/Response)

특징: 클라이언트가 요청하면 서버가 응답을 반환할 때까지 클라이언트가 **블로킹(Blocking)**됩니다. 즉, 요청과 응답이 완료될 때까지 다른 작업을 수행할 수 없습니다.

구현: ROS1 roscpp/rospy 라이브러리를 통해 간단히 구현됩니다.

1.2. ROS1 액션 (Asynchronous, Goal-Feedback-Result)

특징: 장시간 실행되는 태스크를 위해 설계되었습니다. 클라이언트가 목표(Goal)를 보내면, 서버는 태스크 수행 중 **지속적으로 피드백(Feedback)**을 보내고, 최종 **결과(Result)**를 반환합니다. 클라이언트는 이 과정에서 **태스크를 취소(Preempt)**할 수도 있습니다.

구현: 내부적으로 여러 개의 토픽과 서비스를 사용하여 복잡한 비동기 통신을 구현합니다. (ROS Actionlib 참조)

2. ROS2 서비스 & 액션: ROS1과의 주요 차이점

ROS2의 서비스와 액션은 DDS 기반 통신의 장점을 적극 활용하여 ROS1의 한계를 극복했습니다.


특징 ROS1 ROS2 (DDS 기반)

통신 미들웨어 TCPROS/UDPROS (ROS Master 기반) DDS (Data Distribution Service)

실시간성 제한적 (하드 리얼타임 불가) QoS 설정으로 실시간성/신뢰성 보장 강화

비동기 지원 서비스: 동기식 (블로킹)

액션: 비동기식 (내부 구현 복잡) 서비스: 비동기 호출 지원

액션: 네이티브 비동기식 (간결한 API)

보안 기본적으로 제공되지 않음 DDS-Security를 통한 보안 기능 기본 지원

분산 처리 ROS Master 기반 (단일 장애점) 마스터 없는(Masterless) 구조 (더 강력한 분산 처리)

플랫폼 주로 Linux Linux, Windows, macOS, RTOS 등 광범위한 플랫폼 지원

클라이언트 API roscpp/rospy rclcpp/rclpy (보다 객체 지향적)

2.1. ROS2 서비스: 비동기 호출로 유연성 증대

ROS2 서비스는 ROS1 서비스의 요청-응답 통신 모델을 유지하면서, 가장 큰 개선점은 **비동기 호출(Asynchronous Calling)**을 지원한다는 것입니다.


비동기 클라이언트: 클라이언트가 서비스 요청을 보낸 후 응답을 기다리지 않고 즉시 다음 작업을 수행할 수 있습니다. 응답이 도착하면 콜백 함수를 통해 처리됩니다. 이는 GUI 애플리케이션이나 다른 로봇 동작에 영향을 주지 않고 백그라운드에서 서비스를 호출할 때 매우 유용합니다.

QoS (Quality of Service): ROS2의 서비스 통신에도 QoS 설정을 적용할 수 있어, 통신의 신뢰성과 안정성을 더욱 세밀하게 제어할 수 있습니다.

2.2. ROS2 액션: DDS 기반의 간결하고 강력한 비동기 통신

ROS2 액션은 ROS1 액션의 Goal-Feedback-Result 개념을 계승하지만, DDS를 기반으로 더욱 효율적이고 간결하게 구현되었습니다.


DDS 통합: ROS1 Actionlib이 여러 개의 토픽과 서비스를 조합하여 Action을 구현했던 것과 달리, ROS2 Action은 DDS 표준의 Topic을 사용하여 Action 메시지(Goal, Feedback, Result)를 발행하고 구독합니다. 이로 인해 내부 구현이 단순해지고, DDS의 QoS 및 보안 이점을 직접적으로 활용할 수 있습니다.

간결한 API: rclcpp/rclpy에서 제공하는 Action API는 ROS1 Actionlib보다 훨씬 간결하고 사용하기 쉽습니다. Goal을 전송하고, Feedback을 처리하며, Result를 받는 과정이 직관적으로 구현됩니다.

Goal Handle: 각 Goal 요청에는 고유한 GoalHandle이 할당되어 클라이언트가 특정 Goal의 상태를 추적하고 취소 명령을 보낼 수 있습니다.

비동기식: Goal 전송, Feedback 수신, Result 수신 모두 비동기식으로 처리되므로, 클라이언트 노드는 Action 태스크 수행 중에도 다른 작업을 병행할 수 있습니다.

3. ROS2 서비스 & 액션 활용 전략 (언제 무엇을 사용할 것인가?)

ROS2에서 통신 메커니즘을 선택하는 것은 로봇 시스템의 효율성과 안정성에 큰 영향을 미칩니다.


3.1. 토픽 (Topic): 실시간 스트리밍 데이터에 적합

목적: 센서 데이터(라이다, 카메라, IMU 등), 로봇의 현재 상태(위치, 속도), 제어 명령(조이스틱 입력) 등 지속적으로 갱신되며 즉각적인 응답이 필요 없는 단방향 데이터에 사용합니다.

특징: 비동기식, 일대다(One-to-many) 통신. 발행자와 구독자는 서로의 존재를 직접 알 필요가 없습니다. QoS를 통해 신뢰성과 지연 시간 제어.

예시: /laser_scan (라이다 데이터 발행), /odom (로봇 오도메트리 발행), /cmd_vel (로봇 속도 명령 발행).

3.2. 서비스 (Service): 단발성 요청-응답 태스크에 적합

목적: 클라이언트가 서버에게 명령을 내리고 그에 대한 즉각적인 결과나 응답이 필요한 단발성 태스크에 사용합니다. 태스크가 짧은 시간 내에 완료되는 경우에 적합합니다.

특징: 요청-응답 통신, 클라이언트는 서버의 응답을 기다립니다. ROS2에서는 비동기 호출을 통해 블로킹을 피할 수 있습니다.

예시:

로봇 팔의 그리퍼를 열거나 닫는 명령.

로봇의 현재 배터리 상태를 쿼리.

시스템의 특정 매개변수를 설정하거나 읽어오는 명령.

새로운 지도 파일을 서버에 로드 요청.

3.3. 액션 (Action): 장시간 실행되는 복잡하고 선점 가능한 태스크에 적합

목적: 클라이언트가 서버에게 오랜 시간 동안 실행되고, 진행 상황 모니터링이 필요하며, 도중에 취소될 수도 있는 복잡한 태스크에 사용합니다.

특징: 비동기식, Goal-Feedback-Result 구조, 태스크 취소(Preemption) 기능.

예시:

로봇 내비게이션: "특정 목표 지점까지 이동" 명령. 로봇은 이동 중 현재 위치를 Feedback으로 보내고, 클라이언트는 이동 취소를 할 수 있습니다. (ROS Actionlib 참조)

로봇 팔 매니퓰레이션: "특정 물체를 집어 특정 위치로 옮기는" 명령. 중간 Feedback으로 팔의 움직임 상태를 알리고, 문제가 발생하면 취소합니다.

대규모 데이터 처리: 로봇이 수집한 데이터를 백그라운드에서 처리하는 명령. 진행 상황을 Feedback으로 모니터링합니다.

4. 활용 전략 요약

통신 방식 주요 용도 특징 ROS2 개선점

토픽 실시간 센서 데이터, 명령 스트리밍 비동기, 단방향, 일대다 DDS 기반, 강력한 QoS, 마스터리스

서비스 단발성 요청-응답, 짧은 태스크 동기 (ROS1), 요청-응답 비동기 호출 지원, QoS, 마스터리스

액션 장시간 태스크, 진행 피드백, 취소 가능 비동기, Goal-Feedback-Result, 취소/선점 가능 DDS 기반, 간결한 API, 강력한 QoS, 마스터리스

ROS2 서비스와 액션은 로봇 제작 지식 쌓기, 제어 시스템, 로봇 컨트롤러, 그리고 운영체제(ROS) 및 알고리즘 개발, 시스템의 안정성 분석, 효율성 향상에 대한 깊은 이해와 관심을 가지신 여러분에게 차세대 로봇 시스템의 복잡한 통신 요구사항을 충족시키고, 실시간성, 안정성, 보안성을 확보하며, 더욱 견고하고 확장 가능한 로봇 시스템을 구축하기 위한 핵심 기술입니다. ROS1과의 차이점을 명확히 이해하고 이들의 활용 전략을 완벽하게 마스터하여 미래의 혁신적인 로봇 시스템을 구현하는 데 큰 기여를 할 것이라고 믿습니다!

댓글목록

등록된 댓글이 없습니다.


회사소개 개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

작크와콩나무
대표:이강복 등록번호:129-30-34337 개인정보관리책임자:이경영

Copyright © https://roboman.co.kr/ All rights reserved.