preview

Training report: docs/aic-act-training-wandb-report.pdf (Weights & Biases, finished ACT runs).

We found that our best version of cable insertion for the SC port (as part of Intrinsic's AI for Industry challenge) was actually when we used Action Chunking Transformers to do the approach and initial alignment with the plug port. The rest of the work is done by a scripted insert, taking inspiration from our idea of viewing the cable insertion process as a finite state machihine that can transition between Align, Retry (recentre, lift up) and guarded insert states.

Quantarune ACT-FSM: SC scripted insert (v1)

quantarune-act-fsm-sc-scripted-insert/      2.7G
β”œβ”€β”€ README.md
β”œβ”€β”€ policy_env.txt                          runtime env of a full-insertion take
β”œβ”€β”€ policy/aic_example_policies/ros/        252K  policy code (v1 snapshot + parents)
β”œβ”€β”€ checkpoints/                            790M  4 stage ACT models, step 10000
β”‚   β”œβ”€β”€ approach/
β”‚   β”œβ”€β”€ align/
β”‚   β”œβ”€β”€ guarded_insert/
β”‚   └── retry_or_finish/
β”œβ”€β”€ training/                               252K  stage dataset build + training scripts
β”‚   β”œβ”€β”€ quantarune_training/
β”‚   └── quantarune_teleop/
β”œβ”€β”€ results/                                1.9G
β”‚   β”œβ”€β”€ trials.csv                          37 trials: batch, setting, score
β”‚   └── runs/<run>/                         scoring.yaml, policy_env.txt, bag
└── docs/technique.md                       20K   full write-up

This repo holds the best SC cable insertion result of Project Automaton so far. It is part of the 2026 Intrinsic AI for Industry Challenge in Gazebo. A four-stage ACT finite state machine brings the SC plug to the port lip. A scripted wiggle-descent then pushes the plug into the seat. Ground truth is off in every trial here. Code, weights, results and the write-up are all in this one repo.

How it works

RunACTStagedScriptedInsert subclasses RunACTStaged, which wraps four ACT checkpoints in an FSM. The stages are APPROACH, ALIGN, GUARDED_INSERT and RETRY_OR_FINISH. When the guarded insert gives up, the scripted finish takes over from the current pose. It descends at 4 mm/s at 400 N/m with a small circular wiggle. It reads no port pose. docs/technique.md gives the full pipeline and the failure analysis.

Known limits

The policy stops when it sees /scoring/insertion_event from the scorer. We have not yet confirmed that this signal is legal in the official evaluation. The v1 finish also has a known bug with stiffness. It sets the stiffness to 400 N/m and never resets it. The engine reuses one policy object across trials, so trial 2 of a multi-trial run would approach at 400 N/m. Every trial here ran in its own single-trial run, and the next version fixes this bug.

How to run it

Put policy/aic_example_policies on PYTHONPATH next to the AIC toolkit packages. Load the policy as aic_example_policies.ros.RunACTStagedScriptedInsert. Set the variables in policy_env.txt and point the four checkpoint paths at checkpoints/<stage>/. RunACT.py keeps the Apache 2.0 header of Intrinsic Innovation LLC from the toolkit example. The training datasets are not in this repo yet, and they will follow later.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading