5.1 Системное тестирование

Системы Physical AI работают в физическом мире рядом с людьми, где ошибки имеют реальную цену — от травм и простоев до ущерба репутации и бизнесу. Поэтому, прежде чем выпускать решения на рынок, их важно как следует протестировать.

Грамотно выстроенные испытания подтверждают безопасность и надёжность, сокращают разрыв между симуляцией и реальностью, выявляют редкие краевые случаи и проверяют работу в предельных режимах: толчки, скольжение, помехи в работе сенсоров и сбои связи.

Тесты дают данные для улучшения алгоритмов и параметров, сокращают стоимость владения (меньше отказов и ремонтов), помогают проходить сертификацию и соответствовать стандартам, а ещё увеличивают доверие пользователей и регуляторов.

На видео Boston Dynamics роботов толкают не ради шоу. Так имитируют неожиданные воздействия, проверяют запас устойчивости и прочность. Это контролируемые испытания, похожие на краш‑тесты в автопроме.

В этом параграфе мы познакомимся с видами тестирования и их особенностями в контексте Physical AI. А также рассмотрим, какие узлы роботов как можно испытывать.

Каким бывает тестирование

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

image

  • Статическое тестирование, когда мы проверяем систему без запуска: читаем код, анализируем логику, проводим ревью.
  • Динамическое тестирование, когда мы запускаем программу или робототехническую систему и наблюдаем за её поведением.

Тестирование также делят по уровням:

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

По назначению бывают два типа тестирования:

  • Функциональное — проверяем, выполняет ли система заявленные функции: например, может ли робот аккуратно взять шоколадное яйцо и не раздавить его, или пройти по льду, не скользя.
  • Нефункциональное — оцениваем характеристики системы: производительность, безопасность, надёжность, удобство использования, совместимость.

Тестирование — это множество отдельных типов тестов, направленных на проверку соответствия программы требованиям.

На практике можно начать с комбинированного подхода. При составлении тест‑дизайна робота следует поделить на функциональные узлы и проверять каждый узел отдельно — движение, манипуляцию, зрение. Затем стоит расширить покрываемый тестом набор функций, объединяя и усложняя тестовые сценарии. Например, начиная с «возьми предмет» и заканчивая «возьми красное яблоко с зелёного подноса, переложи в жёлтый контейнер и закрой потом крышку».

Тестирование 80 % времени проходит в симуляции и лишь 20 % — на реальном роботе с использованием средств безопасности. Тесты в симуляции позволят не подвергать настоящего робота рискам, а также помогут ускорить и значительно удешевить разработку: у каждого разработчика будет своя симуляция, где он может исследовать, экспериментировать и отлаживать код.

В Physical AI используют разные методы проектирования тестов. Они помогают заранее понять, что в системе может дать сбой и что нужно целенаправленно проверить, чтобы удостовериться в правильном поведении системы в реальных условиях. Заранее посчитанные граничные значения силы сжатия манипулятора не позволят роботу сжать хрупкую коробку, а подобранные моменты редукторов помогут не перегрузить моторы сверх разрешённых значений и испортить узел робота.

Дополнительно применяют такие методы тестирования:

  1. Вычитка кода, чтобы, глядя на алгоритмы, заранее выделить тонкие места: граничные условия, неочевидные зависимости, допущения, которые обязательно нужно проверить отдельными тестами.
  2. Расчёт максимальных и минимальных моментов редукторов, чтобы определить критические режимы работы и спроектировать тесты, в которых приводы выходят к этим пределам, а не остаются в комфортной зоне.
  3. Анализ облака точек с камер робота, чтобы понять, в каких условиях восприятие может ломаться: отражения, блики, электромагнитный фон, и заложить именно такие сценарии в тесты.
  4. Расчёт минимального и максимального усилия для подъёма объекта, чтобы выявить узкие границы между «не хватает силы» и «слишком много силы» и проверить систему именно в этих пограничных состояниях.

Особенности тестирования в Physical AI

Тестирование в Physical AI удобно объяснять через сравнение с мобильными приложениями не потому, что это «похоже» или у обоих бывают баги. Мобильные приложения — самый знакомый и понятный большинству вид цифровых продуктов. Почти каждый сталкивался с обновлениями, ошибками интерфейса или неправильным поведением приложения и представляет, что такое «проверить, работает ли система».

