Skip to page content
SAVRN
Search Plan a project

Open-weight model · Robotics

CAMP-RMBench-Checkpoints

by Kuancheng Wang harrywang01/CAMP-RMBench-Checkpoints

CAMP-RMBench-Checkpoints is an open-weight model for robotics from Kuancheng Wang, released under MIT License. Its published files total 10.7 GB.

CAMP (Compressed Action Memory Policy) gives a visuomotor policy a behavioral memory.

Parameters—
Context—
Weights10.3 GB
Licensemit
AccessOpen weights
Monthly Downloads—

Model Card

By Kuancheng Wang, published under mit, revision 46824ced7fb6.

CAMP (Compressed Action Memory Policy) gives a visuomotor policy a behavioral memory. A recurrent memory is pretrained to reconstruct a compressed (DCT) summary of the robot's own past actions, so its hidden state has to encode what the robot already did; a Diffusion Policy is then conditioned on that state. This lets the policy track task progress and learn from its own failed attempts, which a memoryless policy cannot do when the current image does not determine the next action. This repository holds the CAMP policies for all nine tasks of RMBench, a memory-dependent bimanual manipulation benchmark built on RoboTwin 2.0 (Aloha-AgileX dual-arm robot). Every policy is trained from the…

Read Kuancheng Wang's full model card

CAMP on RMBench

Remember what you did?
Learning Behavioral Memories for Partially Observable Object Manipulation

Kuancheng Wang, Seungho Yeom, Jinglin Cao, Yuheng Zhi, Nikhil Shinde, Michael Yip

CAMP (Compressed Action Memory Policy) gives a visuomotor policy a behavioral memory. A recurrent memory is pretrained to reconstruct a compressed (DCT) summary of the robot's own past actions, so its hidden state has to encode what the robot already did; a Diffusion Policy is then conditioned on that state. This lets the policy track task progress and learn from its own failed attempts, which a memoryless policy cannot do when the current image does not determine the next action.

This repository holds the CAMP policies for all nine tasks of RMBench, a memory-dependent bimanual manipulation benchmark built on RoboTwin 2.0 (Aloha-AgileX dual-arm robot). Every policy is trained from the official RMBench demonstrations (TianxingChen/RMBench, demo_clean, 50 per task) and evaluated with RMBench's own protocol. The files contain inference weights only.

Results

Success rate over 100 test episodes per task. We follow RMBench's evaluation protocol: the demo_clean configuration, test seeds from 100000 that the scripted expert can solve, and the per-task step limit.

Task Memory needed for Step limit Success
rearrange_blocks task progress 700 100%
blocks_ranking_try learning from failure 3500 100%
put_back_block task progress 500 100%
battery_try learning from failure 1000 97%
swap_T task progress 600 24%
swap_blocks task progress 1000 19%
cover_blocks task progress 1500 17%
observe_and_pickup a past observation 250 9%
press_button counting 1500 5%

Tasks

Each preview is a demonstration by RMBench's scripted expert: the first of the 50 released demonstrations of the task, re-rendered so each task and its success condition can be seen clearly. It is filmed from the head camera the policy is trained on, with the same pose and field of view, at 1920×1440 instead of 320×240. Every preview passes the task's success check. Long demos are sped up to at most about 24 s. The observe_and_pickup preview holds the first frame and plays at half speed, because the target is visible for only that one frame. The full-resolution MP4 files are in previews/. Success rates in the table above come only from the 100-episode policy evaluations.

rearrange_blocks: 100%

Two blocks sit on mats next to a button, and one mat is empty. The robot moves the first block onto the empty mat and presses the button. It then moves the second block off its mat to the spot between the mats.

  • Memory: whether the button has already been pressed. The scene looks the same before and after the press.
  • Success: the first block is within 3 cm of the target mat and the second block within 3 cm of the spot between the mats. The button has been pressed exactly once and the gripper is open.

blocks_ranking_try: 100%

