Refactor processing architecture to use RobotProcessor

- Replaced instances of RobotPipeline with RobotProcessor across the codebase for improved modularity and clarity.
- Introduced ProcessorStepRegistry for better management of processing steps.
- Updated relevant documentation and tests to reflect the new processing structure.
- Enhanced the save/load functionality to support the new processor design.
- Added a model card template for RobotProcessor to facilitate sharing and documentation.
This commit is contained in:
Adil Zouitine
2025-07-03 14:11:28 +02:00
parent 62caaf07b0
commit 9aa632968f
8 changed files with 960 additions and 89 deletions
+3 -3
View File
@@ -40,7 +40,7 @@ from lerobot.policies.factory import (
from lerobot.policies.normalize import Normalize, Unnormalize
from lerobot.policies.pretrained import PreTrainedPolicy
from lerobot.processor.observation_processor import ObservationProcessor
from lerobot.processor.pipeline import RobotPipeline, TransitionIndex
from lerobot.processor.pipeline import RobotProcessor, TransitionIndex
from lerobot.utils.random_utils import seeded_context
from tests.artifacts.policies.save_policy_to_safetensors import get_policy_stats
from tests.utils import DEVICE, require_cpu, require_env, require_x86_64_kernel
@@ -186,9 +186,9 @@ def test_policy(ds_repo_id, env_name, env_kwargs, policy_name, policy_kwargs):
observation, _ = env.reset(seed=train_cfg.seed)
# apply transform to normalize the observations
obs_pipeline = RobotPipeline([ObservationProcessor()])
obs_processor = RobotProcessor([ObservationProcessor()])
transition = (observation, None, None, None, None, None, None)
processed_transition = obs_pipeline(transition)
processed_transition = obs_processor(transition)
observation = processed_transition[TransitionIndex.OBSERVATION]
# send observation to device/gpu