Но в Physical AI объект тестирования находится далеко за пределами кода: здесь задействованы железо, сенсоры, модели машинного обучения, физика взаимодействия с миром и безопасность человека рядом с роботом. Отталкиваясь от более понятного опыта тестирования приложений, мы можем показать, в чём именно тестирование в Physical AI сложнее и многограннее — и почему здесь так важен переход от проверки функций к проверке поведения всей системы.

Как устроено тестирование в Physical AI по сравнению с тестированием мобильных приложений

Параметр тестирования Мобильное приложение Physical AI
Объект и среда Изолирано внутри ОС, ограничено экранами и API устройства Кибернетическая система с приводами и сенсорами, которая работает в непредсказуемой среде с людьми, где невозможно прописать все внешние факторы заранее
Повторяемость Сценарное покрытие сталкивается с детерминированным и согласованным по REST API поведением мобильного приложения Высокий уровень недетерминированности (шум датчиков, трение, освещение), «правильный ответ» часто вероятностный; нужны пороговые метрики (успех миссии, частота пересечения поверхностей)
Тестовые среды и инструменты Эмулятор и симуляторы iOS и Android и физические устройства Симуляторы (Gazebo / Isaac Sim, CARLA/AirSim), MIL/SIL/HIL, стенды, клетки безопасности и полевые испытания
Функциональные проверки Навигация по экранам, локализация, офлайн/роуминг, уведомления, deeplinks, платежи, IAP, синхронизация, восстановление сессии/кеша Восприятие (точность детекции/SLAM, устойчивость к бликам/дождю), планирование и контроль (стабильность, перерегулирование, задержки), калибровка датчиков/актуаторов, отказоустойчивость (E‑stop, деградационные режимы)
Нефункциональные аспекты тестирования UX‑метрики (FPS, jank, TTI), crash‑free/ANR, расход батареи/памяти/трафика, приватность/разрешения и прочие моменты Безопасность людей и имущества, реальные физические риски; энергоэффективность, долговечность/износ, устойчивость к вибрациям, температурам; киберфизическая безопасность и защита от физического саботажа

Итак, мы видим, что принципы тестирования схожи. Но в тестировании Physical AI появляются новый вызов: обеспечить качество и достаточно полно покрыть тестами изделие.

Сценарии тестирования

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

Движение и баланс

Если движение человека — это «череда контролируемых падений», то для гуманоида, робособаки и даже роборуки это ещё более сложная задача.

У них нет инстинктов, как у человека, нет мышц, которые можно было бы накачать и так держать вес. На движении и балансе — наибольший фокус тестирования. Ведь никому не нужен робот, умеющий делать всё, но не может добраться до заданной точки или роняет и теряет предметы, которые несёт.

В этом блоке обычно тестируют:

  • равномерное движение по ровным и наклонным поверхностям;
  • движение по поверхностям с различным коэффициентом трения;
  • восстановление роботом вертикального положения после падения. Этот тест очень важен: без отладки робот может упасть и разбиться об пол, как в этом видео.

Манипуляция

Один из самых важных скиллов в Physical AI, так как зачастую эта операция влияет на экономическую эффективность решения.

Представьте, что вам не надо ходить в магазин и всю корзину для вас соберёт робот. Ему нужно знать, с каким усилием какой предмет положить в корзинку, как не повредить хрупкий товар и отсканировать срок годности.

Для людей очевидно, какую силу надо применить, чтобы поднять и удержать предмет, как открыть бутылку воды или нажать кнопку на кофемашине.

Но вспомните, как долго ребёнок учится гладить кошку или собаку, попадать пальцами по кнопке или открывать банку с крышкой. Для робота это ещё более нетривиальная задача. Требуется большое количество тренировок, для настройки нейронной сети. Тогда система сможет определить, что это за объект, и подберёт из всей библиотеки скиллов подходящий.

Ведь чтобы поднять ведро с водой, шоколадное яйцо и кредитную карту, надо применить совершенно разные скиллы.

Восприятие

Важная группа тестов, которая позволяет роботу ориентироваться в пространстве, различать предметы и строить гипотезы, как с ними можно взаимодействовать. За это отвечают обычно два вида сенсоров: лидар и камеры 3D‑зрения, они же камеры глубины.

Наиболее важные проверки для алгоритмов локализации:

  • Локализация в помещении, понимание, где какие объекты находятся каждый момент времени.
  • Тесты с потенциальными столкновениями. Как робот поведёт себя при вероятности протаранить объекты? Увернётся, обойдёт, пропустит или проигнорирует?
  • Работа при сильном/слабом освещении или высоком уровне запылённости. Роботы часто работают на заводе или на улице, где всегда высокий уровень пыли и непредсказуемый уровень света.

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

