Post
139
I placed π₯ 2nd in the LeHome Challenge (ICRA 2026), and π₯ 1st of 62 teams in the first simulation round. Now I'm open-sourcing the full solution β code, tech report, and final weights.
The task: teach a cheap two-armed robot (SO-ARM101) to fold 4 garment types β long/short tops and pants. Garment category is hidden at eval. Round 1 in sim (auto-scored), round 2 on a real robot (jury-scored).
I trained a VLA policy with an RL loop on top. The key ideas:
π§ The policy is its own value function. From the same forward pass that picks the next action chunk, cheap heads predict success probability, task completion %, garment type, and future keypoint distances + a Q-residual. Those become the advantage signal for RL β no separate critic.
π A fully asynchronous RL loop coordinated only through the HF Hub: 1 trainer (H200) ships a fresh checkpoint ~every 40 min while N rollout workers (and a human doing teleop / DAgger corrections) collect data in parallel. Nobody waits β it uses the off-policy nature of the loop to the fullest.
π Binary success is too sparse, so I densify it into per-frame advantage via GAE β from objective keypoint checkpoints, the success-probability value baseline, and completion %.
ποΈ The RL combines AWR + RECAP. I also tune the inference knobs β execution length, playback speed, inpainting overlap, CFG scale, best-of-N β with a per-parameter Thompson-sampling bandit folded into rollout collection.
π§ Round 2: with only ~1 week and no access to the eval robot β so the pipeline was sim β my robot β their robot, leaning on heavy augmentation to make the policy more robust.
π Blog: https://ilialarchenko.com/projects/lehome2026
π Tech report: Learning to Fold: prizewinning solution at LeHome Challenge 2026 (1st place online, 2nd offline) (2606.27163)
π§ Code: https://github.com/IliaLarchenko/lehome_solution
π€ Sim policy: IliaLarchenko/lehome_sim
π€ Real policy: IliaLarchenko/lehome_real
π Challenge: https://lehome-challenge.com/
The task: teach a cheap two-armed robot (SO-ARM101) to fold 4 garment types β long/short tops and pants. Garment category is hidden at eval. Round 1 in sim (auto-scored), round 2 on a real robot (jury-scored).
I trained a VLA policy with an RL loop on top. The key ideas:
π§ The policy is its own value function. From the same forward pass that picks the next action chunk, cheap heads predict success probability, task completion %, garment type, and future keypoint distances + a Q-residual. Those become the advantage signal for RL β no separate critic.
π A fully asynchronous RL loop coordinated only through the HF Hub: 1 trainer (H200) ships a fresh checkpoint ~every 40 min while N rollout workers (and a human doing teleop / DAgger corrections) collect data in parallel. Nobody waits β it uses the off-policy nature of the loop to the fullest.
π Binary success is too sparse, so I densify it into per-frame advantage via GAE β from objective keypoint checkpoints, the success-probability value baseline, and completion %.
ποΈ The RL combines AWR + RECAP. I also tune the inference knobs β execution length, playback speed, inpainting overlap, CFG scale, best-of-N β with a per-parameter Thompson-sampling bandit folded into rollout collection.
π§ Round 2: with only ~1 week and no access to the eval robot β so the pipeline was sim β my robot β their robot, leaning on heavy augmentation to make the policy more robust.
π Blog: https://ilialarchenko.com/projects/lehome2026
π Tech report: Learning to Fold: prizewinning solution at LeHome Challenge 2026 (1st place online, 2nd offline) (2606.27163)
π§ Code: https://github.com/IliaLarchenko/lehome_solution
π€ Sim policy: IliaLarchenko/lehome_sim
π€ Real policy: IliaLarchenko/lehome_real
π Challenge: https://lehome-challenge.com/