Бесплатный онлайн-симулятор робота · Blockly · Цифровой двойник
Запрограммируйте роботадля стрижки волос.Каждое движение сначала проверяется.
HCR представляет собой академическое исследование Hair Cutting Robot. Участники собирают программу из блоков и управляют пятисуставным Service Robot на воксельной причёске. Цифровой двойник заранее проверяет движения и отклоняет любое, которое может коснуться головы.
Клиент работает в браузере, а сервис Rust воспроизводит и оценивает отправленные программы. Физический робот не требуется; сложность меняется в зависимости от результатов участника.
Или скачайте настольное приложение для macOS, Windows и Linux. Это удобно, если в помещении нет Wi-Fi.
- shoulderRoll15°
- shoulder72°
- elbow10°
- elbow−48°
- baseYaw−30°
- baseYaw0°
- baseYaw30°
- wrist−20°
Зачем
Обучение робототехнике трудно масштабировать
Один манипулятор — один ученик
Настоящий манипулятор дорог, рассчитан на одного ученика и требует постоянного контроля преподавателя.
Один курс — один темп
Единая последовательность уроков утомляет сильных учеников и заставляет отстающих сдаваться.
Ошибки обходятся дорого
На реальном оборудовании неверный угол приводит к столкновению, поэтому новичкам часто вообще не дают управлять роботом.
Цикл
Составьте программу, проверьте и оцените. Измените одно число и попробуйте снова
Третий из трёх шагов возвращает к первому. В этом цикле и состоит обучение.
- 1Программа
Перетаскивайте блоки, не вводя синтаксис
В режиме Servo есть три типа блоков: абсолютный угол, ожидание и повтор. Cutter Grid добавляет шесть мировых направлений и целые расстояния, заранее компилируемые в детерминированный план суставов.
Углы сервоприводов · движения Cutter Grid · ожидание (0–5000 мс) · повтор (1–20 раз)
- 2Проверка
Сначала программу запускает цифровой двойник
До движения манипулятора программа проверяется на геометрической модели головы. Опасная команда отклоняется: робот сохраняет последнюю безопасную позу, а проблемный блок подсвечивается.
Непрерывная проверка контакта · детерминированно, без физического движка
- 3Оценка
Баллы, а не отметка
Ошибка означает лишь ещё одну попытку. Баллы зависят от сходства с целевой причёской, компактности программы и расчётного времени.
0.60 completion + 0.25 efficiency + 0.15 time
Адаптация
Свой уровень для каждого ученика, а не один для всего класса
После каждой попытки платформа заново оценивает уровень и подбирает следующее задание. Уверенный успех повышает сложность, затруднение — снижает её.
- Способность θ
- Уровень программирования робота по логит-шкале, обновляемый после каждого повторного выполнения.
- 2PL, а не 3PL
- Правильную стрижку нельзя угадать, поэтому параметр угадывания равен нулю, а третий параметр не оценивается по шуму.
- Выбор заданий
- Задания ранжируются по информации Фишера при текущем θ, затем частота показа ограничивается, чтобы ученики одного уровня не получали один и тот же небольшой набор.
- Частичный балл
- Баллы непрерывны. Перед обновлением оценки сервис преобразует исходный балл относительно порога освоения задания и сохраняет исходное значение.
- Калибровка
- Новое задание сначала считается предварительным: частота показа ограничена, а результаты не влияют на официальную оценку способности, пока не накопится достаточно ответов для повторной оценки сложности.
- Пока используется один θ
- В этой версии способность представлена одним составным значением, а у каждого ответа сохраняются теги измерений для отчётности. Настоящая многомерная модель — следующий этап, а не текущая возможность.
Участие
До начала выберите, хотите ли вы участвовать
Клиент не создаёт сеанс симулятора или идентификатор игрока, пока человек не решит участвовать в исследовании.
Необходимые данные исследования
Скомпилированный Blockly Program IR, версия задания, оценка и технические идентификаторы сеанса или отправки, необходимые для воспроизведения и анализа.
Дополнительный контекст
Основной язык записывается только общим кодом, например zh или en. Смещение UTC хранится как число минут. Кнопка «Участвовать» включает оба поля; в дополнительных настройках их можно отключить по отдельности.
Что мы не собираем
Мы не собираем отпечатки браузера, точные имена часовых поясов IANA, предполагаемое местоположение, рекламные идентификаторы или профили межсайтового отслеживания.
Как мы описываем данные
Мы не называем эти данные полностью анонимными. В материалах исследования могут сохраняться идентификаторы сессий, а сервер ведёт обычные журналы безопасности, поэтому данные считаются обезличенными.
Режимы
Тренируйтесь самостоятельно или соревнуйтесь со всей группой
Самостоятельная практика
Без ограничения времени: рабочая среда, задание и любое число попыток.
- Можно запустить, приостановить, продолжить, выполнить по одной команде, остановить или сбросить. После сброса программа сохраняется.
- «Тест» оценивает программу без визуализации за миллисекунды, не дожидаясь анимации.
- Во время работы можно включать и выключать предварительный вид целевой причёски.
Соревновательный раунд
Все участники комнаты одновременно получают одно и то же задание.
- Фиксированное окно реального времени, отсчитываемое сервером, а не устройством игрока.
- До конца раунда никто не видит баллы, даже собственные.
- Можно отправлять сколько угодно раз; учитывается только лучшая попытка.
- Программы повторно выполняются на сервере, поэтому более быстрый компьютер не даёт преимущества.
Без настроенного сервера браузер оценивает раунды против запрограммированных ботов. Меню, лобби и таблица результатов явно помечают их как тренировочные. Играть офлайн можно, но локальный балл никогда не выдаётся за официальный.
Создано на Rust
Rust: от серверного воспроизведения до встроенной прошивки робота
Rust в HCR — не декоративная метка: на нём реализованы сервис оценки, адаптивный механизм, протокол и встраиваемый шлюз no_std.
Техническая основа
Четыре компонента, один протокол
Simulator
HCR_Simulator_Frontend
React · TypeScript · Vite · React Three Fiber · Blockly
Весь демонстрационный цикл выполняется на клиенте. Если серверная часть не настроена, сетевые запросы не отправляются.
Service
hcr-backend
Rust · MQTT over WebSocket · HTTP binding
Воспроизводит программы на сервере, управляет адаптивным банком заданий, сроками раундов и таблицей результатов.
Протокол
hcr-backend/schema
hcr.v1 · JSON and CBOR
Каждое сообщение помещается в конверт и связывается по ULID. Минорные версии могут только добавлять поля; получатели отбрасывают неизвестное содержимое, а не завершаются с ошибкой.
Оборудование
hcr-fw
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
В физическом манипуляторе с пятью сервоприводами Rust управляет запуском, маршрутизацией, HTTP/JSON и состоянием сервоприводов; C++ остаётся за байтовым C ABI. MQTT пока не реализован.
Попробуйте
Адаптивное программирование, игра, симуляция и обучение на одной платформе.
Покупать робота не нужно. Весь класс может учиться одновременно, каждый на своём уровне. Ознакомьтесь с исследованием, решите, участвовать ли, и откройте первое задание.