AEGLOSLAB ROS 2 Jazzy 대전

제14부 시스템 설계·품질·운영

14.9 다중 로봇·플릿 운영

14.9.1 이 장에서 배우는 것 / 선수 지식

로봇 한 대가 잘 동작하는 것과 스무 대가 잘 동작하는 것은 다른 문제다. 한 대에서는 무시할 수 있던 것들이 규모에서 지배적이 된다 — 디스커버리 부하, 무선 대역, 버전 불일치, 수작업 운영, 그리고 "어느 로봇이 문제인가" 를 아는 일 자체.

동시에 새로운 문제가 생긴다. 로봇끼리 부딪히지 않게 하는 것, 작업을 나누는 것, 좁은 통로에서 순서를 정하는 것.

이 장은 그 두 축 — 기술적 아키텍처와 운영을 다룬다.

배우는 것:

  • 분리 전략 — 도메인·네임스페이스·네트워크.
  • 디스커버리 확장 — 규모의 병목.
  • 통신 아키텍처 — 무엇을 공유하는가.
  • 조율 — 충돌 회피·작업 배분.
  • 플릿 관리 — 감시·배포·데이터.
  • 운영 절차 — 규모에서 필요한 것.
  • 점진적 확장 — 몇 대에서 무엇이 바뀌는가.
  • 상호운용 표준 — VDA5050·Open-RMF가 우리 설계에 강제하는 것(14.9.6.1).

선수 지식: 3.3(디스커버리), 3.4(Discovery Server), 3.10(zenoh), 3.9(네트워크), 14.4.6(다중 로봇 launch), 14.8(배포), 11.3(기록·업로드), 14.2(오케스트레이션).

정직: 플릿 관리 제품·프레임워크는 다양하며 이 책은 특정 제품을 권장하지 않는다. 도구 세부는 확인이 필요하다(확인 필요). 다중 로봇의 안전(로봇 간 충돌·사람 안전)은 안전 요구와 전문가의 영역이며(8.7.1·14.10), 여기 서술을 근거로 삼아서는 안 된다. 이 환경에서 검증하지 않았다(목차 3).

검증 상태(추가): 이 장의 서술 가운데 1곳은 이후 회차에서 Jazzy 실물과 대조해 확인했다 — 본문의 (실행 확인) 표기가 그것이다. 표기가 없는 서술은 위 고지가 그대로 적용된다(목차 3의 검증 범위 표).

14.9.2 분리 전략

로봇들을 하나의 ROS 그래프에 둘 것인가.

다중 로봇 아키텍처 ① 단일 그래프 네임스페이스로 구분 ② 도메인 분리 로봇마다 독립 그래프 ③ 도메인 분리 + 브리지 선택적 공유
전략적합
① 단일 그래프소수(2~5대)·긴밀 협조·시뮬
② 도메인 분리대부분의 실무 플릿
③ 분리 + 브리지일부 정보만 공유
축① 단일② 분리
디스커버리 부하로봇 수의 제곱 경향(3.3.4)로봇 내부만
무선 대역전체 공유로봇별
장애 격리낮음높음
상호 관측쉬움브리지 필요
이름 충돌네임스페이스 필요없음
확장성낮음높음

견해: 실무 플릿은 대부분 ②(도메인 분리)가 맞다. 로봇들이 서로의 모든 토픽을 볼 필요가 없고, 무선에서 전체 그래프를 공유하는 것은 대역·안정성 모두에서 불리하다(3.9.3). "로봇은 독립 시스템, 필요한 것만 공유" 가 확장 가능한 구조다.

견해: ①(단일 그래프)은 시뮬레이션과 소규모 연구에 적합하다. 한 컴퓨터에서 여러 로봇을 실행하는 시뮬(14.4.6)에서는 자연스럽고, 서로의 상태를 직접 구독하는 실험도 쉽다. 실기 플릿으로 그대로 옮기지 않는 것이 중요하다.

함정: ①에서 시작해 규모가 커지면 이행이 어렵다. 코드가 다른 로봇의 토픽을 직접 구독하고 있으면, 분리할 때 전부 고쳐야 한다. 처음부터 "로봇 간 통신은 명시적 인터페이스로" 를 규율로 두면 이행이 쉽다.

