층간 디스패치는 RCS 프로젝트가 죽는 곳입니다. 단일 층에서는 아름답게 돌아가던 플릿이 두 번째 층이 추가되는 순간 엘리베이터를 놓치고, 타임아웃되고, 작업이 데드락되기 시작합니다. 차량이 문제인 경우는 드뭅니다. AMR은 계단을 오를 수 없으므로 엘리베이터에 의존하고, 엘리베이터는 건물 전체가 공유하는 자원입니다. 여러분의 RCS는 로봇을 제어합니다. 엘리베이터의 변덕은 제어하지 못합니다.

엘리베이터 탑승 한 번을 뜯어보기

층간 이동 한 번은 사실 다섯 단계입니다. 호출, 대기, 진입, 탑승, 하차. 각 단계가 막힐 수 있습니다. 프로토콜이 맞지 않아 엘리베이터가 호출에 한 번도 응답하지 않았습니다. 카가 도착했지만 상태 신호가 끊겨 문이 열리지 않았습니다. 로봇이 들어갔지만 장애물 때문에 문이 닫히지 않았습니다. 잘 올라갔다가 위치 추정이 드리프트되어 나가지 못했습니다.

핵심 통찰: 로봇은 엘리베이터 상태를 절대 추측해서는 안 됩니다. 엘리베이터 컨트롤러가 유일한 진실 공급원이며, RCS는 컨트롤러의 상태 머신에서 모든 것을 구동해야 합니다. 카 위치, 문 상태, 적재 중량, 이동 방향. 네 신호 모두, 예외 없이. 그중 하나라도 추정하거나 타임아웃으로 가정하는 것은 지뢰를 심는 것입니다.

이 핸드셰이크에는 이미 업계 프레임워크가 있으니 프로토콜 계층을 처음부터 다시 만들지 마십시오. ROS2 생태계에서는 RMF(Robot Middleware Framework)가 리프트 통합 메시지의 완전한 세트를 정의합니다. 플릿 매니저와 리프트 컨트롤러는 표준화된 상태 핸드셰이크로 협상하고, 로봇은 그저 실행합니다. 싱가포르 IMDA의 상업 건물 내 AMR 기술 가이드라인 역시 로봇-리프트-도어 데이터 교환을 사양에 명시하고 있습니다. 장비 측면에서는 독일의 Lödige Industries가 AGV와 AMR이 Olympus, Sherpa 라인과 같은 화물 리프트와 직접 대화할 수 있는 리프트 자동화 모듈(공개 사양 최대 20메트릭톤급)을 판매합니다. 맞춤형으로 만들기 전에 리프트 벤더와 미들웨어가 이미 지원하는 것을 확인하십시오.

엘리베이터를 호출하는 주체는 누구인가

첫 번째 갈림길: 누가 호출을 발행하는가? 두 가지 아키텍처가 있습니다.

차량-리프트 직접 연결: 로봇이 승강장에 도착해 직접 엘리베이터를 호출합니다. 단순하지만, 1~2대 데모에만 적합합니다. 규모가 커지면 N대의 로봇이 동시에 호출하고, 엘리베이터는 사방으로 끌려다니며, 모두가 카를 차지하려고 싸우고, 아무도 움직이지 못합니다.

RCS 중앙집중 호출: 모든 층간 요청은 먼저 RCS로 모이고, RCS가 엘리베이터에 단일 명령 스트림을 발행한 뒤 각 로봇을 배차합니다. 어느 카에, 어느 층으로. 실제 플릿에는 이것이 정답이지만, RCS가 큐를 소유해야 합니다. 제가 고집하는 큐잉 규칙 세 가지:

방향별 합승: 같은 방향으로 향하는 로봇을 한 카에 묶습니다. 엘리베이터 왕복 1회의 비용은 고정입니다. 카 안의 추가 로봇 한 대 한 대가 순수한 이득입니다.

기아 방지 우선순위: 긴급한 층간 주문은 큐를 뛰어넘을 수 있지만, 대기에는 상한을 둡니다. 일반 작업은 최대 N라운드 대기한 뒤 강제 통과됩니다. 저우선순위 작업을 승강장에서 영원히 기다리게 하지 마십시오.

타임아웃 퇴출: 로봇이 시간 예산을 초과해 카를 점유하면(예: 진입 기동이 몇 분이 지나도 완료되지 않으면), RCS는 현재 카 배정에서 로봇을 쫓아내고 다시 큐에 넣습니다. 엘리베이터는 희소 자원입니다. 카에 눌러앉을 권리는 어떤 로봇에게도 없습니다.

