Перейти к основному содержанию

Симулятор

Бесплатный 3D-симулятор робота-манипулятора на Blockly

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

Манипулятор

Пять последовательно соединённых суставов

В режиме Servo учащийся рассчитывает углы, а суставы по одному переходят к абсолютному углу. В Cutter Grid движения в мировой системе заранее компилируются детерминированной обратной кинематикой.

Порядок суставной цепи, ось вращения, диапазон углов, начальный угол и скорость
JointAxisRangeInitialSpeed
Поворот основанияbaseYawX30° … 150°90°60°/s
Крен плеча (только в симуляции)shoulderRoll-45° … 45°0°45°/s
ПлечоshoulderY30° … 150°90°45°/s
ЛокотьelbowZ17.5° … 162.5°90°60°/s
ЗапястьеwristB0° … 180°90°75°/s

Оси X, Y, Z, B и отведённая ось резака E начинаются с заданного прошивкой значения Home 90°. Shoulder Roll существует только в симуляции и начинается с 0°. Геометрические смещения отображают это аппаратное состояние в одну безопасную позу; скрытой второй начальной позы нет.

Блоки

Три блока Servo и сертифицированные движения Cutter Grid

Режим Servo использует блоки угла, ожидания и повтора. Cutter Grid добавляет шесть мировых направлений и целые расстояния. Blockly выдаёт проверенный Program IR, а планировщик фиксирует детерминированную траекторию до воспроизведения.

set <joint> to <angle>°

Перемещает один сустав на абсолютный угол. Список суставов задаётся заданием, а угол вне диапазона отклоняется до запуска.

wait <ms>

Удерживает текущую позу от 0 до 5000 миллисекунд.

repeat <n> times

Выполняет вложенные блоки от 1 до 20 раз. Цикл считается одним блоком вместо n и заметно повышает эффективность.

Безопасный зазор вокруг головы

Отказ от движения вместо столкновения

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

Если проверка обнаруживает контакт, выполнение останавливается в последней безопасной позе. Исходный блок подсвечивается, а симуляция переходит в восстанавливаемое состояние ошибки. Визуализация не скрывает коррекцию: при остановке робота интерфейс указывает вызвавший её блок.

Что показывает журнал

12:04:31 запуск · задание neat-short-haircut

12:04:31 shoulderRoll → 15°

12:04:32 shoulder → 72°

12:04:33 elbow → 10° отклонено · недостаточный зазор до головы · сохранена последняя безопасная поза

12:04:33 состояние → ошибка (восстанавливаемая) · блок 3

Подсчёт баллов

Из чего складывается балл

Три оценки в диапазоне 0–100 объединяются с фиксированными весами. Интерфейс показывает один знак после запятой, а расчёт хранит полную точность.

Полнота

×0.60

|Target ∩ Result| / |Target ∪ Result| × 100

Воксельный IoU относительно целевой причёски. Лишний срез штрафуется так же, как недостающий.

Эффективность

×0.25

min(100, ReferenceProgramCost / ProgramCost × 100)

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

Время

×0.15

min(100, ReferenceTimeMs / EstimatedDurationMs × 100)

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

Итоговый балл

0.60 × Completion + 0.25 × Efficiency + 0.15 × Time

Если сумма заданных весов не равна 1, симулятор сообщает об ошибке, а не нормализует их незаметно.

Калиброванный эталон: аккуратная короткая стрижка

Reference blocks5
Reference program cost6.25
Reference time5645 ms

Стартовая программа набирает не менее 80 баллов за выполнение и намеренно оставляет пространство для улучшения. Повторить её результат — не предел.

Управление

Запуск программы

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

Честно о состоянии проекта

Что ещё не реализовано

Лучше перечислить ограничения сейчас, чем обнаружить их во время занятия.

  • Учётные записи и сохранение рабочих областей
  • Универсальная обратная кинематика времени выполнения вне сертифицированного планировщика Cutter Grid
  • Привод ножниц или физический движок
  • Реалистичные пряди волос (симулятор использует воксели)
  • Самостолкновение робота
  • Отдельная мобильная версия
  • Передача MQTT в приложении (описана, но ещё не подключена)
  • Вход и подтверждённые личности игроков

Вопросы

Частые вопросы

Нужно ли покупать робота?
Нет. Продуктом является симулятор в браузере. Физический манипулятор существует, а прошивка открыта, но для обучения он не нужен.
На каких устройствах это работает?
Используйте Chrome или Edge на настольном компьютере с разрешением около 1280×720 или выше. Для 3D-среды нужны клавиатура и указатель; отдельной мобильной версии нет.
Может ли ученик подделать балл?
В соревновательном раунде программа воспроизводится на сервере, и официальным считается серверный балл. Данным браузера не доверяют, а время выполнения рассчитывают по перемещению суставов, а не измеряют, поэтому различия оборудования не влияют на результат.
Может ли робот задеть голову?
Нет. Зазор контролируется непрерывной геометрической проверкой, а не физической симуляцией с допуском. При контакте манипулятор остаётся в последней безопасной позе и переходит в восстанавливаемое состояние ошибки.
Нужна ли учётная запись?
Для самостоятельной практики учётная запись не нужна. Аккаунты и сохранение рабочих областей ещё не реализованы; остальные ограничения перечислены ниже.
Проект уже завершён?
Публичный веб-клиент и Rust API развёрнуты. Servo, практика и уроки Cutter Grid, одиночный и соревновательный режимы доступны и прошли приёмку в Chrome и Edge. Учётные записи, сохранение, MQTT в приложении и мобильная версия не реализованы.