14.9.3 디스커버리 확장

규모에서 가장 먼저 부딪히는 한계다.

기본 디스커버리 모든 참여자가 서로를 발견 트래픽 ∝ 참여자² ★ 규모에서 포화 Discovery Server 서버를 통해 발견 트래픽 감소 · 통제 가능
수단효과
도메인 분리가장 단순·확실
Discovery Server(3.10)중앙화·통제
정적 피어 설정멀티캐스트 회피(3.9.4)
자동 디스커버리 범위 제한LOCALHOST·SUBNET(확인 필요)
대체 미들웨어zenoh 등(3.10.10)(확인 필요)

견해: 디스커버리 부하는 예고 없이 벽에 부딪힌다. 다섯 대까지 잘 되다가 열 대에서 갑자기 불안정해지는 식이다. 규모 계획이 있다면 처음부터 분리 전략을 세우는 것이 나중에 급히 고치는 것보다 비용이 낮다.

견해: 무선 환경에서는 특히 심각하다(3.9.3). 유선에서는 여유가 있어도 무선에서는 디스커버리 트래픽만으로 대역이 잠식된다. 로봇이 무선으로 연결되는 순간 분리가 사실상 필수가 된다.

정직: Discovery Server와 대체 미들웨어의 Jazzy 지원 상태·성숙도는 확인이 필요하다(확인 필요). 3.10에서 다뤘듯 이 영역은 변화가 빠르므로, 현재 문서와 자신의 환경에서의 측정이 판단 근거여야 한다.

14.9.4 통신 아키텍처

무엇을 로봇 간·중앙과 공유할 것인가.

상태 · 위치 작업 · 지도 · 설정 근접 시 직접 작업 · 지도 · 설정 로봇 1 플릿 서버 로봇 2
공유 대상방향빈도
위치·상태로봇 → 서버낮은 주기(1 Hz 등)
작업 지시서버 → 로봇이벤트
지도서버 → 로봇드물게
경로 예약·통행권양방향필요 시
진단·경보로봇 → 서버이벤트·주기
기록 데이터로봇 → 서버도킹 시(11.3.7)
설정·소프트웨어서버 → 로봇갱신 시(14.8.7)

견해: "센서 원본을 중앙으로 보내지 말라"가 첫 규칙이다(7.8·11.3.2). 이미지·포인트클라우드를 여러 로봇이 동시에 전송하면 무선이 즉시 포화된다. 로봇에서 처리하고 결과만 보내는 것이 확장 가능한 구조다.

견해: 로봇은 서버 없이도 안전하게 동작해야 한다(3.9.3·13.1.7). 통신이 끊겼을 때 정지하거나 안전하게 복귀할 수 있어야 하며, 서버가 필수인 설계는 통신 장애가 곧 전체 정지를 뜻한다.

견해: 로봇 간 직접 통신은 필요할 때만. 근접 회피처럼 지연이 중요한 경우에만 직접 통신을 두고, 나머지는 서버 경유가 관리하기 쉽다. 직접 통신이 늘면 ②(도메인 분리)의 이점이 줄어든다.

프로토콜 선택:

경계선택지
로봇 내부ROS 2(DDS)
로봇 ↔ 서버ROS 2 브리지·MQTT·HTTP·gRPC 등(확인 필요)
서버 내부일반 백엔드 기술

견해: 로봇-서버 경계에서 ROS를 고집할 필요는 없다. 그 경계는 저빈도·이벤트성 통신이므로, 일반적인 IT 프로토콜이 운영·보안·인프라 면에서 유리한 경우가 많다. ROS 브리지를 쓸지는 팀 역량과 기존 인프라에 달렸다.

14.9.5 조율

로봇들이 서로 방해하지 않게 한다.

