RELIABLE(신뢰성 보장) / BEST_EFFORT(손실 가능)VOLATILE(메시지 저장 X) / TRANSIENT_LOCAL(최근 메시지 저장)KEEP_LAST(n)(최근 n개 저장) / KEEP_ALL(모두 저장)ROS2 아키텍쳐
+-----------------------------------------------+
| User Land | <- (1) 사용자가 작성하는 코드
+-----------------------------------------------+
| ROS Client Library | <- (2) ROS2 API 제공(rclcpp, rclpy)
+-----------------------------------------------+
| Middleware Interface | <- (3) RMW (ROS Middleware Abstraction)
+-----------------------------------------------+
| DDS Adapter 1 | DDS Adapter 2 | DDS Adapter 3 | <- (4) 다양한 DDS 인터페이스 지원
+---------------+---------------+---------------+
| DDS Impl 1 | DDS Impl 2 | DDS Impl 3 | <- (5) 실제 DDS 구현체 (Fast DDS 등)
+---------------+---------------+---------------+
rmw_fastrtps_cpp → Fast DDS 어댑터rmw_cyclonedds_cpp → Cyclone DDS 어댑터rmw_connextdds_cpp → RTI Connext DDS 어댑터ROS2에서 실제 메시지 통신을 담당하는 DDS구현체
DDS는 퍼블리셔-서브스크라이버 모델을 사용하여 네트워크에서 노드 간 데이터를 교환하는 역할을 함
| Fast DDS (eProsima) | 기본 DDS, 빠르고 가벼움 |
|---|---|
| Cyclone DDS (Eclipse) | 저지연 및 소형 임베디드 시스템 최적화 |
| RTI Connext DDS | 산업용, 높은 신뢰성 |
| GurumDDS | 한국 기업 개발, 빠른 성능 |
ROS2
ROS2 특정 토픽을 구독하는 subscribe node 만드는 법
ROS2 특정 토픽 발행하는 Publish 노드 만들기
ROS2 특정 메시지 타입 사용 법
ROS2 서비스 서버 클라이언트 생성