Index
2026-09-02 · scene_bench · research

OpenRAL(OpenRAL/openral) — 우리 벤치마크에 쓸 만한가?

로봇 에이전트 런타임 하네스 vs. SceneMem-Bench(장기 장면 기억 벤치) 적합성 판정

TL;DR

v0.3.1
버전 (26-08-08)
35 / 2
stars / forks
321
commits (26-07-09~)
0
논문 · 메모리 벤치
없음
MolmoSpaces 백엔드

1 배경 / 목적

사용자 요청: github.com/OpenRAL/openral이 scene_bench에 쓸 만한지 확인. 확인 축 3개 — (a) 벤치/데이터/지표 재사용, (b) 우리 시뮬(MolmoSpaces) 위 실행 하네스·외부 baseline 에이전트, (c) 논문 related work·설계 참고.

전제: 우리 온라인 하네스 src/sbench_online은 molmo_spaces를 직접 import(drive.py). 외부 하네스가 쓸모 있으려면 이 시뮬 백엔드가 있어야 한다.

2 조사 방법

문서 사이트(openral.github.io)는 ECONNRESET로 실패 → gh api로 저장소 파일을 직접 읽음. 코드는 실행하지 않음.

README.md · CLAUDE.md · CHANGELOG.md · benchmarks/README.md · benchmarks/maniskill3_panda.yaml python/reasoner/src/openral_reasoner/{memory,persistence,spatial_query,active_search,cosmos3}.py python/sim/src/openral_sim/backends/ (목록) · packages/openral_reasoner_ros/.../reasoner_node.py (memory grep) docs/reference/reasoner-design.md (§7 memory)

3 결과

3.1 정체와 성숙도

항목값출처
생성 / 최근 push2026-07-09 / 2026-09-01gh api
릴리즈v0.1.0 → v0.3.1 (2026-08-08)CHANGELOG, tags
규모35★ · 2 forks · 321 commits · 15 open issuesgh api
라이선스코드 Apache-2.0, 가중치는 upstream 별도README
논문없음 (README·웹검색 미발견)—
주체회사(openral.com), "OpenRAL Pro" 유료층 언급CLAUDE.md

3.2 메모리 구현 (우리와 가장 가까운 부분)

3.3 시뮬·평가

부수 발견: cosmos3.py — Cosmos3-Edge reasoner를 vllm serve nvidia/Cosmos3-Edge(tool calling on) sidecar로 서빙. 우리 Cosmos 3 1-stage/2-stage 서빙 옵션 참고 가능.
미검증: 코드 미실행. ReasonerCore가 ROS 없이 headless로 도는지, HF OpenRAL/rskill-* 아티팩트 상태는 확인 안 함. 문서 사이트 미열람.

4 Takeaway

벤치/데이터/지표 재사용 ❌ — 재사용할 것이 없다.

실행 하네스 ❌ — MolmoSpaces 백엔드·HAL·WorldState를 새로 써야 하고 ROS 2 의존. 우리 sbench_online이 이미 2-stage 실행을 담당.

외부 2-stage baseline ⚠️ 보류 — object_locations 로그+recall_object는 우리 textlog/rollforward/tagmem 가족과 개념상 겹쳐 비교 대상으로 매력적이지만, 논문 없음(명명 baseline으로 약함)·이식 비용·메모리 층 미성숙. 논문 v1 범위 밖.

Related work 동기 인용 ✅ — "배포용 에이전트 스택이 가정 내 지속 메모리를 스스로 유지하려 하지만 그 능력을 재는 벤치는 없다"의 실증 예시. URL/각주 인용.

설계 관찰(기록만) — 중요도×최근성 cap 검색, stale supersede, 은폐물 탐색 시 용기 우선 frontier. 평가지 튜닝 금지 원칙상 우리 전략에 채택하지 않음.

5 Next Steps

6 업데이트 — 2-stage 제어 구조 비교 (OpenRAL S2/S1 vs 우리 sbench_online)

사용자 재질문: 벤치 통합이 아니라 2-stage 제어 구조에서 볼 게 있는지. 저장소를 shallow clone(d3b6262, 2026-08-29)해 설계문서·시스템 프롬프트 전문·툴 union·플레이북 4종을 직접 읽고, reasoner_node.py(5,259행)·S1 runner·nav·context 렌더러와 우리 src/sbench_online은 서브에이전트가 file:line으로 정리해 대조. 코드는 실행하지 않음.