문제접근
충돌 회피서로를 장애물로 인식 + 조율
좁은 통로통행권·예약
교차로우선순위 규칙
작업 배분중앙 할당·분산 입찰
충전 자원스케줄링
교착탐지·해소
조율 방식 ① 중앙 집중 서버가 결정 ② 분산 로봇끼리 협상 ③ 규칙 기반 사전 정의된 규칙
방식장점단점
① 중앙전역 최적·단순한 로봇단일 실패 지점·통신 의존
② 분산견고·통신 국소전역 최적 어려움·복잡
③ 규칙단순·예측 가능유연성 낮음

견해: ③(규칙 기반)이 실무에서 과소평가된다. "일방통행 경로", "우측 우선", "구역별 한 대만" 같은 단순 규칙이 복잡한 협상 알고리즘보다 예측 가능하고 디버깅이 쉽다. 환경을 설계할 수 있다면(창고·공장) 특히 효과적이다.

견해: 어떤 조율 방식이든 "로봇 자체의 회피"가 최종 보루여야 한다(8.7). 조율이 실패하거나 통신이 끊겨도 로봇은 자기 센서로 장애물(다른 로봇 포함)을 보고 멈춰야 한다. 조율은 효율을 위한 것이지 안전의 근거가 아니다.

정직: 다중 로봇 환경의 안전 설계는 이 책의 범위를 넘는다. 로봇 간 충돌, 사람과 여러 로봇이 공존하는 공간의 위험 평가는 안전 표준과 전문가의 영역이다(14.10).

함정: 교착(deadlock)이 다중 로봇의 고유 문제다. 두 로봇이 좁은 통로에서 서로를 기다리면 영원히 멈춘다. 탐지(진행 없음이 지속)와 해소(후진·우선순위)를 설계해야 하며, 없으면 사람이 매번 개입한다.

14.9.6 플릿 관리

여러 대를 운영하는 데 필요한 것들.

플릿 관리 상태 감시 어느 로봇이 어떤가 배포 관리 버전 · 롤아웃 (14.8) 데이터 수집 bag · 로그 (11.3) 작업 관리 배분 · 추적 유지보수 점검 · 부품 · 이력
기능내용
상태 대시보드위치·모드·배터리·진단(6.9)
버전 현황어느 로봇이 무슨 버전(14.8.8)
경보이상 알림·대응
데이터 수집기록 업로드·분석
작업 이력성공률·소요
유지보수 이력부품·교체·캘리브레이션
원격 지원접근·조작(13.4.3)

견해: "로봇별 진단을 플릿 수준으로 집계"하는 것이 관리의 핵심이다(6.9.8). 각 로봇이 이미 /diagnostics를 발행하고 있다면, 그것을 모아 대시보드로 만드는 것은 비교적 쉽다. 로봇 측 진단이 잘 되어 있으면 플릿 관리가 쉬워진다 — 투자 순서가 그렇다.

견해: "이 로봇만 이상하다"를 판정할 수 있어야 한다. 같은 지표를 로봇 간 비교하면 개별 하드웨어 문제(센서 열화·기계 마모)를 조기에 발견할 수 있다. 플릿의 이점 중 하나가 이 비교 가능성이다.

견해: 유지보수 이력을 소프트웨어와 함께 관리하라. "이 로봇은 지난주에 라이다를 교체했다"는 정보가 없으면, 그 이후의 이상 동작을 소프트웨어 문제로 오진한다. 하드웨어 이력이 진단의 맥락이다.

14.9.6.1 남의 시스템과 연동돼야 할 때 — 상호운용 표준

여기까지는 우리 로봇들끼리의 이야기였다. 현장에서는 다른 조건이 자주 붙는다 — 창고에 이미 다른 회사의 AMR이 운용되고 있고, 고객사에 이미 관제 시스템(WMS·MES)이 있으며, 우리 로봇이 그 안으로 들어가야 한다.

이때 "우리 관제 서버를 쓰세요"는 답이 아니다. 이 영역에는 공개된 상호운용 규약이 있다.

규약·프로젝트성격무엇을 정하나
VDA5050독일 자동차산업협회(VDA)·VDMA가 만든 AMR ↔ 상위 관제(master control) 통신 규약MQTT 위의 JSON 메시지 — 주문(order)·상태(state)·시각화·연결 상태. 로봇 제조사가 달라도 하나의 관제가 지휘할 수 있게 하는 것이 목적
Open-RMF(Robotics Middleware Framework)ROS 생태계의 다종 로봇 협조 오픈 프로젝트교통 관리(경로 충돌 회피)·자원 공유(엘리베이터·문)·플릿 어댑터 구조

