Aktions-Chunking-Transformer (ACT): Vollständiger Leitfaden zur Ausbildung und Einführung von ACT-Politiken (2026)
Komplete ACT-Anleitung: Verständnis für Action-Chunking, Training von ACT-Richtlinien für Roboterdaten, Einsatz auf OpenArm oder Mobile ALOHA.
[← Führer]
Eine Handbuch für Praktiker zur Aktionsschneidung
Was ist Action Chunking?
Action Chunking ist eine Technik im Imitationslernen, bei der die Politik eine Sequenz zukünftiger Aktionen
In Standard BC wird in der Politik eine Aktion pro Kontrollschritt vorhergesagt. Jeder Vorhersagefehler verschiebt den Roboter in einen Zustand, den die Politik nie gesehen hat, wodurch die nächste Vorhersage schlechter wird, usw. Über eine 200-Schritt-Trajektorie bei 50 Hz (4 Sekunden Manipulation) ergibt sich sogar ein Fehlerverbund von 1% pro Schritt zu einer Wahrscheinlichkeit von ~87% der Abtrieb von der Demonstrationsverteilung. Die Aktionsschnitte reduziert dies, indem man sich auf Pläne von k Schritten (typischerweise 50
Die Größe des Stückes: Die wichtigste Hyperparameter
Die Größe des Stücks k bestimmt den Kompromiss zwischen der Gleitlichkeit der Bahn und der Umweltraktivität. Größere Stückchen erzeugen glattere Bewegungen, können aber nicht auf unerwartete Ereignisse (Objekt verschoben, Hindernis erschien) reagieren, bis das aktuelle Stück die Ausführung beendet. Kleinere Stückchen reagieren schneller, verlieren den Gleitungsvorteil und führen wieder zu einem Kompositionsfehler.
empfohlene Ausgangspunktstypen nach Aufgabenart:
- Tischplatten-Pick-and-Place: k=50
100 (1 2 Sekunden). Die Umgebung ist statisch; Glattigkeit ist wertvoller als Reaktivität. - Versammlung und Einfügung: k=30
60. Kontaktreiche Phasen erfordern häufiger Neuplanung, um die Ausrichtungssfehler anzupassen. - Bimanuelle Koordinierung: k=50
80. Zwei Arme benötigen koordinierte Stücke; zu kurze Stücke brechen die Koordinierung. - ** Mobilfunkmanipulation:** k=20
40 für die Basis, k=50 80 für den Arm. - ** Dynamische Aufgaben (Fang, Ausweichen):** k=10
20. Reaktivität ist entscheidend; akzeptieren Sie einen gewissen Verlust an Glattigkeit.
Warum die Aktionsschnupfen funktionieren: Der Argument zur zeitlichen Glatte
Eine Ein-Schritt-BC-Politik behandelt jedes Schritt unabhängig. Auch wenn das Modell die bedingte Verteilung P\a_t\o\t perfekt erfasst, bedeutet Unabhängigkeit zwischen den Schritten, dass die Bahn keine zeitliche Kohärenz hat.
Durch die Vorhersage von k Schritten gleichzeitig muss das Modell ein internen kohärentes Flugbahnsegment erzeugen. Dies ist analog zu der Art und Weise, wie Sprachmodelle bei der Erstellung mehrerer Token gleichzeitig kohärenter Text erzeugen, als bei der Probenahme eines Tokens gleichzeitig.
2. ACT-Architektur
ACT verwendet einen Conditional Variational Autoencoder (CVAE) mit einem Transformer-Rückgrat. Die Architektur hat drei Hauptkomponenten: einen CVAE-Coder (nur während des Trainings verwendet), einen Transformer-Decoder (beide während des Trainings und der Ableitung verwendet) und ein Vision-Rückgrat.
CVAE-Encoder (nur für Ausbildung)
Während des Trainings verarbeitet der Coder die vollständige Demonstration
Der Encoder ist ein Transformer, der über die gesamte Aktionssequenz und die aktuelle Beobachtung auftritt. Es liefert eine Mittel- und Logvarianz, die ein Gaussische parametriert, von der z durch den Reparameterierungs-Trick geprobt wird. Ein KL-Divergenzbegriff (gewichtet durch Beta, typischerweise 10
Die CVAE-Struktur ist lediglich eine Ausbildungshilfe: ohne sie erzeugt das Modell durchschnittliche Demonstrationsstile und bewegt sich durchschnittlich alle Ansätze und daher keine von ihnen (Modusvergleich). Mit dem CVAE lernt das Modell, jeden Stil separat zu dekodieren, und die Null-Mittel-Z bei der Ableitung erzeugt die "typischste" Ausführung.
Transformatordekoder (Schulung + Inferenz)
Der Decoder nimmt drei Eingänge ein: das latente z (oder Null), Beobachtungszeichen aus dem Sehrückgrat + proprioception und k lernbare Positionsanfragen (eine pro Aktion im Stück).
Architekturdetails aus der ursprünglichen Umsetzung der ACT:
- Einheitlichkeitsschichten: 4 (Beobachtungsverfahren + z in Kontext-Token)
- ** Dekoderschichten:** 7 (tiefer, weil es mehr Arbeit leistet: die vollständige Aktionsstücksproduktion)
- Versteckte Dimension: 512
- Aufmerksamkeitspunkte: 8
- Foodforward-Dimension: 2.048
- Gesamtparameter: ~40M (ohne Sehrückgrat)
- Action Output: k gemeinsame Positionsziele (z. B. k=100 Stufen x 14 Verbindungen für bi-manuelle ALOHA)
Sehringe
Jede Kameraansicht wird unabhängig durch ein ResNet-18 verarbeitet, wodurch eine Feature Map (15x20x512 aus einem 480x640 Eingang) erstellt wird, die in 300 Token pro Kamera abgeflacht wird. Mit 2
Die minimale praktikable Kamera-Einstellung beträgt 2 Ansichten: eine Handgelenk-montierte Kamera (nahe Manipulationsdetail) und eine Oberkamera (Raumkontext). Drei Kameras (1 Handgelenk + 2 Dritter in verschiedenen Winkeln) sind der RCSV-Standard und verbessern die Erfolgsrate im Vergleich zu 2-Kamera-Einstellungen konsequent um 5
3. Datenanforderungen
ACT lernt von menschlichen Teleoperationsdemonstrationen, die als synchronisierte Paare gespeichert sind.
Mindestdatensatzgrößen nach Aufgabenkomplexität
| Task Type | Demonstrationen Needed | Approx. Collection Time | Notes |
|---|---|---|---|
| Simple pick-and-place (fixed location) | 20–30 | 30 minutes | Lowest bar for proof-of-concept |
| Pick-and-place with pose variation | 50–80 | 1–2 hours | Must cover workspace uniformly |
| Multi-step manipulation | 100–150 | 3–4 hours | Each phase needs coverage |
| Bimanual coordination | 150–250 | 5–8 hours | Coordination patterns require more examples |
| Contact-rich assembly (insertion, screwing) | 200–400 | 8–16 hours | Force-sensitive phases need dense coverage |
Datenqualitätskontrollliste
- ** Keine Pausen:** Demonstrationen sollten kontinuierlich fließen. Pausen >0,5s lehren die Politik, "nichts tun" zu prognostizieren.
- Konsistente Geschwindigkeit: Durch das Mischen von schnellen und langsamen Demonstrationen wird die latente CVAE-Kapazität bei Geschwindigkeitsvariationen verschwendet.
- Sauber Beginn/Ende: Jede Episode beginnt mit einer ähnlichen neutralen Pose und endet klar.
- ** Alle erfolgreichen:** Alle fehlgeschlagenen Demonstrationen entfernen. ACT behandelt alle Schulungsdaten als Expertendemonstrationen.
- ** Kamera-Konsistenz:** Steiffeste Anbauen. Auch 5 mm Kameraverschiebung zwischen den Sitzungen verringert die Genauigkeit der Festnahme.
Datenformate: HDF5 und RLDS
Das Standardformat für ACT-Trainingdaten ist HDF5, wobei jede Episode als Gruppe gespeichert wird, die Datenmengen für Bilder (n__cameras x H x W x 3, uint8), gemeinsame Positionen (qpos, float64), gemeinsame Geschwindigkeiten (qvel, float64) und Aktionen (float64) enthält.
Für die plattformübergreifende Kompatibilität speichert das von Google Open X-Embodiment genutzte RLDS-Format
# HDF5 episode structure for ACT training
import h5py
import numpy as np
with h5py.File("episode_0042.hdf5", "r") as f:
# Camera images: (T, H, W, 3) uint8
cam_high = f["/observations/images/cam_high"][:] # overhead camera
cam_wrist = f["/observations/images/cam_wrist"][:] # wrist camera
# Joint state: (T, n_joints) float64
qpos = f["/observations/qpos"][:] # joint positions (radians)
qvel = f["/observations/qvel"][:] # joint velocities (rad/s)
# Actions: (T, action_dim) float64
actions = f["/action"][:] # target joint positions
print(f"Episode length: {len(qpos)} steps")
print(f"Control frequency: {f.attrs['control_freq']} Hz")
print(f"Camera resolution: {cam_high.shape[1]}x{cam_high.shape[2]}")
# Typical output:
# Episode length: 400 steps
# Control frequency: 50 Hz
# Camera resolution: 480x640
4. Training ACT mit LeRobot
[LeRobot] (
Installation
# Clone and install LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[act]"
# Verify GPU is available
python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, Device: {torch.cuda.get_device_name(0)}')"
Ausbildungskommando
# Full ACT training command
python lerobot/scripts/train.py \
--policy.name=act \
--dataset.repo_id=svrc/openarm_pick_place \
--policy.chunk_size=50 \
--policy.n_obs_steps=1 \
--policy.dim_model=512 \
--policy.n_heads=8 \
--policy.n_encoder_layers=4 \
--policy.n_decoder_layers=7 \
--policy.latent_dim=32 \
--policy.kl_weight=10.0 \
--training.learning_rate=1e-5 \
--training.batch_size=8 \
--training.num_epochs=5000 \
--training.eval_freq=500 \
--training.save_freq=1000 \
--device=cuda \
--output_dir=outputs/act_openarm_pick_place/
Referenz für Hyperparameter
| Hyperparameter | Default | Search Range | Effect of Increasing | When to Increase |
|---|---|---|---|---|
| chunk_size (k) | 100 | 20–200 | Smoother trajectories, less reactive | Smooth tasks (wiping, pouring) |
| latent_dim (z) | 32 | 16–64 | More expressive style capture | High demonstration variance |
| kl_weight (beta) | 10 | 1–100 | Stronger regularization | Small datasets (<50 demos) |
| learning_rate | 1e-5 | 5e-6–5e-5 | Faster convergence, instability risk | Large datasets (>200 demos) |
| temporal_ensemble_temp | 10 | 5–50 | Slower blending, more inertia | Smoother tasks |
| n_cameras | 2 | 1–4 | Richer spatial info, more compute | 3D reasoning tasks |
| backbone | ResNet-18 | ResNet-18/34/50 | Better visual features | Cluttered or varying-light scenes |
| num_epochs | 3000 | 1000–8000 | Better fit, overfitting risk | More demos or complex tasks |
Anforderungen an die GPU
- Minimum: 16 GB VRAM (RTX 4060 Ti, RTX 3090). Batchgröße 4
8. - Rekommend: 24 GB VRAM (RTX 4090). Batchgröße 16.
- Schnelle Iteration: 40
80 GB (A100, H100). Batchgröße 32 64. Trainingstunde: 30 90 Minuten.
5. Ausbildung ACT mit ACT+ (Original Repository)
Die ursprüngliche ACT-Implementierung aus Tony Zhao's Repository ([tonyzhaozh/act](
# Training with the original ACT repo
git clone https://github.com/tonyzhaozh/act.git
cd act
pip install -r requirements.txt
# Train on custom data
python train.py \
--task_name openarm_pick_place \
--ckpt_dir checkpoints/openarm_pp \
--policy_class ACT \
--kl_weight 10 \
--chunk_size 50 \
--hidden_dim 512 \
--batch_size 8 \
--dim_feedforward 2048 \
--num_epochs 5000 \
--lr 1e-5 \
--seed 0 \
--num_steps 400 \
--camera_names cam_high cam_wrist
LeRobot vs. Original-Repo: LeRobot wird besser gepflegt (aktive Community, regelmäßige Updates, Multi-Policy-Support) und verarbeitet automatisch Datenladen und -evaluation. Das Original-Repo gibt mehr direkte Kontrolle und ist einfacher zu modifizieren für Forschungsexperimente. Für Produktionsimplementationen empfehlen wir LeRobot; für Forschungspflege ist das Original-Repo einfacher zu hacken.
6. Auf echtem Hardware eingesetzt
Die Implementierung einer ACT-Politik erfordert die Erfüllung von Echtzeitsteuerungsbeschränkungen: Die Ableitungsschleim muss bei der Steuerungsfrequenz des Roboters (typischerweise 50 Hz = 20 ms pro Zyklus) laufen, während die Bearbeitung von Kamerabildern und die Berechnung von Aktionsstücken erfolgen.
Inferenzschleife-Architektur
import torch
import numpy as np
from collections import deque
class ACTInferenceLoop:
def __init__(self, policy, chunk_size=50, temporal_temp=10.0, query_freq=5):
self.policy = policy
self.chunk_size = chunk_size
self.temporal_temp = temporal_temp
self.query_freq = query_freq # re-query every N steps
self.action_queue = deque(maxlen=chunk_size)
self.step_count = 0
def get_action(self, images, qpos):
"""Returns a single action with temporal ensembling."""
if self.step_count % self.query_freq == 0:
# Get new action chunk from policy
with torch.no_grad():
obs = {
"images": torch.tensor(images).unsqueeze(0).cuda(),
"qpos": torch.tensor(qpos).unsqueeze(0).cuda(),
}
chunk = self.policy(obs) # (1, chunk_size, action_dim)
chunk = chunk.squeeze(0).cpu().numpy()
self.action_queue.append({
"actions": chunk,
"generated_at": self.step_count
})
# Temporal ensembling: blend overlapping chunks
action = np.zeros_like(self.action_queue[0]["actions"][0])
total_weight = 0.0
for entry in self.action_queue:
offset = self.step_count - entry["generated_at"]
if offset < self.chunk_size:
weight = np.exp(-offset / self.temporal_temp)
action += weight * entry["actions"][offset]
total_weight += weight
action /= total_weight
self.step_count += 1
return action
Verzögerung Budget bei 50 Hz
Bei 50 Hz-Steuerung hat jeder Zyklus ein Budget von 20 ms.
- Fangfang der Kamera + Vorverarbeitung: 2
5ms (USB3-Kameras, Größe auf 480x640) - ACT-Abschluss: 2
12ms (GPU-abhängig; siehe Benchmarktabelle unten) - Action Interpolation + Befehlsversendung: 1
2ms - Sicherheitsüberprüfungen: 1 ms
- Marge: 0
14ms
Referenzbenchmarks nach Plattform
| Hardware | ACT Inference (ms) | Max Control Rate (Hz) | Suitable For |
|---|---|---|---|
| NVIDIA A100 (80GB) | 1.8 | 555 | Cloud/datacenter inference |
| NVIDIA RTX 4090 | 2.5 | 400 | Desktop workstation |
| NVIDIA RTX 4070 | 4.2 | 238 | Budget desktop |
| Jetson AGX Orin 64GB | 12 | 83 | Onboard robot compute |
| Jetson Orin NX 16GB | 22 | 45 | Mid-range edge |
| Jetson Orin Nano 8GB | 40 | 25 | Minimum viable edge |
| Apple M3 Pro 18GB | 8 | 125 | Development/prototyping |
Einzelheiten zur Durchführung der temporären Ensemble
Das zeitliche Ensemble verwendet eine exponentielle Verfallgewichtung: für eine Vorhersage von einem Stück, der vor 20 Schritten erzeugt wurde, ist das Gewicht
** Kritische Einsatz Tipp:** Verwenden Sie in der Produktion immer zeitliche Zusammenstellung. Ohne diese zeigt der Roboter bei den Schnittgrenzen sichtbare Nervenkitzeln
7. OpenArm 1 + ACT: Spezifische Einrichtungsschritte
Die OpenArm 1 ($4.500 Single Arm, $9.000 bimanuelle Führung-Follower Station) ist für die Sammlung von Daten imitierenden Lernens und ACT-Implementierung konzipiert. Hier ist der komplette Setup-Pfad:
Hardware-Einstellung
- ** Montage Kameras:** Anschließen Sie die Handgelenkkamera (Intel RealSense D405) an die OpenArm Handgelenkhalter. Montieren Sie die Oberhandkamera (RealSense D435) auf dem bereitgestellten Portier 60 cm über dem Arbeitsplatzzentrum.
- Verbindungsservos: OpenArm verwendet Feetech STS3215 servos (gleiche wie ALOHA).
- ** Kalibrieren Sie die Gelenklimaten:** Laufen Sie
T9 , um die Gelenk-Null-Positionen und weiche Grenzen aufzuzeichnen. - Test-Teleoperation: Wenn der Führerarm angeschlossen ist, laufen Sie
T11 . Der Anhänger sollte die Bewegung des Führers in Echtzeit bei 50 Hz spiegeln.
Datenerhebung für ACT
# Record demonstrations on OpenArm
python lerobot/scripts/control_robot.py record \
--robot-path lerobot/configs/robot/openarm.yaml \
--fps 50 \
--repo-id svrc/openarm_pick_place \
--num-episodes 50 \
--warmup-time-s 3 \
--episode-time-s 15 \
--reset-time-s 10 \
--push-to-hub 1
ACT auf OpenArm zu implementieren
# Deploy trained policy
python lerobot/scripts/control_robot.py replay \
--robot-path lerobot/configs/robot/openarm.yaml \
--policy-path outputs/act_openarm_pick_place/checkpoints/best/ \
--fps 50 \
--num-episodes 20
8. Häufige Fehler und Reparaturen
Wir haben ACT-Politiken für mehr als 20 Manipulationsarbeiten im RCSV ausgebildet und eingesetzt.
| Symptom | Root Cause | Fix |
|---|---|---|
| Policy outputs zero or constant actions | KL weight (beta) too high. Model ignores observations and outputs the mean action. | Reduce beta by 5–10x. Monitor KL divergence: it should stabilize at 0.5–5.0 nats, not near zero. |
| Jerky execution at chunk boundaries | Temporal ensemble temperature too low, or ensemble not implemented | Increase temperature from 10 to 20–30. Verify overlapping chunk execution in your control loop. |
| Good training loss, poor real-world performance | Camera mismatch between training and deployment | Check image resize pipeline, camera FOV, crop regions. Use identical camera mount positions. |
| Works for 2 seconds then drifts | Chunk size too large for task dynamics | Reduce chunk size by 50%. The policy is committing to outdated plans. |
| Inconsistent between evaluation runs | Too few demonstrations (<30) | Collect more data. With small datasets, performance is highly sensitive to train/val split. |
| KL divergence collapses to zero | Beta too low. Encoder encodes everything in z; decoder ignores observations. | Increase beta until KL stabilizes at 0.5–5.0 nats. |
| Mode averaging: robot moves to "average" of multiple strategies | Multi-modal demonstrations with single-mode CVAE | Standardize demonstration strategy, remove minority approaches, or switch to Diffusion Policy. |
| Sim-to-real gap: policy works in sim but fails on real robot | Contact dynamics, friction, and visual domain mismatch | Fine-tune on 50–100 real demonstrations. Apply domain randomization during sim training. |
9. Benchmarks: ACT vs. Diffusionspolitik vs. Verhaltensklonung
Die folgenden Benchmarks stammen aus veröffentlichten Ergebnissen und unseren eigenen Bewertungen am RCSV zu standardisierten Manipulationsarbeiten mit den ALOHA- und OpenArm-Plattformen.
| Dimension | ACT | Diffusion Policy | Behavioral Cloning (MLP) |
|---|---|---|---|
| Success rate (50 demos, pick-place) | 82–90% | 75–85% | 40–60% |
| Success rate (200 demos, pick-place) | 90–95% | 92–97% | 65–80% |
| Success rate (bimanual insertion) | 80–88% | 72–82% | 15–30% |
| Inference latency (RTX 4090) | 2.5ms | 15ms (DDIM) | 0.5ms |
| Inference latency (Jetson Orin Nano) | 40ms (25 Hz) | 180ms (5.5 Hz) | 5ms (200 Hz) |
| Training time (200 episodes, A100) | ~4 hours | ~8 hours | ~1 hour |
| Model size | ~40M params | ~80M params | ~5M params |
| Multi-modal handling | Limited (CVAE) | Excellent (diffusion) | None (mode averaging) |
| Trajektorie smoothness | Excellent | Very good | Poor (jerky) |
| Data efficiency (<50 demos) | Good | Moderate | Poor |
| Edge deployment feasibility | Excellent | Challenging | Trivial |
10. Wann ACT gegen andere Methoden verwendet werden
ACT wird angewendet, wenn:
- Sie haben 50 bis 200 Demonstrationen und brauchen einen schnellen Weg zur Einsatzbereitschaft.
- Ihre Aufgabe hat eine relativ deterministische Strategie (eine klare Möglichkeit, sie zu erledigen).
- Sie setzen auf Edge-Hardware (Jetson) ein, wo die Schnelligkeit der Schlussfolgerung wichtig ist.
- Sie machen eine zweimanuelle Manipulation (ACT wurde für ALOHA entwickelt).
- Sie wollen die einfachste Trainingsleitung mit minimalem Hyperparameter-Ausgleich.
- Sie brauchen Echtzeitsteuerung bei 50 Hz auf computerbeschränkten Plattformen.
Verwenden Sie die Diffusionsrichtlinie, wenn:
- Ihre Demonstrationen enthalten mehrere gültige Strategien für die gleiche Aufgabe (verschiedene Operatoren, zweideutige Anhaltspunkte).
- Sie benötigen eine Präzision unter dem Millimeter bei Montage- oder Einfügungsarbeiten.
- Sie haben reichlich Daten (200+ Demonstrationen) und berechnen das Budget.
- Sie können eine höhere Ableitungs-Latenz (Cloud-Ableitungs- oder Desktop-GPU) tolerieren.
Verwenden Sie VLAs (OpenVLA, pi0) wenn:
- Sie benötigen eine sprachlich bedingte Multitasking-Ausführung ("Pick the red cup", "stack the blue blocks").
- Sie wollen vorgebildete Vision-Language-Repräsentationen für die Verallgemeinerung nutzen.
- Sie machen mobile Manipulationen mit großen Zustandräumen.
- Sie haben Zugang zu einer Multi-GPU-Ausbildungsinfrastruktur (4
8 A100s).
Bleiben Sie bei Simple BC, wenn:
- Sie sind Prototypen und wollen die schnellste Training Iteration.
- Ihre Aufgabe ist sehr kurz (<20 Schritte), wo der Komponiebegriff kein Problem ist.
- Sie setzen auf extrem begrenzte Hardware (Mikrocontroller-Klasse).
Sammeln von ACT-kompatiblen Roboterdaten bei RCSV
RCSV bietet eine end-to-end-Daten-Sammlung für ACT-Schulung: kalibrierte Führungskräfte-Follower-Hardware, ausgebildete Betreiber, Qualitätskontrolle und Lieferung im LeRobot HDF5-Format. Beginnen Sie mit einem Pilotprojekt für 2.500 US-Dollar (50 Demonstrationen für eine Aufgabe) oder skalieren Sie auf eine vollständige Datenkampagne für 8.000 US-Dollar.
Daten-Sammlungsdienste







