/ Модель

Характеристики

Лицензия
Apache 2.0
Библиотека
lerobot
Опубликована
8 июл 2026

act_banana_in_pot

Языковая модельИзображение, текст → action3 профессии

Политика ACT для управления UR7e, которая по состоянию суставов и двум изображениям камер учится класть нужный банан в горшок.

11скачиваний за 30 дней0лайковвеса обновлены8 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Bigenlight/act_banana_in_pot — политика управления манипулятором, обученная методом имитационного обучения для задачи «положить нужный банан в горшок» на роботе UR7e. Используется архитектура Action Chunking Transformer (ACT): энкодер-декодер Transformer с CVAE и визуальной основой ResNet18, предварительно обученной на ImageNet. Модель обучена на 51 демонстрации и выдаёт последовательности из 100 шагов управления.

На вход подаются состояние суставов робота и изображения с двух RGB-камер размером 360×640; на выходе — абсолютные целевые углы шести суставов и команда захвата. Политика предназначена для повторения конкретной манипуляции на UR7e в установке, близкой к обучающей. Для инференса изображения камер нужно привести к размеру 360×640; в README также описан цикл управления через LeRobot и ur_rtde с частотой 30 Гц.

На отложенных эпизодах указаны ошибка L1 0,0235 рад и точность команды захвата 99,2%, однако это офлайн-сравнение предсказаний с записями действий, а не измерение успешности выполнения задачи на физическом роботе. Небольшой набор демонстраций ограничивает устойчивость к новым положениям объектов, освещению и размещению камер. Репозиторий распространяется по лицензии Apache-2.0.

Сценарии применения

  • перекладывание нужного банана в горшок роботом UR7e
  • имитационное обучение манипуляции по демонстрациям оператора
  • управление суставами UR7e по изображениям с двух RGB-камер

Ограничения

Политика обучена всего на 51 демонстрации; её устойчивость может снижаться при новых положениях объектов, освещении и размещении камер. Приведённые метрики получены в офлайн-оценке, а успешность выполнения задачи на физическом роботе не измерялась.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

ACT — Put the right banana in the pot (UR7e)

An Action Chunking Transformer (ACT) policy trained by imitation learning to perform the manipulation task "put the right banana in the pot" on a Universal Robots UR7e arm with two RGB cameras.

  • Policy: ACT (Transformer encoder–decoder with a CVAE), ResNet18 vision backbone (ImageNet-pretrained), chunk_size = 100, n_action_steps = 100.
  • Trained on: Bigenlight/banana_in_pot_lerobot_v3 (51 teleoperated episodes / 21,524 frames, UR7e follower + GELLO leader, 2 cameras).
  • Training length: 50,000 steps, batch size 8, AdamW lr = 1e-5 (constant).
  • Framework: LeRobot v0.6.1.

What the policy does

I/OSpec
observation.state(7,) — UR joints q1..q6 (radians) + gripper position
observation.images.cam1 / cam2RGB, trained at 360×640
action(7,) — [cmd1..cmd6, grip_cmd], absolute joint targets (radians) + ~binary gripper

Images were captured at 720p and resized on-the-fly to 360×640 during training (aspect-preserving half-resolution; no dataset re-encode). You must resize every live camera frame to 360×640 at inference — a different aspect ratio or interpolation degrades the policy.

Data & hardware setup

ComponentDetail
RobotUniversal Robots UR7e — 6-DOF collaborative arm, joints in radians. Inference uses the UR7e follower only.
Teleoperation (data collection)GELLO low-cost 3D-printed leader arm. Leader signals are recorded but are not policy inputs at inference.
Camera 1Intel RealSense D435 — RGB only
Camera 2Intel RealSense D435if — RGB only
Camera streams1280×720 (720p) @ 30 fps, color only (no depth / IR recorded). ACT is trained on the two RGB views resized to 360×640.
Task"put the right banana in the pot" — table with distractor objects (2 bananas, apple, carrots/peppers, watermelon slice) and a silver pot; success = the correct banana placed in the pot.
Dataset scale51 episodes / 21,524 frames / ~12 min @ 30 fps.

Training configuration

ItemValue
PolicyACT (ResNet18 backbone, CVAE, chunk_size=100, n_action_steps=100)
dim_model / heads512 / 8
Encoder / decoder layers4 / 1
NormalizationMEAN_STD for state, action, and visual
Batch / steps8 / 50,000
OptimizerAdamW, lr = 1e-5 (constant), backbone lr = 1e-5
BackboneResNet18_Weights.IMAGENET1K_V1 (ImageNet-pretrained)
GPURTX 3060 12GB (~4.7 GB used, ~3.9 step/s)

