Fix RBY1 root_body_id type: pick success was always 0 for RBY1#135
Draft
sjauhri wants to merge 1 commit into
Draft
Fix RBY1 root_body_id type: pick success was always 0 for RBY1#135sjauhri wants to merge 1 commit into
sjauhri wants to merge 1 commit into
Conversation
RBY1BaseGroup and the RBY1 gripper EE groups passed model.body(...) (a _MjModelBodyViews object) as root_body_id, while every other robot view passes model.body(...).id (an int). MoveGroup stores the value as-is, so integer comparisons against it silently evaluate to False. This broke PickTask success for RBY1: the contact check in get_info() compares body_rootid entries (numpy ints) against robot_view.base.root_body_id, which never matched the view object. Every gripper-object contact was therefore classified as a non-robot collision, making Pick success unattainable (always 0) for RBY1 even when the object was lifted and held. Franka pick benchmarks were unaffected since Franka views already pass ints. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018xtyJfcGQkcA6sv9bRNEZ2
Collaborator
|
@sjauhri |
Contributor
Author
Yes, still a draft to be tested on Pick benchmark for rby1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
PickTasksuccess is unattainable for RBY1 — it reports 0 for every episode, even when the object is clearly grasped and lifted. This affects the RB-Y1pick_benchmarkevaluations (see allenai/MolmoBot#9, where the released MolmoBot-RBY1Multitask checkpoint reproduces Pick&Place/Opening/Door-Opening website numbers but gets 0/100 on Pick).Root cause
RBY1BaseGroup(and the RBY1 gripper EE groups) passmodel.body(...)— a_MjModelBodyViewsobject — asroot_body_id, while every other robot view passesmodel.body(...).id(an int).MoveGroupstores the value as-is.PickTask.get_info()classifies contacts by comparingbody_rootidentries (numpy ints) againstrobot_view.base.root_body_id:An
int == _MjModelBodyViewscomparison silently evaluates toFalse(verified:np.int32(view.id) == view→False), so every gripper–object contact is classified as a non-robot collision.only_robot_collisioncan therefore never be true for RBY1, and Pick success is 0 at every step of every episode — both the at-end and the any-step/oracle metrics.Franka pick benchmarks are unaffected because all Franka views already pass
.id. PnP (receptacle-support-based) and Opening/Door (joint-position-based) don't use this comparison, which is why only Pick shows the discrepancy.Notably
task.pyalready contains a local workaround hinting at this ("Handle both int IDs and body view objects (some robot views store the view directly)") — this PR fixes it at the source instead.Fix
Add the missing
.idinrby1_view.py(base group + gripper EE groups), matching the convention used by the head group in the same file and by all other robot views. Swept the repo for other instances of the pattern; these two lines were the only offenders.Note for reproduction on the MolmoBot pin: the bug exists at
cd23bece(the commit pinned by MolmoBot's pyproject) as well, so this patch should be applied on top of the pin when evaluating the released RBY1 checkpoints.