Планирование и автономия

Набор тестов, отвечающих за умение робота дойти из пункта А в пункт Б, причём как по знакомому маршруту, так и пройдя кофейный тест.

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

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

Что такое кофейный тест?

Идея кофейного теста приписывается Стиву Возняку, одному из основателей Apple Computers.

Суть теста заключается в том, что робот под управлением системы ИИ должен войти в абсолютно незнакомый дом или кухню, сориентироваться в пространстве, найти все необходимые элементы для приготовления кофе (кофемашину, кофе, воду, чашку и т. д.) и самостоятельно приготовить напиток. При этом у робота не должно быть заранее загруженной карты помещения, заранее заданных координат или подсказок.

Безопасность

Безопасное общение робота с людьми — обязательное требование. Нужно проверять, работают ли датчики давления (например, у массажного робота), как робот реагирует, если рядом внезапно появляется человек или животное, — должен ли он замедлиться, остановиться или обойти?

Также проверяют, соблюдает ли он три закона робототехники. Это базовый набор тестов для любого робота.

Как звучат три закона робототехники?

Три закона робототехники — обязательные правила поведения для роботов в научной фантастике, впервые сформулированные Айзеком Азимовым в рассказе «Хоровод» (1942).

  1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.

  2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат первому закону.

  3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит первому или второму законам.

Износостойкость

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


Мы ознакомились с основными функциональными блоками тестирования, теперь разберём подробнее, как оно устроено.

Подготовка к тестированию

Залог хорошего теста — умение подготовиться к нему. Надо обеспечить себя не только планом, но и разными тестовыми данными в физическом и виртуальном мире.

Хороший тест — такой, где вы точно понимаете, что проверяете, как проверяете, и имеете все инструменты для измерения данных от робота и прочего.

Не стоит проводить тесты без подготовки: это может сломать робота или вы не получите никаких данных после теста, так как логи не будут писаться, видео не будет записано, а разных физических объектов для теста банально не будет под рукой.

Подготовка состоит из следующих шагов:

  1. Выбор функциональности или модуля для тестирования.
  2. Составление чек‑листов.
  3. Сбор материалов для тестирования.
  4. Проверка устройств для фиксации тестов.

Первый шаг достаточно очевиден, а остальные рассмотрим чуть подробнее.

Составление чек‑листов

Чек‑лист должен чётко описывать последовательность действий, содержать понятные команды и не допускать двоякого толкования проверки или действия, которое описывается в пункте.

Чек‑лист нужно подготовить для каждого теста. Ниже — пример для тестирования новой версии телеуправления роботом, но можно использовать подобную структуру для всех проверок.

Иллюстрация.png

Сбор материалов для тестирования

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

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

Проверка устройств для фиксации тестов

Нужно убедиться, что они есть и работают. Например, проверить камеру со штативом для видеофиксации, программы и шнуры для снятия логов с робота и так далее.

Если забыть включить запись видео, придётся начинать всё заново. А если забыть запустить логирование, не будет данных для посттестового анализа.

Помните о безопасности!

Тесты должны быть безопасны для человека и для робота, если нет цели провести краш‑тест робота:

  • Подготовьте пульт со стоп‑кнопкой для робота, которая отключает его движение.
  • Заранее огородите зону испытаний, если проверяете движение робота, — вне зависимости от вида робота, будь то роборука, передвижной робот или гуманоид.
  • Постелите на пол маты, чтобы робот не сломался при падении (для тестирования гуманоидов).
  • Применяйте страховочные тросы и крепите их к роботу (для тестирования гуманоидов).

Примеры базовых тестов

Давайте рассмотрим несколько тестов, которые делали специалисты из индустрии, — простые и одновременно с этим интересные:

  • Проверка запаса устойчивости.
  • Удержание равновесия.
  • Взятие предметов.
  • Промпт‑пикинг.
  • Открытие корзин.
  • Кофейный тест.

Проверка запаса устойчивости

В примере ниже проверяется движение по сложнопересечённой местности.

Источник: Boston Dynamics Big Dog, видео на YouTube-канале olinerd

Здесь планирование «куда поставить ногу» на каждом шаге — это целый алгоритмический челлендж.

Удержание равновесия

Для этого из‑под робота Agility Robotics сперва выдергивают опору, затем добавляют вес в контейнер, который он удерживает, а после — толкают робота.

