Repository navigation
Releases
Releases · huggingface/lerobot
Release v0.7.0
Release Blog
https://huggingface.co/blog/lerobot/lerobot-release-v070
lerobot-070-release.mp4
⚠️ Breaking changes (v0.6.1 -> v0.7.0)
v0.7.0 rebuilds installation, training, inference and the hardware layer. A few changes need your attention when upgrading:
Installation
- On Linux,
torchandtorchvisionnow come from PyPI as CUDA 13 builds (NVIDIA driver 580.65 or newer); thecu128index is gone. For older drivers, install torch from a CUDA 12 index first (see the installation guide). macOS needs 14+ (15+ for MPS). - Pins moved:
transformers5.22,huggingface-hub>=1.31,<3,motorbridge0.5,datasets<6,Pillow<14,torchcodec<0.18.
Training
- Weights & Biases is replaced by Trackio (the
trainingextra installstrackio):--wandb.*is now--trackio.*,entity/modehave no equivalent, remote jobs with tracking need--trackio.space_id, and checkpoints are no longer uploaded as artifacts by default. - FSDP1 is replaced by FSDP2/HSDP (
--parallelism.dp_shard,--parallelism.dp_replicate,--accelerator.*); mixed precision is set with--accelerator.mixed_precision. FSDP checkpoints saved with lerobot ≤ 0.6.x cannot be resumed (theirmodel.safetensorsstill loads), and Accelerate YAML/env configuration is rejected unlessLEROBOT_ALLOW_ACCELERATE_ENV=1. --policy.use_peft=truealone now trains LoRA instead of silently fully fine-tuning.- Image transforms are batched:
GaussianNoise,MotionBlur,GaussianPatchBrightness,RandomShadow,CoarseDropout,GammaCorrectionandPlanckianJitterwere silent no-ops on uint8 frames and now apply.ImageTransformstakes tensors only; the per-sample classes are deprecated.
Inference & rollout
lerobot.async_inferenceandlerobot[async]are removed: uselerobot[remote],lerobot-policy-serverandlerobot-rollout --inference.type=remote.lerobot.rollout.inferencemoved tolerobot.inference.select_action/predict_action_chunkmay return aPolicyOutput({"action", "prediction"}) instead of a bare tensor; usepolicy_output_to_transitionwhen calling them directly.- With
--interpolation_multiplier>1, rollout strategies record one frame per policy action instead of one per tick.
Simulation & environments
lerobot.envs.<sim>moved tolerobot.sim.integrations.<sim>, env configs are named*EnvConfig(LiberoEnv->LiberoEnvConfig), and in-process envs return canonical observations (HWC uint8 images, flat float32 state; map camera names with--rename_map).--env.typeis unchanged.- Removed env fields: Aloha/PushT
observation_height/observation_width, MetaWorldepisode_length/multitask_eval, RoboTwinobs_type/render_mode. MetaWorld's default task ismetaworld-push-v3. - EnvHub
make_envis called withoutcfgand must return an unwrappedSyncVectorEnv/AsyncVectorEnvunless--env.use_native_batch=true.
Policies
dtypeis the single precision key of every policy config;torch_dtype,vlm_dtype,model_params_fp32andmodel_dtypeare ignored or removed. In Python passtorch.bfloat16, not a string.- MolmoAct2:
enable_lora_vlm,enable_lora_action_expertandtrain_action_expert_onlyare replaced by--policy.train_mode_vlm={fft,lora,freeze};action_modedefaults tocontinuous. - EO1:
chunk_sizeandn_action_stepsdefault to 16. - VLA-JEPA: checkpoints trained before the RoPE fix need
--policy.world_model_rope_legacy=true;binarize_gripper_actionandpre_snap_gripper_actiondefault tofalse.
Datasets
--dataset.streaming=trueuses a new disk-less episode-pool reader with--dataset.streaming_*options;Backtrackableis removed.
Hardware
- Feetech and Dynamixel run on one rustypot-backed
SerialMotorsBus(lerobot[feetech]/[dynamixel]installrustypotinstead of the vendor SDKs).FeetechMotorsBus/DynamixelMotorsBusare deprecated aliases,OperatingMode/TorqueModegive way tobus.set_operating_mode("position"), and the control tables,encoding_utilsand the SDK-level helpers (broadcast_ping,scan_port, ...) are removed. Calibration files are unchanged. - reBot B601: the config is driven by
motor_family(dm,rs);gripper_mit_kp/gripper_mit_kdare removed and per-joint gains take a dict instead of a list.
What's Changed
- chore(dependencies): Bump lerobot to 0.6.2 by @imstevenpmwork in #4313
- add third party hardware section by @NikodemBartnik in #4308
- fix(lekiwi): relative target keyerror by @zuoxingdong in #4281
- feat(data): add recipe-driven language supervision by @pkooij in #4182
- feat(train): parallel training framework — FSDP2, HSDP, gradient accumulation, and DCP checkpoints by @HaomingSong in #4010
- feat(train): split phase timing metrics by @pkooij in #4344
- fix(dataset): use conservative bounds for quantile aggregation instead of incorrect weighted mean by @aHiroakiIshikawa in #3804
- fix(train): repair the two CI failures introduced by #4010 by @HaomingSong in #4347
- feat(train): add opt-in EMA of the policy weights (--ema.enable=true) by @alejodosr in #4323
- test(ema): Rename test that trips TruffleHog's Lob detector by @pkooij in #4371
- fix(tests): port the multi-GPU FSDP test off the superseded accelerate YAML flow by @pkooij in #4370
- docs: add API documentation infrastructure by @pkooij in #4348
- chore: sort imports in vla_jepa tests by @pkooij in #4354
- fix(datasets): resolve only recipe-referenced bindings by @pkooij in #4382
- fix(ci): benchmark jobs skipped for forks by @imstevenpmwork in #4411
- fix(rollout): align state order with checkpoint by @pkooij in #4416
- feat(pi05): add optional visual and proprioceptive MEM by @pkooij in #4076
- perf(policies): move image normalization to device in prepare_observation_for_inference by @imstevenpmwork in #4433
- fix(legacy depth markers): unifying legacy depth markers across the codebase by @CarolinePascal in #4428
- Warn when freezing VLA-JEPA Qwen conditioning by @WOLIKIMCHENG in #4421
- fix(control): unify control-loop pacing and cadence reporting by @imstevenpmwork in #4423
- fix: use <= instead of < for timestamp tolerance comparison in video_utils by @walle250ai in #3423
- fix(vla_jepa): add opt-in causal world-model context to stop future-frame leakage by @ravediamond in #4381
- feat(rollout): interactive sessions — chat-style CLI and programmatic rollout control by @imstevenpmwork in #4380
- (add) SONIC decoder by @nepyope in #4090
- feat(policies): vla-jepa refactoring by @Maximellerbach in #4425
- feat(pi05): add optional training-time RTC by @pkooij in #4056
- fix(molmoact2): align continuous training with official recipe by @hq-fang in #4249
- perf(fastwam): add compiled cached action inference by @darthjaja6 in #4491
- fix(rl): guard learner checkpoint saving against non-positive save_freq by @HaomingSong in #4479
- fix(tests): fix peft cli test by @HaomingSong in #4477
- fix(datasets): keep small splits from dropping episodes in split_dataset by @VihaanAgarwal in #4001
- fix(datasets): reject mismatched aggregate roots by @tandede in #4488
- docs: correct calibration guide grammar by @POPOXR in #4508
- feat(datasets): native support for LeRobot datasets stored as LanceDB datasets by @AyushExel in #4363
- chore: update full_tests.yml by @hf-security-analysis[bot] in #4531
- add upper bounds for lancedb dependencies by @AyushExel in #4532
- support non-default backends in foxglove playback by @AyushExel in #4542
- Fix reset config joint positions encoding by @s1lent4gnt in #4545
- add dataset reader registry for storage backends by @AyushExel in #4541
- make eval_split format aware by @AyushExel in #4543
- fix(datasets): answer delta queries through cached single-column views by @Rick0525 in #4314
- fix(kinematics): iterate inverse_kinematics to convergence by @0o8o0-blip in #3613
- feat(rollout): bring your own strategy by @imstevenpmwork in #4559
- dataset-via keep --root as a st...
Release v0.6.1
⚠️ 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
- ...
Release v0.6.0
Release Blog
https://huggingface.co/blog/lerobot-release-v060
⚠️ Breaking changes (v0.5.1 -> v0.6.0)
v0.6.0 cleans house, and a few changes need your attention when upgrading:
pip install lerobotno longer includes dataset or training dependencies; add the extra you need (e.g.lerobot[training]).- Some import paths have changed. Please use the canonical public entry points rather than internal submodule paths.
- GR00T N1.5 is replaced by N1.7 (pin
lerobot==0.5.1if you need N1.5). - The minimum PyTorch version is now 2.7.
eval_freqwas renamed toenv_eval_freqin the train config.- The RL stack was rebuilt: the
sacpolicy type is nowgaussian_actorunder the new modular RL API. - Legacy per-frame
subtask_indexannotations are superseded by the new language columns. --dataset.vcodecwas renamed to--dataset.rgb_encoder.vcodec, such that RGB and depth cameras video codecs may be set separately.
output.mp4
What's Changed
- chore(dependencies): Bump lerobot to 0.5.2 by @imstevenpmwork in #3307
- refactor(envs): move benchmark dispatch into EnvConfig subclasses by @pkooij in #3272
- feat(envs): lazy env init + AsyncVectorEnv as default for n_envs > 1 by @pkooij in #3274
- feat(ci): add agent assitance workflow by @imstevenpmwork in #3332
- chore(security): update claude.yml by @hf-security-analysis[bot] in #3333
- fix(ci): pin claude-code-action to v1.0.88 by @imstevenpmwork in #3336
- chore(ci): proper claude args workflow by @imstevenpmwork in #3338
- fix(dataset): adding metadata loading when reading from a dataset after writing by @CarolinePascal in #3305
- chore(dependencies): update uv.lock by @imstevenpmwork in #3308
- chore(dependencies): update uv.lock by @imstevenpmwork in #3361
- refactor(deps): minimal default install with facade pattern and dependency isolation by @imstevenpmwork in #3362
- fix(rl): ensure queue and process cleanup on abnormal exit by @jashshah999 in #3063
- feat(ci): benchmark smoke tests with isolated Docker images (LIBERO + MetaWorld) by @pkooij in #3319
- fix(feetech): motor position readings overflow by @Maximellerbach in #3373
- Update reward classifier training config by @EPronovost in #3147
- fix(test): add missing device placement in multi-task DiT tests by @s1lent4gnt in #3349
- fix(groot): compatibility fixes for gr00t in v0.5 by @mtiezzi in #3182
- Add thread synchronization to ReplayBuffer to prevent race condition between add() and sample() by @s1lent4gnt in #3372
- fix(rl): preserve teleop intervention flag in step_env_and_process_transition by @remete618 in #3273
- fix: catch KeyboardInterrupt in safe_stop_image_writer to prevent corrupted frames by @s1lent4gnt in #3381
- refactor(imports): enforce guard pattern by @imstevenpmwork in #3382
- chore(docs): update contributing by @imstevenpmwork in #3387
- chore: bump doc-builder SHA for PR upload workflow by @rtrompier in #3386
- chore(docs): adding a jupyter notebook that gives you ready-to-paste commands by @Maximellerbach in #3395
- feat(ci): send slack notification if latest dependency test is broken by @imstevenpmwork in #3398
- fix(ci): not fail when skipped by @imstevenpmwork in #3399
- fix(record): pass rename_map to make_policy in lerobot-record by @wadeKeith in #3240
- Improve loading performance in
_absolute_to_relative_idxwhen remapping indices by @hello3x3 in #3279 - chore(dependencies): update uv.lock by @imstevenpmwork in #3365
- feat(dataset): 2x faster dataloader via parallel decode, uint8 transport, and persistent workers by @imstevenpmwork in #3406
- fix(dataset): cleanup_interrupted_episode wipes image temp dirs by @whats2000 in #3405
- episods→episodes by @k1000dai in #3410
- fix(policies): replace deprecated torch.cuda.amp.autocast with torch.… by @Defalt-Meh in #3167
- ci: skip Docker Hub login step on fork PRs by @pkooij in #3417
- fix(envs): preserve AsyncVectorEnv metadata/unwrapped in lazy eval envs by @HaomingSong in #3416
- feat(envs): add RoboCasa365 benchmark integration by @pkooij in #3375
- feat(envs): add RoboTwin 2.0 benchmark by @pkooij in #3315
- feat(envs): add RoboCerebra long-horizon manipulation benchmark by @pkooij in #3314
- feat(envs): add RoboMME benchmark by @pkooij in #3311
- feat(envs): add LIBERO-plus robustness benchmark by @pkooij in #3313
- feat(sim): VLABench benchmark integration by @pkooij in #3396
- fix(robotwin): pin compatible curobo in benchmark image by @pkooij in #3427
- docs(agents): add AGENT_GUIDE.md for user facing agent by @pkooij in #3430
- chore(dependencies): update uv.lock by @imstevenpmwork in #3408
- fix(smolvla): correct loss normalization for padded actions by @whats2000 in #3434
- docs(xvla): fix broken local file links in documentation by @kuafou in #3291
- fix(policy): loss normalization for padded actions in ACT, Diffusion, and MultiTaskDiT by @imstevenpmwork in #3442
- fix(sarm): handle BaseModelOutputWithPooling from transformers 5.x in… by @masato-ka in #3419
- fix(policies): remove @DataClass from GR00TN15Config to fix import crash on transformers ≥ 5.5 by @ChuyaoShen in #3414
- fix(imports): realsense import name is platform dependent by @imstevenpmwork in #3451
- fix(dataset): no default overwrite in lerobot tool recompute stats by @imstevenpmwork in #3452
- fix(pi): avoid peak RAM in PiGemma construction by freeing replaced submodules by @imstevenpmwork in #3454
- chore(dependencies): update uv.lock by @imstevenpmwork in #3437
- feat(rollout): decouple policy deployment from data recording with new
lerobot-rolloutCLI by @imstevenpmwork in #3413 - chore(ci): bump docs workflows by @imstevenpmwork in #3476
- Reward models refactor by @s1lent4gnt in #3142
- refactor(datasets): replace untyped dict with typed DatasetInfo dataclass by @Maximellerbach in #3472
- fix(rollout): propagate policy-specific CLI config paramaters by @imstevenpmwork in #3483
- Migrate legacy RA-BC fields in train config loading by @s1lent4gnt in #3480
- Expose sarm package API and ship reward model card template by @s1lent4gnt in #3477
- fix(pi0&pi05): keep training sampling outside compiled forwards by @HaomingSong in #3487
- fix(peft): fix LoRA resume from Hub (PosixPath + double wrap) by @jashshah999 in #3485
- chore(ci): upgrade docker internal by @imstevenpmwork in #3505
- chore(ci): increase time stale by @imstevenpmwork in #3507
- chore(dep): bump transformers to 5.4.0 by @imstevenpmwork in #3374
- feat(dagger): adding smooth handover by @Maximellerbach in #3506
- fix(robots): openarm features compatibility with openarm_mini by @imstevenpmwork in #3524
- feat(policies): add EO-1 model by @HaomingSong in #3403
- fix(ci): bump robotwin benchmark image to CUDA 12.6 by @pkooij in #3525
- feat(policy): use pretrained vision encoder weights by default for diffusion and vqbet by @villekuosmanen in #3202
- fix(c...
Release v0.5.1
What's Changed
- chore(dependencies): Bump lerobot to 0.5.1 by @imstevenpmwork in #3118
- fix(unitree_g1): correct SDK detection and update installation docs by @nepyope in #3115
- docs: fix HF_USER to ignore bash ANSI codes by @j3soon in #3119
- chore(dependencies): Increase opencv-python-headless upper bound by @traversaro in #3120
- Fix action padding key at SmolVLA by @ymd-h in #1717
- Update Dockerfile.user by @heuzef in #1633
- fix(policies): crop losses based on the action dof by @imstevenpmwork in #3133
- Add option to disable tags on WandB by @brunomachado37 in #1339
- fix(links): replacing relative links with absolute links in the contribution guide by @CarolinePascal in #3141
- fix(script help): fixing lerobot-train --help by removing % in the docstrings by @CarolinePascal in #3161
- chore(dependecies): untangle dependecies across internal modules by @imstevenpmwork in #3149
- refactor(datasets): module cleanup by @imstevenpmwork in #3169
- chore(dataset): basic house-keeping by @imstevenpmwork in #3170
- refactor(dataset): modular files by @imstevenpmwork in #3171
- Fix/earth rover dataset features by @s1lent4gnt in #3088
- fix(vqbet): use in-place fill_ to avoid overwriting DDP GPU buffers with CPU tensors by @Altman-conquer in #3128
- fix(links): update GitHub issues link in async docs by @0xPraedico in #3186
- chore(docs): add rename map and empty cam guide by @jadechoghari in #3065
- refactor(dataset): split LeRobotDataset into DatasetReader & DatasetWriter (+ API cleanup) by @imstevenpmwork in #3180
- fix(logging): suppress noisy httpx INFO logs by @reeceomahoney in #3173
- fix(deps): breaking change from transformers 5.4.0 by @Maximellerbach in #3231
- chore(docs): add more guidance to bring your own policies tutorial by @Maximellerbach in #3230
- fix(dataset): use revision-safe Hub cache for downloaded datasets by @imstevenpmwork in #3233
- Feature/add multitask diffusion transformer policy implementation by @brysonjones in #2545
- fix(datasets): remove unreachable timestamp branch in add_frame by @SevenFo in #3163
- feat(scripts): add transformers version by @imstevenpmwork in #3248
- Revert "fix(deps): breaking change from transformers 5.4.0" by @imstevenpmwork in #3249
- Fix SO-101 assembly instruction order to match videos by @jaikr-dev in #3242
- feat(policies): add relative action support for pi0, pi0.5, and pi0_fast by @pkooij in #2970
- Add create reward visualization by @pkooij in #3155
- docs(toctree): add Benchmarks section for LIBERO and Meta-World by @pkooij in #3268
- feat(dagger): Add HIL/Dagger/HG-Dagger/RaC style data collection by @pkooij in #2833
- docs(benchmarks): add benchmark integration guide and standardize benchmark docs by @pkooij in #3270
- docs(policy): fix gr00t license docs by @imstevenpmwork in #3284
- chore(dependencies): bump minimum torch from 2.2.1 to 2.7 by @CarolinePascal in #3156
- chore(docs): no policy readme in src code by @imstevenpmwork in #3286
- chore(policy): multi dit docs by @imstevenpmwork in #3285
- feat(ci): add
uv.lockby @imstevenpmwork in #3292 - docs(ci): add readme for dockerfile by @imstevenpmwork in #3295
- fix(ci): latest deps tests permissions by @imstevenpmwork in #3296
- chore(dependencies): update uv.lock by @imstevenpmwork in #3302
- chore(docs): new badge for readme by @imstevenpmwork in #3303
- fix(scripts): Update action values when running robot without interpolation by @anthonyhchan in #3281
- feat(dataset): registering torchvision transforms by @fracapuano in #3153
- 🔒 Pin GitHub Actions to commit SHAs by @paulinebm in #3265
New Contributors
- @j3soon made their first contribution in #3119
- @traversaro made their first contribution in #3120
- @ymd-h made their first contribution in #1717
- @heuzef made their first contribution in #1633
- @brunomachado37 made their first contribution in #1339
- @Altman-conquer made their first contribution in #3128
- @0xPraedico made their first contribution in #3186
- @SevenFo made their first contribution in #3163
- @anthonyhchan made their first contribution in #3281
Full Changelog: v0.5.0...v0.5.1
Release v0.5.0
Release Blog
https://huggingface.co/blog/lerobot-release-v050
What's Changed
- chore(dependencies): Bump lerobot to 0.4.5 by @imstevenpmwork in #3051
- chore: add AI policy by @imstevenpmwork in #3055
- Improve policy_device documentation for async.mdx by @btelles in #3060
- fix(frame_index): making rerun's "frame_index" timeline compatible with behaviour1k datasets by @CarolinePascal in #3068
- fix(dataset edit tools): clarifying
rootargument usage + adding related features by @CarolinePascal in #3049 - chore(root): fixing
rootsemantics in convert_dataset script by @CarolinePascal in #3073 - chore(docs): updating deprecated huggingface-cli to hf by @Maximellerbach in #3071
- Fixing metadata indexing when writing new Parquet file by @skiingpacman in #2941
- chore(docstrings): updating v2.1-v3.0 conversion script docstrings to match the new task label by @CarolinePascal in #3077
- chore(dependencies): bump transformers v5 by @imstevenpmwork in #2964
- fix(ci): log in HF for gated repo in nightly workflows by @imstevenpmwork in #3089
- fix(num_frames): fixing redundant frames count in conversion script by @CarolinePascal in #3091
- Feat/slurm compute rabc script by @pkooij in #3041
- fix(ci): test only multi-gpu tests in multi-gpu runner by @imstevenpmwork in #3092
- feat(dependencies): require Python 3.12+ as minimum version by @imstevenpmwork in #3023
- chore(dependencies): sync intelrealsense + added notes by @imstevenpmwork in #3094
- chore(docs): remove pi installation note by @imstevenpmwork in #3095
- fix(ci): skip HF log in (and tests) in forks and community PRs by @imstevenpmwork in #3097
- fix(async_inference): restore robot module imports in robot_client.py by @aShunSasaki in #3081
- feat(robots): Unitree G1 WBC implementation by @nepyope in #2876
- feat(train): add cudnn_deterministic option for reproducible training by @imgeorgiev in #3102
- chore(docs): add uv installation instructions by @imstevenpmwork in #3105
- chore(readme): update citation with ICLR26 paper by @imstevenpmwork in #3107
- test(cameras): skip flaky async_read test by @imstevenpmwork in #3106
- chore(deps): update requirements file by @imstevenpmwork in #3114
- chore(dependencies): Bump lerobot to 0.5.0 by @imstevenpmwork in #3117
New Contributors
- @btelles made their first contribution in #3060
- @Maximellerbach made their first contribution in #3071
- @skiingpacman made their first contribution in #2941
- @aShunSasaki made their first contribution in #3081
- @imgeorgiev made their first contribution in #3102
Full Changelog: v0.4.4...v0.5.0
Release v0.4.4
What's Changed
- chore(dependencies): Bump lerobot to 0.4.4 by @imstevenpmwork in #2840
- feat(ci): trigger manually documentation release version by @imstevenpmwork in #2841
- fix(robots): update gripper configuration and calibration settings for OMX by @Woojin-Crive in #2815
- feat(envs): Add task ids to libero env cfg by @reeceomahoney in #2842
- feat(motors): add damiao motors & can bus by @imstevenpmwork in #2788
- Add robot images to docs by @pkooij in #2862
- docs: update libero by @reeceomahoney in #2857
- Fix(aggregate.py) Aggregation of datasets when sub-datasets are already a result of a previous merge by @michel-aractingi in #2861
- feat(robots): add OpenArm robot & teleoperator by @imstevenpmwork in #2795
- add g1 teleoperation by @nepyope in #2791
- feat(robots): add bi manual openarm follower and leader by @imstevenpmwork in #2835
- refactor(cameras): cameras API extension by @imstevenpmwork in #2808
- fix(sac): make temperature a property to fix checkpoint resume bug by @michel-aractingi in #2877
- Feat(dataset_tools.py) Add modify tasks tool by @michel-aractingi in #2875
- docs(cameras): revising and improving docs on cameras by @CarolinePascal in #2878
- fix(find zmq): adding a clearer not implemented warning for the ZMQ find_cameras method by @CarolinePascal in #2879
- feat(dataset): add subtask support by @jadechoghari in #2860
- docs: update document in response to Simplify configs PR by @HiroIshida in #1596
- Add missing RL config options: add_ee_pose_to_observation and gripper_penalty_in_reward by @michel-aractingi in #2873
- Limit W&B tag length to comply with 64‑character limit by @iory in #995
- Small docstring fix in diffusion configuration by @jwang078 in #2847
- feat(datasets): improve image transform support by @reeceomahoney in #2885
- fix(policies): wandb warning during smolvla training by @reeceomahoney in #2903
- fix(scripts): correct can import check by @imstevenpmwork in #2937
- fix(pipeline): use FeatureType for STATE features in Libero processor by @stepanfeduniak in #2888
- Change LIBERO init_state_id when reset. by @AoqunJin in #2899
- docs: clarify installation steps are sequential, not optional by @jaikr-dev in #2925
- [Bug Fix] fix(ci): prevent runner group error on fork pushes by @whats2000 in #2911
- chore(linter): ensure motors module passes MyPy type checks by @imstevenpmwork in #2939
- chore: use is_connected decorators by @imstevenpmwork in #2948
- fix(motors): use decorator to fix precommit by @imstevenpmwork in #2951
- feat(cameras): make backend configurable to the CLI by @imstevenpmwork in #2945
- Fixing wrong argparse examples in the comments (using 'True' not 'true') by @taken-yjyoon in #1040
- fix(dataset tools draccus): fixing draccus parsing for dataset edit operation type specification by @CarolinePascal in #2949
- Always use degrees by @pkooij in #2968
- feat(datasets): Add info operation to lerobot-edit-dataset command by @masato-ka in #2917
- (Chore) Bump upper bound for torch version by @sovrasov in #2897
- fix(scripts): serve grpc for a web viewer by @sotanakamura in #2881
- fix(docs): update env variable
LEROBOT_HOMEtoHF_LEROBOT_HOMEby @tc-huang in #2973 - fix(utils): more conservative
sleep_margindefault value inprecise_sleepby @imstevenpmwork in #2985 - chore(scripts): warn if we don't respect the target FPS by @imstevenpmwork in #2986
- fix(filtering): fixing episodes filtering in
load_nested_datasetto always use.from_parquet()by @CarolinePascal in #2982 - feat(robots): use read_latest() camera by @imstevenpmwork in #2987
- chore: remove usernames + use entrypoints in docs, comments & sample commands by @imstevenpmwork in #2988
- Fix gym-hil integration with the new LeRobot pipeline. by @s1lent4gnt in #2482
- chore(deps): bump ceil datasets by @imstevenpmwork in #2946
- feat(dataset): add streaming video encoding + HW encoder support by @imstevenpmwork in #2974
- Add metadata_buffer_size to dataset creation by @yuecideng in #2998
- feat(motors): add RobStride CAN implementation by @imstevenpmwork in #2821
- chore(docs): update the document for Phone teleop to clarify how to use the examples by @ynaka81 in #2991
- fix/docs: small comment change by @gui-miotto in #2990
- docs: fix HF_USER export command to correctly parse username by @WilbertYuan in #2932
- docs: add WSL evdev installation note by @DominikPalo in #2855
- feat: Enable torch.compile for DiffusionPolicy inference by @jashshah999 in #2486
- fix(ci): permissions triton by @imstevenpmwork in #3011
- feat(scripts): Integrate tqdm for training progress visualization by @imstevenpmwork in #3010
- fix(dataset): Fix reindexing bug for videos on splits by @mkiefel in #2548
- Fix metaworld_config.json missing from pip installs and AttributeError crash by @jashshah999 in #3017
- fix(video): replace assertions with proper exceptions in video frame decoding by @jashshah999 in #3016
- Fix SARM dense_only mode: always load episodes_df for target computation by @s1lent4gnt in #3021
- feat: add visualization badge to card template and update dataset card creation with repo_id by @mishig25 in #3005
- fix(policies): support dp train when n_obs_steps=1 by @Hukongtao in #2430
- Feat(teleoperators): add OpenArm Mini teleoperator by @s1lent4gnt in #3022
- Fix: remove device_map from SmolVLA model loading by @s1lent4gnt in #3029
- feat(async_inference) Enable plugins with async inference by @IamPhytan in #2425
- fix(datasets): only warn in MultiLeRobotDataset when features differ by @thatmich in #3019
- chore(scripts): no spam log when no action by @imstevenpmwork in #3042
- fix(scripts): register OpenArm Mini in all lerobot CLI scripts by @s1lent4gnt in #3028
- feat(policies): add Smolvla torch compile support by @jadechoghari in #3043
- Fix(diffusion): enforce no-crop behavior when crop_ratio=1.0 by @s1lent4gnt in #3046
- fix(logging): avoid double-counting samples across processes by @pkooij in #3045
- chore(docstrings): fixing deprecated
rootargument description in LeRobotDataset class by @CarolinePascal in #3035
New Contributors
- @reeceomahoney made their first contribution in #2842
- @iory made their first contribution in #995
- @jwang078 made their first contribution in #2847
- @stepanfeduniak made their first contribution in #2888
- @AoqunJin made their first contribution in #2899
- @jaikr-dev made their first contribution in #2925
- @whats2000 made their first contribution in #2911
- @taken-yjyoon made their first contribution in #1040
- @yuecideng made their first contribution in https:...
Release v0.4.3
What's Changed
- chore(dependencies): Bump lerobot to 0.4.3 by @imstevenpmwork in #2540
- fix(scripts): remove the data sampler because data access to the subset of a dataset has been fixed by @sotanakamura in #2521
- Feat/add unitree g1 robot by @nepyope in #2530
- fix(ci): move hub artifacts to
/mntto avoid runners'No space left on deviceby @imstevenpmwork in #2564 - fix pi05 forward compile by @michel-aractingi in #2551
- Make transport module Mypy Compliant [issue#1731] by @sezan92 in #2433
- feat(policies): Allow users to register 3rd party policies -
pip install lerobot_policy_mypolicyby @danielsanjosepro in #2308 - doc: fix wrong package name in installation doc by @yanghua in #2513
- Earth Rover Mini Plus integration by @s1lent4gnt in #2544
- Revert "Earth Rover Mini Plus integration" by @imstevenpmwork in #2574
- feat(policies): Add X-VLA by @jadechoghari in #2405
- feat(robots): Earth Rover Mini Plus integration by @imstevenpmwork in #2575
- fix(docs): remove duplicated package in install instructions by @imstevenpmwork in #2573
- Fix link to lerobot-train script in documentation by @cagataycali in #2466
- chore(docs): reorganize assembly instructions setup before assembly by @ozten in #2333
- Fix argument typo in async inference documentation by @kevinjosethomas in #2361
- fix(scripts): missing so101 import by @imstevenpmwork in #2577
- Add a documentation page with a brief intro to hw backends by @sovrasov in #2385
- Fix video indexing bugs in dataset aggregation with multi video datatasets by @michel-aractingi in #2550
- chore(ci): skip workflows if not lerobot repository by @imstevenpmwork in #2601
- Fix torch.compile in diffusion sampling loops at inference time by @michel-aractingi in #2600
- feat(dataset): add tool to convert images to video datasets by @jadechoghari in #2560
- Docs: Update X-VLA training strategies/commands by @jadechoghari in #2611
- enable variable image sizes to pi0/pi0.5 by @michel-aractingi in #2609
- docs: add auto in docs for xvla by @jadechoghari in #2645
- feat(robot): Add support for OMX robot by @Woojin-Crive in #2614
- Feat/add mj env by @nepyope in #2613
- docs: update IL robots API example and add OpenCV workaround by @cagataycali in #2648
- fix(scripts): finalize the dataset after recording by @sotanakamura in #2496
- feat(dataset): expose tolerance_s argument to training config by @imstevenpmwork in #2653
- fix(policies): add device back to smolvlm expert by @imstevenpmwork in #2662
- feat(scripts): add more info to lerobot-info by @imstevenpmwork in #2663
- docs(dataset): add visualization section by @imstevenpmwork in #2664
- chore(ci): update PR template by @imstevenpmwork in #2665
- feat(ci): simple automatic labelling by @imstevenpmwork in #2667
- chore(ci): update issue template by @imstevenpmwork in #2666
- fix(ci): better heuristic + issue type template fix by @imstevenpmwork in #2672
- fix(ci): close bracket pattern by @imstevenpmwork in #2674
- chore(ci): minor improvements auto labeling by @imstevenpmwork in #2675
- chore(ci): minor improvement bug-report template & pr auto label by @imstevenpmwork in #2676
- Add sarm by @pkooij in #2639
- feat(docs): modernize readme by @imstevenpmwork in #2660
- Fixes ReadMe Policies Classification by @fracapuano in #2682
- fix(optim): enable and resolve mypy type errors by @cverrier in #2683
- Add readme by @pkooij in #2698
- feat: support wallx model by @wut19 in #2593
- modify the README file for wallx by @wut19 in #2705
- chore: modernize contributing.md by @imstevenpmwork in #2677
- use syslink for wall-x readme by @pkooij in #2708
- pi fixes for dependencies by @pkooij in #2706
- feat(ci): adds release versioning to docs by @imstevenpmwork in #2709
- chore(ci): make keyword matching more conservative by @imstevenpmwork in #2711
- Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in #2691
- fix: use importlib.metadata for plugin discovery to support PEP 660 by @aalvan in #2687
- resolve path for RABC correctly by @pkooij in #2710
- chore: adds dynamic README handling and setup script by @imstevenpmwork in #2724
- feat(pi0): add train_expert_only and freeze_vision_encoder flags to pi0 and pi0.5 by @pxe3 in #2727
- feat(envs): Add NVIDIA IsaacLab-Arena Lerobot by @nv-sachdevkartik in #2699
- IsaacLab Arena Integration documentation update by @liorbenhorin in #2749
- chore(readme): update discord invitation link by @imstevenpmwork in #2750
- Add basic PEFT support to train script + record module by @githubnemo in #1411
- Fix invalid syntax by @pkooij in #2752
- fix a bug for kwargs in wallx by @wut19 in #2714
- docs: LightWheel to Lightwheel by @jadechoghari in #2758
- fix: precise_sleep is never called with negative value by @imstevenpmwork in #2757
- refactor(ci): Docker Hub image env by @paulinebm in #2755
- chore(dependencies): bound new dependecies by @imstevenpmwork in #2759
- add holosoma locomotion by @nepyope in #2669
- feat(visualization): allow remote viewer + compress rerun images by @imstevenpmwork in #2756
- Revert "feat(visualization): allow remote viewer + compress rerun images" by @imstevenpmwork in #2766
- feat(visualization): allow remote viewer + compress rerun images by @imstevenpmwork in #2767
- feat(robots): consolidate SO arms implementation by @imstevenpmwork in #2763
- chore(docs): update code block syntax to specify python for clarity by @imstevenpmwork in #2770
- feat(datasets): expose video codec option for dataset recording by @leot13 in #2771
- skip peft cmd test in cli by @pkooij in #2776
- feat(policies): add autoregressive VLAs with tokenization PiFast by @jadechoghari in #2734
- Fix: Respect policy.device=cpu config in training by @michel-aractingi in #2778
- docs: improve assets by @jadechoghari in #2777
- feat(robots): consolidates bi SO setups by @imstevenpmwork in #2780
- Feat/g1 improvements record sim by @nepyope in #2765
- fix(robots): add reachy2 fixes by @imstevenpmwork in #2783
- Move cfg.validate() earlier to fix NoneType error with --policy.path by @samet-rob in #2782
- fix: train tokenizer CLI entry point by @jadechoghari in #2784
- chore: use alias & constants by @imstevenpmwork in #2785
- fix(teleop): add is_connected check to get_action by @imstevenpmwork in #2801
- chore(ci): merge annoying section in PR template by @imstevenpmwork in https://git...
Release v0.4.2
What's Changed
- chore(dependencies): Bump lerobot to 0.4.2 by @imstevenpmwork in #2423
- Fixes in port droid scripts by @michel-aractingi in #2455
- Fix episode filtering bug when requesting a subset of the episodes in a dataset by @michel-aractingi in #2456
- [RTC] Real Time Chunking for Pi0, Smolvla, Pi0.5 by @helper2424 in #1698
- feat(envs): add envs pre-post processor by @jadechoghari in #2474
- Add
absolute_to_reative_idxfor remapping indices to fix delta_timestamp bug by @michel-aractingi in #2490 - docs: Add LeIsaac x LeRobot Envhub tutorial by @jadechoghari in #2498
- feat(dataset): speed-up encoding time by @imstevenpmwork in #2514
- feat(dataset): dynamic compress_level depending on the type of dataset (video or image) by @imstevenpmwork in #2517
- fix(examples): wrap all of them into a main function by @imstevenpmwork in #2524
- feat(parallel encoding): making parallel encoding the default choice over all platforms by @CarolinePascal in #2525
- fix(benchmark) : fixing video benchmark by @CarolinePascal in #2094
- feat(utils):
precise_sleep()less CPU hungry without sacrificing accuracy by @imstevenpmwork in #2526 - fix(scripts): better prints teleop by @imstevenpmwork in #2538
Full Changelog: v0.4.1...v0.4.2
Release v0.4.1
What's Changed
- chore(dependecies): Bump lerobot to 0.4.1 by @imstevenpmwork in #2299
- docs(readme): update installation instructions for 0.4.0 by @imstevenpmwork in #2310
- docs(install): improve groot and libero installation instructions by @imstevenpmwork in #2314
- fix(video_key typo): fixing video_key typo in update_video_info by @CarolinePascal in #2323
- fix(make_policy): rename mapping edge cases in training by @jadechoghari in #2332
- dep(upgrade): add libero as a pypi package by @jadechoghari in #2365
- feat(sim): EnvHub - allow loading envs from the hub by @jadechoghari in #2121
- fix(dataset_tools) Critical bug in modify features by @michel-aractingi in #2342
- fix(dataset): fix data access bottleneck for faster training by @imstevenpmwork in #2408
- chore(installation): remove libero installation patch by @imstevenpmwork in #2416
Full Changelog: v0.4.0...v0.4.1
Release v0.4.0
Release Blog
https://huggingface.co/blog/lerobot-release-v040
What's Changed
- chore: Bump to 0.3.4 by @imstevenpmwork in #1691
- chore(docs): prioritize use of entry points in docs + fix nightly badge by @imstevenpmwork in #1692
- fix(busy_wait): fix busy_wait implementation for Windows platforms by @CarolinePascal in #1695
- fix(ci): inverted names by @imstevenpmwork in #1705
- fix(ci): rename libegl1-mesa in deb13 trixie by @imstevenpmwork in #1735
- fix: Add missing dynamixel encoding table entries by @jackvial in #1534
- fix(dataset): Correctly use episode_data parameter in save_episode by @lxk-221 in #1740
- Removed dupicate lines of code by @mgiac-hexagon in #1709
- Add feetech firmware update docs by @pkooij in #1793
- Lower limits by 50% for current and torque for gripper motor by @pkooij in #1809
- Allow max_relative_target to be a float by @jstnhuang in #1837
- 2 add reachy 2 to updated lerobot by @glannuzel in #1767
- fix (koch): Disable motor torque before applying calibration logic by @Gongsta in #1889
- fix(scripts): revert deletion of rs cam config import introduced by #1767 by @imstevenpmwork in #1876
- Dataset v3 by @michel-aractingi in #1412
- Add Streaming Dataset by @fracapuano in #1613
- Update dataset card by default by @michel-aractingi in #1936
- docs(dataset): add dataset v3 documentation by @jadechoghari in #1956
- feat(processors): use pipelines across the codebase by @AdilZouitine in #1452
- small tiny nit by @fracapuano in #1975
- fix (docs): image link for phone by @pkooij in #1977
- bump gym-hil version to be pipeline compatible by @michel-aractingi in #1983
- Add docs for LeRobot Image transforms by @pkooij in #1972
- fix formatting readme by @pkooij in #1987
- bump datasets to 4.0.0 by @michel-aractingi in #1990
- fix(trainer): overrides device to the target device, for the device processor on the preprocessor by @AdilZouitine in #1993
- feat(sim): Add Libero Env by @jadechoghari in #1984
- feat(ci): add stale GH action bot for stalled issues & PRs by @imstevenpmwork in #1996
- chore(ci): update time for stale issue/pr by @imstevenpmwork in #1997
- Updated Readme removed broken link by @complete-dope in #1989
- Fix: Resolve PermissionError and UnicodeDecodeError in Python scripts by @JivinDotL in #1980
- fix(dataset): cast fps to int instead of float by @imstevenpmwork in #2001
- chore(rl): move rl related code to its directory at top level by @imstevenpmwork in #2002
- docs(rl): fix path by @imstevenpmwork in #2004
- refactor(scripts): update system info script by @imstevenpmwork in #2005
- feat(script): add entry point for dataset viz by @imstevenpmwork in #2006
- feat(script): add entry point for image transform viz by @imstevenpmwork in #2007
- chore: move constants to utils by @imstevenpmwork in #2016
- chore: move errors to utils by @imstevenpmwork in #2017
- chore(scripts): move find_cameras to scripts by @imstevenpmwork in #2018
- feat(script): add entry point for find joints limits by @imstevenpmwork in #2010
- chore(scripts): move find_port to scripts by @imstevenpmwork in #2019
- chore(scripts): move teleop to scripts by @imstevenpmwork in #2023
- chore(scripts): move record to scripts by @imstevenpmwork in #2022
- chore(scripts): move calibrate to scripts by @imstevenpmwork in #2024
- chore(scripts): move setup_motors to scripts by @imstevenpmwork in #2020
- chore(scripts): move replay to scripts by @imstevenpmwork in #2021
- chore(async): move async related code to its directory at top level by @imstevenpmwork in #2003
- chore(ci): update stale message by @imstevenpmwork in #2027
- fix(docs): update outdated links by @imstevenpmwork in #2026
- chore(utils): move benchmark and buffer to their respective modules by @imstevenpmwork in #2028
- chore(utils): move encoding utils and process to their respective modules by @imstevenpmwork in #2029
- chore(utils): remove unused utils legacy functions + rename init_rerun by @imstevenpmwork in #2031
- chore(utils): move queue utils and wandb_utils to their respective modules by @imstevenpmwork in #2030
- (docs): small change in dataset name by @jadechoghari in #2032
- chore(scripts): rename eval and train scripts by @imstevenpmwork in #2033
- chore: replace hard-coded obs values with constants throughout all the source code by @imstevenpmwork in #2037
- chore(mypy): add mypy configuration and module overrides for gradual type checking by @AdilZouitine in #2052
- chore: replace hard-coded action values with constants throughout all the source code by @imstevenpmwork in #2055
- Bug in conversion from v2.1 script by @michel-aractingi in #2057
- chore: replace hard-coded next values with constants throughout all the source code by @imstevenpmwork in #2056
- chore(utils): remove unused code by @imstevenpmwork in #2059
- Fix(train): add processor overrides with normalizer and unnormalizer stats by @AdilZouitine in #2038
- docs(fix): libero example command by @jadechoghari in #2060
- Save Cropped Dataset to Hub by @fracapuano in #2071
- Fix video concat path by @Tavish9 in #2076
- chore: remove unused code by @imstevenpmwork in #2062
- Improve V3 aggregate implementation by @Tavish9 in #2077
- chore: enable pyugrade ruff lint by @imstevenpmwork in #2084
- chore: enable simplify in ruff lint by @imstevenpmwork in #2085
- feat(normalization): add validation for empty features in NormalizerProcessorStep and UnnormalizerProcessorStep by @AdilZouitine in #2087
- Revert feat(normalization): add validation for empty features in NormalizerProcessorStep and UnnormalizerProcessorStep (#2087) by @AdilZouitine in #2089
- feat(policies): add noise parameter to action prediction methods by @AdilZouitine in #2063
- feat(train): include input and output features in processor overrides for normalization by @AdilZouitine in #2090
- fix(video_path): setting video_path to None during conversion for images datasets by @CarolinePascal in #2095
- feat(mypy): enable type checking for envs module and configure mypy settings in pyproject.toml by @AdilZouitine in #2099
- feat(mypy): configure mypy settings and add module overrides for gradual typing by @AdilZouitine in #2101
- Making Envs module pass MyPy checks by @iakhil in #2048
- Add OpenPi, Pi0 and Pi0.5 by @pkooij in #1910
- (chore) improve v3 message, allow converting local datasets to V3 by @michel-aractingi in #1948
- fix bug in
augment_dataset_quantile_stats.pythat was not detecting… by @michel-aractingi in https://github.com/hu...