AMR 데드락은 로봇 두 대가 잠시 마주 보는 장면보다 넓은 문제입니다. 여러 로봇이 통로·교차로·문·충전기를 하나씩 점유한 채 서로의 자원을 기다리면 원형 대기가 생깁니다. 자원 예약, 대기 지점, 우선순위, 감지와 복구를 한 상태 기계로 설계해야 합니다.
아래에서는 용어의 차이를 실제 시스템 경계, 실패 조건과 검증 순서로 나눠 살펴봅니다.
AMR 데드락은 느린 교통이 아니라 서로 놓지 않는 원형 대기다
혼잡은 기다리면 흐름이 다시 움직이지만 데드락은 참여 로봇 중 하나가 자원을 놓거나 경로를 바꾸지 않으면 끝나지 않습니다. 두 로봇이 좁은 통로 양쪽에서 마주 보는 경우뿐 아니라 문과 엘리베이터, 충전기를 순서대로 기다리는 상황도 포함됩니다.
이 글은 단일 로봇의 장애물 회피보다 플릿 수준의 공유 자원 제어에 집중합니다. 개별 경로 계획의 역할은 글로벌 플래너와 로컬 컨트롤러 차이 글에서 따로 확인할 수 있습니다.
지도 위 구간을 공유 자원과 안전 대기점으로 다시 모델링한다
로봇이 동시에 지나갈 수 없는 좁은 edge, 회전 반경이 겹치는 교차 node, 문, 엘리베이터 세션, 충전 슬롯을 자원으로 식별합니다. 자원마다 용량, 진입 방향, 점유 시작과 해제 조건을 둡니다.
자원 앞에는 다른 로봇의 경로를 막지 않고 정지할 수 있는 holding point가 있어야 합니다. 안전 대기점이 없는 구간은 예약 실패 후 멈출 장소가 없으므로 앞선 자원에 들어가기 전에 다음 탈출 지점까지 묶어서 승인해야 합니다.
wait-for graph로 누가 무엇을 잡고 누구를 기다리는지 표현한다
각 로봇을 정점으로 두고 A가 점유한 자원을 B가 기다리면 B에서 A로 간선을 만듭니다. 그래프에 순환이 생기면 단순한 긴 대기가 아니라 데드락 후보로 볼 수 있습니다.
관측 데이터에는 로봇 ID, 현재 점유 자원, 요청 자원, 요청 시각, 우선순위와 이동 가능 방향을 넣습니다. 위치만 보면 물리적으로 가까운 로봇 때문에 막혔는지 예약 상태가 꼬였는지 구분하기 어렵습니다.
| 상태 | 판단 근거 | 조치 |
|---|---|---|
| 정상 대기 | 앞 자원이 사용 중, 순환 없음 | 예약 순서 유지 |
| 기아 위험 | 대기 상한 초과, 순환 없음 | aging으로 우선순위 상승 |
| 데드락 | wait-for graph에 순환 | 희생 로봇 선정·복구 |
| 유령 점유 | 로봇 응답 없음, 예약만 남음 | lease 만료와 물리 확인 |
좁은 통로는 진입 전에 출구까지 확보하는 예약으로 막힘을 예방한다
통로 안에서 마주친 뒤 로컬 회피에 맡기지 말고 진입 방향과 시간 창을 예약합니다. 중간 대피점이 없다면 통로 전체를 하나의 자원으로 보고 반대 방향 예약과 겹치지 않게 합니다.
여러 경로의 예약과 충돌 상태는 Open-RMF 공식 시각화 도구처럼 시간축 궤적과 함께 보여주는 편이 좋습니다. 같은 좌표라도 도착 시각이 다르면 충돌이 아니며, 지연이 커지면 기존 예약을 다시 검사해야 합니다.
실제 충전 구역도 슬롯과 진입로를 분리해 예약해야 한다
충전 위치가 여러 개여도 공용 진입로가 한 대 폭이면 슬롯 수와 교통 용량이 같지 않습니다. 충전 슬롯, 도킹 접근 구간, 회차 공간을 별도 자원으로 두고 동시에 잡아야 막힌 로봇이 뒤 차량까지 가두는 상황을 줄일 수 있습니다.
AMR 자동 도킹 성능 시험에서 측정한 평균 도킹 시간과 재시도 분포를 예약 시간 창에 반영합니다. 고정된 짧은 시간을 쓰면 실패한 도킹 예약이 다음 로봇과 겹칩니다.