Источник: Humanoid Robot: Step Recovery Challenge, видео на YouTube-канале Agility Robotics

Также в видео рассказывают, как в компании готовятся к тестам, какие метрики снимают и как фиксируют результат.

Взятие предметов

Особенно со сложными формами и весами. Посмотрите, как робот с «двупалым» захватом от Boston Dynamics берёт разные предметы и перемещает их.

Источник: HD Atlas Manipulates, видео на YouTube-канале Boston Dynamics

Промпт-пикинг

То есть тест, когда роботу нужно взять предмет определённого цвета и формы — эти параметры задаются промптом. На видео ниже робот получает словесную команду и выбирает правильный объект в сцене.

Источник: видео Яндекс Роботикс

Такой тест оценивает связку языка, зрения и манипуляции.

Открытие корзин

На видео — примеры базовых манипуляций: робот открывает корзину, кладёт яблоко.

Источник: видео Яндекс Роботикс

Такие простые и безопасные действия — основа тестирования: их можно повторять бесконечно, варьировать объекты и условия, усложнять правила и задачи.

Кофейный тест

Ниже — пример упрощённого кофейного теста: робот выполняет заданный набор действий.

Источник: видео Яндекс Роботикс

Тест показывает базовую последовательность, но не покрывает реальные вариации — отсутствие воды, очистку, смену интерфейса.


В ходе тестов стоит быть готовым к тому, что робот будет регулярно сталкиваться с проблемами: терять равновесие, промахиваться или ломать предметы.

Это нормально — для этого и нужен тест. А вот чтобы исправить проблему, потребуются навыки дебага, поиска и решения проблем.

Дебаг и поиск проблем

Логи — отличный инструмент для дебагинга. Они позволяют быстро расследовать, какой модуль был первым в цепочке отказов и что вызвало проблему.

Старайтесь хорошо обеспечивать себя логами при разработке ПО — это позволит сэкономить много времени и денег при поиске причин проблем.

Что обязательно логируют:

  • Состояние робота: углы и скорости движения суставов, центр масс (ЦМ), опорные контакты, силы в опоре.
  • Датчики: инерциальный модуль (IMU), датчики силы/момента, датчики в стопах, одометрия, лидар/камеры, температура, напряжение и ток.
  • Управление: заданные и фактические моменты, признаки насыщения, стабильность и задержки контроллера.
  • План: траектории ЦМ и ног, моменты переключения опоры, триггеры шага.
  • Параметры сценария: сила, импульс и направление толчка, точное время удара; внешние измерения: силовые платформы, система захвата движения, высокоскоростное видео.
  • Контекст: версии ПО и параметров, калибровки, тип покрытия и трения, температура, полезная нагрузка.
  • Пределы безопасности: силы и давления в контактах, углы и скорости движения суставов, токи и температура, наклон корпуса.
  • Предупреждающие сигналы: пропуски цикла управления, увеличение задержек, признаки проскальзывания опоры.
  • Автоматические реакции: снижение жёсткости, переход в безопасную стойку, аварийная остановка.

Что делать при обнаружении проблемы

Определить сценарий воспроизведения и завести баг‑репорт.

Это поможет составить перечень дефектов, системно поработать с качеством изделия и понять, какое место наиболее «проседает» в продукте. Этот фидбэк будет полезен при проектировании новых роботов или версий программного обеспечения.

Задача хорошего баг‑репорта — зафиксировать границу проблемы, чтобы описание было не слишком большим и формальным, а саму проблему можно было точно воспроизвести на основе формулировки.

Покажем на примере: у нас робот падает на тесте.

Пример

Нам нужно уточнить и сформулировать проблему. Для этого нужно будет воспроизвести проблему один или несколько раз. Повторяйте усилия толчковыми устройствами или сделайте аналогичную поверхность для движения робота.

При воспроизведении проблемы меняйте только один параметр за раз: направление удара, фазу шага, трение покрытия, массу груза.

Плохая формулировка проблемы: «При толчке робот падает».

Хорошая формулировка проблемы: «При толчке в торс на стадии смены опорной ноги (с усилием более ) у робота не восстанавливается равновесие, и он падает».

Это поможет в будущем собрать статистику поломок, выявить наиболее уязвимые узлы.

Теперь составим баг‑репорт. Шаблон такой:

  1. Заголовок (1 предложение, суть проблемы).
  2. Шаги воспроизведения (3–5 пунктов, только необходимое).
  3. Ожидаемый результат (1 фраза).
  4. Фактический результат (1–2 фразы).
  5. Окружение (ОС, браузер, версия ПО — только релевантное).
  6. Приоритет/срочность (если требуется).
