Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
Tags
- Can't resolve
- animation
- adb connect
- ffi-napi
- dvh
- custom printing
- ELECTRON
- react-native-dotenv
- npm package
- 티스토리 성능
- github pdf
- silent printing
- electron-packager
- Recoil
- device in use
- camera permission
- augmentedDevice
- github 100mb
- nextjs
- adb pair
- vercel git lfs
- Git
- html
- camera access
- github lfs
- 이미지 데이터 타입
- rolldown
- Each child in a list should have a unique "key" prop.
- react-native
- Failed to compiled
Archives
- Today
- Total
Bleeding edge
ROS 2 통신의 기반, DDS(Data Distribution Service)란 본문
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에 대해 간단히 정리하였다.
'CS' 카테고리의 다른 글
유무선 네트워크 본딩 설정 방법 (Bonding) (0) | 2025.02.25 |
---|---|
zsh: command not found: code - 해결방법 (0) | 2023.06.15 |
CORS (0) | 2022.09.01 |
FE interview (0) | 2022.07.21 |
stack 2개로 queue를 구현하는 방법을 설명해주세요 (0) | 2022.07.08 |