애틀랜타 외곽의 한 음료 유통센터에서 새벽 2시, 나는 2층 난간에서 두 대의 AMR이 '치킨 게임'을 벌이는 모습을 지켜보고 있었다. 브랜드 A의 로봇은 교차로에서 꼼짝 않고 멈춰 있었다. 자신이 우선통행권을 가졌다고 확신하는 표정이었다. 브랜드 B의 로봇은 18인치 뒤로 물러나 "path blocked"를 선언하고는 깜빡이며 앉아 있었다. 두 디스패치 시스템은 각각 상대가 움직이기를 기다리고 있었다. 20분 후, 야간 감독자는 해당 구역 전체의 자동화를 끄고, 사람 세 명을 팔레트 잭과 함께 보내 60케이스의 밀린 작업을 손으로 치우게 했다. 하드웨어가 고장 난 것은 아니었다. 로봇들은 단순히 누가 먼저 갈지를 합의할 수 없었다. 그들에게 같은 언어를 말하게 한 사람이 아무도 없었기 때문이다.
그 밤은 내가 창고 관리자가 "다른 브랜드도 그냥 사면 안 될까요? 더 싸던데요."라고 물을 때마다 떠올리는 밤이다. 짧은 답은 예스다. 긴 답은 혼합 플릿에서 어려운 부분은 결코 차량이 아니라는 것이다. 어려운 것은 '누가 명령을 내릴 것인가'를 정하는 일이다.
VDA 5050이 다루는 것과, 의도적으로 제외한 것
VDA 5050은 독일의 VDA(자동차산업협회)와 VDMA(기계공학협회)가 공동으로 발행한 개방형 통신 표준이다. 모바일 로봇과 중앙 플릿 컨트롤(마스터 컨트롤이라고도 불린다) 사이의 인터페이스를 정의한다. 현재 버전은 3.0.0이며, 2025년 3월에 발행되었다.
설계는 의도적으로 좁다. 명령은 한 방향으로 흐르고, 상태는 반대 방향으로 흐른다. 메시지는 MQTT 위의 JSON이다. 일상 트래픽은 QoS 0, 연결 모니터링은 QoS 1. 스펙은 소수의 메시지 유형을 정의한다: order, instantActions (pause, resume), state (position, battery, errors), visualization, connection heartbeat, factsheet (로봇의 물리적 특성), zoneSet. 벤더가 올바르게 구현했다면, 준수하는 마스터 컨트롤은 어떤 브랜드의 차량이든 디스패치할 수 있다.
표준이 '하지 않는' 것도 그만큼 중요하다: 안전 기능도 교통 로직도 정의하지 않는다. 라우팅, 우선통행, 혼잡 처리, 데드락 복구 — 스펙은 이 모든 것을 마스터 컨트롤과 벤더에게 명시적으로 맡긴다. VDA 5050은 로봇이 명령을 이해하게 만든다. 도로를 공유하는 법은 가르치지 않는다.
나는 이것을 비싸게 배웠다. 한 벤더의 브로슈어에 'VDA 5050 호환' 체크박스가 찍힌 프로젝트였다. 통합 과정에서 밝혀진 것은, 그들이 state 채널은 구현했다는 것이었다. 로봇이 자기 위치를 보고할 수는 있었다. 하지만 order 채널을 한 번도 만든 적이 없었다. 마스터 컨트롤은 태스크 하나 보낼 수 없었다. 로봇들은 수다만 떨고 쓸모가 없었다. 브로슈어를 믿지 마라. 인수 단계에서는 브로커 트래픽을 직접 눈으로 확인하면서 모든 메시지 채널을 하나씩 데모하게 하라.
마스터 컨트롤 질문: 세 가지 아키텍처, 공짜 점심은 없다
혼합 플릿에 두뇌는 하나여야 한다. 창고들이 이 문제를 해결하는 세 가지 방식을 보았다.
선택지 1: 중립적인 서드파티 플릿 매니저. VDA 5050을 말하고 모든 브랜드를 동등하게 대하는 전용 소프트웨어. 장점은 자유다. 나중에 컨트롤 계층을 뜯어내지 않고 벤더를 교체할 수 있다. 단점은 별도의 소프트웨어 라이선스, 그리고 벤더 고유 동작(예를 들어 브랜드 B의 독점 리프트 시퀀스)은 표준으로 표현할 수 없다는 현실이다. 커스텀 어댑터를 각오하라.
선택지 2: 한 로봇 벤더가 마스터 컨트롤도 겸임한다. 가장 흔한 영업 피치다. "우리 플릿 매니저는 우리 로봇도, 남의 로봇도 돌립니다." 작동은 한다. 단 함정이 있다. 스케줄러는 필연적으로 호스트 브랜드에 최적화되어 있다. 태스크 배분, 충전 우선순위, 에러 복구의 모든 것이 미묘하게 홈팀을 편든다. 그리고 진짜 아픈 곳은 상업 조건이다. 유지보수 계약은 보통 2~3년 동안 묶어두고, 세 번째 브랜드를 추가하려 하면 '호환성 테스트'가 편리한 거부권이 된다.
선택지 3: 건물을 나눈다. 브랜드 A가 동쪽 구역, 브랜드 B가 서쪽 구역, 사이에 가상 펜스. 가장 손쉬운 길이며, 솔직히 말해 패배 선언이다. 구역을 넘나드는 태스크는 사람이 손으로 나른다. 자동화하려던 바로 그 인력이 돌아오는 셈이다.
내 결론: 플릿이 10대를 넘을 것이고 브랜드를 계속 추가할 계획이라면, 중립적인 서드파티 컨트롤을 선택하라. 라이선스 비용은 두 번째 구매 라운드에서 회수된다. 5대 미만의 파일럿이라면 벤더 호스팅 컨트롤도 수용 가능하다. 단 계약에 이것을 넣어라: 서드파티 브랜드가 추가되면 기존 벤더는 60일 이내에 VDA 5050 통합을 완료하고, 초과일마다 유지보수료에서 일일 패널티를 공제한다. 이 조항이 없으면 '나중에 지원하겠습니다'는 3년짜리 논쟁이 된다.

