## 0.1 RMW 미들웨어, C 기반 코어 RCL, 언어별 바인딩(rclcpp, rclpy) 역피라미드 구조

## 0.1 RMW 미들웨어, C 기반 코어 RCL, 언어별 바인딩(rclcpp, rclpy) 역피라미드 구조

ROS2 클라이언트 프레임워크의 아키텍처는 의존성 제어와 다형성의 극대화를 위해 역피라미드형(Inverted Pyramid) 설계 패턴을 채택한다. 최상단의 가장 넓고 사용자 친화적인 언어별 바인딩 계층은 얇은 접점을 가진 C 기반 코어 RCL 인터페이스를 통해 RMW(ROS Middleware)라는 기저 계층으로 수렴하는 구조를 나타낸다. 이러한 위계 질서는 각 계층의 관심사 분리(Separation of Concerns)를 달성하고 프레임워크 유지보수의 무결성을 담보한다.

0.1.1 RMW (ROS Middleware) 미들웨어 추상화 계층

아키텍처의 기저에 위치하는 RMW 계층은 DDS(Data Distribution Service), Eclipse Cyclone DDS, eProsima Fast DDS 등 제조사별 특화 네트워킹 드라이버와 통신 프로토콜을 단일화된 공통 인터페이스 헤더로 캡슐화한다. 개발자는 이 RMW 계층을 통해 코드 재작성 없이 런타임에 벤더 구현체를 변경할 수 있다. 기능적으로 RMW는 노드의 발견(Discovery), 발행 및 구독 설정, 메시지 전송의 신뢰성 모델(QoS, Quality of Service) 프로파일과 같은 네트워크 종속적인 책임을 지며, 이를 C 인터페이스인 rmw.h를 통해 상위 계층에 노출한다. 이 계층 덕분에 ROS2는 특정 통신 프로토콜 단일 구현에 얽매이지 않고 높은 시스템 범용성을 획득한다.

0.1.2 C 기반 코어: RCL (ROS Client Library) 계층

RMW 바로 위에 위치한 핵심 제어 코어는 RCL이다. RCL은 C 언어(C99 기준)로 작성된 상태 보존형(Stateful) 런타임이다. C 언어를 채택한 학술적 이유는 C의 높은 이식성(Portability)과 직관적인 메모리 예측성, 인터페이스의 ABI(Application Binary Interface) 무결성 보장 목적을 지닌다. 이 계층에서는 ROS2 프레임워크의 추상적 개념인 노드(Node), 파라미터(Parameter), 그래프(Graph), 콜백 관리 메커니즘을 구체화하며, 개별 프로그래밍 언어 라이브러리 개발자에게 파싱(Parsing)이나 런타임 제어 메커니즘을 일괄적으로 제공하는 공통 기반 라이브러리 역할을 수행한다.

0.1.3 언어별 바인딩 계층 (rclcpp, rclpy) 및 역피라미드 체계

최상단 역피라미드의 가장 넓은 영역을 차지하는 언어별 바인딩 계층은 애플리케이션 개발자에게 객체 지향적이고 언어 특유의 패러다임을 반영한 인터페이스를 노출한다. C++ 기반의 rclcpp 인터페이스는 고성능 하드웨어 제어와 시스템 프로그래밍을 위해 정밀한 메모리 관리 및 C++14/17 기반의 다형적 패턴을 지원한다. 반면 rclpy는 스크립트 기반 생태계와의 통합이 용이하고 신속한 AI(Artificial Intelligence) 프로토타이핑을 위해 Python 메모리 모델과 추상성을 제공한다.
상위의 다채로운 언어 종속 계층은 하단의 공통 집약적인 하나의 RCL로 수렴하며, 최종적으로 특정 통신 프로토콜에 투명성을 제공하는 RMW에서 시스템 입출력을 처리하게 된다. 이러한 역피라미드 아키텍처는 새로운 언어의 도입 및 통신 아키텍처 백엔드 패키지화 작업을 최소한의 오버헤드로 지원할 수 있도록 고안된 ROS2의 핵심 시스템 엔지니어링 설계이다.