CrossBFM Distilling a Shared Latent Behavior Space Across Humanoid Embodiments

*Equal contribution †Equal advising ✉Corresponding author
CrossBFM teaser: one cross-embodiment latent behavior space at the centre, surrounded by four ways to prompt it - motion tracking, goal reaching, reward optimization, and flow-based latent generation - each executed by several different humanoids.
One latent can command every robot, whether it's a motion to track, a goal to reach, a reward to maximize, or a generated latent.

Abstract

Behavior Foundation Models (BFMs) give humanoids a promptable policy over a latent behavior space, so that a single vector can specify a motion to imitate, a pose to reach, or a reward to maximize. Forward–Backward representations produce such spaces, but at the cost of hundreds of GPU-hours for a single robot — and a second robot repeating the procedure arrives at a second space unrelated to the first. The result is embodiment-specific latents that neither unify nor transfer under the same prompts.

We address this problem with CrossBFM, treating the latent space itself as the transferable asset for various embodiments. As retargeting already puts every robot in frame-level correspondence, transferring it becomes supervised regression, with neither simulator nor training required on the target side. We propose a unified encoder architecture for distilling behavior space from cross-embodiment correspondence, which allows a single encoder with no robot-specific parameters to address all training embodiments simultaneously in only under a GPU hour. Following this encoder, latent-conditioned trackers turn the distilled latent into whole-body control in a conventional PPO training manner in just 10 more GPU hours.

On three humanoids, all three prompting modes transfer: motion tracking with a latent-conditioned policy losing only 0.025 rad to its joint-conditioned counterpart, smooth goal reaching between poses with no falls, and reward optimization for all 41 reward prompts. Regressing the encoder on a quarter of the motion corpus costs only 5% of tracking performance, and training the encoder on a subset of robots and evaluating on an unseen one recovers up to 89% of the tracking performance of seen robots, demonstrating cross-embodiment generalization to morphologically similar robots. We also verify the pipeline on real robots across all three prompting modes and with flow-based generated latents.

Summary

How It Works

A BFM trained on the Unitree G1 is a structured, value-functional space that one vector drawn from it can represent a motion, a goal or a reward for the latent-condition trackers. Rather than retrain a space for every new robot which takes hundreds of GPU-hrs and ending up in totally unrelated spaces, we freeze the G1’s space and teach other humanoids to use it.

Stage 1 leverages the cross-embodiment correspondences from retargeted data on the same timeline to train a unified encoder. This encoder converts robot X's proprioception into the G1's latent space, so that the same latent can prompt every robot to perform the same behavior.

Stage 2 trains a latent-conditioned policy for each robot. This policy observes the shared latent and its own proprioception, instead of joint commands. A flow-based model trained to generate latents from this distribution can then prompt any robot to perform a behavior such as “walk”, “run”, “dance”.

CrossBFM pipeline. Top: G1 retargeted motions pass through the frozen backward map to source latents, while the same motions retargeted to other robots pass through a unified cross-embodiment encoder reading padded and masked key-body, root and joint indices; an alignment loss ties each target latent to its source latent. Bottom left: a latent-conditioned policy trained with PPO in simulation. Bottom right: a flow-based latent motion generator conditioned on behaviors such as run, walk, dance and squat, deployed to the latent-conditioned policy.

Cross-embodiment correspondence with retargeting

Frame t of a retargeted clip is the same pose of the same behavior on every robots. So the G1’s latent for that frame is a ground-truth label for every other robot, and transfer is a cosine regression, requiring no simulator, RL or discriminator for the new robot. Training this encoder is super fast (<1hr) compared to unsupervised RL.

A unified encoder for all robots

Different humanoids may vary in both joint and link configuration. Our encoder use a robot-independent canonical input with 33 canonical joint indices, 8 key-body indices and a root block &mdash. Link and joint mapping is processed by their functionality.

Prompt with latents, not joint references

Each robot’s policy observes behavior intent [z | proprio] rather than joint-space trajectory. Because z lives in the G1’s coordinates, all three BFM-Zero prompting modes can transfer to new robots. Moreover, as the latent space is shared, a flow-based generator trained on the G1 can prompt any robot to perform a behavior such as “walk”, “run”, “dance”.

