Skip to content

simulo.RecordConfig

User-facing recording configuration for MCAP policy-rollout capture.

All include_* fields are Optional[bool] with None default so profile precedence can distinguish “user passed False” from “default None”. Do not edit defaults to plain bool — the silent-default mitigation depends on the tri-state.

Real usage, from the shipped cartpole_eval app’s rollout job:

record = simulo.RecordConfig(
output_path=mcap_path,
policy_checkpoint=policy_path,
robot_model="cartpole",
include_video=True,
video_fps=30,
video_bitrate="4M",
)
player.play(num_steps=num_steps, record=record)
@dataclass(frozen=True)
class RecordConfig
Field Type Default Description
output_path Union[str, 'os.PathLike[str]', Path] required
run_id Optional[str] None
policy_id Optional[str] None
policy_checkpoint Optional[str] None
environment_id Optional[str] None
scenario_id Optional[str] None
robot_model Optional[str] None
schema_version str 'simulo.policy_rollout.v1'
env_indices Sequence[int] (lambda: (0,))()
record_all_envs bool False
profile ProfileName 'standard'
record_every_n_steps int 1
include_episode_metadata Optional[bool] None
include_task_spec Optional[bool] None
include_policy_observations Optional[bool] None
include_policy_actions Optional[bool] None
include_applied_actions Optional[bool] None
include_rewards Optional[bool] None
include_reward_breakdown Optional[bool] None
include_terminations Optional[bool] None
include_events Optional[bool] None
include_robot_state Optional[bool] None
include_contacts Optional[bool] None
include_collisions Optional[bool] None
include_tf Optional[bool] None
include_sensors Optional[bool] None
include_video Optional[bool] None
include_depth Optional[bool] None
include_lidar Optional[bool] None
include_episode_summary Optional[bool] None
include_aggregate_metrics Optional[bool] None
include_per_link_tf Optional[bool] None
include_policy_command Optional[bool] None
include_policy_diagnostics Optional[bool] None
include_policy_latency Optional[bool] None
include_domain_randomization Optional[bool] None
include_annotations Optional[bool] None
include_code_version Optional[bool] None
video_encoder Literal['auto', 'nvenc', 'software', 'none'] 'auto'
video_fallback Literal['software', 'error'] 'software'
video_codec Literal['h264', 'hevc', 'av1'] 'h264'
video_bitrate Optional[str] '8M'
video_fps Optional[int] 30
video_gop Optional[int] 30
video_storage Literal['embedded', 'sidecar'] 'embedded'
include_video_foxglove_channel bool True
mcap_compression Literal['zstd', 'lz4', 'none'] 'zstd'
max_array_elements Optional[int] None
strict bool False
seed Optional[int] None
per_channel_rates Optional[Mapping[str, int]] None
code_version Optional[Mapping[str, Any]] None