Training loss

training loss

Final training loss ≈ 0.065.

Offline evaluation (open-loop: predicted actions vs. ground truth)

Evaluated on held-out episodes (train vs. held-out gap is negligible → generalizes, no overfitting). The step 50,000 checkpoint (this model) is the best by held-out L1.

stepjoints MAE (rad)overall L1gripper acctrain L1held-out L1
100000.03920.039598.0%0.03920.0406
200000.03540.034598.8%0.03240.0356
300000.02670.026598.8%0.02580.0269
400000.02560.024599.2%0.02220.0256
50000 ⭐0.02370.022599.2%0.02050.0235

evaluation trend

Best checkpoint (step 50,000):

  • Held-out overall L1 = 0.0235 rad (≈ 1.34°); train L1 = 0.0205 → near-zero gap.
  • Joints MAE = 0.0237 rad (≈ 1.36°).
  • Gripper accuracy 99.2%.

per-joint MAE

The wrist joint (cmd6) carries the largest error — it is the axis with the most natural variation. The gripper channel is close to binary.

How to use

Load the policy (LeRobot)

from lerobot.policies.act import ACTPolicy
from lerobot.policies import make_pre_post_processors

policy = ACTPolicy.from_pretrained("Bigenlight/act_banana_in_pot")
policy.eval()

# Normalization is NOT baked into forward() in lerobot 0.6.1 — it lives in the
# processor pipeline saved alongside the checkpoint. select_action returns a
# NORMALIZED action; the post-processor converts it back to radians.
preprocessor, postprocessor = make_pre_post_processors(
    policy_cfg=policy.config,
    pretrained_path="Bigenlight/act_banana_in_pot",
)

Per control tick:

policy.reset()                       # once at the start of each rollout
obs = preprocessor(obs)              # normalize + batch + move to device
action = policy.select_action(obs)   # normalized
action = postprocessor(action)       # radians, numpy (7,)

select_action returns one action per call from an internal queue; on an empty queue it predicts a full 100-step chunk and replans after 100 executed actions (temporal ensembling is off by default in this config).

Deploy on a real UR7e

LeRobot ships no UR robot class — you build the observation dict yourself and stream joint targets with ur_rtde at 30 Hz (33.3 ms control period). Loop: read getActualQ() + gripper → grab both cameras, BGR→RGB, resize to 360×640 → build observation.state / observation.images.cam1 / cam2 → preprocess → select_action → postprocess → servoJ(q_target[:6]) + drive gripper from grip_cmd.

⚠️ Safety — actions are ABSOLUTE joint positions (the single biggest safety driver):

  1. Start near the dataset initial pose q1..q6 ≈ [2.84, -1.41, 1.78, -2.01, -1.66, -3.42] rad before enabling the policy, or the first absolute command is a large jump.
  2. First-command jump guard: if max(|q_target − getActualQ()|) > ~0.15 rad, abort.
  3. Clamp per-tick joint change (e.g. ≤ 0.05–0.1 rad / 33 ms early on) and clamp to UR software joint limits.
  4. Reduced speed for first trials; keep a hand on the E-stop dead-man switch.
  5. Camera mapping matters: the policy learned a fixed cam1/cam2 → physical-viewpoint mapping. Swap them and it fails silently. Verify wiring every session.
  6. Gripper grip_cmd is ~binary — threshold (e.g. >0.5 → close) and map to your driver.

A full deployment guide (with a reference ur_rtde skeleton and all the citations to the lerobot inference/normalization code paths) is in the project's DEPLOY_UR.md.

Related repositories

Limitations

  • Small dataset (51 demos). Metrics reflect an easy, temporally-correlated task; expect reduced robustness to novel object positions, lighting, or camera placement.
  • Offline metrics only. All numbers above are open-loop (predicted vs. ground-truth actions). Real closed-loop task success on the arm has not been measured here — a physical UR7e deployment is required for the final verdict.
  • Absolute-joint action space demands the safety guards above; the policy was only ever conditioned on states near the data-collection start pose.
  • The ResNet18 backbone is ImageNet-pretrained (not robotics-pretrained); the CVAE and transformer are trained from scratch on this task.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · lerobot

Нельзя запустить

Модели для роботов не запускаются как сервис инференса.

Ревизия весов
2c732f9

0 моделей