로봇 소프트웨어 구조설계로봇미들웨어개발로봇 미들웨어 설계
출제기준 좌표2·1·2·2
2과목 · 로봇 소프트웨어 구조설계

로봇 미들웨어 구조 설계

로봇미들웨어개발로봇 미들웨어 설계
# 로봇소프트웨어구조설계
01

📌 개요

  • 미들웨어(Middleware) = 여러 회사의 센서·여러 언어로 짠 모듈·여러 대의 컴퓨터 등 이질적인 조각들을 하나의 로봇으로 묶어 주는 접착제
  • ROS가 사실상 표준이 되며 로봇 개발의 생산성을 바꿔 놓음 → 시험도 이 배경 위에서 출제
  • 핵심 출제 포인트: 미들웨어의 정의(OS와 응용 사이), 토픽·서비스·액션 3종 통신 패턴의 구분, 발행-구독의 장점, ROS 1과 ROS 2의 차이(마스터 유무·DDS·QoS), OPRoS·RT-Middleware 등 미들웨어의 국적·특징 매칭
02

📖 핵심 개념

미들웨어란 — OS와 응용 사이의 계층

미들웨어는 운영체제와 응용 프로그램 사이에서 분산 환경의 공통 서비스 — 통신, 이름 찾기, 데이터 관리 — 를 제공하는 소프트웨어 계층이다 (OS 자체는 로봇 소프트웨어 운영체제).

로봇에 미들웨어가 필요한 이유:

  • 이기종 통합: 제조사·인터페이스가 제각각인 하드웨어와 모듈을 표준 방식으로 연결
  • 분산 통신: 여러 프로세스·여러 컴퓨터에 흩어진 모듈 간 메시지 교환을 대신 처리
  • 재사용: 위치인식·경로계획 같은 검증된 모듈을 표준 인터페이스로 가져다 쓴다 — 바퀴의 재발명 방지

로봇 미들웨어의 핵심 기능

  1. 통신 추상화: 소켓 프로그래밍 없이 메시지 발행·구독만으로 노드 간 통신
  2. 하드웨어 추상화: 센서 데이터·속도 명령 등의 표준 메시지 형식 — 어떤 LiDAR든 같은 형식으로 발행하면 위층은 동일하게 동작
  3. 컴포넌트(노드) 관리: 노드의 생성·발견·라이프사이클 관리 (→ 미들웨어 프로세스 관리)
  4. 이름 서비스·디스커버리: "속도 명령은 어디로 보내나"를 이름(토픽명)으로 해결
  5. 개발 도구: 시각화(RViz), 데이터 기록·재생(rosbag), 시뮬레이터 연동, 빌드·패키지 관리

통신 패턴 3종 세트 — 토픽, 서비스, 액션 (단골 출제)

구분 토픽 (Topic) 서비스 (Service) 액션 (Action)
패턴 발행-구독 (Pub-Sub) 요청-응답 목표-피드백-결과
방향 다대다, 단방향 스트림 1:1 양방향 1:1 + 진행 피드백
동기성 비동기 동기(응답 대기) 비동기 + 취소 가능
용도 센서값, 속도 명령 등 연속 데이터 즉답 가능한 질의·설정 오래 걸리는 작업 (예: "A지점까지 이동")
  • 발행-구독의 장점: 발행자와 구독자가 서로의 존재를 몰라도 된다(낮은 결합) — 구독자를 추가해도 발행자는 코드 변경이 없고, 다대다 연결·확장이 쉽다
  • 액션이 따로 있는 이유: 내비게이션 이동처럼 수십 초 걸리는 작업은 서비스(응답까지 블록)로는 부적합 — 진행 상황 피드백과 중간 취소가 필요하기 때문

대표 로봇 미들웨어

미들웨어 개발 주체 특징
ROS 1 오픈소스 (미국 Willow Garage 시작) 마스터(roscore) 가 이름 등록·발견을 중개. 도구·패키지 생태계로 사실상 표준이 되었으나 실시간·보안 취약, 개발 종료
ROS 2 오픈소스 DDS 기반 — 마스터 없는 분산 디스커버리, QoS 설정, 실시간·임베디드(micro-ROS)·보안 강화, 멀티플랫폼
OPRoS 한국 컴포넌트 기반 로봇 SW 플랫폼 (Open Platform for Robotic Services)
RT-Middleware (RTM) 일본 AIST RT-컴포넌트 모델, OMG RTC 국제 표준
OROCOS 유럽 오픈소스 실시간 제어에 특화된 프레임워크 (제어 루프·기구학 라이브러리)

