Repository navigation
Align tactile naming with lerobot-xense - #16
Merged
Merged
Conversation
lerobot-xense renamed both the tactile knob and the tactile camera keys.
This repo still spoke the old vocabulary, and two of the three call sites
were already failing at runtime.
`enable_tactile_sensors` -> `enable_tactile`. Upstream moved the knob onto
the typed `gripper:` block (c49d4aa5), so `BiFlexivRizon4RTConfig` no
longer declares it and every Flexiv run died in the recipe loader:
TypeError: BiFlexivRizon4RTConfig.__init__() got an unexpected
keyword argument 'enable_tactile_sensors'
`flexiv_recipe.load_robot_config()` now routes each override to whichever
dataclass declares it, so callers still pass a flat kwarg and a name
neither level knows is an error rather than a silent no-op. The ARX5 path
is renamed to match; its lerobot config is renamed in the sister repo.
`<arm>_tactile_{0,1}` -> `<arm>_tactile_<finger>`. The suffix names the
jaw the pad sits on, from serial parity, instead of USB enumeration order.
bi_arx5's camera mapping still asked for `left_tactile_0`, a key lerobot
stopped emitting at 1146d034 — and get_images() only warns on a missing
camera, so tactile inference had been feeding the model nothing at all.
The model slots and the Aloha tactile transform now use lerobot's key
end to end, with no renaming step in between.
Renaming the model slots is a relabel, not a retrain: embed_prefix()
picks a branch by name and applies one shared encoder per branch, so no
weight is keyed by image name. Token order is sorted-key order, and
`left_tactile_left_rgb` / `right_tactile_left_rgb` sort into the same
positions the `_0_rgb` names held.
The model consumes one pad per arm; this bench wires the left jaw of each
(OG000337, OG000339 — both odd). The other two pads are recorded, unused.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
lerobot-xense renamed both the tactile knob and the tactile camera keys. This repo still spoke the old vocabulary, and two of the three call sites were already broken at runtime — this is a bug fix as much as a rename.
1.
enable_tactile_sensors→enable_tactileUpstream moved the knob onto the typed
gripper:block atc49d4aa5(what a gripper carries is a property of the gripper, not of the arm holding it).BiFlexivRizon4RTConfigno longer declares it, so every Flexiv run died in the recipe loader — reproduced before touching anything:flexiv_recipe.load_robot_config()now routes each override to whichever dataclass declares it. Callers still pass a flat kwarg; the loader decides the nesting level, rebuilds thegripperblock, and lets__post_init__re-clone it per side. A name neither level knows is now an error, not a silent no-op:The override warning gained the level it landed on:
gripper.enable_tactile: True -> False.The ARX5 path is renamed to match — its lerobot config is renamed in the sister-repo PR (
Vertax42/lerobot-xense, branchrefactor/arx5-enable-tactile). Land that one first, orbi_arx5inference breaks on the new kwarg.2.
<arm>_tactile_{0,1}→<arm>_tactile_<finger>The suffix now names the jaw the pad sits on (serial parity, odd → left) rather than USB enumeration order, which was a stable order but not an identity.
bi_arx5's camera mapping still asked forleft_tactile_0, a key lerobot stopped emitting at1146d034.get_images()only warns on a missing camera — so tactile inference on ARX5 had been feeding the model nothing, one log line per step. There was a second latent crash behind it:real_envemittedleft_tactile_0whileAlohaTactileInputs.EXPECTED_CAMERASwantedcam_left_tactile, which fails the subset check. Both are gone: lerobot's key is carried through unchanged, robot → transform → model slot, with no renaming step anywhere.This is a relabel, not a retrain
embed_prefix()selects a branch by name and applies one shared encoder per branch (PaliGemma.img/tactile_img), so no weight is keyed by image name. The only thing a rename can disturb is token order — which is sorted-key order, since JAX canonicalises dict keys. Verified it is unchanged:preprocess_observation_tactile's"tactile" in keyaugmentation branch still matches.The model consumes one pad per arm; this bench wires the left jaw of each (
OG000337,OG000339— both odd). The other two pads are recorded and unused. Feeding all four is a change of input shape, not of naming, and is not attempted here.Interaction with #15
None, but worth stating: #15 selects tactile streams by substring (
TACTILE_KEY_MARKER = "tactile"), which the new keys still match, and the two branches touch disjoint files. #15's docs and its_XENSE_VIDEO_KEYStest fixture still spell_tactile_{0,1}; those are cosmetic and can be swept in a follow-up.Verification
ruff check src/ examples/cleanpytest examples/ src/openpi/policies→ 67 passed; the one failure (policy_rtc_test) reproduces on a clean treeenable_tactile=Falsetogripper/left_gripper/right_gripperBiARX5Config(enable_tactile=True)emits exactly the keysreal_envnow asks for🤖 Generated with Claude Code