실행 확인(2026-08-16): Jazzy apt 인덱스에 ros-jazzy-rmf-fleet-msgs(3.3.1)·ros-jazzy-rmf-traffic-editor(1.9.2) 등 RMF 패키지가 실재한다. 확인한 것은 패키지 존재까지이며, 기능·성숙도·VDA5050 구현체의 상태는 실행해 보지 않았다(확인 필요).

이것이 설계에 주는 실제 제약은 통신 규약 자체보다 그 앞 단계에 있다.

요구우리 시스템에 미치는 영향
상위 관제가 작업을 지시한다로봇의 자율성 경계를 다시 그어야 한다 — 어디까지 스스로 결정하고 어디부터 지시를 따르나(14.2.2의 모드 설계)
상태를 정해진 스키마로 보고한다내부 진단·상태를 그 스키마로 사상하는 어댑터가 필요하다(6.9)
관제가 경로·구역을 통제한다우리 항법의 지역 결정권과 충돌할 수 있다(8.7)
규약이 MQTT 등 ROS 밖 프로토콜브리지 계층이 필수가 된다(11.5.12)

견해: 상호운용을 나중에 추가하려 하면 비용이 크다. 로봇의 상태·작업 모델이 우리 내부 개념으로만 짜여 있으면, 표준 스키마로 옮길 때 의미가 어긋나는 곳이 많이 나온다("우리의 '대기'는 저쪽의 무엇인가"). 고객사 통합 가능성이 있다면 작업·상태 모델을 설계할 때 한 번 대조해 보는 것만으로도 나중 비용이 크게 준다. 반대로 단일 벤더·단일 현장이 확실하다면 표준 도입은 순수한 부담이다 — 판단은 사업 맥락에서 나온다.

정직: 이 책은 VDA5050의 메시지 필드나 Open-RMF의 API를 다루지 않는다. 버전 의존이 크고 이 환경에서 검증할 수 없기 때문이다(확인 필요). 여기서 다루는 것은 그런 요구가 시스템 설계에 무엇을 강제하는가까지이며, 세부는 각 프로젝트 문서가 정본이다.

14.9.7 운영 절차

규모에서 필요해지는 것들.

절차이유
표준 점검로봇마다 같은 확인(14.6.7)
배포 절차카나리·롤아웃(14.8.7)
사고 대응누가 무엇을(11.1)
캘리브레이션 관리값·주기·이력
부품 교체 절차교체 후 확인
로봇 등록·해제프로비저닝(14.8.6)
데이터 보존정책(11.3.7)
교육운영자

견해: "한 대일 때 사람이 하던 일"이 규모에서 병목이 된다. 로봇 한 대의 캘리브레이션을 수동으로 하는 것은 되지만 스무 대는 안 된다. 자동화 우선순위는 "로봇 수에 비례해 늘어나는 작업" 에 두어야 한다.

견해: 로봇별 차이를 최소화하라. 하드웨어 구성·소프트웨어 버전·설정이 로봇마다 다르면 조합이 기하급수적으로 늘고 진단이 불가능해진다. "모든 로봇이 같다"에 가까울수록 운영이 쉽다 — 다만 하드웨어 세대 차이는 불가피하므로, 세대를 명시적으로 관리한다(14.4.5의 변형).

함정: 한 대에서 검증한 것이 플릿에서 다르게 동작할 수 있다. 무선 대역·서버 부하·상호 간섭은 대수에 따라 달라진다. 단계적 확대(카나리 → 소수 → 전체) 가 이 위험의 대비다.

14.9.8 점진적 확장

규모마다 무엇이 문제가 되는가.

