Симулятор
Бесплатный 3D-симулятор робота-манипулятора на Blockly
Изучайте программирование роботов онлайн в браузерном цифровом двойнике. Собирайте программы Blockly слева, моделируйте пятисуставный манипулятор в центре и проверяйте столкновения и баллы справа.
Манипулятор
Пять последовательно соединённых суставов
В режиме Servo учащийся рассчитывает углы, а суставы по одному переходят к абсолютному углу. В Cutter Grid движения в мировой системе заранее компилируются детерминированной обратной кинематикой.
| Joint | Axis | Range | Initial | Speed |
|---|---|---|---|---|
| Поворот основанияbaseYaw | X | 30° … 150° | 90° | 60°/s |
| Крен плеча (только в симуляции)shoulderRoll | — | -45° … 45° | 0° | 45°/s |
| Плечоshoulder | Y | 30° … 150° | 90° | 45°/s |
| Локотьelbow | Z | 17.5° … 162.5° | 90° | 60°/s |
| Запястьеwrist | B | 0° … 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.25min(100, ReferenceProgramCost / ProgramCost × 100)
Стоимость программы равна числу исходных блоков плюс 0,25 за каждую выполненную команду, поэтому цикл дешевле, чем те же движения, записанные по отдельности.
Время
×0.15min(100, ReferenceTimeMs / EstimatedDurationMs × 100)
Время оценивается по перемещению и скорости суставов, а не измеряется браузером. Медленный ноутбук не снижает балл.
Итоговый балл
0.60 × Completion + 0.25 × Efficiency + 0.15 × Time
Если сумма заданных весов не равна 1, симулятор сообщает об ошибке, а не нормализует их незаметно.
Калиброванный эталон: аккуратная короткая стрижка
Стартовая программа набирает не менее 80 баллов за выполнение и намеренно оставляет пространство для улучшения. Повторить её результат — не предел.
Управление
Запуск программы
- Запустить
- Запускает программу из начального состояния задания.
- Пауза / Продолжить
- Останавливает и возобновляет таймер, сохраняя позу.
- Шаг
- Выполняет ровно одну атомарную команду из состояния ожидания или паузы.
- Остановить
- Завершает запуск без записи балла; панель показывает только предварительную полноту.
- Сбросить
- Возвращает симуляцию в исходное состояние, сохраняя программу.
- Проверить
- Оценивает программу без визуализации тем же движком и выдаёт тот же результат за миллисекунды.
Честно о состоянии проекта
Что ещё не реализовано
Лучше перечислить ограничения сейчас, чем обнаружить их во время занятия.
- Учётные записи и сохранение рабочих областей
- Универсальная обратная кинематика времени выполнения вне сертифицированного планировщика Cutter Grid
- Привод ножниц или физический движок
- Реалистичные пряди волос (симулятор использует воксели)
- Самостолкновение робота
- Отдельная мобильная версия
- Передача MQTT в приложении (описана, но ещё не подключена)
- Вход и подтверждённые личности игроков
Вопросы
Частые вопросы
- Нужно ли покупать робота?
- Нет. Продуктом является симулятор в браузере. Физический манипулятор существует, а прошивка открыта, но для обучения он не нужен.
- На каких устройствах это работает?
- Используйте Chrome или Edge на настольном компьютере с разрешением около 1280×720 или выше. Для 3D-среды нужны клавиатура и указатель; отдельной мобильной версии нет.
- Может ли ученик подделать балл?
- В соревновательном раунде программа воспроизводится на сервере, и официальным считается серверный балл. Данным браузера не доверяют, а время выполнения рассчитывают по перемещению суставов, а не измеряют, поэтому различия оборудования не влияют на результат.
- Может ли робот задеть голову?
- Нет. Зазор контролируется непрерывной геометрической проверкой, а не физической симуляцией с допуском. При контакте манипулятор остаётся в последней безопасной позе и переходит в восстанавливаемое состояние ошибки.
- Нужна ли учётная запись?
- Для самостоятельной практики учётная запись не нужна. Аккаунты и сохранение рабочих областей ещё не реализованы; остальные ограничения перечислены ниже.
- Проект уже завершён?
- Публичный веб-клиент и Rust API развёрнуты. Servo, практика и уроки Cutter Grid, одиночный и соревновательный режимы доступны и прошли приёмку в Chrome и Edge. Учётные записи, сохранение, MQTT в приложении и мобильная версия не реализованы.