Пример оформления баг‑репорта
  1. Заголовок. При толчке в торс робота на стадии смены опорной ноги с усилием более робот падает.
  2. Шаги воспроизведения. Взять калиброванную палку, отойти на расстояние 15–20 см от робота, запустить робота вперёд. Когда робот будет переходить с одной ноги на другую, толкнуть его палкой в грудь. Палка при этом должна пройти расстояние не более 25 см по прямой.
  3. Ожидаемый результат: робот качнётся и восстановит равновесие в течение 1–2 секунд.
  4. Фактический результат: робот качается и падает через 2–3 секунды.
  5. Окружение: Unitree G1, прошивка версии 26g3112, стандартное покрытие пола, палка v15.
  6. Приоритет: критичный.

Диагностика по симптомам

Чтобы поставить диагноз проблемному узлу по симптомам, нужно понимать устройство системы с разных сторон.

Вот несколько примеров:

  • Падение сразу после удара → поздний запуск шага, ошибка в оценке ЦМ, задержки в передаче сигналов модулю управления, насыщение моментов в голеностопе.

  • Запоздалый шаг или спотыкание → слишком медленный взмах ноги, малый зазор носка, ограничение по досягаемости.

  • Скольжение опоры → завышенный коэффициент трения в модели, неверное распределение сил.

  • Колебания и рывки → слишком высокие усиления регуляторов, задержки фильтров, люфты приводов.

  • Сбой контроллера → противоречивые ограничения, слишком мягкие штрафы, резкая смена контактов без сглаживания.

Зная типичные симптомы, можно сократить время диагностики и отладки. Также это может быть полезно, когда приходит новое изделие на приемку и наладку.

Полезные советы при дебаге, которые помогут значительно сэкономить время

  1. Разделяйте проблемы на «софт» и «железо», это позволит быстрее понять источник бага или конструктивного недостатка. Воспроизведите проблему в симуляции и затем на стенде. Сделайте A/B‑прогоны с отключением подсистем (внешняя локализация, участие рук и т. п.). Протестируйте приводы и питание отдельно: насыщение по току, нагрев, люфты.

  2. Проверьте калибровки и время: ЦМ и инерцию звеньев, нули и дрифт датчиков силы, корректность контактов, синхронизацию времени всех устройств, оценку коэффициента трения по фактическим данным.

  3. Проанализируйте контроллер: время решения оптимизации, активные ограничения, долю времени в насыщениях, положение ЦМ и точек контактов, распределение нагрузки по суставам, вклад рук в баланс.

  4. Проверьте перцепцию и планирование шага: внешние данные (например, используемые модели предметов, карты высот и т. д.), задержки у сенсоров — лидара и камер глубины.

Выводы

Тестирование в Physical AI важно потому, что проверяет не только корректность кода, но и жизнеспособность всей инженерной концепции. Оно затрагивает всё: компоновку, кинематику, материалы, электронику, охлаждение, кабельную разводку и технологичность сборки.

Полноценные испытания позволяют:

  1. Выявлять слабые места конструкции. Приводы, механизмы, охлаждение, точки крепления, кабели — всё это под нагрузкой ведёт себя иначе, чем на чертежах.
  2. Подтверждать эксплуатационные характеристики. Ремонтопригодность, ресурс, безопасность, устойчивость к отказам в реальных условиях.
  3. Валидировать производственные параметры. Повторяемость, допуски, стандартизацию оснастки и процедур.
  4. Оценивать будущую масштабируемость. Производительность сборочных линий (время такта, коэффициент готовности), потребность в персонале, сервисных операциях и инструментах.

Фактически такие тесты — это ранний аудит будущего продукта. На основе полученной информации можно сделать выводы, что реально масштабируется, сколько будет стоить запуск, какие цепочки поставок критичны и как проходить сертификацию.

Дополнительные материалы

Если хочется узнать больше о теории тестирования, рекомендуем прочитать «библию тестирования» — книгу Романа Савина «Тестирование dot com, или Пособие по жестокому обращению с багами в интернет-стартапах».

Краткое изложение книги

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

А в следующей главе мы перейдем к тому, какие вызовы прямо сейчас актуальны в Physical AI: над чем бьются специалисты и какие проблемы еще не решены.

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф4.6. Железная инфраструктура
Следующий параграф6.1. Почему в этой главе мы даем слово разным экспертам