Kinetic BC Pick/Place Policy
A lightweight, standalone behavior-cloning policy for tabletop pick-and-place in simulation. Trained inside the Kinetic modular VLA stack, but this checkpoint runs on its own — pure numpy + safetensors, no framework needed.
- Size: ~25 KB (2-layer MLP, 16 → 256 → 7, tanh)
- Standalone success: 0.90 on randomized sim scenes (40 episodes)
- Task: pick-bottle / place-cup on a randomized tabletop
- Trained on: 5,924 transitions from a heuristic expert (behavior cloning)
What "standalone" means here
The policy is closed-loop and object-relative: each control tick it takes the current end-effector position, the target object's position, the gripper state, and a subtask one-hot, and predicts the absolute EE target (as an offset from the object). No hand-coded controller is in the action path — the weights drive.
Usage
pip install numpy safetensors
from inference import KineticBCPolicy
pol = KineticBCPolicy("model.safetensors")
out = pol.act(
ee_xyz=[0.30, 0.0, 0.90], # current end-effector xyz
target_obj_xyz=[0.45, 0.10, 0.78], # detected object xyz
gripper_open=1.0, # 1.0 open, 0.0 closed
subtask="reach", # see subtask list below
)
# {'ee_target_xyz': [...], 'rpy': [...], 'gripper': 0.98}
Call act() every control tick, send ee_target_xyz to your IK/controller, and
drive gripper open/closed. Sequence subtasks with your own planner.
I/O
| Input (16) | ee_xyz(3), target_obj_xyz(3), gripper_open(1), subtask_onehot(9) |
| Output (7) | xyz_offset(3), rpy(3), grip_logit(1) |
| Decode | ee_target_xyz = target_obj_xyz + xyz_offset; gripper = 0.5 + 0.5*tanh(grip_logit) |
Subtasks: locate, navigate, reach, grasp, lift, return_to_user, release, retreat, place
Limitations
- Sim only. Trained and evaluated in Kinetic's mock sim; not validated on hardware.
- Distilled from a heuristic expert — it imitates a hand-coded controller, so it inherits that ceiling; it is not learned from real demonstrations.
- Single object type per scene (bottle / cup); no vision encoder — consumes object positions from an upstream detector.
- 0.90 success ≠ 1.0: expect occasional missed grasps on hard randomizations.
License
Apache-2.0. See the Kinetic repo.