교차로 우선순위는 선착순에 aging과 긴급 등급을 더한다
단순 선착순은 이해하기 쉽지만 긴 작업 열이 한 방향에 계속 들어오면 반대 방향이 굶을 수 있습니다. 대기 시간이 늘수록 점수를 올리고, 생산 정지나 의료 이송처럼 명시된 긴급 작업만 제한적으로 선점하게 합니다.
선점 중에도 교차로 안에 들어간 로봇을 갑자기 멈추게 해서는 안 됩니다. 새 우선순위는 다음 안전 경계에서 적용하고 이미 점유한 자원은 정상적으로 빠져나간 뒤 해제합니다.
일방통행과 구역 용량은 데드락 가능성을 구조적으로 줄인다
루프형 통로를 일방통행으로 만들면 정면 충돌과 순환 대기의 일부를 설계 단계에서 제거할 수 있습니다. 다만 우회 거리가 늘고 한 구간 폐쇄가 전체 흐름을 끊을 수 있으므로 양방향 전환 조건과 대체 경로를 함께 둡니다.
구역 용량은 면적보다 빠져나갈 수 있는 대피점 수로 정합니다. 출구가 하나인 방에 여러 대를 넣으면 내부 공간이 넓어도 출구 예약에서 데드락이 생길 수 있습니다.
로컬 장애물 회피는 예약 충돌을 대신 해결하지 못한다
Nav2 코스트맵 레이어 글의 장애물 표시는 현재 점유 공간을 피하는 데 유용하지만 상대 로봇이 앞으로 필요로 하는 자원과 우선순위를 알지 못합니다. 서로 양보하는 속도 명령만 반복하면 두 로봇이 동시에 좌우로 흔들릴 수 있습니다.
플릿 예약은 누가 먼저 통과할지를 정하고 로컬 제어는 사람이나 예상 밖 물체 때문에 안전하게 감속·정지합니다. 두 계층이 충돌할 때는 안전 정지가 우선이지만 정지 이벤트를 플릿에 보내 예약 시간을 갱신해야 합니다.
복구는 희생 로봇과 대피점, 해제 순서를 미리 정해야 한다
순환에 속한 로봇 중 적재 위험이 낮고 후진 경로가 있으며 이동 비용이 작은 한 대를 희생 로봇으로 고릅니다. 사람이 동행해야 하거나 깨지기 쉬운 적재물을 든 로봇은 후보에서 제외합니다.
복구 명령은 정지, 기존 예약 일부 해제, 안전 대피점으로 이동, 나머지 로봇 통과, 재계획 순서로 실행합니다. Nav2 복구 행동 글의 회전·후진도 플릿이 승인한 공간 안에서만 사용해야 다른 예약을 침범하지 않습니다.
통신 단절에는 lease 만료와 물리 점유 확인을 함께 쓴다
로봇 응답이 끊겼다고 예약을 즉시 해제하면 실제로 통로 안에 있는 로봇과 다음 로봇이 충돌할 수 있습니다. 예약에는 갱신해야 하는 lease를 두되 만료 후에도 센서나 운영자 확인 전에는 물리 자원을 차단 상태로 유지합니다.
반대로 복구된 로봇이 오래된 예약을 다시 주장하지 않도록 세션 세대 번호와 명령 ID를 검사합니다. 동일 이벤트 재전송은 멱등 처리하고 중앙과 로봇의 소유권 불일치는 명시적 오류로 올립니다.
시험은 정상 처리량보다 원형 대기와 복구 시간을 의도적으로 만든다
Open-RMF 공식 데모 저장소는 여러 플릿과 문·엘리베이터가 있는 시나리오를 구성하는 출발점이 됩니다. 실제 지도에서는 좁은 통로 양방향 진입, 네 방향 교차로, 충전기 포화, 문 응답 지연과 로봇 오프라인을 반복합니다.
각 시험은 무데드락 통과 여부뿐 아니라 최대 대기, 예약 거절, 복구 명령 횟수, 수동 개입과 정상 흐름 복귀 시간을 기록합니다. 희귀한 순환은 평균 처리량에 가려지므로 사건 로그와 시간축 재생이 필요합니다.
| 시험 시나리오 | 주입 조건 | 합격 기준 예시 |
|---|---|---|
| 정면 진입 | 좁은 통로 양쪽 동시 요청 | 한쪽만 승인, 안전 대기 |
| 교차 순환 | 네 로봇이 다음 구간 점유 | 순환 감지·정해진 복구 |
| 유령 예약 | 점유 중 통신 단절 | 물리 확인 전 신규 진입 금지 |
| 기아 | 한 방향 작업 연속 유입 | 최대 대기 상한 준수 |
운영 화면은 지도보다 자원 소유와 대기 관계를 먼저 보여줘야 한다
지도 위 로봇 점만 표시하면 왜 멈췄는지 알기 어렵습니다. 자원별 소유자, 대기열, 예약 만료, wait-for graph의 순환, 복구 단계와 수동 해제 이력을 한 화면에서 확인하게 합니다.
서로 다른 제조사 로봇을 함께 운영할 때 명령 메시지는 VDA 5050 가이드와 연결할 수 있습니다. 그러나 데드락 정책의 자원 모델과 운영 책임은 인터페이스 규격만으로 자동 결정되지 않으므로 현장 플릿 제어 규칙으로 별도 문서화해야 합니다.