견적서에 없는 맵 문제
여기가 VDA 5050의 유명한 빈틈이다: 맵에 대해서는 아무 말도 하지 않는다. 각 벤더는 자신만의 좌표계로 자신만의 맵을 만든다. 브랜드 A의 원점은 입고 도크에 있고, 브랜드 B의 원점은 충전 스테이션에 있다. 마스터 컨트롤이 "(12, 30)으로 가라"고 하면, 각 로봇은 서로 다른 장소를 듣는다.
실무에서는 시운전 엔지니어들이 손으로 맵을 맞춘다. 건물 안의 알려진 4개 지점을 찍고, 두 좌표계를 고정시킨 뒤 넘어간다. 된다. 안 될 때까지는. 정렬은 스냅샷이다. 랙을 옮기거나 임시 스테이징 레인을 두는 날, 맵들은 조용히 어긋나기 시작하고, 로봇이 자신의 맵에 없는 공간으로 들어가기 전까지 아무도 눈치채지 못한다. 냉동 창고 현장에서 이를 목격했다. 랙이 재배치되고, 아무도 맵을 재등록하지 않았고, 로봇은 막혀 있던 막다른 통로로 들어가 LiDAR가 비명을 지르며 플릿 전체가 멈췄다.
그러니 맵 정렬은 일회성 작업이 아니라 운영 절차로 다루라. 랙 이동이나 통로 변경이 있을 때마다 재등록을 트리거하고, 책임자 이름을 명기해 SOP에 적어라. 시설 레이아웃이 계절마다 바뀌는 곳이라면, 배터리 교체 예산을 잡듯 엔지니어링 시간도 예산에 넣어라.
서명하기 전에: 인수 체크리스트
이 체크리스트는 혼합 플릿 프로젝트들이 실패하는 모습을 보며 만들었다. 최종 사인오프 전에 돌려라.
- 벤더에게 VDA 5050의 모든 메시지 채널을 개별적으로 데모하게 하라. state만이 아니라 특히 order와 instantActions를.
- 양 브랜드(또는 전체)를 최소 4시간 연속 함께 돌려라. 상호 대기와 사람 개입을 세어라.
- 통로에서 정면 대결을 연출하라. 마스터 컨트롤은 30초 이내에 해결해야 한다. 장갑 낀 사람이 아니라.
- 미션 도중 Wi-Fi 로밍을 10초 끊어라. 로봇은 제자리에 안전하게 정지해야지, 마지막 명령을 끌고 배회해서는 안 된다.
- 한 브랜드의 충전기를 뽑고, 저배터리 태스크 재배치 로직이 해당 브랜드만이 아니라 플릿 전체를 커버하는지 지켜보라.
- 랙 하나를 옮기고 맵 재등록을 실행해 시간을 재라. 프로세스는 2시간 이내에 끝나야 한다.
- factsheet를 요구하고 치수, 적재량, 회전 반경을 계약과 대조하라.
그리고 내일 바로 할 수 있는 한 가지: 상호운용성을 회의실에서 정하지 마라. 후보 브랜드마다 차량 두 대씩을 빈 스테이징 공간에 ― 자기 건물의 놀고 있는 한 구석이라도 좋다 ― 넣고, 반나절 분량의 혼합 미션을 돌려라: 디스패치, 충전, 장애, 네트워크 단절, 전부. 그 스모크 테스트를 피할 핑계만 대는 벤더와는 거래에서 손을 떼라. 아끼는 돈이 핵심이 아니다. 핵심은 두 번 다시 없을 새벽 2시의 대치 상황이다.
영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.





