DoReMi: 스킬 실행 중 제약을 확인하고 다음 행동을 다시 계획하는 방법

로봇이 상자를 집어 목적지로 이동하는 동안 상자를 놓쳤다면, 이동 스킬이 끝나기 전에 그 사실을 계획기에 알려 줄 수 있습니다. DoReMi는 다음 스킬을 선택할 때 그 스킬이 실행되는 동안 유지해야 할 조건도 함께 만들고, 카메라 관측으로 조건을 반복 확인합니다. 조건이 거짓으로 판정되면 현재 스킬을 중단하고 위반 정보를 넣어 다음 행동을 다시 계획합니다.

이 구조의 연결점은 스킬 이름과 함께 생성하는 언어 제약입니다. “목적지로 이동”이라는 행동에 “로봇이 상자를 들고 있다”라는 조건을 붙이면, 이동 경로를 따라가는 제어기와 운반 목적을 확인하는 감시기가 서로 다른 일을 맡을 수 있습니다.

이전 행동이 다음 스킬의 제약을 정한다

DoReMi 논문 III-A·B절은 고수준 지시, 사용 가능한 스킬과 그 언어 설명, 이전 실행 이력을 이용해 다음 스킬을 고르는 방식을 설명합니다. 언어 모델은 스킬을 선택한 뒤 이어서 그 단계의 제약을 생성합니다. 제약은 현재 스킬 이름뿐 아니라 앞서 무엇을 했는지에도 의존합니다.

논문이 드는 예시는 “상자를 집는다” 다음에 “이동한다”가 오는 경우입니다. 이동 중에는 상자를 계속 들고 있어야 합니다. 상자가 처음부터 제대로 잡히지 않았거나 중간에 떨어졌다면 이 조건이 깨집니다. 이동 스킬만 보면 로봇은 목적지를 향해 정상적으로 움직일 수 있지만, 상자 운반이라는 전체 지시에서는 이미 다른 상태에 놓인 것입니다.

또 다른 논문 예시는 빨간 블록을 초록 블록 위에 놓은 뒤 그 관계를 유지하는 조건입니다. 앞 단계에서 만든 물체 관계가 뒤 단계의 전제가 됩니다. 이처럼 이력에 따라 제약을 생성하면 다음 스킬이 어떤 상태를 이어받아야 하는지 명시할 수 있습니다.

논문이 설명하는 이력 다음 실행에서 확인할 조건 조건이 알려 주는 정보
상자를 집은 뒤 이동 로봇이 상자를 들고 있는가 운반에 필요한 파지 상태가 유지되는지
빨간 블록을 초록 블록 위에 배치 빨간 블록이 초록 블록 위에 있는가 앞서 만든 물체 관계가 유지되는지

제약은 저수준 제어기에 새 궤적을 직접 주는 값이 아닙니다. 현재 행동이 전체 계획에서 어떤 의미를 가지는지를 관측 가능한 질문으로 바꿔 줍니다. 예를 들어 “운반을 잘하고 있는가”보다 “상자를 들고 있는가”가 이 논문이 사용하는 이진 질의 구조에 가깝습니다.

VLM의 답이 스킬 실행 루프를 바꾼다

논문 III-C절에서 VLM은 1인칭 또는 3인칭 카메라 영상과 제약에 대한 질문을 받습니다. 각 제약이 만족되는지를 Yes 또는 No로 답하는 구조입니다. 넓은 장면 설명을 매번 만드는 대신, 계획에 필요한 특정 조건을 묻습니다.

Algorithm 1의 제어 흐름을 풀어 쓰면 다음과 같습니다.

실행 이력으로 다음 스킬과 제약 집합 생성
→ 현재 스킬 실행 시작
→ 스킬이 끝나기 전까지 주기적으로 제약 검사
   모든 조건이 참: 현재 스킬 계속 실행
   하나라도 거짓: 위반 정보를 프롬프트에 추가하고 현재 스킬 중단
→ 갱신된 이력을 바탕으로 다음 스킬 계획

