Downloads · 30 days
0
YuhaiW/prism-jepa-red-cube-arx
prism-jepa-red-cube-arx is a robotics model from YuhaiW. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as apache-2.0.
Complete deployable stack for goal-conditioned visuomotor planning on the ARX-X5 "red cube" task: the LeWM JEPA world model + the PRISM goal-conditioned action prior + self-contained PRISM-MPPI inference code.
Downloads · 30 days
0
Access
Public
Updated May 26, 2026
Repo size
74.7 MB
Likes
0
Public
Click a slice to open those files.
.ckpt72.4 MB · 97%
From the Hugging Face model README
Complete deployable stack for goal-conditioned visuomotor planning on the ARX-X5 "red cube" task: the LeWM JEPA world model + the PRISM goal-conditioned action prior + self-contained PRISM-MPPI inference code.
This is a research artifact / deployment hand-off package, NOT a validated policy.
Xia-2004/red_cube, 42,165 frames, 5-DoF).docs/30_red_cube_cv_investigation_and_prism.md.| file | description |
|---|---|
lewm_red_cube_epoch_100_object.ckpt | LeWM world model — pickled JEPA: ViT-tiny encoder + AR transformer predictor + action encoder (~18M params) |
prior_head_red_cube.pt | PRISM goal-conditioned action prior — state_dict + config + action StandardScaler (mean/scale) |
arx_inference_demo.py | self-contained PrismMPPIInference (PoG-fused PRISM-MPPI; use_prism=False → vanilla LeWM-MPPI) |
jepa.py, module.py, prior_head.py | model classes required to unpickle the ckpt and run the prior |
camera_third).[dx, dy, dz, dyaw, d_gripper], raw units, one per
control tick. plan() returns one plan-step = A_block = 5 ticks → shape (5, 5).torch, numpy, einops, and transformers (the encoder inside the ckpt is a HuggingFace
ViT, needed at unpickle time). The three bundled .py files must be importable from the
working directory. (If unpickling complains about a missing class, also pip install stable-pretraining.)
from arx_inference_demo import PrismMPPIInference
planner = PrismMPPIInference(
lewm_ckpt = "lewm_red_cube_epoch_100_object.ckpt",
prior_ckpt = "prior_head_red_cube.pt",
use_prism = True, # True = PRISM (prior ⊗ MPPI via PoG fusion); False = vanilla LeWM-MPPI
device = "cuda",
)
goal_img = load_goal_image() # (224,224,3) uint8 — the task goal image
while not done:
obs = camera.read() # (224,224,3) uint8, top-down camera_third view
actions = planner.plan(obs, goal_img) # (5, 5) raw [dx,dy,dz,dyaw,d_gripper]
for a in actions: # receding horizon: execute the block, then replan
robot.execute(a) # (or execute fewer than 5 and replan more often)
plan() runs one full PRISM-MPPI optimization and returns the first A_block = 5 env-step
actions of the optimized plan, in raw action units (already de-normalized).
PrismMPPIInference constructor)| arg | default | meaning |
|---|---|---|
H | 5 | planning horizon (plan-steps) |
A_block | 5 | env-steps (ticks) per plan-step ("frameskip") |
K | 128 | MPPI samples per iteration |
n_iters | 30 | MPPI refinement iterations |
var_scale | 1.0 | initial planner sampling std |
prior_sigma_scale | 2.0 | multiplier on the prior σ before PoG fusion (PRISM only) |
temperature | 0.5 | MPPI softmax temperature |
history_size | 3 | LeWM history-window length (must match training) |
H, A_block, A_raw, history_size must match the checkpoints — the constructor asserts
the prior head's config agrees. Change them only if you retrain.
Build a second planner with use_prism=False for a baseline (plain LeWM-MPPI, no prior,
same encoder/predictor/MPPI loop). On this task PRISM produces more expert-like actions;
vanilla tends to wander because the cost surface is flat.
Data: Xia-2004/red_cube (ARX-X5
left-arm teleop). Sibling of Xia-2004/arx-left-cube. World-model architecture is identical
to the sim LeWM (ViT-tiny, embed_dim 192, predictor depth 6 / heads 16) — part of the
PRISM-JEPA project (sister of Newt-PRISM, CoRL 2026).