ROS 1 → ROS 2: 무엇이 왜 바뀌었나

  • 마스터 제거: ROS 1은 roscore가 죽으면 새 연결이 불가능한 단일 실패점이었다. ROS 2는 DDS의 분산 디스커버리로 노드들이 서로를 직접 찾는다
  • DDS(Data Distribution Service) 채택: OMG 표준의 데이터 중심 발행-구독 미들웨어를 통신 기반으로 사용
  • QoS(Quality of Service) 정책: 통신 품질을 계약처럼 설정 — 신뢰성(reliable: 재전송 보장 / best-effort: 최신 우선), 이력(history: 몇 개를 보관할지), 데드라인 등. 센서 스트림은 best-effort, 명령은 reliable처럼 데이터 성격에 맞게 고른다
  • 실시간 지원 강화, MCU용 micro-ROS, 보안(암호화·인증) 내장, Windows 등 멀티플랫폼

미들웨어 구조 설계 시 고려사항

  • 실시간성: 미들웨어 통신은 지연 변동이 있으므로, 하드 실시간 제어 루프는 미들웨어를 경유시키지 않고 하위 제어기(펌웨어)에 둔다 (→ 로봇 액추에이터 펌웨어 구조)
  • 확장성: 노드·센서 추가 시 구조 변경이 없어야 한다 (발행-구독의 강점)
  • 이식성·상호운용성: 표준 메시지·표준 인터페이스 준수
  • 자원 제약: 임베디드 보드에서는 경량 구성(micro-ROS 등) 검토
  • 단일 실패점 제거와 노드 감시·재시작 체계
03

📊 다이어그램 · 수식

미들웨어의 위치와 발행-구독 구조

DIAGRAM
flowchart TD
    subgraph STACK["소프트웨어 스택"]
        APP["응용: 작업 로직"] --> MW["미들웨어: 통신·발견·도구"] --> OS["OS (Linux 등)"] --> HW["하드웨어"]
    end
    subgraph PUBSUB["발행-구독 (토픽) 통신"]
        L["LiDAR 노드
(발행자)"] -- "/scan 토픽" --> T(("토픽
/scan")) T --> N1["위치인식 노드
(구독자)"] T --> N2["충돌회피 노드
(구독자)"] T --> N3["기록 노드
(구독자)"] end

(발행자는 구독자가 몇 명인지, 누구인지 모른다 — 결합도가 낮아 구독자 추가가 자유롭다)

통신 패턴 선택 기준

DIAGRAM
flowchart TD
    Q["보내려는 데이터의 성격은?"] --> A{"연속 스트림인가?"}
    A -- "예 (센서값·속도 명령)" --> TOPIC["토픽 (발행-구독)"]
    A -- "아니오" --> B{"즉시 답이 오는가?"}
    B -- "예 (설정·질의)" --> SRV["서비스 (요청-응답)"]
    B -- "아니오 (수 초~분 소요,
피드백·취소 필요)" --> ACT["액션 (목표-피드백-결과)"]
04

🎯 핵심 요약 · 암기 포인트

익힘 0 / 5카드를 눌러 뒤집고, 앞면에서 아는지 표시하세요.
Q · 1
미들웨어의 정의는?
A
운영체제와 응용 프로그램 사이에서 분산 환경의 공통 서비스(통신·발견·데이터 관리)를 제공하는 소프트웨어 계층
Q · 2
로봇 미들웨어가 필요한 이유 3가지는?
A
이기종 하드웨어·모듈의 통합, 분산 노드 간 통신 표준화, 검증된 모듈의 재사용
Q · 3
ROS 토픽(Topic) 통신의 특징은?
A
발행-구독 방식의 비동기 다대다 통신 — 센서값·속도 명령 같은 연속 스트림에 적합
Q · 4
ROS 서비스(Service) 통신의 특징은?
A
요청-응답 방식의 동기 1:1 통신 — 즉시 답할 수 있는 질의·설정에 적합
Q · 5
ROS 액션(Action)이 서비스와 다른 점은?
A
오래 걸리는 작업용으로 목표 전송 후 진행 피드백을 받고 중간 취소도 가능하다