ẑt = proj(EX(oXt−T+1:t)), proj(v) = √d v / max(‖v‖, ε)

Latent projection. The encoder takes a window of T proprioceptive frames from one robot and returns a latent for every frame in it, rescaled to the sphere of radius √d.

ℒalign = 1N ∑t (1 − cos(ẑt, z⋆t))

Encoder training objective. A frame-wise cosine regression onto the frozen source latent z⋆t = proj(BS(oG1t)), averaged over the N frames. The cosine distance also serves as a proximity measure for cross-embodiment representation on the pretrained latent space.

The Unified Encoder Architecture

We observe that Pre-LayerNorm helps prevent mode collapse. We also make the projection part of the training graph so that the encoder can learn to output latents that are already on the sphere, rather than relying on a post-processing step.

kb_pos kb_vel kb_mask root q qd j_mask
Linear 163×256 + Pos. Enc
Pre-LN Transformer ×4
Linear 256×256 Sphere Projection zt

Results

We distill from a frozen G1 BFM onto three humanoids using LAFAN dataset. These robots differ from G1 in DoF count, body count, joint topology and joint order.

01Tracking & Goal Reaching

Each latent-conditioned policy is compared with a joint-conditioned one (TWIST2) trained on the same data, environment, reward and PPO budget. The joint policy is the upper bound as it has access to the exact joint angles at every step, while ours gets a latent behavior and have to infer the pose from it.

Latent (ours) Joint (reference-fed)
Closed-loop joint MAE for the latent and reference-fed arms, and for goal reaching On M3, tracking MAE is 0.2024 rad with the latent arm and 0.1777 with the reference-fed joint arm, a gap of +0.0247; goal reaching, which the joint arm cannot do, is 0.2345. On T1, tracking MAE is 0.1901 rad with the latent arm and 0.1844 with the reference-fed joint arm, a gap of +0.0057; goal reaching, which the joint arm cannot do, is 0.1967. On N1, tracking MAE is 0.1391 rad with the latent arm and 0.1362 with the reference-fed joint arm, a gap of +0.0029; goal reaching, which the joint arm cannot do, is 0.1512. 5 10 15 20 25 Joint MAE (×100) Tracking Goal reaching M3 latent: 0.2024 ± 0.0067 rad 20.24 M3 joint: 0.1777 ± 0.0033 rad 17.77 T1 latent: 0.1901 ± 0.0032 rad 19.01 T1 joint: 0.1844 ± 0.0043 rad 18.44 N1 latent: 0.1391 ± 0.0038 rad 13.91 N1 joint: 0.1362 ± 0.0032 rad 13.62 M3 goal: 0.2345 ± 0.0011 rad 23.45 T1 goal: 0.1967 ± 0.0012 rad 19.67 N1 goal: 0.1512 ± 0.0023 rad 15.12 M3 T1 N1 M3 T1 N1 Closed-loop joint MAE for the latent and reference-fed arms, and for goal reaching On M3, tracking MAE is 0.2024 rad with the latent arm and 0.1777 with the reference-fed joint arm, a gap of +0.0247; goal reaching, which the joint arm cannot do, is 0.2345. On T1, tracking MAE is 0.1901 rad with the latent arm and 0.1844 with the reference-fed joint arm, a gap of +0.0057; goal reaching, which the joint arm cannot do, is 0.1967. On N1, tracking MAE is 0.1391 rad with the latent arm and 0.1362 with the reference-fed joint arm, a gap of +0.0029; goal reaching, which the joint arm cannot do, is 0.1512. 5 10 15 20 25 Joint MAE (×100) Tracking Goal reaching M3 latent: 0.2024 ± 0.0067 rad 20.24 M3 joint: 0.1777 ± 0.0033 rad 17.77 T1 latent: 0.1901 ± 0.0032 rad 19.01 T1 joint: 0.1844 ± 0.0043 rad 18.44 N1 latent: 0.1391 ± 0.0038 rad 13.91 N1 joint: 0.1362 ± 0.0032 rad 13.62 M3 goal: 0.2345 ± 0.0011 rad 23.45 T1 goal: 0.1967 ± 0.0012 rad 19.67 N1 goal: 0.1512 ± 0.0023 rad 15.12 M3 T1 N1 M3 T1 N1
Closed-loop joint MAE (×100, lower is better), mean ± std over 3 seeds. Goal reaching is reported for the latent policy only.