교정: "네비게이션 없을 것"이라는 추정은 틀림. Nav2를 ros_action rSkill로 감싼 네비가 있음(결과만 회신, 매니페스트가 안전 감독자 BYPASS를 자인). 시뮬 지원은 부분적(robocasa는 base 액션 무시 결함으로 env.step 우회, BEHAVIOR r1pro만 정상).
축OpenRAL우리 sbench_online
S2 입력텍스트 전용("no pixels"). 섹션 ROBOT/MEMORY/MISSION/REWARD/WORLD_STATE/EXECUTION/FAILURES/PERCEPTION/PROMPTS. 인식은 디텍터가 in_view[cam] #id label @px + 개방어휘 확인 located(cap 12)로 외부화이미지 직접 입력(exo, 선택 wrist, 이전 subgoal 프레임 ≤4) + 어휘·방·노트
S2 출력틱당 정확히 1개 타입드 툴(ExecuteRskill / DecomposeMission / RecallObject / LocateInView / QueryScene / QueryTaskProgress / MemoryWrite / MemorySearch / Wait / EmitPrompt)턴당 1 subgoal pick|pick_and_place|open|close|navigate|done|abort; plan-first는 계획 리스트+인덱스
틱 트리거이벤트 구동 + 0.2 Hz 하트비트, min_interval 100 ms, 4계층 선점, 미완 틱 coalesce(≤4)동기: subgoal 끝나면 다음 호출
계획 원장MissionState pending→active→verifying→done/abandoned, GroundedSubtask 검증기가 집합 대상을 표현 불가로 거부, subdivide ≤2, attempts ≤3, JSON 스냅샷 크래시 재개plan-first 리스트 + revised_plan; 과제별 attempt 카운터 없음; 잘못된 출력 2회→abort
완료 판정runner success ≠ 성공을 명문화. Robometer-4B가 VLA와 병렬로 progress 채점 → 3단(≥threshold 자동 / 중간 VLM yes-no / 미달 ladder), 정체 시 VLA 취소, patience_s. progress 헤드 성공 0.80–0.86 vs 실패 ~0.74(success 헤드 0.56–0.79 노이즈), 창 8→40 s시뮬 오라클 predicate(GT). VLM은 성공 신호를 받지 않음
실패 처리ladder retry→param→substitute→replan→handoff; 동일 호출 연속 3회 억제; Reflexion 힌트를 ## EXECUTION(deque 8)에 누적이전 결과 1줄; 재시도는 플래너 재량; abort가 유일한 기권
S1 실행prompt/deadline_s/patience_s; 청크 N+1 선인출(20스텝, 30 Hz), RTC; VLA 자체 종료 없음턴당 VLA 128스텝, horizon 900; 낙하는 접촉 상실 감지
네비Nav2 ros_action, resolve_place→ApproachViewpoint→점유격자 refine, 불가면 "approach BLOCKED"텔레포트(학습 분포 반경) 또는 A* drive
메모리MEMORY.md 5섹션(home_map/preferences/lessons/object_locations/open_tasks), [imp ts st], add/update/supersede/delete, cap 초과 시 중요도→최근성 + archive 검색; 미션 간 영속평문 노트 [t=k] append 또는 rewrite(cap 12), 전량 재투입, 검색·섹션 없음; 4모드 + exec 5전략 시드
모델 소견실기: GPT-5.5만 집합 목표 안정 분해, glm-5.2 과탐색·미분해, Opus 4.8 넛지 필요stepwise 환각 19:1 → plan-first; G1·전략 순위 모델 종속

골격 동일 — 느린 플래너 1툴/틱 → 빠른 정책, 네비는 별도 프리미티브, 텍스트 결과 회신, 자필 메모리, 유한 재시도+기권. 이식할 코드는 없음(ROS 2·Nav2·디텍터 스택).

가장 큰 차이 = 완료 판정. 우리는 GT 오라클(Tier B로서 정당), OpenRAL은 GT 없이 보상모델+VLM yes-no+patience. 우리 평가 조건의 "predicted" 축이 정확히 이 자리.

메모리 스키마가 우리 task 가족에 독립 수렴. object_locations ↔ A Finding, open_tasks ↔ B Resuming, lessons/preferences ↔ D Routine. C Restoring 섹션은 없음 → 배포 지향 설계도 "원상복구 기억"을 빠뜨린다는 논문 논거 후보.

모델 종속성 독립 확증. "GPT-5.5만 안정 분해"는 우리 발견과 같은 방향.

