⚠️ Breaking changes (v0.6.0 -> v0.6.1)
lerobot.typesmodule was renamed tolerobot.lerobot_types: #4232
What's Changed
- chore(dependencies): Bump lerobot to 0.6.1 by @imstevenpmwork in #3957
- Make doc builds faster by @mishig25 in #3958
- docs(GR00T): Update GR00T 1.7 LIBERO checkpoints by @liorbenhorin in #3961
- feat(annotate): improve VLM subtask annotation (legible contact sheets, seeded relabeling, self-hosted vLLM recipe) by @pkooij in #3896
- Fix readme when using annotations by @NikodemBartnik in #4029
- refactor(evo1): use transformers flash attention probe by @imstevenpmwork in #4013
- refactor(hub): load safetensors directly on target device by @imstevenpmwork in #4012
- Aggregate policy sub-losses through MetricsTracker by @Maximellerbach in #4024
- Fix annotation example by @NikodemBartnik in #4041
- Move annotation dependencies to module scope by @pkooij in #4040
- fix(safetensors): expand bare "cuda" to current device for safetensors loads by @Maximellerbach in #4042
- refactor(policies): resolve policy components by convention by @imstevenpmwork in #4015
- refactor(processors): share policy pipeline builders by @imstevenpmwork in #4016
- refactor(policies): extract shared model components by @imstevenpmwork in #4054
- refactor(wall-x): subclass native Transformers Qwen2.5-VL instead of vendoring it by @imstevenpmwork in #4035
- refactor(pi05): use shared VLA components by @imstevenpmwork in #4063
- refactor(pi0): use shared VLA components by @imstevenpmwork in #4062
- refactor(eo1): reuse shared VLA components by @imstevenpmwork in #4061
- refactor(pi0_fast): reuse shared VLA components by @imstevenpmwork in #4055
- refactor(xvla): subclass native Transformers Florence2 instead of vendoring it by @imstevenpmwork in #4089
- chore(ci): upgrade claude workflow by @imstevenpmwork in #4096
- chore(docs): update security policy to adopt HF standards by @imstevenpmwork in #4098
- refactor(smolvla): reuse shared VLA components by @imstevenpmwork in #4064
- feat(annotate): run lerobot-annotate on HF Jobs via --job.target by @pkooij in #4095
- refactor(pi05): remove unused variables in embed_suffix method by @dudududukim in #3263
- Feature omx docs by @Eunsung-kespion in #3421
- docs(readme): fix missing periods at end of sentences by @ykdojo in #3473
- fix(scripts): register third-party plugins in lerobot_setup_motors by @imstevenpmwork in #4123
- fix(gamepad): Gamepad on macos often does not need fallback by @imstevenpmwork in #4125
- feat(diffusion): add gradient checkpointing for memory optimization by @imstevenpmwork in #4127
- fix(openarms): stop set_zero_position()ing on connect by @nepyope in #4058
- fix(robots): add retries while recording motor ranges by @imstevenpmwork in #4126
- fix(envs): set LiberoEnvConfig.fps default to 20 to match robosuite by @imstevenpmwork in #4124
- feat(dataset): add slice support to LeRobotDataset.getitem by @imstevenpmwork in #4129
- chore(agents): adding additional infos to AGENTS.md and bring-your-own-policies.mdx by @Maximellerbach in #3904
- feat(robot): Make SO follower P coefficient configurable by @imstevenpmwork in #4142
- chore(dependencies): update uv.lock by @imstevenpmwork in #3963
- chore(deps): bump diffusers to
>=0.38.0,<0.40.0by @imstevenpmwork in #4145 - (depth image processing): excluding depth frames from the RGB to BGR image processing by @CarolinePascal in #4135
- feat(dataset): accept token argument for private HF Hub datasets by @imstevenpmwork in #4136
- fix conversion error when tag is not exists. by @k1000dai in #3656
- chore: enable Dependabot weekly GitHub Actions bumps by @hf-dependantbot-rollout[bot] in #3677
- fix(datasets): clear video frame staging on episode reset by @MihaiAnca13 in #3683
- fix(scripts): restore policy training mode after eval_policy() in lerobot-eval by @imstevenpmwork in #4162
- fix(record): connect teleoperator before robot to avoid watchdog jump by @imstevenpmwork in #4166
- fix(processor): avoid Hub fallback for missing local processor state by @WOLIKIMCHENG in #3715
- fix(rollout): account for policy revision loading by @imstevenpmwork in #4161
- fix(envs): make MetaWorld evaluation reproducible with seeded object positions by @landegt in #3727
- (fix) Add LeKiwi support to lerobot-replay CLI by @zuoxingdong in #3739
- feat(config): add
multiprocessingoption toDataLoadercontext and setsspawnas default by @imstevenpmwork in #4139 - fix(processors): wrong feature key dropped in delta-action transform_features by @imstevenpmwork in #4165
- feat(rl): add multiprocessing option to training pipeline and sets spawn as default + guard by @imstevenpmwork in #4140
- feat(lekiwi): support LeKiwi in the rollout/eval CLI by @zuoxingdong in #3742
- fix(cameras): release device handle when connect() setup fails by @imstevenpmwork in #4187
- feat(camera): add manual exposure, gain, and white balance options for RealSense cameras by @imstevenpmwork in #4130
- feat(record): add
--dataset.no_stampto opt out of repo_id timestamping by @imstevenpmwork in #4190 - feat(motors): add XH540-W150, XC330-T288, XC330-T181 to Dynamixel tables by @charlie8612 in #3815
- refactor(logging): standardize logging with getLogger(name) in scripts by @imstevenpmwork in #4192
- fix(dependencies): protect peft import by @imstevenpmwork in #4188
- fix(policy): honor revisions when loading PEFT checkpoints by @s1lent4gnt in #4189
- Handle resuming empty local datasets by @AlexandreEDMOND in #3859
- chore(mypy): cover annotations and transforms by @AlexandreEDMOND in #3860
- fix(utils): handle missing/unresponsive TTS on Linux by @imstevenpmwork in #4199
- fix(env): eval env lifecycle by @imstevenpmwork in #4194
- fix peft factory test mocking by @s1lent4gnt in #4201
- fix(eval): prevent eval_policy crash when start_seed is None and num_envs>1 by @imstevenpmwork in #4203
- fix(datasets): bound memory of augment_dataset_quantile_stats by sampling frames by @pepa99 in #3749
- perf(docker): split dependency install from source copy for CI layer caching by @imstevenpmwork in #4208
- fix(robots): retry SO follower/leader bus reads on transient Feetech errors by @imstevenpmwork in #4207
- docs: fix dataset split fraction example by @saime428 in #3936
- docs: fix wording in backward compatibility guide by @Old-Ding in #3938
- docs: fix wording in guides by @Old-Ding in #3939
- chore(datasets): add typing to aggregate helpers by @imstevenpmwork in #4211
- fix(evo1): re-pad normalizer stats when loading from checkpoint by @nepyope in #3945
- fix(robot): type FK-to-EE action features as ACTION not STATE by @imstevenpmwork in #4213
- docs(agent-guide): prioritize uv over pip in §4.1 install block by @Kunal-Somani in #3799
- fix(find-cameras): enforce sequential lifecycle and add configurable warmup by @AnesBenmerzoug in #3593
- fix(utils): reject zero-norm / invalid quaternions in Rotation by @Bartok9 in #3988
- fix(utils): raise ValueError from get_safe_torch_device by @Bartok9 in #3992
- fix(utils): preserve exc_info/stack_info in init_logging formatter by @imstevenpmwork in #4215
- fix(utils): mark Transition.complementary_info NotRequired by @imstevenpmwork in #4216
- fix(utils): allow any JSON payload in write_json - #3993 by @imstevenpmwork in #4217
- fix(utils): validate precise_sleep spin/margin args by @imstevenpmwork in #4218
- docs: fix env processor code fences and minor doc errors by @tc-huang in #3953
- fix assembly instructions typo - SO-ARM101 by @NikodemBartnik in #4008
- fix(utils): add MPS branch to torch RNG state serialization by @sunnydave234 in #4014
- fix(smolvla): freeze the intended VLM layers when train_expert_only=False by @zuoxingdong in #4019
- fix(rollout): reject incompatible RTC policies by @imstevenpmwork in #4228
- feat(teleoperators): add DAgger/HIL smooth handover support for BiSOLeader by @Mr-C4T in #4028
- chore(deps): bump draccus by @ntjohnson1 in #4033
- fix(train): keep checkpoint processor stats on resume by @jashshah999 in #4022
- fix(config): accept pretrained_model dir for --config_path on resume by @jashshah999 in #4023
- fix(envs): use RoboCasa task horizons by @anasm266 in #4037
- (fix) typo in xvla
soft_promptparam key lookup by @nepyope in #4048 - refactor(types): change module name by @imstevenpmwork in #4232
- Fix Backtrackable.can_peek_back off-by-one contract violation by @Osamaali313 in #4065
- fix(datasets): stop frame errors being treated as shard exhaustion in StreamingLeRobotDataset by @imstevenpmwork in #4237
- feat(robot): mirror new configs from SO10X to its Bi manual counterpart by @imstevenpmwork in #4238
- fix(lekiwi): pin MJPG capture in the default camera config by @zuoxingdong in #4083
- fix(RGB only): remove the stereo module fallback when setting colors parameters on RealSense cameras by @CarolinePascal in #4225
- feat(lekiwi): stream observations as ZMQ multipart (-25% bandwidth) by @zuoxingdong in #4088
- test(datasets): guard batched-encoding video staging from post-save cleanup by @nevertmr in #4110
- fix(train): guard checkpoint saving against save_freq=0 by @ahmet-f-gumustas in #4112
- feat(dataset): Support streaming from HF Storage Buckets + Bump HF hub & datasets by @imstevenpmwork in #4236
- docs: fix broken and placeholder links by @youdie006 in #4097
- fix(policies): VLA-JEPA prepare model input to take state from index 0 by @Maximellerbach in #4243
- fix: Fix a spelling typo in the RTC evaluation docstring. by @nathon-lee in #4253
- fix(datasets): Fix metadata when parquet files columns have different orders by @brunomachado37 in #3964
- docs: fix RoboMME Docker build command by @cupkk in #4157
- feat(dataset tools): support task replacement mappings in modify_tasks by @CarolinePascal in #4244
- fix(datasets): support multi-dimensional per-frame features in add_features by @CarolinePascal in #4246
- chore(dependencies): update uv.lock by @imstevenpmwork in #4151
- fix(config): catch draccus DecodingError in CLI parsing - #4106 by @imstevenpmwork in #4260
- feat(transforms): add 8 robotics-relevant image augmentations by @imstevenpmwork in #4210
- fix(processor): diagnose legacy Hub checkpoints by @imstevenpmwork in #4261
- fix(datasets): improve
get_safe_versionraise by @imstevenpmwork in #4263 - fix(config): scope draccus --help output to already-resolved choices by @imstevenpmwork in #4265
- chore(deps): bump the actions group with 15 updates by @dependabot[bot] in #4164
- docs(libero): recommend lerobot/libero dataset, add reproducibility tips by @zuoxingdong in #4185
- fix(vla_jepa): use device-safe autocast instead of hardcoded bfloat16 by @Maximellerbach in #4158
- feat(rollout): add smooth_handover flag to episodic strategy config by @Maximellerbach in #4159
- feat(rollout): add smooth_handover flag to DAgger strategy config by @Maximellerbach in #4160
- docs(pi05): LIBERO quickstart with v3 dataset, update guidance by @zuoxingdong in #4186
- Improved main docs page by @NikodemBartnik in #4197
- fix(rollout): apply torch compile mode correctly by @imstevenpmwork in #4268
- chore(dependecies): bump setuptools + pytest + uv version in CI by @imstevenpmwork in #4270
- fix(edit-dataset): redirect dataset.root via backup_path from get_output_path by @CarolinePascal in #4271
- fix(so_follower): check the observation for None before copying it by @noron12234 in #4255
- feat(env): config to skip the discarded scene rebuild on reset Libero by @imstevenpmwork in #4272
- fix(libero): don't reset inside step() on termination by @imstevenpmwork in #4273
- fix(train): honor policy.use_amp when the policy has no dtype field by @imstevenpmwork in #4274
- feat(cameras): prefer MJPG when fourcc unspecified in ZMQ by @imstevenpmwork in #4277
- docs(evo1): add LIBERO reproduction recipe by @imstevenpmwork in #4278
- feat(ci): re-enable stale issues countdown by @imstevenpmwork in #4279
- perf(eval): stop simulating environments whose episode has ended by @dvdimitrov13 in #4247
- fix(lekiwi): retry LeKiwi bus reads on transient Feetech errors by @zuoxingdong in #4283
- fix(cameras): D405 RealSense connection timeout on startup by @Liyux3 in #3894
- fix broken link by @NikodemBartnik in #4304
- docs(third party): adding docs for noticeable third party packages by @CarolinePascal in #4026
- fix(video): only default to torchcodec when it can actually be loaded by @CarolinePascal in #4307
- fix(warmup): adding back the no-warmup path in the
connect()method of the RealSense camera. by @CarolinePascal in #4301 - fix(aggregate stats): fix episode statistics aggregation by @CarolinePascal in #4276
- perf(pi0fast): stop FAST decoding at the end-of-action marker by @imstevenpmwork in #4275
- fix(sarm): fail fast on unusable episode annotations by @s1lent4gnt in #4306
- feat(train): enable buckets with streaming dataset by @imstevenpmwork in #4312
- chore(dependencies): update uv.lock by @imstevenpmwork in #4284
New Contributors
- @dudududukim made their first contribution in #3263
- @Eunsung-kespion made their first contribution in #3421
- @ykdojo made their first contribution in #3473
- @hf-dependantbot-rollout[bot] made their first contribution in #3677
- @MihaiAnca13 made their first contribution in #3683
- @WOLIKIMCHENG made their first contribution in #3715
- @landegt made their first contribution in #3727
- @charlie8612 made their first contribution in #3815
- @pepa99 made their first contribution in #3749
- @saime428 made their first contribution in #3936
- @Old-Ding made their first contribution in #3938
- @Kunal-Somani made their first contribution in #3799
- @AnesBenmerzoug made their first contribution in #3593
- @Bartok9 made their first contribution in #3988
- @sunnydave234 made their first contribution in #4014
- @Mr-C4T made their first contribution in #4028
- @ntjohnson1 made their first contribution in #4033
- @anasm266 made their first contribution in #4037
- @Osamaali313 made their first contribution in #4065
- @nevertmr made their first contribution in #4110
- @ahmet-f-gumustas made their first contribution in #4112
- @youdie006 made their first contribution in #4097
- @nathon-lee made their first contribution in #4253
- @cupkk made their first contribution in #4157
- @noron12234 made their first contribution in #4255
- @dvdimitrov13 made their first contribution in #4247
- @Liyux3 made their first contribution in #3894
Full Changelog: v0.6.0...v0.6.1