CS
ROS 2 통신의 기반, DDS(Data Distribution Service)란
codevil
2025. 8. 10. 19:41
1. DDS란 무엇인가?
DDS(Data Distribution Service)는 분산 시스템에서 데이터를 효율적이고 신뢰성 있게 주고받기 위한 퍼블리시–서브스크라이브(Pub-Sub) 기반 미들웨어 표준입니다.
ROS 2는 노드 간 통신을 위해 DDS를 기본 기반 기술로 사용합니다.
기존 TCP/UDP 소켓 통신과 달리, DDS는 단순 데이터 송수신을 넘어 다음 기능을 제공합니다.
- QoS(Quality of Service) 설정
- 신뢰성, 지연 허용 범위, 데이터 유지 기간 등을 설정 가능
- 자동 Discovery
- 네트워크에 새로운 참여자(Participant)가 나타나면 자동으로 연결
- 멀티캐스트 / 유니캐스트 지원
- 보안 기능 (암호화, 인증)
- 실시간 데이터 전송을 위한 최적화
2. DDS의 주요 구현체 종류
DDS는 OMG(Objects Management Group)가 정의한 표준이므로, 다양한 구현체가 존재합니다. ROS 2에서는 이 중 몇 가지를 선택적으로 사용합니다.
구현체특징라이선스
| Fast DDS (eProsima) | ROS 2에서 널리 사용, 속도 빠름, 설정 유연 | Apache 2.0 |
| Cyclone DDS (Eclipse) | 안정성, 낮은 지연, ROS 2 Humble 이후 기본 채택 | EPL 2.0 |
| RTI Connext DDS | 상용, 고성능, 산업·항공·의료 분야 | 상용 |
| GurumDDS | 한국 개발, 소형 디바이스 최적화 | 상용(커뮤니티 버전 있음) |
| OpenDDS | 오픈소스, CORBA 기반, ROS 2에서는 드물게 사용 | Apache 2.0 |
3. DDS 동작 구조
DDS의 핵심 개념은 데이터 중심 통신입니다.
- Domain
- 통신 그룹을 구분하는 논리적 영역
- Participant
- Domain에 참여하는 애플리케이션 단위
- Publisher / Subscriber
- 데이터를 송신하는 Publisher와 수신하는 Subscriber
- DataWriter / DataReader
- Publisher와 Subscriber 내부에서 실제 데이터 전송을 담당
- Topic
- 데이터의 이름과 타입 정의
출처: eProsima Fast DDS Docs
4. OS별 ROS 2 기본 DDS 설정
ROS 2는 OS와 배포판(Distro)에 따라 기본 DDS 구현체가 다릅니다.
기본값은 RMW_IMPLEMENTATION 환경 변수로 확인할 수 있습니다.
OS / Distro기본 DDS
| 리눅스 (Humble 이후) | Cyclone DDS (rmw_cyclonedds_cpp) |
| 리눅스 (Foxy, Galactic 등) | Fast DDS (rmw_fastrtps_cpp) |
| MacOS | Cyclone DDS |
| Windows | Fast DDS |
5. 마무리
최근에 DDS 관련 이슈가 많아서, DDS에 대해 간단히 정리하였다.