Алгоритм встречается с физикой.
Три омниколеса. Два показания датчиков. Ворсовое поле.
Infrared · стенд одного робота
football111.ino · условия переноса и виртуальные входы
Перенесены четыре блока, PID по YAW, дистанция по числу активных ИК-датчиков, EMA, slew, разгон и таймеры соленоида. Частота — 500 Гц. Пресет выбирает 32 ИК-датчика и MF4015 12 V. Начало симуляции соответствует завершённому setup; гироскоп обнуляется в стартовом положении.
В файле вперёд — отрицательная Vy, вправо — положительная Vx. Адаптер согласует знаки углов и команды CAN со схемой на поле: ID 3 — M1 слева спереди, ID 2 — M2 сзади, ID 1 — M3 справа спереди. Это соответствие выведено из матрицы driveOmni120; его нужно сверить с проводкой реального робота.
Виртуальное число активных ИК-датчиков — 5 / 4 / 3 / 2 / 1 при зазоре до корпуса ≤10 / 40 / 70 / 100 / >100 см. Виртуальный фоторезистор даёт 255 при мяче перед вырезом (±20°, зазор ≤35 мм), иначе 0. Это условные модели датчиков, не измеренная калибровка. Истинное расстояние алгоритму не передаётся.
Виртуальный ударник добавляет мячу 2 м/с при фронтальном близком мяче и переходе сигнала в ON. Фильтры IMU, интеграция YAW, мёртвая зона и адаптивный bias перенесены; виртуальные отсчёты Z идут с частотой 1000 Гц. В этом профиле настройка шума гироскопа задаётся в °/с. SPI/CAN, ток катушки и задержки запуска платы не эмулируются. Выходы моторов сохраняют единицы файла: MAX_SPEED_DPS = 6800°/с = 1133 об/мин; физический предел выбранного мотора может их ограничить.
Включён объезд, который в .ino был закомментирован: при близком мяче сзади (±150…180°, оценка <450 мм) робот отходит назад и вправо с Vx=70%. Пока условие истинно, таймер продлевается; после выхода из условия боковая команда сохраняется ещё 30 мс. Остальные особенности сохранены: dist_mid и BLOCK4_DIST_MM не участвуют в активной логике; удар не ждёт конца разгона, а при постоянно высоком фоторезисторе сигнал может оставаться ON дольше 80 мс.
- s.ballAngle
- Угол мяча в градусах; 0° — через передний вырез.
nullпри потере. - s.yaw
- Показание гироскопа, °.
- s.dt / s.time
- Шаг управления / время симуляции, с.
- memory
- Состояние между вызовами. Сбрасывается при старте опыта.
- return [M1, M2, M3]
- Команды −1…1. CHIHAI: PWM; MF4015: нормированная скорость.
api.mix(vx, vy, ω) → три командыvx, vy в корпусе, м/с · ω рад/с
api.speed → скорость из настройки примераАлгоритму не передаются координаты, расстояние до мяча или истинная скорость. Перед — вырез между колёсами. M1 — спереди слева (+60°), M2 — сзади (180°), M3 — спереди справа (−60°); положительный ход направлен против часовой стрелки.
| Колёса | Контакт с мячом | Путь, м | Средний |букс|, м/с | Борты |
|---|
Что моделируется и как калибровать стенд
Обычные примеры: физика — 4 мс (250 Гц), алгоритм — 20 мс (50 Гц). football111: физика — 1 мс (1000 Гц), алгоритм — 2 мс (500 Гц). Команды создают момент, затем считаются ускорение колеса, сила контакта и движение корпуса. Контакт ограничен μ·N, поэтому колесо может крутиться быстрее движения робота. Масса колеса влияет на общую массу и момент инерции.
Колёса расположены на радиусе 0,86 радиуса корпуса. Моторы CHIHAI используют приближённую линейную зависимость момента от скорости и PWM, мёртвую зону и задержку. MF4015 использует упрощённый регулятор скорости с ограничением момента. api.mix учитывает мёртвую зону DC-мотора; заданная скорость соответствует кинематике без нагрузки, сопротивление покрытия снижает реальную скорость. Параметры редуктора приведены к выходному валу; люфт, точный ток, нагрев, напряжение батареи и FOC не рассчитываются.
Ворс задаёт сопротивление качению и бокового движения роликов; направление ворса меняет боковое сопротивление. Это модель для сравнения алгоритмов, а не цифровой двойник измеренного ковра. Начните с замеров холостых оборотов, разгона, выбега, торможения и бокового движения. Затем подберите момент, инерцию и коэффициенты сопротивления.
Перед показан вырезом; стартовый угол по умолчанию — 0°. Контакт считается для круглого корпуса; есть мяч с упругим контактом. Четыре угла скошены под 45°: длина наклонной стенки 14 см, отступ по соседним сторонам около 10 см. Гол фиксируется при касании задней стенки ворот. В тренировочном режиме мяч сразу возвращается в центр, а робот, гироскоп, время и память алгоритма продолжают работу. Мяч можно перетаскивать на ходу; пока он удерживается мышью, он следует за указателем, после отпускания возобновляется его физика. Заезд робота в ворота, дриблер, соперник и судейство пока не моделируются. Для football111 доступна простая модель ударника. Размеры поля настраиваются в пределах профиля Entry; региональные правила могут отличаться.
Источники: Entry 2026 · Кинематика омниколёс · Моторы MF V2. Значения без подтверждённого паспорта помечены в профиле мотора.