This model emits absolute Cartesian poses and requires inverse kinematics on the robot.
The joint-space counterpart — same 50 takes, no IK needed — is
Dimios45/yam-pick-duster-bspline-joint.
The pair exists to compare action spaces on identical demonstrations.
rotation_rep: rotation_6d with abs_action: True, so _convert_actions expands the 7-D raw
action to 10-D. infer_action_meta resolves this to single_yam_rot6d (verified on the
published checkpoint).
Network output is (16, 11): column 0 is the knot vector in units of 10 Hz frames,
columns 1–10 are control points.
Files
file
size
use
deploy_ema.ckpt
426 MB
Inference. EMA weights only.
epoch0600_full.ckpt
1.5 GB
model + ema_model + optimizer, for resuming/fine-tuning.
These numbers are not comparable to the joint-space model's: different action space, units,
and normalizer. Only the shape of each curve is meaningful on its own.
Actions are decoded to arm_pos + arm_quat (from rot6d) + gripper and resolved by the
pyroki velocity-IK step in yam_server at 100 Hz. This is the upstream single_yam_rot6d
path, so no joint-space patches are needed for the action decoding itself — but the
top_image camera still has to be wired into real_env.get_obs, since upstream RealEnv
only populates wrist_image and a missing RGB key is silently replaced with a black frame
rather than raising.
Flags that are not optional
flag
value
why
--origin-time-scale
10
Knots are in data-frame units; must equal the training rate. This dataset is 10 Hz — the joint-space counterpart is 25 Hz, so do not copy this flag between the two models. Using 25 here runs the arm at 2.5× speed.
Must exceed inference latency or the arm stalls between chunks.
A 16-knot chunk spans ~1.1 s at 10 Hz, so this model replans ~2.5× less often than the
joint-space one.
Known kinematic caveat
The dataset card states these poses were computed from MuJoCo and disagree with
bspline-policy's pyroki/URDF by up to ~9 mm. At deploy the IK will chase a target frame
offset from the one the policy was trained against, so expect a systematic positional bias.
The TCP frame is the flange origin with a fixed 90° z-rotation, ~13.5 cm from the actual grasp
point. Resolve the frame mismatch before trusting fine manipulation, or use the joint-space
model, which sidesteps kinematics entirely.
Do not mix this data with yam_server-recorded episodes without resolving that discrepancy.
Cameras and gripper
Trained uncropped (RAW 640×480 → 84×84); reproduce that exactly at deployment. Gripper is
0 = open, 1 = closed — verify on hardware first (see the
joint-space card for the
one-line check).
Give this task config a cache_suffix distinct from the joint-space run's, or it will silently
load the other run's zarr cache.
Citation
bibtex
1@article{han2026b,
2 title={B-spline Policy: Accelerating Manipulation Policies via B-spline Action Representations},
3 author={Han, Xiaoshen and Xiong, Haoyu and Chen, Haonan and Liu, Chaoqi and
4 Torralba, Antonio and Zhu, Yuke and Du, Yilun},
5 journal={arXiv preprint arXiv:2607.09648},
6 year={2026}
7}