로봇 한 대에는 수많은 소프트웨어 컴포넌트가 설치되고 실행됩니다.
특히 로봇 소프트웨어는 어디에서 어떻게 실행되느냐에 따라 성능이 크게 좌우되기 때문에 배치와 관리가 매우 중요합니다.
이번 글에서는 “로봇 소프트웨어는 어떻게 배포될까? RSCA가 해결하는 컴포넌트 배치 기술”이라는 주제로 컴포넌트 배포 방식과 RSCA의 역할을 이해하기 쉽게 설명합니다.

1. 로봇 컴포넌트는 어떻게 배포되고 설치될까?
로봇 소프트웨어 개발자가 만든 컴포넌트들은 먼저 컴포넌트 저장소(Component Repository)에 저장됩니다.
이후 로봇 응용 개발자들은 이 저장소에 있는 여러 컴포넌트를 조합해 하나의 로봇 서비스를 구성합니다.
로봇이 실제로 특정 서비스를 수행해야 할 때는 필요한 컴포넌트 목록을 확인한 뒤 네트워크를 통해 필요한 컴포넌트를 다운로드하고 로봇 내부에 설치합니다.
로봇 응용 프로그램은 여러 개의 컴포넌트로 구성되어 있으며, 각각은 자신에게 가장 적합한 특성을 가진 노드에서 실행되도록 설계됩니다.
예를 들어 이동 제어, 모터 제어, 계획 알고리즘, 외부 통신 등은 모두 요구하는 연산 능력이나 장치가 다르기 때문에 맞는 위치에 배치되어야 합니다.
문제는 이 컴포넌트들을 만든 개발자가 자신의 컴포넌트가 어떤 종류의 로봇에서 실행될지 모른다는 점입니다.
실제 현장에서는 각 로봇의 하드웨어 환경이 다르고, 노드의 성능, 장착된 장치, 지원 방식 등도 모두 다릅니다.
결국 로봇은 다운로드받은 컴포넌트들을 분석해 가장 적합한 노드를 찾아 배치해야 하며, 분산된 컴포넌트를 연결하여 하나의 서비스가 정상적으로 작동하도록 구성해야 합니다.
2. 왜 ‘어떤 컴포넌트를 어떤 노드에서 실행할지’가 어렵나?
로봇은 다양한 형태의 프로세싱 노드를 지니고 있고, 이 노드들은 각기 다른 역할을 수행합니다.
예를 들어 다리 모터를 제어하는 컴포넌트는 DSP(Digital Signal Processor)를 사용해야만 정상 작동합니다.
DSP는 모터 제어에 최적화된 연산 방식을 가지고 있어 다른 프로세서에서는 원하는 성능을 낼 수 없습니다.
반면 로봇의 행동 계획이나 경로 탐색처럼 연산량이 많은 기능은 MCU(Micro Controller Unit)나 GPP(General Purpose Processor)처럼 빠른 처리가 가능한 노드에서 수행되어야 합니다.
또한 인터넷 통신을 담당하는 컴포넌트는 네트워크 장치가 장착된 특정 GPP 노드에서만 실행될 수 있습니다.
하지만 로봇 소프트웨어 개발자는 자신이 만든 컴포넌트가 어떤 로봇 하드웨어에 탑재될지 알 수 없습니다.
설치를 담당하는 사람 역시 각 컴포넌트가 어떤 프로세서에서 실행되어야 할지 정확히 알기 어렵습니다.
컴포넌트가 어떤 기능을 요구하는지, 어떤 환경에서만 구동 가능한지에 대한 정보는 개발자만 알고 있기 때문입니다.
설령 어떤 노드에서 실행해야 하는지 결정했다고 해도 문제는 남아 있습니다. 노드마다 지원하는 실행 방식이 다르기 때문입니다.
- 어떤 노드는 멀티 프로세스 방식을 지원하고
- 어떤 노드는 멀티 스레드만 가능하며
- DSP는 실시간 운영체제(RTOS)를 사용해야 합니다.
이처럼 로봇의 하드웨어 구성과 실행 방식이 다양하다 보니 소프트웨어 개발자가 모든 환경을 고려하는 것은 사실상 불가능합니다.
결과적으로 로봇 소프트웨어 배치는 복잡한 분산 시스템 문제로 이어집니다.
3. RSCA가 해결하는 로봇 소프트웨어 배치 문제
이 복잡한 문제를 해결하기 위해 ETRI와 서울대학교가 공동으로 개발한 기술이 바로 RSCA(Robot Software Communication Architecture)입니다.
RSCA는 컴포넌트와 로봇 하드웨어에 대한 정보를 기반으로 가장 적합한 노드를 자동으로 찾아 배치하고 실행을 관리하는 역할을 합니다.
로봇 소프트웨어 개발자는 자신의 컴포넌트가 필요로 하는 요구 사항(필요 CPU 종류, 메모리, 연산량, 실행 환경 등)을 기술한 정보를 함께 제공합니다. 하드웨어 개발자 역시 각 노드의 사양과 특징을 명시합니다.
RSCA는 이 두 정보가 매칭되도록 설계된 시스템입니다.
RSCA의 핵심 능력은 다음과 같습니다.
- 특정 컴포넌트에 가장 적합한 노드를 자동으로 선택
- 노드가 지원하는 방식(프로세스/스레드/RTOS 등)에 맞춰 실행
- 분산된 여러 컴포넌트를 연결해 하나의 서비스로 통합
- 개발자나 설치자가 하드웨어/소프트웨어 차이를 고민할 필요 없게 함
즉 RSCA 덕분에 로봇 개발자는 자신의 컴포넌트가 어떤 로봇에서 사용될지 몰라도 되고, 로봇 설치자는 각 컴포넌트를 어디에 배치해야 할지 고민할 필요가 없습니다.
RSCA는 복잡한 결정 과정을 자동화함으로써 로봇 소프트웨어 개발의 난이도를 크게 낮추고, 로봇 개발 생태계 전체의 효율성을 향상시키는 핵심 기술로 자리 잡고 있습니다.