Tuesday, August 12. 야간 근무.

밤 9:40 PM, 출고 피크 한가운데였다. Main Road B와 Aisle C가 만나는 교차 통로에, 네 대의 AMR이 네 방향에서 동시에 도착했다. 그리고 멈췄다. 네 대 모두. 아무도 움직이지 않았다. 네 대 모두 자기가 우선이라고 생각했기 때문이다.

배차 화면에서는 네 개의 작은 점이 얼어 있었다. 그 뒤로는 통로 C로 로봇 줄이 늘어섰다. 교대 조장 Xiao Li가 달려가서 한참 지켜보다가 돌아와서 말했다: "Chen, 저 네 대는 짠 것 같아요. 아무도 안 비켜요."

네 대가 잠긴 순간부터 우리 직원이 걸어가서 로봇 한 대를 손으로 치울 때까지 8분이 걸렸다. 통로 C는 8분간 움직임 제로. 보충은 들어오지 못했다. 파동 계획 전체가 무너졌다. 그날 밤 시간당 처리량은 평소 1,100케이스에서 겨우 800까지 떨어졌다. 솔직히 말하자면: RCS는 세 달간 순조롭게 돌아왔고, 우리를 무너뜨린 것은 결국 하나의 교차로였다.

네 대의 로봇, 아무도 양보하지 않는다

공장 기본 우선순위는 "선착순"이었다. 공정하게 들리지? 줄 서는 것과 같다. 교차로에 먼저 도착한 쪽이 먼저 간다.

실제로 일어나는 일은 이렇다. 피크 시간에는 네 대의 로봇이 1초 안팎의 간격으로 도착한다. 시스템은 누가 진짜 먼저였는지 판단할 수 없다. 그래서 네 대 모두 멈추고, 네 대 모두 살짝 앞으로 나가보며, 네 대 모두 안전 레이저가 서로를 잡아내자 비상 정지한다. 3초 멈추고, 다시 시도하고, 다시 멈춘다. 데드락이다.

데드락은 전염된다. 교차로가 얼면 그 뒤의 로봇이 멈추고, 그 뒤의 로봇도 멈춘다. 8분 뒤에는 Zone B 플릿의 절반이 서 있었고 RCS 화면은 빨간색 벽이었다. 야간 베테랑 Old Wang이 무전으로 말했다: "Chen, 이 로봇들은 일하러 온 거야 회의하러 온 거야?"

다음 날 아침 나는 조회 내내 벤더 엔지니어와 말다툼했다. 그의 말을 그대로 옮기자면: "Chen, 이게 업계 표준입니다." 내가 말했다: "당신 표준이 방금 우리 창고를 8분간 세웠어요. 비표준을 주세요."

실제로 시도해본 두 가지 잘못된 수정

첫 번째 아이디어는 뻔했다: 적재 차량 우선이다. "적재 우선"을 설정했다 — 가득 찬 로봇이 최우선, 빈 로봇이 양보한다.

3일 뒤, Old Zhang이 통로 C 교차로에서 신입 두 명과 함께 서서 로봇들을 향해 욕을 퍼붓고 있었다. 적재하러 가던 빈 로봇이 7~8대의 적재 로봇에게 연속으로 양보하고 11분째 그 자리에 있었다. Zhang이 말했다: "Chen, 이놈들은 신입을 괴롭혀요 — 빈 로봇은 로봇이 아니에요?" 더 나쁜 것은, 적재 로봇들이 특권 의식을 갖기 시작했다는 것이다. 모두가 양보할 것을 알았으니 교차로에서 감속하지 않았고, 두 번은 옆 통로에서 나오던 빈 로봇을 랙 쪽으로 밀어붙일 뻔했다. 사기는 깨지기 전까지는 보이지 않는다 — 하지만 그날 인수인계 때 누군가 진짜로 이렇게 말했다: "야간은 그냥 지게차로 돌아가는 게 어때요." 그 말을 듣고 소름이 돋았다.

두 번째 아이디어: 본선 우선이다. 본선상의 로봇은 멈추지 않는다. 옆 통로의 로봇이 양보한다.

그건 더 나빴다. 옆 통로의 로봇은 본선에 아예 합류할 수 없었다. 통로에 쌓였다 — 최악은 40미터 옆 통로에 여섯 대의 로봇이 범퍼 대 범퍼로 꽉 찼고, 보충 담당자는 수동 파렛 잭조차 통과시킬 수 없었다. 정체를 교차로에서 통로로 옮겼다. 거기는 해결이 더 어려웠고, 덤으로 피킹 존의 보충까지 굶겼다.

두 번의 실패한 실험에서 역설적인 교훈을 얻었다: "공정"하려고 애쓸수록 정체는 더 심해진다.

선착순이 가장 공정하게 들린다 — 그리고 가장 많이 데드락된다. 적재 우선이 가장 합리적으로 들린다 — 그리고 빈 로봇을 괴롭혀 무용지물로 만든다. 본선 우선이 가장 과학적으로 들린다 — 그리고 정체를 더 다루기 어려운 곳으로 옮긴다. 마침내 깨달았다: 교차로가 두려워하는 것은 느림이 아니라 모호함이다. 두 대의 로봇이 둘 다 자기가 가야 한다고 생각하는 순간, 끝이다. 교통을 흐르게 유지하는 유일한 방법은 의도적인 "불공정"을 내장하는 것이다 — 누가 누구에게 양보하는지 정확히 명시하고, 협상의 여지를 제로로 만든다.

