| """Method registry for paper-facing experiments.""" |
|
|
| from __future__ import annotations |
|
|
| from dataclasses import dataclass |
|
|
|
|
| @dataclass(frozen=True) |
| class MethodSpec: |
| name: str |
| display_name: str |
| category: str |
| kind: str |
| role: str |
| notes: str |
|
|
|
|
| METHODS: dict[str, MethodSpec] = { |
| "flowmo": MethodSpec( |
| name="flowmo", |
| display_name="FlowMo", |
| category="A_learned_world_model", |
| kind="learned_world_model", |
| role="proposed", |
| notes="Proposed flow-momentum world model with short state history, long drift context, and zero-context residual transition.", |
| ), |
| "leworldmodel": MethodSpec( |
| name="leworldmodel", |
| display_name="LeWorldModel", |
| category="A_learned_world_model", |
| kind="learned_world_model", |
| role="external_style_baseline", |
| notes="JEPA-like latent predictor under the shared clean-image rollout protocol.", |
| ), |
| "planet": MethodSpec( |
| name="planet", |
| display_name="PlaNet RSSM", |
| category="A_learned_world_model", |
| kind="learned_world_model", |
| role="external_style_baseline", |
| notes="Recurrent state-space dynamics world model under the shared clean-image rollout protocol.", |
| ), |
| "tdmpc2": MethodSpec( |
| name="tdmpc2", |
| display_name="TD-MPC2 Dynamics", |
| category="A_learned_world_model", |
| kind="learned_world_model", |
| role="external_style_baseline", |
| notes="Latent dynamics world model under the shared clean-image rollout protocol.", |
| ), |
| "pid_los_controller": MethodSpec( |
| name="pid_los_controller", |
| display_name="PID/LOS controller", |
| category="B_traditional_controller", |
| kind="traditional_controller", |
| role="planning_baseline", |
| notes="Classical image-pose-based line-of-sight controller for downstream planning comparison.", |
| ), |
| "no_flow_los_controller": MethodSpec( |
| name="no_flow_los_controller", |
| display_name="No-Flow LOS Controller", |
| category="B_traditional_controller", |
| kind="traditional_controller", |
| role="planning_baseline", |
| notes="Classical controller without external-flow compensation.", |
| ), |
| "current_estimator_los_controller": MethodSpec( |
| name="current_estimator_los_controller", |
| display_name="Current-Estimator LOS Controller", |
| category="B_traditional_controller", |
| kind="traditional_controller", |
| role="planning_baseline", |
| notes="Classical controller using recent image-pose drift estimate.", |
| ), |
| "oracle_flow_los_controller": MethodSpec( |
| name="oracle_flow_los_controller", |
| display_name="Oracle-Flow LOS Controller", |
| category="B_traditional_controller", |
| kind="traditional_controller", |
| role="oracle_flow_reference", |
| notes="Line-of-sight controller with true local flow feed-forward; this is a reference controller, not a full dynamics MPC upper bound.", |
| ), |
| } |
|
|
|
|
| PAPER_LEARNED_METHODS = [name for name, spec in METHODS.items() if spec.category == "A_learned_world_model"] |
| TRADITIONAL_METHODS = [name for name, spec in METHODS.items() if spec.kind == "traditional_controller"] |
|
|
|
|
| def display_name(method: str) -> str: |
| return METHODS[method].display_name |
|
|