상자 예시에서 계획기로 돌아가는 핵심 정보는 “이동이 끝났다”가 아니라 “상자를 들고 있어야 한다는 조건이 깨졌다”입니다. 계획기는 그 정보를 이전 스킬 이력과 함께 받아 다음 스킬을 다시 고릅니다. 상자를 다시 집는 행동을 선택할 수 있다는 설명은 이 흐름의 가능한 해석이며, 모든 상황에 고정된 복구 순서를 넣었다는 뜻은 아닙니다.

현재 스킬이 정상적으로 끝났을 때도 다음 계획 단계로 넘어갑니다. 제약 위반은 그 완료 시점을 기다리지 않고 계획기를 다시 호출하는 경로를 추가합니다. 따라서 이동 자체의 종료 조건과 운반 상태가 어긋났다는 검출 결과가 서로 다른 사건으로 처리됩니다.

검사 간격과 판정 지연을 나눠 읽기

저자 구현은 BLIP-2로 제약을 검사하며, 검사 간격을 0.2초로 두었다고 설명합니다. 짧은 이진 답을 내는 질의의 처리 시간은 0.1초 미만이라고 별도로 기술합니다. 전자는 검사를 얼마나 자주 시작하는지, 후자는 질의에 답하는 데 걸린 시간에 관한 저자 보고입니다.

이 두 시간은 서로 다른 역할을 합니다. 어떤 변화가 다음 검사 직전에 생겼는지 직후에 생겼는지에 따라 관측될 때까지의 시간이 달라지고, 질문에 답을 얻는 처리 시간도 더해집니다. 그 뒤 현재 스킬 중단과 재계획이 이어집니다. 0.2초는 이 논문의 구현 설정으로 읽어야 하며, 다른 카메라·모델·장치의 전체 복구 시간을 나타내는 값은 아닙니다.

논문은 제약 검출기와 저수준 제어기가 서로 다른 주기로 병렬 실행될 수 있다고 설명합니다. 관절이나 이동을 제어하는 빠른 루프와 “상자를 계속 들고 있는가”를 확인하는 의미 수준의 루프를 분리할 수 있다는 점이 중요합니다. 의미 판정이 반환됐을 때 실행 흐름을 바꾸는 것이 둘 사이의 접점입니다.

관측 가능한 조건을 고르면 복구 이유도 구체적이 된다

이 방식에서는 제약을 무엇으로 만들고 영상에 무엇이 보이는지가 재계획의 입력을 결정합니다. 예를 들어 가상의 운반 장면에서 상자가 팔에 가려졌다고 생각해 보겠습니다. VLM이 이를 “들고 있지 않다”로 판정하면, 제어 흐름은 실제 낙하 때와 같은 중단 경로로 들어갑니다. 알고리즘의 거짓 판정은 감시기의 출력이므로, 재계획 원인을 분석할 때는 해당 제약과 그때의 영상을 함께 보면 됩니다.

반대로 생성된 제약이 상자 파지만 다룬다면 그 질의의 답은 파지 상태에 관한 정보입니다. 상자 안 물건의 상태처럼 영상에 드러나지 않거나 질문에 포함되지 않은 속성을 같은 답에서 알아낼 수는 없습니다. 필요한 상태를 구체적인 질문으로 정하고, 그 상태가 카메라에 어떻게 드러나는지 연결하는 일이 제약 생성과 검출을 잇습니다.

이는 ReKep의 관계형 키포인트 제약과 함께 읽으면 더 분명해집니다. ReKep 글은 키포인트 관계를 비용으로 표현해 목표와 경로를 구하는 과정을 설명합니다. DoReMi의 제약은 실행 중 유지할 언어 조건으로 쓰이고, 그 판정이 다음 스킬 계획을 바꿉니다. 같은 “제약”이라는 단어라도 계산에 들어가는 위치와 출력이 다릅니다.

이 글은 논문 방법 절과 알고리즘을 해석했으며, VLM이나 로봇을 직접 실행한 결과는 포함하지 않습니다.

여러 단계를 이어 가는 시스템에서는 검출된 위반과 함께 이미 완료한 일도 다음 계획에 전달해야 합니다. 그 상위 실행 맥락은 장기 작업의 기억·재시도·부분 성공 관리에서 이어 볼 수 있습니다. DoReMi가 제공하는 구체적인 연결은 “지금 실행 중인 스킬의 어떤 전제가 깨졌는가”를 관측으로 묻고, 그 답을 다음 행동 선택에 반영하는 루프입니다.