Skip to content

Physics Prediction

Physics prediction component — Genesis-backed simulation with pure-Python fallback.

Cluster: Physical AI | Type: component | MCP Tools: None

Overview

Backend fidelity

Without genesis-world, Genesis-specific operations fail closed and the component uses pure-Python fallback dynamics. The fallback is useful for estimates and tests, not safety-critical physics prediction.

Physics simulation and prediction engine for articulated robots and rigid-body scenes. Implements forward dynamics, contact force estimation, material property lookup, trajectory generation, and stability scoring using a pure-Python backend by default, with optional Genesis solver backends (rigid, MPM, SPH, FEM) for high-fidelity simulation. Supports URDF robot loading and multi-solver scene generation when Genesis is available.

When to use:

  • Estimating joint trajectories and contact forces before simulated or human-reviewed physical planning
  • Assessing breakage probability or stack stability before a manipulation step
  • Generating interpolated waypoint trajectories for robot motion planning
  • Discovering backend availability before execution via source_capabilities and source_health

Fallback outputs use the canonical envelope: completion_state: qualified-draft, degraded: true, a warning_card, and top-level evidence. Physics prediction and simulation results (trajectories, stability, contact force, breakage, risk, generated scenes/trajectories, articulated/stepped state) are always completion_state: qualified-draft: a model output is a prediction, never self-certified as externally-validated ground truth (S-P0-1). Only non-prediction discovery/metadata/lifecycle ops (get_info, reset, source_capabilities, source_health, material get/set) use completion_state: verified. Failures/refusals are surfaced as blocked-escalated by response wrappers such as MCP. predict_outcome discloses its breakage model as linear_force_ratio with uncalibrated_heuristic confidence metadata.

Example:

from mvp.physics_prediction import PhysicsPredictionBlock, PhysicsPredictionInput

block = PhysicsPredictionBlock(name="physics")
result = block.infer(PhysicsPredictionInput(
    op="predict_trajectory",
    initial_state=[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
    forces=[[0.0, 0.0, -9.81]] * 20,
    steps=20,
    dt=0.05,
))
# result.value.predicted_trajectory → list of state vectors

Works well with: motor_control, mesh3d, sensory_fusion

Public API

PhysicsPredictionBlock(AIBlock[PhysicsPredictionInput, PhysicsPredictionOutput, dict])

Field Type Default
name str 'physics_prediction'
state dict field(default_factory=dict)
resource_bounds ResourceBounds field(default_factory=ResourceBounds)
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

infer(data: PhysicsPredictionInput) -> Result[PhysicsPredictionOutput]

PhysicsPredictionInput

Field Type Default
op PHYSICS_OPS 'get_info'
links list[dict] field(default_factory=list)
joint_angles list[float] field(default_factory=list)
joint_velocities list[float] field(default_factory=list)
joint_torques list[float] field(default_factory=list)
dt float 0.01
steps int 10
object_class str ''
action_type str ''
force_vector list[float] field(default_factory=list)
objects list[dict] field(default_factory=list)
penetration_depth float 0.0
relative_velocity float 0.0
material str ''
material_name str ''
material_properties dict field(default_factory=dict)
breakage_force_n float 50.0
initial_state list[float] field(default_factory=list)
forces list[list[float]] field(default_factory=list)
gravity list[float] field(default_factory=list)
safety_critical bool False
metadata dict field(default_factory=dict)
robot_urdf_path str ''
robot_description dict field(default_factory=dict)
robot_name str 'robot'
scene_config dict field(default_factory=dict)
scene_prompt str ''
solver str ''
start_joints list[float] field(default_factory=list)
end_joints list[float] field(default_factory=list)
n_waypoints int 10
interpolation str 'linear'
densify bool False
steps_per_waypoint int 10

PhysicsPredictionOutput

Field Type Default
op str ''
completion_state str 'qualified-draft'
degraded bool False
warning_card dict \| None None
evidence dict field(default_factory=dict)
request_id str ''
task_id str ''
run_id str ''
positions list field(default_factory=list)
velocities list field(default_factory=list)
accelerations list field(default_factory=list)
contact_force float 0.0
breakage_probability float 0.0
stability_score float 0.0
predicted_trajectory list field(default_factory=list)
risk_assessment dict field(default_factory=dict)
material_properties dict field(default_factory=dict)
joint_forces list field(default_factory=list)
metadata dict field(default_factory=dict)
scene_config dict field(default_factory=dict)
robot_state dict field(default_factory=dict)
solvers_active list[str] field(default_factory=list)
genesis_available bool False
waypoints list[list[float]] field(default_factory=list)
trajectory_time_series list[list[float]] field(default_factory=list)