발행-구독 패턴의 장점은?::발행자와 구독자가 서로를 몰라도 되어 결합도가 낮고, 다대다 연결과 노드 추가·확장이 쉽다 ROS 1과 ROS 2의 가장 큰 구조적 차이는?::ROS 1은 마스터(roscore)가 이름 등록·발견을 중개(단일 실패점), ROS 2는 DDS 기반 분산 디스커버리로 마스터가 없다 DDS란?::OMG 표준의 데이터 중심 발행-구독 미들웨어 — ROS 2의 통신 기반이며 QoS 정책을 제공 QoS 정책의 대표 예 2가지는?::신뢰성(reliable/best-effort), 이력(history 보관 개수) — 데이터 성격에 맞게 통신 품질을 설정 OPRoS와 RT-Middleware는 각각 어디의 미들웨어인가?::OPRoS는 한국의 컴포넌트 기반 플랫폼, RT-Middleware는 일본 AIST 주도(OMG RTC 표준) 하드 실시간 제어 루프를 미들웨어에 두지 않는 이유는?::미들웨어 통신은 지연 변동(지터)이 있어 데드라인 보장이 어려우므로 하위 제어기 펌웨어에 둔다

05

✏️ 예상문제

1. 미들웨어(Middleware)에 대한 설명으로 옳은 것은?

① 하드웨어를 직접 제어하는 커널의 일부다 ② 운영체제와 응용 프로그램 사이에서 통신 등 공통 서비스를 제공하는 계층이다 ③ 응용 프로그램의 사용자 인터페이스를 담당한다 ④ 운영체제를 대체하는 소프트웨어다

정답 및 해설

정답: ② 미들웨어는 이름 그대로 "중간(middle)" 계층이다. OS의 기능(스케줄링·메모리)을 대체하지 않고 그 위에서, 응용들이 공통으로 필요로 하는 분산 통신·발견·데이터 관리를 제공한다.

2. "충전 스테이션까지 이동하라"처럼 수십 초가 걸리고, 진행 상황을 보고받다가 필요하면 중간에 취소해야 하는 명령에 가장 적합한 ROS 통신 패턴은?

① 토픽 (발행-구독) ② 서비스 (요청-응답) ③ 파라미터 ④ 액션 (목표-피드백-결과)

정답 및 해설

정답: ④ 액션은 장시간 작업을 위해 목표(goal) 전송 → 주기적 피드백 → 최종 결과의 구조를 갖고 취소(cancel)도 지원한다. 서비스는 응답이 올 때까지 기다리는 동기 호출이라 긴 작업에 부적합하고, 토픽은 응답·완료 개념이 없다.

3. 발행-구독(Publish-Subscribe) 통신 패턴에 대한 설명으로 옳지 않은 것은?

① 구독자는 발행자의 네트워크 주소를 직접 알아야 통신할 수 있다 ② 하나의 토픽을 여러 노드가 동시에 구독할 수 있다 ③ 발행자 코드를 바꾸지 않고 구독자를 추가할 수 있다 ④ 센서 데이터처럼 연속적으로 발생하는 스트림에 적합하다

정답 및 해설

정답: ① 발행-구독의 핵심이 바로 "서로를 몰라도 된다"이다. 발행자는 토픽 이름으로 발행할 뿐이고, 연결은 미들웨어(디스커버리)가 맺어 준다. 이 낮은 결합도 덕분에 ②③처럼 다대다 연결과 확장이 자유롭다.

4. ROS 2가 ROS 1과 달라진 점으로 옳은 것은?

① 마스터(roscore)의 역할이 더 강화되었다 ② 통신 품질을 설정할 수 없게 단순화되었다 ③ DDS를 채택하여 마스터 없이 노드들이 서로를 발견한다 ④ 리눅스에서만 동작하도록 제한되었다

정답 및 해설

정답: ③ ROS 2는 OMG 표준 DDS를 통신 기반으로 채택해 분산 디스커버리를 얻었고, 단일 실패점이던 마스터가 사라졌다. 또한 QoS 설정(②의 반대), 멀티플랫폼(④의 반대), 실시간·보안 강화가 이루어졌다.

5. 로봇 미들웨어에 대한 설명으로 옳지 않은 것은?

① ROS 2 — DDS 기반의 마스터 없는 분산 디스커버리 구조다 ② RT-Middleware — RT-컴포넌트 모델을 사용하며 OMG RTC로 표준화되었다 ③ OROCOS — 실시간 제어에 특화된 유럽의 오픈소스 프레임워크다 ④ OPRoS — 일본 AIST가 주도하여 개발한 컴포넌트 플랫폼이다

정답 및 해설

정답: ④ OPRoS(Open Platform for Robotic Services)는 한국에서 개발된 컴포넌트 기반 로봇 SW 플랫폼이다. 일본 AIST가 주도한 것은 RT-Middleware다. 미들웨어의 국적·특징 매칭은 단골 출제 유형이다.

06

🔗 관련 노트

로봇소프트웨어개발기사 필기 · 학습 교재출제기준 2025.1.1 – 2027.12.31