채택 여부(사용자 결정): 우리 온라인 하네스는 논문 baseline이므로 아래는 baseline 변경. (a) GT 없는 완료 판정 arm(VLM yes-no verify) = "predicted" 조건 후보 (b) 과제별 attempts cap + 실패 사유 누적 (c) 노트 supersede/stale 표기. 평가지 튜닝 금지 원칙상 자동 채택 안 함. headless 외부 S2 baseline(ReasonerCore는 rclpy 무의존)은 수일 규모·v1 가치 낮음.

7 업데이트 — 메모리 층 상세

두 겹: 자동 기하 메모리 SpatialMemory(디텍션을 매 틱 ingest한 씬 그래프, pose·last_seen·observation_count, recall_object/resolve_place) + LLM 자필 의미 메모리 MEMORY.md(5섹션, memory_write만 쓰기, 자동 기록 없음). 설계문서 원문: 씬 그래프는 "머그가 어디 있나", MEMORY.md는 "이 집은 어떻게 하는 걸 좋아하나".

섹션정의(원문)편집 규칙쓰이는 지점문헌우리 가족
home_mapstable places / region-connectivityEDIT in place플레이북 없음—(D 보조)
preferencesdistilled user-preference rules, "clothes go in the bedroom drawer"EDIT in place운영자 발화에서 자발 기록TidyBotD Routine
lessonsdistilled human corrections / hard-won lessons, "grasp mugs by the handle"APPENDverify-outcome 실패 시 addDROCD Routine
object_locationstimestamped object→place logSUPERSEDE(구 엔트리 stale로 보존)find-object 성공 시 supersede, miss 시 stale을 탐색 prior로 memory_searchZepA Finding
open_tasksrecurring commitments / open itemsEDIT, remove on completiondecompose-mission: subtask add → 검증 후 supersede—B Resuming
(없음)이전 상태 대조———C Restoring 부재

판단: 문헌 메모리 패턴을 섹션별로 하나씩 채택한 조립품(TidyBot·DROC·Zep·Mem0·MemGPT·Generative Agents·Statler). 새 알고리즘은 없고 스키마 결정이 본체. 우리 write-phase 노트(평문 append/rewrite cap 12, 섹션·status·검색 없음)와 대비되는 "섹션형·타입드 op 노트" 하나의 외부 메모리 방법으로 채점 가능한 대상. 추가 여부는 사용자 결정.

8 업데이트 — 우리가 얻을 것: 메모리 사용 관찰 + Routine(D) 아이디어

사용자 목적: ① 메모리 구성·사용에서 볼 것, ② 미확정 D Routine 설계. 우리 현재 상태 = D1 배치 / D2 절차 / D3 금지(음성 판정이 공리 A5 기권=정답과 충돌), 난이도 D2<D1<D3, 문장 확정(260821), 편당 1행·총 ~90행.

① 메모리 관찰 5개

② Routine 아이디어

하위앵커제안
D1 배치TidyBot상위클래스 규칙 + 규칙 근거에 없는 하위 카테고리 홀드아웃(우리 260821 결정과 일치). 반사실 짝(A6): 같은 집·같은 홀드아웃·다른 규칙 2편 → 정답 갈림(blind@1/K 방어). 선택적 회수: 편당 규칙 2개 심어 오답 진단 분리.
D2 절차없음OpenRAL playbook은 사람이 쓴 SOP, open_tasks는 이어하기(B). 기존 설계 유지.
D3 금지DROC금지를 교정 사건으로 심기(X에 놓임→곧 옮겨짐 반복, 아바타 불필요). 질의는 행동 요구 → 안 함=미완, X=위반, 허용 표면=성공(음성→양성 선택). 기권 의미론은 금지 없는 쌍둥이 편으로 정리: 메모리가 답을 지지하는 편에선 무행동이 A5 보호 대상 아님.
새 지표C5 정합규칙 유도 → 규칙 적용 2단 귀속. write-phase 산출물에서 규칙 문장 유무를 채점 → 실패를 유도/적용으로 분리. 전략 변경 아님.

OpenRAL이 D에 주는 것은 알고리즘이 아니라 스키마 결정 — "규칙은 사건과 분리해 저장(TidyBot), 금지는 교정에서 배움(DROC), 희소하게 씀". D3 해소의 핵심은 A6를 D3에 적용하는 것이라 새 공리가 필요 없다.

사용자 결정 대기: D3 해소안 taxonomy 반영·데이터팀 전달 / D1 하드닝(규칙 2개/편) / Routine 2단 지표 필드 추가.