Архитектура без шлемов: чистый Python и NumPy
В новой версии фреймворка NVIDIA IsaacTeleop ключевым нововведением стала возможность работы с движком ретаргетинга (retargeting engine) на чистом Python с использованием библиотеки NumPy. Это позволяет разработчикам тестировать и отлаживать логику преобразования движений в действия робота на обычном CPU (например, в Google Colab), полностью исключая необходимость подключения шлема виртуальной реальности или среды симуляции на этапе разработки алгоритмов.
Пакет устанавливается через PyPI с опциональным дополнением retargeters-lite, которое добавляет только SciPy, что делает среду легкой и быстрой для итеративной разработки. Версия 1.4.145 фиксирует стабильный интерфейс для работы с типами данных, что критично для воспроизводимости результатов.
Строгая типизация и система контрактов
Движок использует систему TensorGroupType — упорядоченный список типизированных слотов, и TensorGroup — контейнер времени выполнения, который валидирует каждую запись. Это предотвращает ошибки, связанные с несовместимостью типов данных (например, отклонение float64 там, где ожидается float32) и чтением пустых слотов.
Система опирается на строгие перечисления (IntEnum) для индексов суставов и контроллеров, заменяя «магические числа» на читаемые константы. Ниже приведена структура входных данных, с которыми работает движок:
| Тип данных | Слоты/Параметры | Описание |
|---|---|---|
| HandInput | 26 суставов (OpenXR) | Позиции, ориентации, радиусы и валидность суставов кисти (WRIST, PALM, THUMB_TIP, INDEX_TIP и др.) |
| ControllerInput | 14 слотов | Позиции/ориентации (Grip/Aim), кнопки (4 шт.), оси (thumbstick), аналоговые значения (trigger, squeeze) |
| OptionalTensorGroup | Динамическая доступность | Маркер наличия данных: слот считается «присутствующим» только после первой записи, что сигнализирует о выходе руки из зоны трекинга |
Генерация синтетических данных для отладки
Для тестирования ретаргетинга без реального оборудования NVIDIA предоставляет функции генерации синтетических данных. Функция make_hand создает тензор из 26 суставов, расположенных вокруг запястья, с возможностью контроля расстояния между большим и указательным пальцами (pinch distance). Функция make_controller заполняет все слоты контроллера: позы, кнопки и аналоговые стики.
Такой подход позволяет разработчикам писать код ретаргетера, который затем можно будет напрямую применить к данным с OpenXR-трекеров или CloudXR, так как структура данных остается идентичной.
Графовый движок и SE(3) ретаргетинг
Ядром системы является графовый движок, который собирает входные данные в один вектор действий (action vector) на каждом шаге. Движок поддерживает:
- SE(3) ретаргетинг: Преобразование 6-степенной свободы (позиция + ориентация) из системы координат пользователя в систему координат робота.
- Ретаргетинг захвата (Gripper): Управление захватом робота на основе данных сжатия (squeeze) или щипка (pinch).
- Мировые трансформации: Применение преобразований координат для согласования действий робота с его рабочим пространством.
Разработчики могут настраивать параметры ретаргетинга в реальном времени, сохранять их между перезапусками и управлять состоянием машины состояний (state machine) — ставить на паузу или останавливать выполнение.
Почему это важно
Упрощение процесса разработки телеоперационных систем снижает порог входа для исследователей в области Physical AI. Возможность отлаживать сложную логику преобразования движений на CPU без тяжелых зависимостей ускоряет цикл разработки. Интеграция с NVIDIA Isaac Sim и реальными роботами через единый интерфейс TensorGroup делает IsaacTeleop мощным инструментом для создания агентов, способных выполнять сложные манипуляции, копируя движения человека.
Источник: MarkTechPost ↗
