RoboLab det10 β€” direct action policy (0.8B LoRA)

LoRA adapter turning Qwen/Qwen3.5-0.8B into a manipulation policy for RoboLab / Isaac Sim. Trained by behaviour cloning on GGOSinon/robolab-det10.

The target is the action alone. Trained as the paired twin of GGOSinon/det10-reason-08b on identical rows, so the two isolate the effect of reasoning.

Loading

from transformers import AutoModelForImageTextToText, AutoProcessor
from peft import PeftModel

base = "Qwen/Qwen3.5-0.8B"
model = AutoModelForImageTextToText.from_pretrained(base, dtype="bfloat16", device_map="cuda")
model = PeftModel.from_pretrained(model, "GGOSinon/det10-direct-08b")
proc  = AutoProcessor.from_pretrained(base)

Or serve it:

vllm serve Qwen/Qwen3.5-0.8B --enable-lora --max-lora-rank 32 \
  --lora-modules policy=GGOSinon/det10-direct-08b --limit-mm-per-prompt '{"image": 2}'

Prompt format β€” this matters

The policy was trained on one exact layout. A mismatch does not raise an error; the model returns prose or a different schema and it looks like a broken policy. Two images, 392x221, over-shoulder first then wrist, and enable_thinking=False.

Instruction: {task instruction}
State: {"tcp_xyz": [x, y, z], "tcp_quat": [w, x, y, z], "jaw_m": 0.08}
Return the end-effector displacement in mm relative to the current pose, the end orientation and the jaw state (open/close), as JSON.

Expected reply:

{"d_mm":[12.3,-4.5,-8.1],"quat":[0.0,1.0,0.0,0.0],"jaw":"open"}

d_mm is the end-effector displacement in millimetres relative to the current pose -- not an absolute waypoint. An earlier version of this data used absolute coordinates and the model learned to echo the input state, scoring exactly the hold-still baseline while looking healthy by loss.

Measured behaviour

metric this adapter its twin
held-out position error, greedy 36.3 mm 46.0 mm
best-of-64 sampled (T=1.0) 5.9 mm 3.7 mm
jaw accuracy 97.0% 97.0%
hold-still baseline 61.9 mm 61.9 mm

Closed-loop success on a 4-task RoboLab subset was 1/48 at 12 envs/task with greedy decoding. These policies reach the right vicinity and time grasps correctly but place the gripper ~36-46 mm from the expert, against the few millimetres a grasp needs.

The useful finding is the gap between the two rows. Greedy decoding is 24-40 mm off while the nearest of 64 samples is 3.7-5.9 mm off, so the expert action is inside the policy's sampled support and the failure is mode selection, not missing knowledge. The untrained base model cannot produce a valid action at all (it echoes the input state schema), so that coverage is something the fine-tuning built. This is the regime where RL with an action-distance reward has gradient to work with.

Limitations

  • Trained only on successful scripted demonstrations from 88 RoboLab tasks; no real-robot data.
  • Per-task depth is uneven -- 32 tasks have 10 episodes, 6 have one.
  • Step 0 of every training episode is near-stationary (median 0.36 mm), so the policy emits a sub-millimetre first command. If your controller rejects small commands as no-ops, that is an absorbing state -- disable the guard or span more than one chunk.
Downloads last month
14
Video Preview
loading

Model tree for GGOSinon/det10-direct-08b

Adapter
(686)
this model