Техническое описание РУБРИКа
Страница для энтузиастов. Здесь описано, из чего состоит робот РУБРИКа, кто что считает и как к нему подключиться напрямую. Подробности — по ссылкам внизу.
Из чего состоит робот
Цепочка из трёх устройств:
ноутбук телефон робота модуль робота
приложение ↔ приложение робота ↔ STM32, моторы,
ученика BT (Python, Chaquopy) USB датчики
CDC
| Устройство | Что делает | Связь со следующим |
|---|---|---|
| Ноутбук с приложением ученика | Редактор блоков и Python, уроки, проверка программы | Bluetooth (RFCOMM SPP) или сеть класса (TCP) |
| Телефон робота (Android) с приложением робота | Выполняет программу ученика на Python | USB CDC-ACM, 115200 8N1, протокол модуля |
| Модуль робота (контроллер STM32) | Приводит моторы, считает одометрию, отвечает на опросы | — |
Источники: протокол 01 (заголовок: Bluetooth RFCOMM SPP или TCP по сети класса); протокол 05.
Кто что считает
Коротко: смысл программы считает телефон, уроки и проверку — приложение ученика на ноутбуке, поворот на угол — модуль. Подробный разбор — на странице «Кто что считает» (/docs/who-computes-what).
Что известно из протокола модуля (протокол 05):
- Телефон исполняет программу ученика и переводит команды в единицах ученика (сантиметры, градусы поворота) в кадры для модуля (§1, §2.2).
- Позиционный шаг (
#F) модуль останавливает сам, когда цель достигнута (§2). Если шаг не может дойти до цели (колесо держат, вал заклинило), модуль продолжает подавать мощность: тайм-аут и прерывание «нет движения» делает приложение робота (§3.2). Непрерывное движение (#M) задаётся в процентах мощности, без регулирования скорости на модуле (§2). - Модуль накапливает одометрию по разъёмам и сообщает её по запросу (§3). Завершение шага определяет телефон по неподвижности одометрии (§3.2).
- У модуля нет собственного сторожа (§6, D-080). Модуль выполняет последний кадр
#M, пока не придёт новый кадр или стоп. Срок действия команды (800 мс) соблюдает приложение робота на телефоне (§5). При прямом управлении модулем приложения робота нет: ограничивать время движения и слать стоп должна ваша программа.
Разъёмы модуля
| Разъёмы | Количество | Обозначение | Источник |
|---|---|---|---|
| Моторы | 4 | A, B, C, D (буквы напечатаны на модуле) | протокол 05 §2, rubrick.py (_PORT_LETTERS) |
| Датчики | 4 | 1–4 (S1–S4) | количество — docs/product/TZ_product.md §2.1; обозначения S1–S4 — протокол 07 §1 (не опубликован) |
Порядок букв моторов в кадре #M обратный: поле 1 — разъём D, поле 2 — C, поле 3 — B, поле 4 — A. Это проверено на живом модуле 27.09.2026 (протокол 05 §2). В программе ученика разъём мотора называют буквой или номером 1–4: 1 — D, 2 — C, 3 — B, 4 — A (rubrick.py, _PORT_LETTERS).
Датчики: в протоколе модуля (05) команд для датчиков нет; датчики EV3 придут с обновлением прошивки (ТЗ §2.4). Протокол датчиков (07) опубликуем после выхода прошивки.
Совместимость моторов
В техническом задании (TZ_product.md §2.3) для первой версии заявлены два мотора: LEGO EV3 большой и LEGO EV3 малый. Моторы других производителей и собственные моторы РУБРИКа в первой версии не заявлены.
Чего документы не содержат: результата проверки на живом модуле для каждого типа EV3-мотора. Протокол 05 подтверждает наличие моторов на разъёмах (#GP;), но не называет их тип. Пока такой проверки в документах нет, считайте совместимость заявленной, а не подтверждённой.
Модуль
- Микроконтроллер — STM32. Идентификатор USB живого модуля —
0483:3740(STMicroelectronics). Источник: протокол 05 §0. - USB — обычное устройство CDC-ACM из двух интерфейсов: Communications и CDC-Data. Это собственный USB модуля, не отладчик ST-LINK. Источник: протокол 05 §0 (проверено 09.09.2026).
- Параметры порта
115200 8N1— формальность: данные идут на скорости USB, а не UART. Источник: протокол 05 §0. - Кадры — ASCII, начинаются с
#, заканчиваются;, после каждой строки\n. Источник: протокол 05. - Прошивку можно записать по тому же кабелю, отдельного режима загрузчика нет. Источник: протокол 05 §7.
Прошивка модуля сейчас — тестовая сборка.
Программа на Python
Программа ученика — настоящий Python. Она выполняется на телефоне робота, а не на ноутбуке. Для робота есть библиотека rubrick (класс Robot, класс Motor). Все команды, параметры и примеры — в справочнике команд Python (/docs/python).
Приложение ученика отправляет исходный текст программы на телефон по Bluetooth или по сети класса и получает обратно вывод и телеметрию (протокол 01).
Виртуальный робот
Виртуальный робот — имитация робота на ноутбуке. Программа выполняется на нём без железа, по тому же протоколу модуля. Движение моделируется без динамики: вал крутится с постоянной скоростью, пропорциональной проценту мощности, нет инерции, разгона и нагрузки. Виртуальный робот проверяет логику программы, а не предсказывает физику. Источник: mvp/android-bridge/app/src/main/python/virtual_board.py (описание модуля).
Прямое управление модулем
Можно подключить модуль к своему компьютеру по USB и слать ему команды без телефона. Протокол — в документе «Протокол модуля». Прочтите предупреждение в его начале до первой команды движения.