CarryOn이 얼린 VLA 위에 개인화와 안전 실행을 얹는다
CarryOn: A Dual-Loop Harness for Personalized and Reliable Robot Assistance
무엇인가
범용 시각-언어-행동(VLA) 모델은 다양한 개방 환경 조작을 가능하게 했지만, 실제 일상 도우미로 쓰기에는 두 가지가 빠져 있다. 하나는 개인화다. "샌드위치 만들어 줘" 같은 지시를 수행하려면 일반적인 정답 하나가 아니라 사용자의 지속적인 선호에 근거해 하위 작업을 분해해야 한다. 다른 하나는 신뢰할 수 있는 실행이다. 위험한 접촉을 미리 막고, 물리적 실패가 발생했을 때 우아하게 복구하는 설명 가능한 안전 보증이 필요하다. 저자들은 이 격차를 보여주는 관찰로 두 수치를 든다. 19,664개의 안전 시연으로 학습된 안전 파인튜닝 π0.5 체크포인트조차 900개 평가 에피소드 중 52.6%에서 제약을 위반했고(원본 체크포인트는 71.1%), 별도의 LIBERO-Object 프로브에서는 고정된 StarVLA가 집은 물체가 12cm 밀린 뒤 200개 중 26개(13.0%)만 완료했다.
어떻게 동작하나
CarryOn은 이 문제를 풀기 위해 고정된(frozen) VLA 정책 주위를 감싸는 이중 루프 하네스를 제안한다. 계획 루프는 사용자 기억과 장면 기억을 유지한다. 사용자 기억에는 선호, 습관, 사용자 물체의 참조 이미지가 프로필로 저장되고, 장면 기억에는 장소별 물체 목록과 설명이 저장된다. 플래너는 현재 요청, 사용자 프로필, 장면 기록, 사용 가능한 스킬 설명을 결합해 하위 작업을 만든다. 각 하위 작업은 지시문, 스킬을 제공하는 엔드포인트, 선행 하위 작업에 대한 의존성을 명시하며, 조작 전에 관찰이 필요한지도 결정한다. 기억은 고정된 지침이 아니라 수정 가능한 상태다. 대화에서 지속적인 선호만 사용자 기억에 저장하고 임시 지시는 현재 대화에 남기며, 사용자가 선호를 바꾸거나 철회하면 해당 항목을 교체하거나 삭제한다. 관찰이 기억된 위치와 어긋나면 update_scene 연산을 계획에 넣어 장면 기록을 고치고, 플래너가 이를 빠뜨리면 계획 검증기가 되돌려 보낸다.
무엇과 다른가
실행 루프는 빠른 사전 차단과 느린 사후 복구로 나뉜다. 실드는 정책과 컨트롤러 사이에서 동작하는 기하학적 행동 필터다. 먼저 VLM이 지시문에서 목표물과 목적지 설명을 추론하고, 텍스트 프롬프트 분할로 이미지 마스크를 얻어 깊이 픽셀을 3D 점 집합으로 투영한다. 로봇 자기 형상과 목표물의 지지 표면을 제거하고, 허용된 목표물·지지면·목적지 형상을 장애물 집합에서 제외한다. 배제되지 않은 나머지 점은 모두 장애물로 남는다. 다음으로 임계 감쇠 동역학 p̈ = ωn²(p_goal − p) − 2ωn ṗ 로 컨트롤러 응답을 근사해 다음 H개 행동이 만드는 그리퍼와 운반 물체의 자세를 예측하고, 각 몸체와 장애물 집합 사이 거리가 임계값 이하로 떨어지는 첫 스텝을 찾아 그 앞까지만 실행한다. 차단된 첫 행동이면 위쪽으로 짧게 후퇴한 뒤 새 관찰로 재평가한다. 실제로 실행된 행동만 이력에 반영하므로 보류된 행동은 물리 상태 변화로 취급되지 않는다.
어떻게 쓰나
복구는 Visual Judge가 하위 작업 실패를 보고할 때 시작된다. VLA를 정지시키고 제어 기반 회복 스킬을 호출해 물리 상태를 수리한 뒤 같은 하위 작업을 재시도한다. 기본 스킬은 관찰, 재위치 추정, 파지 후보 생성, 파지 실행, 그리퍼 폭으로 파지 확인, 목적지 근처 스탠드오프 자세로 운반 후 재확인, 그리고 VLA에 제어를 되돌리는 순서로 진행된다. 실패가 반복되면 오프라인 성찰이 개입한다. 파라미터 기억은 접촉 TCP 높이 같은 수치 설정 변경을, 전략 기억은 재시도 추가나 VLM 보조 재그라운딩 같은 제어 흐름 변경을 기록한다. 제안된 수정은 형식과 수치 범위 검사를 통과한 것만 다음 버전 스킬 라이브러리에 저장되고, 다음 라운드가 그 버전을 평가한다. VLA 가중치는 끝까지 고정된다.
전제와 한계
실험 수치는 개선 폭이 크다. LIBERO-Safety의 두 스위트(각 450 에피소드)에서 안전 파인튜닝 π0.5의 위반율은 52.6%에서 실드 적용 시 6.1%로 떨어졌고, 위반 없는 과제 성공률은 25.3%에서 25.6%로 거의 유지됐다. 원본 체크포인트는 71.1%에서 22.7%로 줄면서 성공률이 6.7%에서 14.6%로 올랐다. 적응형 VLSA와 비교하면 37.7%, 49.8%보다 낮은 위반율이다. 다른 백본에서도 OpenVLA-OFT는 42.0%에서 17.2%로, VLAct는 44.8%에서 26.1%로 줄었다. 호출당 평균 시간은 기하 필터링 21.06ms, VLA 추론 47.82ms, 인식 170.82ms로 인식이 병목이다. 실제 로봇에서는 장애물을 넣었을 때 무접촉 완료가 0/20에서 20/20이 됐다. 회복은 12cm 홀드 손실 교란에서 기본 스킬 29.0%(58/200)가 1차 성찰 후 70.5%, 2차 후 80.0%로 올랐고, LIBERO-Recovery 770개 케이스에서는 순수 VLA 32.08%가 50.00%, 73.90%, 76.10%로 상승했다. 실제 로봇 복구는 3/20에서 9/20, 수정 스킬 적용 시 18/20이 됐다. 개인화 쪽에서는 샌드위치 준비가 텍스트·기억 조건 모두 24/24, 선호 수정 후 20/24였고, 짐 싸기 16/16·16/20·16/18, 가려진 재료 12/12·8/10·9/12, RoboLab 장면 선택에서는 장면 기억 수정이 텍스트 76/88, 이미지 77/88 성공하고 후속 배치가 83/88, 85/88로 이어졌다.
개발자 관점에서 이 논문의 핵심은 정책 자체를 건드리지 않고 런타임 계층만으로 안전과 개인화를 추가한다는 점이다. 이미 배포한 VLA를 재학습시키지 않고도 행동 필터와 회복 스킬을 붙일 수 있고, 회복 스킬만 반복 성찰로 개선하는 구조는 실패 로그를 자산으로 바꾸는 방법을 보여준다. 다만 실드의 임계값, 장애물 집합 구성 규칙, 회복 스킬의 파라미터 범위는 과제별로 다시 정해야 하는 값이라는 점을 확인해야 한다. 또한 인식이 지연의 대부분을 차지하므로 실시간성을 요구하는 환경에서는 이 부분을 먼저 손봐야 한다.
저자들이 밝힌 전제와 한계도 분명하다. 개선은 제어 기반 회복 경로에만 국한되며 VLA와 기하 실드는 고정되어 온라인 학습을 하지 않는다. 실드는 정책이 예측한 행동의 공간적 결과를 검사할 뿐이고, 주변 환경이 만드는 교란은 여전히 복구 경로에 의존한다. 향후 과제로는 장기 적응과 회복 경험의 과제 간 전이, 그리고 보호적 개입과 과제 완료 사이의 균형 개선을 제시한다.