diff --git a/src/lerobot/rollout/context.py b/src/lerobot/rollout/context.py index 96d8682b2..7ed8ae784 100644 --- a/src/lerobot/rollout/context.py +++ b/src/lerobot/rollout/context.py @@ -248,18 +248,13 @@ def build_rollout_context( initial_features=create_initial_features(action=action_features_hw), use_videos=cfg.dataset.video if cfg.dataset else True, ) - # Observation-side aggregation only feeds the dataset schema; skip it for - # the base strategy to avoid running observation pipelines that may have - # dataset-specific dependencies. - if cfg.dataset is not None: - observation_dataset_features = aggregate_pipeline_dataset_features( - pipeline=robot_observation_processor, - initial_features=create_initial_features(observation=observation_features_hw), - use_videos=cfg.dataset.video, - ) - dataset_features = combine_feature_dicts(action_dataset_features, observation_dataset_features) - else: - dataset_features = action_dataset_features + # Observation-side aggregation is needed because of build_dataset_frame + observation_dataset_features = aggregate_pipeline_dataset_features( + pipeline=robot_observation_processor, + initial_features=create_initial_features(observation=observation_features_hw), + use_videos=cfg.dataset.video if cfg.dataset else True, + ) + dataset_features = combine_feature_dicts(action_dataset_features, observation_dataset_features) hw_features = hw_to_dataset_features(observation_features_hw, "observation") raw_action_keys = list(robot.action_features.keys()) policy_action_names = getattr(policy_config, "action_feature_names", None) diff --git a/src/lerobot/scripts/lerobot_rollout.py b/src/lerobot/scripts/lerobot_rollout.py index 566bf7922..cab63a920 100644 --- a/src/lerobot/scripts/lerobot_rollout.py +++ b/src/lerobot/scripts/lerobot_rollout.py @@ -69,23 +69,35 @@ from lerobot.cameras.realsense import RealSenseCameraConfig # noqa: F401 from lerobot.cameras.zmq import ZMQCameraConfig # noqa: F401 from lerobot.configs import parser from lerobot.robots import ( # noqa: F401 + Robot, + RobotConfig, bi_openarm_follower, bi_so_follower, + earthrover_mini_plus, + hope_jr, koch_follower, + omx_follower, + openarm_follower, + reachy2, so_follower, - unitree_g1, + unitree_g1 as unitree_g1_robot, ) from lerobot.rollout.configs import RolloutConfig from lerobot.rollout.context import build_rollout_context from lerobot.rollout.strategies import create_strategy from lerobot.teleoperators import ( # noqa: F401 + Teleoperator, + TeleoperatorConfig, bi_openarm_leader, bi_so_leader, + homunculus, koch_leader, + omx_leader, openarm_leader, openarm_mini, + reachy2_teleoperator, so_leader, - unitree_g1 as unitree_g1_teleop, + unitree_g1, ) from lerobot.utils.import_utils import register_third_party_plugins from lerobot.utils.process import ProcessSignalHandler