ManiFlow Policy INN RoboTwin Notes

June 29, 2026 ยท View on GitHub

This repository is a local working copy based mainly on:

https://github.com/geyan21/ManiFlow_Policy

Most framework code, RoboTwin integration, dataset loading, workspace scripts, model components, and training/evaluation entry points are copied from the upstream ManiFlow repository. Local changes are focused on adding and testing the INN variants while keeping the original ManiFlow variants available.

Code Source

  • Upstream project: geyan21/ManiFlow_Policy
  • Main local workspace: ManiFlow/
  • Training/evaluation launcher: scripts/train_eval_robotwin.sh
  • RoboTwin assets and third-party code: third_party/RoboTwin1.0/

The local INN code is separated by name so it can be run side by side with the original ManiFlow policies.

Local INN Naming

The original ManiFlow policy names are kept unchanged:

  • 2D image policy: maniflow_image_timm_policy_robotwin
  • 3D point cloud policy: maniflow_pointcloud_policy_robotwin

The local INN policy names are:

  • 2D image INN policy: inn_image_timm_policy_robotwin
  • 3D point cloud INN policy: inn_pointcloud_policy_robotwin

The main INN-specific code paths are:

  • ManiFlow/maniflow/policy/inn_image_policy.py
  • ManiFlow/maniflow/policy/inn_pointcloud_policy.py
  • ManiFlow/maniflow/model/diffusion/ditx_inn.py
  • ManiFlow/maniflow/config/inn_image_timm_policy_robotwin.yaml
  • ManiFlow/maniflow/config/inn_pointcloud_policy_robotwin.yaml

RoboTwin Training/Evaluation Launcher

General format:

bash scripts/train_eval_robotwin.sh <alg_name> <task_name> <addition_info> <seed> <gpu_id>

Arguments:

  • <alg_name>: policy/config name, without .yaml
  • <task_name>: RoboTwin task name with _image or _pointcloud suffix
  • <addition_info>: experiment tag written into the output directory name
  • <seed>: random seed
  • <gpu_id>: visible GPU id

Outputs are saved under:

ManiFlow/data/outputs/<task>-<alg_name>-<addition_info>_seed<seed>/

The script trains first and then runs evaluation automatically when eval=True.

Original ManiFlow RoboTwin Commands

These commands run the upstream ManiFlow policies copied from the original project.

2D Image ManiFlow

bash scripts/train_eval_robotwin.sh \
  maniflow_image_timm_policy_robotwin \
  pick_apple_messy_image \
  0901 \
  0 \
  4

3D Point Cloud ManiFlow

For 3D point cloud tasks, setting time_c to zeros in ditx_inn.py is recommended, as this configuration yields better performance.

bash scripts/train_eval_robotwin.sh \
  maniflow_pointcloud_policy_robotwin \
  pick_apple_messy_pointcloud \
  0901 \
  0 \
  5

INN RoboTwin Commands

These commands run the local INN variants. The task names stay the same as the original RoboTwin task names; only the policy/config name changes from maniflow_* to inn_*.

2D Image INN

bash scripts/train_eval_robotwin.sh \
  inn_image_timm_policy_robotwin \
  pick_apple_messy_image \
  0901_inn \
  0 \
  4

3D Point Cloud INN

bash scripts/train_eval_robotwin.sh \
  inn_pointcloud_policy_robotwin \
  pick_apple_messy_pointcloud \
  0901_inn \
  0 \
  5

Example with full arguments:

# Original 2D ManiFlow
bash scripts/train_eval_robotwin.sh maniflow_image_timm_policy_robotwin pick_apple_messy_image 0901 0 4

# INN 2D image
bash scripts/train_eval_robotwin.sh inn_image_timm_policy_robotwin pick_apple_messy_image 0901_inn 0 4

# Original 3D ManiFlow
bash scripts/train_eval_robotwin.sh maniflow_pointcloud_policy_robotwin pick_apple_messy_pointcloud 0901 0 5

# INN 3D point cloud
bash scripts/train_eval_robotwin.sh inn_pointcloud_policy_robotwin pick_apple_messy_pointcloud 0901_inn 0 5

Current INN Behavior

For INN policies, scripts/train_eval_robotwin.sh sets:

policy.num_inference_steps=1

for evaluation when alg_name is one of:

  • inn_image_timm_policy_robotwin
  • inn_pointcloud_policy_robotwin

This keeps the INN evaluation path separated from the original ManiFlow multi-step inference setting.