Three colored cubes stand in a row in a random order, next to a check button. The robot does not know the target order. It presses the button to test the current arrangement. If the arrangement is rejected, it swaps two cubes and tests again, working through the orders until the button accepts one.

  • Memory: which arrangements have already been tried and rejected. Repeating a rejected arrangement never succeeds, and the scene does not show the history.
  • Success: the three cubes stand next to each other in the correct left-to-right order and the button has been pressed.

put_back_block: 100%

A block starts on a mat. The robot moves the block to the center of the table and presses the button. It then puts the block back on the mat it came from.

  • Memory: the mat the block started on. Once the block is in the center, the image no longer shows where it came from.
  • Success: the button has been pressed once with the block in the center. The block then rests within 3 cm of its original mat and the gripper is open.

battery_try: 97%

Two batteries must go into a slot whose correct polarity is hidden. The dashboard needle shows whether the current combination is correct. If it is not, the robot takes a battery out and re-inserts it the other way round.

  • Memory: which orientations have already been tried.
  • Success: both batteries are seated in the slot in the correct orientation and the dashboard turns on.

swap_T: 24%

Two T-shaped blocks lie on the table. The robot picks them up and places each one at the other's initial position and orientation.

  • Memory: both initial poses. Once the robot moves a block, its original pose is no longer visible.
  • Success: each block is within 2.5 cm and 15° of the other block's initial pose, both are resting on the table, and both grippers are open.

swap_blocks: 19%

Two blocks are in two of three trays. The robot may move one block at a time and each tray holds at most one block. It swaps the two blocks using the spare tray as a buffer, then presses the button.

  • Memory: where each block started and which step of the three-move swap comes next.
  • Success: each block is inside the tray the other block started in, the button has been pressed once and the gripper is open.

cover_blocks: 17%

A red, a green and a blue block are arranged randomly together with three identical lids. The robot covers the blocks from left to right. Then it lifts the lids again in the order red, green, blue.

  • Memory: which block is under which lid. The lids are identical, so the colors are hidden once covered.
  • Success: the covering and uncovering sequence matches the required order exactly, with no wrong lid lifted.

observe_and_pickup: 9%

A target object is shown on a shelf. A wall then drops in front of the shelf and hides it. The robot must pick up the matching object from several distractors on the table.

  • Memory: the target object's identity. During the evaluation it is visible only in the first frame, before the robot moves.
  • Success: the arms stay still while the target is shown, and the correct object is then lifted off the table.
  • Note: this is the only task whose memory uses every frame (action subsampling 1 instead of 4). Otherwise the single frame that shows the target would be skipped.

press_button: 5%

Two number cards lie on the table. The robot presses the left button as many times as the left card shows and the middle button as many times as the right card shows, then presses the right button to confirm.

  • Memory: how many presses each button has received so far. A button looks the same after every press.
  • Success: both press counts match the cards exactly and the confirm button has been pressed.

Files

<task>/
├── policy.ckpt              # CAMP policy: EMA weights of the memory-conditioned Diffusion Policy + resolved config
└── memory/
    ├── best_model.pt        # Stage-1 behavioral-memory LSTM (weights + architecture args)
    └── normalizer.pt        # its input normalizer
previews/<task>.gif | .mp4   # expert demonstrations shown above (1920×1440 MP4)

The checkpoints hold only what inference needs. There is no optimizer or scheduler state and no training bookkeeping.

Training recipe

Data the 50 RMBench demonstrations per task (demo_clean)
Observation head camera 240×320 (random crop 216×288) and the 14-D joint state; n_obs_steps = 1
Action 14-D absolute joint targets in 8-step chunks, normalized to a per-joint range
Stage 1: memory LSTM (hidden 128) pretrained to reconstruct the DCT coefficients of its past actions; action subsampling 4 (1 for observe_and_pickup)
Stage 2: policy Diffusion Policy conditioned on the memory through a 32-D projection. The memory is frozen for 400 epochs, then memory and policy are finetuned jointly (200 epochs; 600 for put_back_block)
Augmentation joint noise 0.01, image noise 0.02, brightness and contrast jitter 0.15
Checkpoint the best of the evaluated epochs per task (every 100 epochs)