The gap stays within 0.025 rad on all three robots (+0.025 on M3, +0.006 on T1, +0.003 on N1), with no falls. For goal reaching, a sudden jump in joint targets makes the joint policy spike its torques and fall, while interpolating in latent space gives smooth pose-to-pose transitions for at most 0.032 rad over tracking.

02Reward Optimization

Two of the three prompting modes immediately transfer after encoder training. Tracking is EX on a retargeted reference while goal reaching is EX on a predefined window ending at the goal pose.

Reward optimization does not transfer directly, because the closed form that converts a reward into a latent requires two components from the frozen source BFM:

zrew = proj( ∑i ωi ri 1BS(si) ), si ∼ 2ρ

1The backward map BS

Directly substituted with the trained encoder EX, which was regressed onto proj(BS(·)) frame by frame. BS → EX

2The state distribution ρ

The visited states collected during RL training are not available on a target robot that never ran unsupervised RL. We approximate ρ using the robot’s own retargeted dataset, so the reward-weighted projection selects states that are feasible for it. ρ → cached retargets

Reward optimization graph

Zi = EX(oXi−T+1:i) encode once ri = r(φ(oXi); θ(X)) score cached features zrew = proj( ∑i ωi ri Zi ) project
The reward features φ are key-body kinematics only — root height and velocity, uprightness, angular velocity, arm-tip and knee heights — with the joint configuration discarded, so a reward written for one body can be scored on another. The weights ω = softmax(τ r1:M) take a reward-weighted average of all latent vectors over the M cached frames of the retargeted dataset.

We score all 41 reward prompts against using the G1’s oracle latent optimized on G1 buffers.

Mean normalized return over 41 source tasks, latent computed on the source versus on the target
Robot Computed on G1 Computed on target (ours) Gain
M30.1450.5083.50×
T10.2280.2611.14×
N10.1770.5232.95×
Mean0.1830.4312.35×

Normalized return in [0, 1], averaged over the 41 source tasks. Higher is better.

Computing zrew on the source robot is 3.5× and 3.0× worse on M3 and N1. The reason is that the reward-weighted projection selects which states are worth visiting, which depends on which states the executing body can actually reach. Thus a latent optimal for the G1’s reachable set is not optimal for other robots.

03Unseen Motions

Does the encoder work on clips it never saw? We evaluate how well the unified encoder infers latent behavior across the training and validation motions by passing to the policy either the G1’s oracle latent z⋆ or the encoder’s inference.

Closed-loop key-body error for oracle versus inferred latents on training and validation motions
Motions M3 T1 N1
oraclepred. oraclepred. oraclepred.
Training (30)8.148.025.705.435.585.57
Validation (10)6.407.075.265.605.465.60

Closed-loop key-body error (cm, lower is better). Every episode runs full length with no falls.

On the encoder’s training clips the predicted latent is marginally better than the oracle. On validation motions it costs only 1.4–6.7 mm of key-body error. In terms of geometrical alignment, distilled trajectories overlay the source trajectories almost identically, behaviors form clear clusters, and the validation clips (dashed) fall inside the cluster of their own behavior rather than off-manifold or in the gaps between clusters. So the tracker trained on that region adapts to them well even with some cosine dissimilarity.

validation LAFAN clip Click a behavior or an embodiment to show only those latents; hover a trajectory to follow that motion across all three fractions.
Source (G1) and distilled (M3) latent trajectories, colored by behavior, with the encoder trained on 100%, 25% and 10% of the corpus.

04Data Scaling

How much data does it take to distill the space? We shrink the encoder’s corpus by sampling 1.5–3 s segments of every motion, so each behavior stays represented, and feed its latents to a tracker trained on the full data.