규모새로 생기는 문제
1대기본 — 이 책의 대부분
2~5대이름 충돌·기본 조율·수동 배포 한계
5~20대디스커버리·무선 대역·버전 관리·감시 필요
20~100대운영 자동화 필수·데이터 파이프라인·조율 최적화
100대+인프라 전문화
1대 2~5대 네임스페이스 · 기본 조율 5~20대 도메인 분리 · 플릿 감시 · 자동 배포 20~100대 완전 자동화 · 데이터 인프라

견해: "다음 단계를 미리 준비하되 그 다음까지는 하지 말라"가 실용적이다. 3대를 운영하면서 100대용 인프라를 만드는 것은 낭비이고, 아무 준비 없이 20대로 가는 것은 위기다. 한 단계 앞을 보는 것이 적절하다.

견해: 가장 중요한 준비는 "자동화 가능한 구조"다. 배포·점검·데이터 수집이 스크립트로 가능한 형태면 규모가 커져도 확장된다. 사람의 손이 필수인 절차가 병목이 되므로, 그것을 먼저 없앤다.

견해: 초기부터 지켜야 할 규율 셋 — ① 로봇 간 통신은 명시적 인터페이스로(14.9.2), ② 로봇은 서버 없이 안전하게 동작(14.9.4), ③ 버전·설정을 코드로 관리(14.8). 이 셋은 나중에 도입하기 어렵고, 초기 비용은 작다.

14.9.9 함정 카탈로그

#함정증상대처
1단일 그래프로 확장디스커버리 포화도메인 분리
2다른 로봇 토픽 직접 구독이행 불가명시적 인터페이스
3tf 프레임 충돌트리 손상접두사(14.4.6)
4센서 원본을 중앙으로무선 포화로봇에서 처리
5서버 의존 설계통신 장애 = 전체 정지자율 동작
6조율을 안전 근거로위험로봇 자체 회피
7교착 미고려영구 정지탐지·해소
8로봇별 구성 제각각진단 불가표준화·세대 관리
9수작업 절차 유지규모에서 병목자동화
10전체 동시 배포전체 장애카나리
11한 대 검증으로 확대규모 효과 미검증단계적
12유지보수 이력 미관리오진함께 관리
13버전 현황 불명문제 상관 분석 불가진단 발행
14데이터 수집 대역 미계획무선 잠식도킹 시 업로드

14.9.10 체크포인트

  • 다중 로봇 아키텍처 세 전략과 각각의 적합 상황은?
  • 단일 그래프와 도메인 분리의 여섯 축 비교를 말할 수 있는가.
  • 실무 플릿에 도메인 분리를 권하는 근거는?
  • 단일 그래프에서 시작할 때 지켜야 할 규율은?
  • 디스커버리 확장 수단 다섯 가지와, 무선에서 특히 심각한 이유는?
  • 공유 대상 일곱 가지와 "센서 원본을 보내지 말라"의 근거는?
  • 로봇이 서버 없이 동작해야 하는 이유는?
  • 로봇-서버 경계에서 ROS를 고집하지 않아도 되는 이유는?
  • 조율 방식 세 가지와 각각의 장단점은?
  • 규칙 기반 조율이 과소평가되는 이유와 그 강점은?
  • "조율은 안전의 근거가 아니다"의 의미는?
  • 교착이 다중 로봇의 고유 문제인 이유와 대처는?
  • 플릿 관리의 일곱 기능과, 로봇 측 진단 투자가 왜 선행되어야 하는가.
  • "이 로봇만 이상하다"를 판정할 수 있는 것의 가치는?
  • 유지보수 이력을 함께 관리해야 하는 이유는?
  • 자동화 우선순위를 어디에 두어야 하는가.
  • 규모별로 새로 생기는 문제를 말할 수 있는가.
  • 초기부터 지켜야 할 규율 셋은?
  • 고객사의 기존 관제와 연동돼야 할 때, 통신 규약보다 먼저 다시 그어야 하는 것은 무엇인가.
  • 상호운용 표준을 나중에 추가하는 것이 비용이 큰 이유를 작업·상태 모델 관점에서 설명할 수 있는가.

다음 장 14.10는 제14부의 마지막이자 이 책이 여러 번 미뤄 온 주제 — 안전 표준과 ROS 2의 위치를 정면으로 다룬다.