우리 창고가 지금 하는 방식

한 달의 시행착오 끝에 세 가지 규칙으로 정착했다. 이것이 우리 창고가 오늘 돌아가는 방식이다.

규칙 하나: 시간대별로 규칙을 바꾼다. 만능은 없다.

낮에는 파동이 가볍고 밖에 나간 로봇이 적을 때 선착순을 쓴다. 단순하고, 번거로움이 없다. 7 PM부터 11 PM까지는 시스템이 자동으로 "작업 긴급도 우선"으로 전환된다. 모든 작업에 점수가 매겨진다 — 캐리어 컷오프가 임박한 출고 작업이 가장 높고, 그다음 보충, 충전하러 돌아가는 빈 로봇이 가장 낮다. 참고: 우리는 무게가 아니라 긴급도로 점수를 매긴다. 컷오프를 놓칠 위기인 파동으로 달려가는 빈 로봇이, 마감 없는 적재 로봇보다 상위다. Old Zhang은 그 이후로 교차로에서 욕을 한 적이 없다.

전략 데드락 위험 빈 로봇 최장 대기 피크 처리량 사용 시점
선착순 높음(피크 때 거의 매일) 약 5분 기준선 낮, 교통량 적음
적재 우선 중간 10분 초과 기준선보다 약 10% 낮음 3일 시도 후 폐기
본선 우선 중간 옆 통로 쌓임 통로 정체, 더 악화 2일 시도 후 폐기
시간대별 작업 긴급도 낮음(3개월 데드락 제로) 3분 미만 기준선보다 약 15% 높음 현재 운영 중, 종일

(이것은 40대 로봇으로 우리 현장에서 직접 측정한 수치다. 플릿이 다르면 레이아웃도 다르다 — 복음이 아니라 참고로 받아들여라.)

통로 교차로에서 양보하는 AMR

규칙 둘: 문제 교차로 주변에 정지 금지 박스를 그린다.

건물 내 여섯 개 교차로의 통계를 뽑았다. Main Road B의 그 교차로가 데드락의 70% 이상을 차지했다. 수정은 단순했다: 각 방향으로 15미터, 전자 펜스를 그렸다. 어떤 로봇이든 박스에 들어가기 전에, RCS는 교차로를 한 번에 통과할 수 있음을 증명해야 한다. 증명하지 못하면 밖에서 기다린다. "일단 비집고 들어가서 보자"는 없다. 시내 도로의 "박스를 막지 말 것"과 같은 규칙이다 — 소프트웨어에 쓴 것만 다르다. 그 교차로는 그 이후로 한 번도 잠기지 않았다.

규칙 셋: 신입 배차 담당은 고참을 3일간 그림자처럼 따라다니며 — 교차로를 관찰한다.

이건 사람에 대한 것이다. 규칙을 바꾼 뒤 처음 2주 동안 야간 베테랑들은 모니터를 뚫어져라 봤고, 조금이라도 이상해 보이면 무전으로 불렀다. 이제 모든 신입 배차 담당은 Old Wang과 함께 3일을 보내며 교차로 교통만 관찰한다. "저 둘은 곧 붙겠구나"를 알아채는 법을 배우는 것이다. 규칙은 기계가 처리하고, 예외는 사람이 처리한다. 구식으로 들리지만 효과가 있다 — 지난달 소프트웨어 업데이트로 우선순위 파라미터가 공장 기본값으로 리셋되었는데, Old Wang이 시스템 경보가 울리기 10분 전에 "로봇들이 양보를 잘못하고 있어요"라고 알아챘다.

계산해보자. 최악의 주에는 하루 평균 세 번의 데드락, 회당 5~8분, 시간당 처리량은 매번 200~300케이스씩 떨어졌다. 일주일에 거의 4,000케이스의 손실이다. 성수기에 그런 미스를 내면 눈물이 날 정도의 고객 패널티가 온다. 새 체제로 3개월: 데드락 제로, 야간 처리량은 오히려 예전보다 올랐다. 솔직히 벤더 엔지니어는 처음에 우리 접근이 조잡하다고 생각했다. 이제 그들은 우리의 시간대별 규칙을 다른 창고에 배포하는 권장 설정에 넣었다.

동료 운영자들에게 한 가지 당부: RCS를 도입할 때 배차 알고리즘이 얼마나 똑똑한지만 감탄하지 말라. 먼저 피크 근무 때 가장 바쁜 교차로에 서 있어봐라. 교차로를 잘못 잡으면 40대의 로봇은 40개의 장애물이 된다. 제대로 잡으면 사람이 보너스가 된다. 그리고 교통 규칙을 바꾸기 전에는 먼저 야간 베테랑과 이야기하라 — 로봇은 스스로 운전하지만, 근무는 사람이 돌린다. 사람들이 납득하지 않으면 어떤 규칙도 통하지 않는다.

Chen Feng, 창고 운영 매니저 지음

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