Usage

Evaluation code, training launcher and full instructions are in the RMBench section of the CAMP repository. To evaluate one task on the 100 standard test seeds:

git clone --recurse-submodules https://github.com/KuanchengWang/CAMP.git && cd CAMP
./docker_run.sh build && docker build -f docker/Dockerfile.rmbench -t camp-rmbench:latest .
git clone https://github.com/RoboTwin-Platform/RMBench ~/rmbench && (cd ~/rmbench && bash script/_download_assets.sh)

huggingface-cli download harrywang01/CAMP-RMBench-Checkpoints --local-dir ckpts/hf
T=swap_T
mkdir -p ckpts/stage2/$T/checkpoints ckpts/stage1/$T
cp ckpts/hf/$T/policy.ckpt ckpts/stage2/$T/checkpoints/policy.ckpt
cp ckpts/hf/$T/memory/*    ckpts/stage1/$T/

export RMBENCH=~/rmbench STAGE1=$PWD/ckpts/stage1 STAGE2=$PWD/ckpts/stage2 EVAL_OUT=$PWD/data/rmbench_eval
E=scripts/rmbench/eval
$E/docker_rmbench.sh python /workspace/$E/rmbench_eval.py seeds --task $T               # the 100 expert-solvable test seeds
$E/docker_rmbench.sh python /workspace/$E/rmbench_eval.py eval  --task $T --ckpt policy  # -> data/rmbench_eval/results/$T/policy/results.json

To retrain a task from the official demonstrations with the same settings, run bash scripts/rmbench/train_rmbench.sh <task> inside the camp container.

Citation

If you find CAMP useful, please cite:

@misc{wang2026rememberdidlearningbehavioral,
      title={Remember what you did?: Learning Behavioral Memories for Partially Observable Object Manipulation},
      author={Kuancheng Wang and Seungho Yeom and Jinglin Cao and Yuheng Zhi and Nikhil Shinde and Michael Yip},
      year={2026},
      eprint={2606.21188},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2606.21188},
}

The tasks, demonstrations and evaluation protocol come from RMBench:

@article{chen2026rmbench,
  title={RMBench: Memory-Dependent Robotic Manipulation Benchmark with Insights into Policy Design},
  author={Chen, Tianxing and Wang, Yuran and Li, Mingleyang and Qin, Yan and Shi, Hao and Li, Zixuan and Hu, Yifan and Zhang, Yingsheng and Wang, Kaixuan and Chen, Yue and others},
  journal={arXiv preprint arXiv:2603.01229},
  year={2026}
}

Identity and Version

Repository
harrywang01/CAMP-RMBench-Checkpoints
Publisher
Kuancheng Wang
Task
Robotics
Modality
Control
Library
Not stated by the source
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
46824ced7fb60bbfd820b6955de75f1aced511ef
First published
2026-09-24
Last updated
2026-09-27

Files and Weights

47 files, 10.7 GB in total. The weights are 27 files totalling 10.3 GB in ckpt, pt.

Weights27 files · 10.3 GB
Documentation1 file · 12.9 KB
Other18 files · 339.8 MB
Repository1 file · 2.7 KB
Every file
FileTypeSizeSHA-256
battery_try/memory/best_model.ptWeights48.7 MB db86f9fc2b07
battery_try/memory/normalizer.ptWeights8.3 KB 4abe1b4094c5
battery_try/policy.ckptWeights1.1 GB a40d19b37bfb
blocks_ranking_try/memory/best_model.ptWeights48.8 MB 7303dc7bbaab
blocks_ranking_try/memory/normalizer.ptWeights8.3 KB ea4fc34749c8
blocks_ranking_try/policy.ckptWeights1.1 GB 15c08f777612
cover_blocks/memory/best_model.ptWeights48.7 MB 310eefdf1527
cover_blocks/memory/normalizer.ptWeights8.3 KB cd9b1c7ea6f5
cover_blocks/policy.ckptWeights1.1 GB fbf68fe509ff
observe_and_pickup/memory/best_model.ptWeights48.7 MB 28e9d0cbde52
observe_and_pickup/memory/normalizer.ptWeights8.3 KB bd157c67c3df
observe_and_pickup/policy.ckptWeights1.1 GB cdaa20569b78
press_button/memory/best_model.ptWeights48.7 MB cdad186e5d9f
press_button/memory/normalizer.ptWeights8.3 KB 73c6a817fc6b
press_button/policy.ckptWeights1.1 GB 70c7559de1fc
put_back_block/memory/best_model.ptWeights48.7 MB 2192a1ae0ac0
put_back_block/memory/normalizer.ptWeights8.3 KB 22ded27b555e
put_back_block/policy.ckptWeights1.1 GB 36f2040334fb
rearrange_blocks/memory/best_model.ptWeights48.7 MB d6514124ba17
rearrange_blocks/memory/normalizer.ptWeights8.3 KB 151e5a05b9c6
rearrange_blocks/policy.ckptWeights1.1 GB 555f0d878b0a
swap_T/memory/best_model.ptWeights48.7 MB 581f7051efa0
swap_T/memory/normalizer.ptWeights8.3 KB 088e5465951f
swap_T/policy.ckptWeights1.1 GB 2bae46d18a01
swap_blocks/memory/best_model.ptWeights48.7 MB c5df042c66b3
swap_blocks/memory/normalizer.ptWeights8.3 KB 13e9c2bb3cb9
swap_blocks/policy.ckptWeights1.1 GB 028b7b2dd429
README.mdDocumentation12.9 KB —
previews/battery_try.gifOther27.0 MB 66a114f01d42
previews/battery_try.mp4Other28.8 MB f3dc5915063b
previews/blocks_ranking_try.gifOther19.7 MB ca710e4f4f53
previews/blocks_ranking_try.mp4Other38.5 MB cbb123f6f46e
previews/cover_blocks.gifOther20.6 MB 7281c48a490a
previews/cover_blocks.mp4Other36.6 MB 01ee1e272909
previews/observe_and_pickup.gifOther4.2 MB 5f689f165a83
previews/observe_and_pickup.mp4Other3.4 MB 9d9572a46112
previews/press_button.gifOther16.4 MB 5ab4b74bc77b
previews/press_button.mp4Other18.9 MB e68293a0703c
previews/put_back_block.gifOther9.7 MB c38e1b9dfa3b
previews/put_back_block.mp4Other12.9 MB 6ed47e7919f3
previews/rearrange_blocks.gifOther11.2 MB 3af900645913
previews/rearrange_blocks.mp4Other14.3 MB d2f1ada2d67f
previews/swap_T.gifOther13.6 MB 2383beee3037
previews/swap_T.mp4Other15.9 MB 5ab1b9460864
previews/swap_blocks.gifOther19.1 MB 91e0b4fb48bd
previews/swap_blocks.mp4Other28.8 MB 58f81403a2d7
.gitattributesRepository2.7 KB —

License and Download

License
mit
Access
Open weights, no gate
Download size
10.3 GB
Download from Kuancheng Wang

Released by Kuancheng Wang through its official repository on Hugging Face. Read the license.

Built From

  • Described by arXiv:2603.01229
  • Described by arXiv:2606.21188

Memory Requirements

PrecisionWeights in memory
As published10.3 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About CAMP-RMBench-Checkpoints

Can I use CAMP-RMBench-Checkpoints commercially?

Yes. CAMP-RMBench-Checkpoints is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

Similar Models

LIBERO 4in1(liberospatial / liberoobject / liberogoal / libero10)共 53.19 GB 的 Wan2.2-VAE 编码 latent 缓存: 训练 LIBERO policy(action head / VLA)时直接读取 latent 缓存,避免重复 VAE 编码。 - 窗口模式: windowed(--windowed) - 输出:.pt 文件,每 episode 一个 - dataset(推荐): https://huggingface.co/datasets/MangoGoes/libero4in1wan2.2vaelatentdataset - model(本仓库): https://huggingface.co/MangoGoes/libero4in1wan2.2vaelatentcosmosstyle

Open weights other cosmos

Model · Robotics

wam_ctxpool_bmethod

Hyeonmo Kang

Wan2.2-TI2V-5B video DiT + 48-joint action head, trainingmode=joint. The base is suhyeok's finalized B-method recipe: a teacher-forced (sigma=0.25) self-EMA teacher plus an iBOT prototype loss at L18 L18, gamma=0.01, two-view. On top of it the 3 PAST cond latent frames are pooled into one motion frame before a chosen block. These are NOT the surrogate ctxpool runs. The surrogate line (older base, pd8 x GA1) lives in hmkang/wamctxpoolxattn and hmkang/wamctxpoolavg. Do not compare across the two sets. Geometry: 4-latin (numframesin=25, numframesout=41, fdf 2) = 4 cond + 2 future latent slots, 96 tokens per latent frame, 576 tokens per row. Effective batch 16 clips x GA 2 x 2 views = 64 rows…

Open weights apache-2.0 wan2.2

weighted/imatrix quants of https://huggingface.co/DeepCybo/PhysBrain1.5-8B For a convenient overview and download list, visit our model page for this model. static quants are available at https://huggingface.co/mradermacher/PhysBrain1.5-8B-GGUF This is a vision model - mmproj files (if any) will be in the static repository. If you are unsure how to use GGUF files, refer to one of TheBloke's READMEs for more details, including on how to concatenate multi-part files. (sorted by size, not necessarily quality. IQ-quants are often preferable over similar sized non-IQ quants) Here is a handy graph by ikawrakow comparing some lower-quality quant And here are Artefact2's thoughts on the matter…

Open weights transformers

static quants of https://huggingface.co/MirilAI/Miril-DroneVLM-2B-2 For a convenient overview and download list, visit our model page for this model. weighted/imatrix quants seem not to be available (by me) at this time. If they do not show up a week or so after the static ones, I have probably not planned for them. Feel free to request them by opening a Community Discussion. If you are unsure how to use GGUF files, refer to one of TheBloke's READMEs for more details, including on how to concatenate multi-part files. (sorted by size, not necessarily quality. IQ-quants are often preferable over similar sized non-IQ quants) Here is a handy graph by ikawrakow comparing some lower-quality quant…

Open weights apache-2.0 transformers

Vivy-R-Robotics-3B (R-ROBOTICS-3B) is the embodied robotics and desktop/hardware actuation model of the Vivy.v6 R-Series ecosystem. It combines a complete 3.09-billion-parameter (3.09B) 36-layer language-to-mission compiler with a sub-millisecond ( 37.81% -> 75.62% -> 94.53% -> 95.82% -> 96.72%). - R-ROBOTICS-3B drives LAW3ROBOTICSHIERARCHICALASTCLOSURE and LAW7CROSSPAGE50PTABLECONTINUATION, enforcing deterministic structural hierarchy and kinematic state continuity across 50+ page documents.

Open weights other gguf

Model · Robotics

microduck-bubu-sprint

Dadudu

Own lineage: PPO from scratch (nb1, commit 46c48b1) continued as nb2 and nb4 (commit fac88cc), checkpoint 850 (1.328 s); evolution strategies on the weights against the Arena sprint scorer (0.952 s); then the network frozen and wrapped in a step counter carried in the headroll action that adds joint-target and forward-command offsets from about 0.5 m to the line, found by CMA-ES on the event's official seeds: 0.940 s. No other entry's weights used. Simulation only. A perpetual policy for the microduck (61-D observation, 14 actions, 50 Hz). Runs until told otherwise — a gait, loaded into a policy slot. The observation normalizer is baked into policy.onnx; feed raw observations. manifest.json…

Open weights microduck