Embodiment-Classifier Guidance: Transferring Frozen VLAs Across Robot Dynamics without Demonstrations
Organizations: UC Berkeley
Abstract
Flow-based policies such as are trained on a fixed set of embodiments, and transferring them to new ones is an open problem. To adapt a frozen to a new embodiment without additional demonstrations or parameter updates, we train a lightweight embodiment classifier to distinguish successful action chunks on the source body from those on the target body, using a few calibration tasks. On transfer tasks that saw on its source body but the classifier was never trained on, we nudge each denoising step of with the classifier's gradient, which estimates the direction from the distribution of successful actions on the source body toward that on the target body. On the LIBERO simulation benchmark with four modified controllers, embodiment-classifier guidance raises 's average success on the target bodies from 72% to 80% across 12 suite-controller pairs, with a 31% relative reduction in failures (11 of 12 gain; 5 significant after Holm correction). In simulation, guidance is data-efficient, needing few target-body rollouts per task, which makes it promising for sim-to-real transfer, where rollouts are costly. Guidance is mixed on weak wrists and harmful on a locked wrist, when the classifier lacks data or favors infeasible motions. Collecting more target-body data with guided can fill such gaps: on one weak-wrist arm, guided solved a task on which unguided had zero successes in the original data, and retraining the classifier on the guided successes raised success from 52.5% to 70.7%.
Figures & tables
Appendix figures & tables8 assets
Supplementary material from the paper’s appendix.
Appendix
| Suite (limit) | Task | Instruction |
|---|---|---|
| LIBERO-Object | 1 (calibration) | pick up the cream cheese and place it in the basket |
| 560 steps | 2 (calibration) | pick up the salad dressing and place it in the basket |
| (native 280) | 4 (calibration) | pick up the ketchup and place it in the basket |
| 5 (calibration) | pick up the tomato sauce and place it in the basket | |
| 0 (transfer) | pick up the alphabet soup and place it in the basket | |
| 3 (transfer) | pick up the bbq sauce and place it in the basket |
| Body | Exact change from the source body |
|---|---|
| source body, Ctrl(1, 0 s) | stock Panda arm, LIBERO’s OSC controller at standard stiffness, no delay |
| Controller changes (Panda; camera images unchanged). Ctrl( , s): stiffness scaled by , commands held back by seconds | |
| Ctrl(1, 0.2 s) | standard stiffness; commands delayed 4 control steps |
| Ctrl(0.5, 0.2 s) | stiffness halved; commands delayed 4 steps |
| Ctrl(0.5, 0.3 s) | stiffness halved; commands delayed 6 steps |
| Ctrl(0.33, 0.3 s) | stiffness one third; commands delayed 6 steps |
| LIBERO-Object, 560 steps, transfer tasks 0, 3, 6, 7 | |||
|---|---|---|---|
| Body | Ung. % (n) | Guid. % (n) | Diff, points [95% CI] |
| Ctrl(0.5, 0.3 s) | 73 (146) | 93 (186) | +20 [+13.5, +27] |
| classifier seed 1 | 73 (146) | 93.5 (187) | +20.5 [+13.5, +27.5] |
| classifier seed 2 ( ) | 73 (146) | 91 (182) | +18 [+11, +25] |
| eval seed 1 | 72 (144) | 96 (192) | +24 [+17.5, +30.5] |
| Ctrl(0.33, 0.3 s) | 88.5 (177) | 97.5 (195) | +9 [+4, +14] |
| Body | Task 0 | Task 3 | Task 6 | Task 7 | Task 1 | Total % (n/200) | Diff, points [95% CI] |
|---|---|---|---|---|---|---|---|
| Ctrl(0.5, 0.3 s) | 78 / 94 | 52 / 84 | 88 / 100 | 74 / 94 | 82 / 90 | 73 / 93 (146 / 186) | +20 [+13.5, +27] |
| Ctrl(0.5, 0.3 s) (eval seed 1) | 76 / 100 | 48 / 94 | 96 / 100 | 68 / 90 | 76 / 84 | 72 / 96 (144 / 192) | +24 [+17.5, +30.5] |
| Ctrl(0.33, 0.3 s) | 94 / 100 | 72 / 92 | 92 / 100 | 96 / 98 | 86 / 100 | 88.5 / 97.5 (177 / 195) | +9 [+4, +14] |
| Ctrl(1, 0.2 s) | 82 / 90 | 56 / 76 | 98 / 100 | 72 / 74 | 76 / 82 | 77 / 85 (154 / 170) | +8 [+1, +15] |
| Ctrl(1, 0.2 s) (eval seed 1) | 80 / 92 | 40 / 76 | 94 / 100 | 76 / 84 | 72 / 72 | 72.5 / 88 (145 / 176) | +15.5 [+8, +23] |
| UR5e (speed cap) | 80 / 80 | 94 / 78 | 72 / 66 | 90 / 86 | 100 / 92 | 84 / 77.5 (168 / 155) | 6.5 [ 13, 0] |
| Suite | Body | Task 1 | Task 3 | Task 5 | Task 7 | Task 0 | Total % (n/200) | Diff, points [95% CI] |
|---|---|---|---|---|---|---|---|---|
| LIBERO-Goal | Ctrl(0.5, 0.3 s) | 84 / 92 | 18 / 38 | 42 / 40 | 98 / 98 | 96 / 82 | 60.5 / 67 (121 / 134) | +6.5 [ 0.5, +14] |
| LIBERO-Goal | Kinova arm (10% wrist) | 66 / 66 | 22 / 24 | 6 / 10 | 88 / 88 | 0 / 0 | 45.5 / 47 (91 / 94) | +1.5 [ 6, +8.5] |
| LIBERO-Spatial | Ctrl(0.5, 0.3 s) | 60 / 92 | 20 / 58 | 46 / 40 | 94 / 98 | 54 / 38 | 55 / 72 (110 / 144) | +17 [+9, +25.5] |
| LIBERO-10 | Ctrl(0.5, 0.3 s) | 76 / 80 | 92 / 86 | 86 / 84 | 72 / 54 | 48 / 70 | 81.5 / 76 (163 / 152) | 5.5 [ 13, +2] |
| LIBERO-Goal | KUKA arm (25% wrist) | 76 / 66 | 28 / 30 | 2 / 12 | 74 / 100 | 0 / 6 | 45 / 52 (90 / 104) | +7 [0, +14] |
| LIBERO-Goal | Ctrl(1, 0.2 s) | 76 / 88 | 24 / 38 | 32 / 34 | 100 / 98 | 96 / 96 | 58 / 64.5 (116 / 129) | +6.5 [ 0.5, +13.5] |
| Suite | Target (no data) | Classifier from | Ung. | Reused | Own | Reused ung. | Reused own |
|---|---|---|---|---|---|---|---|
| Object | Ctrl(0.5, 0.3 s) | Ctrl(0.5, 0.2 s) | 73 (146) | 96 (192) | 93 (186) | +23 [+16.5, +29.5] | +3 [ 1.5, +7.5] |
| Object | Ctrl(0.5, 0.2 s) | Ctrl(0.5, 0.3 s) | 94.5 (189) | 97 (194) | 97.5 (195) | +2.5 [ 1.5, +6.5] | 0.5 [ 4, +3] |
| Goal | Ctrl(0.33, 0.3 s) | Ctrl(0.5, 0.3 s) | 72.3 (144.5) a | 82 (164) | 81.8 (163.5) b | +9.75 [+3.75, +15.5] | +0.25 [ 5.75, +6] |
| Object | Kinova (10% wrist) | KUKA (25% wrist) | 70 (140) | 58.5 (117) | 85 (170) | 11.5 [ 19.5, 4] | 26.5 [ 34.5, 18.5] |
| Object | Kinova (10% wrist) | KUKA, guided coll. | 70 (140) | 65.5 (131) | 85 (170) | 4.5 [ 13.5, +4.5] | 19.5 [ 27.5, 11.5] |
| Object | Panda (10% wrist) | KUKA (25% wrist) | 47 (94) | 24.5 (49) | 37.5 (75) | 22.5 [ 31, 14] | 13 [ 21, 5] |
Cross-Embodiment Transfer
Cross-embodiment transfer moves skills and learned representations between robots with different bodies, sensors, and action spaces.
See all 43 papers