FlowMo-WM / experiments /shared /src /methods.py
cccat6's picture
Initial FlowMo-WM public code release
604e535 verified
raw
history blame
3.2 kB
"""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.",
),
"physics_mpc_no_flow": MethodSpec(
name="physics_mpc_no_flow",
display_name="Physics MPC No-Flow",
category="B_traditional_controller",
kind="traditional_controller",
role="planning_baseline",
notes="Classical controller without external-flow compensation.",
),
"current_estimator_mpc": MethodSpec(
name="current_estimator_mpc",
display_name="Current-Estimator MPC",
category="B_traditional_controller",
kind="traditional_controller",
role="planning_baseline",
notes="Classical controller using recent image-pose drift estimate.",
),
"oracle_flow_mpc": MethodSpec(
name="oracle_flow_mpc",
display_name="Oracle-Flow MPC",
category="B_traditional_controller",
kind="traditional_controller",
role="oracle_planning_upper_bound",
notes="Oracle controller with true local flow; used only as a planning upper/reference 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