제 결론: 층간 이동의 스케줄링 권한은 RCS가 가져야 합니다. 차량에는 상태 보고만 남깁니다. 도착했다, 들어갔다, 나왔다. 책임을 분리하지 않으면 장애를 절대 풀어낼 수 없습니다.

엘리베이터가 고장 나도 시스템은 멈추지 않아야 한다

엘리베이터는 기계입니다. 고장 납니다. 더 자주 반쯤 고장 납니다. 문 하나가 고장 나고, 한 층의 버튼이 죽고, 카가 가끔 비상 정지합니다. 다운그레이드 계획을 3단계로 미리 작성하십시오.

1단계, 단일 카 고장: RCS는 작업을 정상 카에 자동으로 재할당하고, 큐는 그대로 둡니다. 이를 위해서는 현장에 로봇이 이용할 수 있는 엘리베이터가 최소 2대 필요합니다. 엘리베이터 1대 + 층간 업무 = 단일 장애점입니다. 프로젝트 킥오프 때 지적하십시오.

2단계, 전 엘리베이터 정지: 모든 층간 작업을 중단하고, RCS를 단일 층 모드로 전환하며, 같은 층 작업은 계속 돌립니다. 층간 화물은 수동 이송(화물 경로 또는 계단을 통한 지게차나 핸드 카트)으로 옮깁니다. 시스템은 느려지지만 절대 멈추지 않습니다.

3단계, 통신 상실: RCS가 리프트 컨트롤러의 하트비트를 듣지 못하면, 모든 차량은 지정된 대기 지점에서 정지합니다. 카에 눈감고 진입하는 일은 없습니다. 이것은 안전 레드라인입니다. 저 문 뒤에 카가 실제로 있는지 아무도 모릅니다.

트레이드오프는 정직하게: 다운그레이드 계획은 효율과 안전을 맞바꾸는 것입니다. SLA에 명시하고, 엘리베이터가 완전히 정지했을 때 무엇을 보장할지 고객과 미리 합의하십시오. 최악의 결과는 한 번도 논의하지 않고, 일이 터진 뒤 서로를 비난하는 것입니다.

층간 작업에 공정하게 가격 매기기

층간 작업은 본질적으로 같은 층 작업보다 비쌉니다. 엘리베이터 왕복 1회와 양쪽 끝에서의 대기 시간을 소모하기 때문입니다. 우선순위를 정하는 세 가지 규칙:

주문 긴급도로 가중: 운송사 마감(cutoff)과 싸우는 출고 작업은 층간 가중치를 올립니다.

엘리베이터 왕복 비용화: 엘리베이터 왕복 1회를 작업 비용으로 환산하고, RCS가 스케줄링 시 만차 카를 선호하고 빈차 운행을 최소화하게 합니다.

가중치 풀 분리: 층간 작업을 일반 작업과 같은 우선순위 풀에서 순위 매기지 마십시오. 별도의 가중치 등급을 주십시오. 그렇지 않으면 같은 층 작업의 홍수에 묻힙니다.

한 문장으로: 엘리베이터는 건물에서 가장 비싼 공유 자원이며, 전체 스케줄링 전략은 빈차 운행을 줄이고 유휴 로봇을 없애는 것으로 귀결됩니다.

화물 엘리베이터에 진입하기 전 앞에서 대기하는 AMR

벽에 붙여둘 만한 함정: 멀티로봇 플릿에서 로봇이 스스로 엘리베이터를 호출하게 하지 마십시오. 그곳이 혼돈의 시작입니다. 하중을 검증하십시오. 차량 + 화물은 엘리베이터 정격 용량을 밑돌아야 하며, 1킬로그램도 초과 금지입니다. 이는 안전 항목이지 효율 항목이 아닙니다. 화재 경보 인터록을 배선하십시오. 경보가 울리면 엘리베이터는 사용 중지되고, RCS는 신호를 받아 모든 층간 작업을 즉시 동결해야 합니다. 먼저 프로토콜 통합을 하고 나서 플릿 규모를 논하십시오. 차량을 추가하기 전에 연결된 컨트롤러와 매끄러운 상태 머신을 갖추십시오. 순서를 거꾸로 하면 추가되는 로봇 한 대 한 대가 또 다른 지뢰입니다. 가능하다면 로봇 전용 엘리베이터 한 대가 가장 단순한 삶입니다. 최소한 피크 시간대 배차 권한은 확보하십시오.

영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.