AMR 교통 교착상태에서 자주 묻는 질문
AMR 두 대가 마주치면 모두 데드락인가요?
아닙니다. 한 대가 정상적으로 후진하거나 우선순위에 따라 빠져나갈 수 있으면 일시 정체입니다. 서로가 가진 자원을 놓지 않은 채 상대 자원을 기다리는 순환이 데드락입니다.
좁은 통로 전체를 항상 잠가야 하나요?
중간에 안전 대피점과 충분한 폭이 있으면 구간을 나눌 수 있습니다. 대피점 없이 정면 통과가 불가능하면 출구까지 하나의 자원으로 예약하는 편이 안전합니다.
로컬 플래너만으로 왜 해결하기 어려운가요?
로컬 플래너는 주변 장애물을 피하지만 다른 로봇의 미래 예약, 작업 우선순위와 자원 소유를 알지 못합니다. 플릿 계층이 통과 순서를 정해야 합니다.
예약 서버가 중단되면 어떻게 해야 하나요?
새 공유 자원 진입을 중단하고 이미 점유한 로봇은 안전 대피점까지 제한적으로 빠져나가게 하는 fallback이 필요합니다. 복구 후 세션과 예약 소유권을 재동기화합니다.
데드락 감지 시간은 얼마나 짧아야 하나요?
고정값보다 자원별 정상 통과 시간과 대기 상한을 기준으로 잡습니다. 그래프 순환은 즉시 후보로 올리고 물리 상태를 확인한 뒤 자동 복구 또는 운영자 승인을 선택합니다.
교통 예약과 복구 명령은 로봇 제동거리, 후진 가능성, 사람 통행과 현장 안전 규칙을 반영해야 합니다. 실제 설비에서는 위험성 평가와 단계별 시험을 거쳐 적용하십시오.