Joint MAE on M3 against the fraction of the distillation corpus Joint MAE (times 100) is 21.32 at 100 percent of the corpus, 22.07 at 75 percent, 22.18 at 50 percent, 22.41 at 25 percent, 27.06 at 10 percent, 29.99 at 5 percent, and 44.11 for the random-latent noise control. 10 20 30 40 Joint MAE (×100) 100%: 21.32 21.32 100% 75%: 22.07 22.07 75% 50%: 22.18 22.18 50% 25%: 22.41 22.41 25% 10%: 27.06 27.06 10% 5%: 29.99 29.99 5% Noise: 44.11 44.11 Noise Joint MAE on M3 against the fraction of the distillation corpus Joint MAE (times 100) is 21.32 at 100 percent of the corpus, 22.07 at 75 percent, 22.18 at 50 percent, 22.41 at 25 percent, 27.06 at 10 percent, 29.99 at 5 percent, and 44.11 for the random-latent noise control. 0 10 20 30 40 Joint MAE (×100) 100%: 21.32 100% 21.32 75%: 22.07 75% 22.07 50%: 22.18 50% 22.18 25%: 22.41 25% 22.41 10%: 27.06 10% 27.06 5%: 29.99 5% 29.99 Noise: 44.11 Noise 44.11
Joint MAE on M3 (×100, lower is better) as the distillation corpus shrinks. Noise is a random-latent control.

A quarter of the corpus costs only 5% (0.213 → 0.224 rad); the curve breaks only below that, at 0.271 for 10% and 0.300 for 5%. In the latent map above, 25% still overlays the source with behaviors separated, while at 10% the classes blur. We conlude that what matters is behavioral coverage, not raw frame count.

05Unseen Robots

We report the generalizability of the unified encoder to unseen robots by training it on two robots and evaluating on the third, with fixed pretrained trackers. Signal gap closed is (random − pred) / (random − oracle), representing how meaningful the latent signal is to the tracker, with the upper bound being the seen robot and the lower bound pure noise.

Generalization of the unified encoder to unseen robots
Unseen robot Cosine (unseen) Oracle MAE Predicted MAE Random MAE Signal gap closed
M30.6250.1650.1830.33789.3%
N10.5860.1370.2240.33255.5%
T10.2530.1680.2890.30612.8%

Closed-loop joint MAE in radians. With all three robots in training, cosine is 0.83–0.87.

Transfer follows morphological proximity. M3 and N1 are a close pair, and each recovers most of the gap when the other was seen while T1 has no close relative and recovers little. Cosine alone undersells this insight. M3 at 0.625 looks broken yet tracks at 89% of the oracle because the policy only needs the latent to land in the right behavior region. We hypothesize that with many embodiments and every new robot has a close relative in the training set, transfer can be expected to generalize well in a zero-shot manner.

Demos

In Simulation

Motion tracking — LAFAN clips encoded into the shared space

0.0s

Goal reaching — the encoder run on a window ending at the goal pose

0.0s

Reward optimization — latents inferred on each robot from a reward

0.0s

Flow prompting — latents generated from a behavior label

0.0s

On a Real Robot

Goal reaching — interpolating between goal latents

M3 — 9 goal poses.
T1 — the same prompting mode on a second robot.

Motion tracking — a LAFAN dance as a latent trajectory

Flow prompting — a dance generated in latent space

Authors

1VinRobotics 2National University of Singapore 3TU Darmstadt 4VinUniversity 5DFKI 6Hessian AI
*Equal contribution †Equal advising ✉Corresponding author

BibTeX

@inproceedings{crossbfm2026,
  title     = {CrossBFM: Distilling a Shared Latent Behavior Space
               Across Humanoid Embodiments},
  author    = {Do, Tan-Dzung and Phuong, Tuan Dat and Bohlinger, Nico and
               Trinh, Cuc T. and Ju, Siwei and Ngo, Vien Anh and
               Peters, Jan and Wang, Xinchao and Le, An Thai},
  booktitle = {Under Review},
  year      = {2026}
}