Volume 13. ROS2와 로봇 소프트웨어 (ROS2 and Robot Software)
로봇 시스템의 소프트웨어 아키텍처는 로봇의 지능, 자율성, 그리고 운용 신뢰성을 결정짓는 핵심 요소이다. 현대 로봇 공학에서 소프트웨어는 단순한 제어 명령의 실행을 넘어, 센서 데이터의 실시간 처리, 복잡한 의사결정 알고리즘의 구동, 다중 로봇 간의 협업 통신, 그리고 인간-로봇 상호작용(Human-Robot Interaction, HRI)에 이르기까지 광범위한 영역을 포괄한다. 이러한 복합적 요구를 충족시키기 위하여 로봇 운영 체제(Robot Operating System)라는 개념이 등장하였으며, 그 대표적인 구현체가 바로 ROS(Robot Operating System)이다.
1. ROS에서 ROS2로의 진화
ROS(Robot Operating System)는 2007년 Willow Garage에서 처음 개발된 이후, 전 세계 로봇 공학 연구 및 산업 분야에서 사실상의 표준(de facto standard) 미들웨어로 자리매김하였다. ROS1은 분산 컴퓨팅 환경에서 노드(node) 기반의 모듈식 소프트웨어 개발을 가능하게 하였으며, 토픽(topic), 서비스(service), 액션(action) 등의 통신 패러다임을 통해 로봇 소프트웨어의 재사용성과 확장성을 비약적으로 향상시켰다.
그러나 ROS1은 설계 초기부터 연구용 단일 로봇을 주된 사용 시나리오로 상정하였기 때문에, 산업 현장에서 요구되는 실시간성(real-time capability), 보안(security), 다중 로봇 지원(multi-robot support), 그리고 임베디드 시스템과의 통합(embedded system integration) 측면에서 근본적인 한계를 노출하였다. 특히 ROS1의 마스터 노드(rosmaster) 기반 중앙집중식 아키텍처는 단일 장애점(Single Point of Failure, SPOF)을 형성하여 시스템 가용성을 저해하였으며, TCP/UDP 기반의 자체 통신 프로토콜(TCPROS/UDPROS)은 QoS(Quality of Service) 제어가 불가능하여 미션 크리티컬(mission-critical) 응용에는 부적합하였다.
이러한 한계를 극복하기 위하여 2017년 공식 배포된 ROS2는 근본적인 아키텍처 재설계를 단행하였다. ROS2는 통신 계층에 OMG(Object Management Group)의 DDS(Data Distribution Service) 표준을 채택함으로써, 산업 등급의 QoS 정책, 자동 노드 탐색(automatic discovery), 보안 통신(DDS-Security), 그리고 실시간 데이터 전송을 원천적으로 지원한다. 또한 마스터 노드를 제거한 분산형 아키텍처를 채용하여 단일 장애점 문제를 해소하였으며, RTOS(Real-Time Operating System) 상에서의 구동을 고려한 실시간 실행 프레임워크를 제공한다.
2. ROS2의 아키텍처 개요
ROS2의 소프트웨어 아키텍처는 계층적 구조로 설계되어 있으며, 각 계층은 명확한 추상화 경계를 갖는다.
2.1 클라이언트 라이브러리 계층 (Client Library Layer)
최상위 계층인 클라이언트 라이브러리(client library)는 사용자가 직접 상호작용하는 API를 제공한다. ROS2는 C++ 기반의 rclcpp(ROS Client Library for C++)와 Python 기반의 rclpy(ROS Client Library for Python)를 공식 지원하며, 이들은 공통 하위 계층인 rcl(ROS Client Library) 위에 구축된다. 이러한 구조를 통해 언어 독립적인 핵심 기능의 일관성을 보장하면서도, 각 언어의 고유한 특성을 활용한 유연한 개발이 가능하다.
2.2 미들웨어 추상화 계층 (Middleware Abstraction Layer)
ROS2는 rmw(ROS Middleware Interface)라는 추상화 계층을 통해 하위 DDS 구현체와의 결합을 느슨하게 유지한다. 이를 통해 Fast DDS, Cyclone DDS, Connext DDS 등 다양한 DDS 벤더의 구현체를 런타임에 교체할 수 있으며, 응용 프로그램의 코드 변경 없이 통신 미들웨어를 전환할 수 있다. 이는 벤더 종속성(vendor lock-in)을 방지하고, 특정 배포 환경에 최적화된 DDS 구현체를 선택적으로 활용할 수 있는 유연성을 제공한다.
2.3 DDS 통신 계층 (DDS Communication Layer)
최하위 통신 계층에서는 DDS 프로토콜이 노드 간 데이터 교환을 담당한다. DDS는 발행-구독(publish-subscribe) 모델을 기반으로 하며, 데이터 중심 발행-구독(Data-Centric Publish-Subscribe, DCPS) 패러다임을 통해 토픽 단위의 QoS 정책 설정, 자동 참여자 탐색(participant discovery), 데이터 직렬화(serialization) 및 역직렬화(deserialization)를 수행한다. DDS의 QoS 프로파일은 신뢰성(reliability), 지속성(durability), 기한(deadline), 수명(lifespan) 등 다양한 정책을 세밀하게 제어할 수 있어, 실시간 제어 루프부터 대용량 센서 스트리밍까지 다양한 통신 요구사항을 충족시킨다.
3. ROS2의 통신 패러다임
ROS2는 다양한 통신 패러다임을 제공하여 로봇 소프트웨어의 구성 요소 간 상호작용을 체계적으로 지원한다.
토픽(Topic) 은 비동기적 발행-구독 방식의 단방향 데이터 스트림이다. 센서 데이터, 로봇 상태 정보 등 지속적으로 갱신되는 데이터의 전송에 주로 사용되며, 다대다(many-to-many) 통신을 지원한다.
서비스(Service) 는 동기적 요청-응답(request-response) 방식의 양방향 통신이다. 파라미터 설정, 상태 조회 등 일회성 요청-응답 패턴에 적합하며, 클라이언트-서버(client-server) 모델을 따른다.
액션(Action) 은 비동기적 목표-결과-피드백(goal-result-feedback) 방식의 장기 실행 태스크 관리에 사용된다. 내비게이션 목표 전송, 매니퓰레이터 동작 계획 실행 등 완료까지 장시간이 소요되는 작업을 관리하며, 중간 피드백(feedback)과 취소(cancel) 기능을 제공한다.
파라미터(Parameter) 는 노드의 동적 설정 관리를 위한 메커니즘으로, 런타임 중에 노드의 동작 파라미터를 조회(get), 설정(set), 감시(monitor)할 수 있다.
4. ROS2 핵심 라이브러리와 도구
ROS2 생태계는 로봇 소프트웨어 개발을 위한 풍부한 핵심 라이브러리와 도구를 제공한다.
tf2(Transform Library 2) 는 로봇 시스템 내 좌표 프레임(coordinate frame) 간의 기하학적 변환(geometric transformation)을 관리하는 라이브러리이다. 로봇의 각 링크, 센서, 그리고 외부 환경 간의 상대적 위치와 자세를 실시간으로 추적하고 변환할 수 있다.
URDF(Unified Robot Description Format) 및 SDF(Simulation Description Format) 는 로봇의 기구학적(kinematic) 및 동역학적(dynamic) 모델을 XML 기반으로 기술하는 표준 형식이다. 이를 통해 시뮬레이션, 시각화, 운동학 계산 등에 동일한 로봇 모델을 일관되게 활용할 수 있다.
Nav2(Navigation 2) 는 ROS2 기반의 자율 내비게이션 프레임워크로, SLAM(Simultaneous Localization and Mapping), 경로 계획(path planning), 경로 추종(path following), 장애물 회피(obstacle avoidance) 등의 내비게이션 기능을 통합적으로 제공한다. 행동 트리(Behavior Tree) 기반의 태스크 오케스트레이션을 채용하여 복잡한 내비게이션 시나리오를 유연하게 관리한다.
MoveIt 2 는 로봇 매니퓰레이터의 운동 계획(motion planning), 역기구학(inverse kinematics), 충돌 검사(collision detection), 그리고 파지 계획(grasp planning)을 위한 프레임워크이다.
Gazebo 및 Isaac Sim 등의 시뮬레이션 엔진과의 심층적 통합을 통해, ROS2 기반 소프트웨어의 가상 환경 검증(SIL: Software-In-the-Loop), 하드웨어 인더 루프 테스트(HIL: Hardware-In-the-Loop)가 가능하다.
5. 로봇 소프트웨어 엔지니어링
로봇 소프트웨어는 일반 소프트웨어와 비교하여 고유한 공학적 과제를 수반한다. 물리적 세계와 직접 상호작용하는 사이버 물리 시스템(Cyber-Physical System, CPS)으로서, 실시간 제약(real-time constraints), 안전성 보장(safety assurance), 비결정적 환경 대응(non-deterministic environment handling), 그리고 이기종 하드웨어 통합(heterogeneous hardware integration) 등의 요구사항을 동시에 만족시켜야 한다.
로봇 소프트웨어 엔지니어링은 이러한 고유 요구사항에 대응하기 위하여, 컴포넌트 기반 소프트웨어 공학(Component-Based Software Engineering, CBSE), 모델 기반 시스템 공학(Model-Based Systems Engineering, MBSE), 그리고 DevOps/MLOps 파이프라인을 로봇 개발 프로세스에 통합하는 방법론을 포함한다. 또한 기능 안전(functional safety) 표준인 ISO 13482, IEC 61508, 그리고 자율 시스템을 위한 ISO/PAS 21448(SOTIF: Safety of the Intended Functionality) 등의 규격 준수가 필수적이다.
6. 본 Volume의 구성
본 Volume은 ROS2와 로봇 소프트웨어 개발에 관한 심층적 지식을 체계적으로 전달하기 위하여 다음과 같이 구성되어 있다.
Part 77. ROS2 기초 (ROS2 Fundamentals) 에서는 ROS2의 설치, 기본 개념, 노드 생성, 패키지 관리, 빌드 시스템(colcon, ament), 그리고 런치 시스템(launch system) 등 ROS2 개발을 시작하기 위한 기초 지식을 다룬다.
Part 78. ROS2 통신 심화 (Advanced ROS2 Communication) 에서는 DDS 기반의 통신 메커니즘, QoS 정책의 세부 설정, 커스텀 메시지 정의, 직렬화/역직렬화 전략, 그리고 도메인 파티셔닝(domain partitioning) 등 ROS2 통신의 고급 주제를 심도 있게 탐구한다.
Part 79. ROS2 핵심 라이브러리 (ROS2 Core Libraries) 에서는 tf2, URDF, Nav2, MoveIt 2, ros2_control 등 ROS2 생태계의 핵심 라이브러리와 프레임워크의 아키텍처, API, 그리고 활용 방법을 상세히 기술한다.
Part 80. ROS2 응용 (ROS2 Applications) 에서는 자율 이동 로봇(AMR), 매니퓰레이터, 드론, 서비스 로봇 등 다양한 로봇 플랫폼에 ROS2를 적용하는 실제 사례와 시스템 통합 기법을 제시한다.
Part 81. 로봇 소프트웨어 엔지니어링 (Robot Software Engineering) 에서는 로봇 소프트웨어의 설계 패턴, 테스트 전략, CI/CD 파이프라인, 시뮬레이션 기반 검증, 그리고 안전성 인증 프로세스 등 로봇 소프트웨어의 공학적 개발 방법론을 다룬다.
7. 참고 문헌
- Open Robotics, “ROS 2 Documentation,” https://docs.ros.org/en/rolling/
- S. Macenski, T. Foote, B. Gerkey, C. Lalancette, and W. Woodall, “Robot Operating System 2: Design, architecture, and uses in the wild,” Science Robotics, vol. 7, no. 66, eabm6074, 2022.
- OMG, “Data Distribution Service (DDS) Specification,” Version 1.4, Object Management Group, 2015.
- S. Macenski, F. Martín, R. White, and J. G. Clavero, “The Marathon 2: A Navigation System,” in Proc. IEEE/RSJ Int. Conf. Intelligent Robots and Systems (IROS), 2020.
- D. Coleman, I. A. Şucan, S. Chitta, and N. Correll, “Reducing the Barrier to Entry of Complex Robotic Software: a MoveIt! Case Study,” Journal of Software Engineering for Robotics, vol. 5, no. 1, pp. 3–16, 2014.
- ISO 13482:2014, “Robots and robotic devices — Safety requirements for personal care robots,” International Organization for Standardization, 2014.
- IEC 61508, “Functional safety of electrical/electronic/programmable electronic safety-related systems,” International Electrotechnical Commission, 2010.