Функциональность и возможности

Pi Board — это продвинутая автоматизированная шахматная система на основе Raspberry Pi, использующая механизм шагового двигателя оси XY и магниты для перемещения шахматных фигур по доске. Процесс разработки состоял из множества этапов, в том числе из прецизионной калибровки координат шагового двигателя, вычисления веса каждой фигуры для точного перемещения, интеграции сильного шахматного движка, оптимизации стратегий захвата фигур и распознавания движения. Особое внимание было уделено выбору наиболее эффективного алгоритма для снижения энергопотребления шаговых двигателей.

Pi Board позволяет игрокам выбирать цвет фигур и настраивать уровень сложности шахматного движка. Кроме того, на этапе разработки у неё имелась возможность подключения к Интернету, позволявшая пользователям участвовать в дистанционных шахматных матчах по сети.

Видео процесса игры

Начало

Источником вдохновения для создания этого автоматизированного шахматного устройства стал эпизод из фильма про Гарри Поттера, в котором Рон и Гарри играли вместе, а также множество демонстраций шахматной доски SquareOff на Youtube. Захотев создать собственную уникальную версию, я решил провести тест с Arduino, а позже выбрал в качестве основного обработчика проекта Raspberry Pi. Для управления движением фигур я использовал шаговые двигатели и самостоятельно спроектированную и распечатанную на 3D-принтере систему направляющих; это оказалось идеальным решением для точного и эффективного перемещения фигур.

Начинаем собирать XY-сетку

Для начала нужно было разработать самую важную часть конструкции — шаговую сетку оси XY, которая бы позволила нашим магнитам добираться до любой точки на 64-клеточной доске. Я выбрал простой механизм с блоками шаговых двигателей, в котором два двигателя крепились к напечатанной на 3D-принтере системе спроектированных нами направляющих. Эта система более оптимизирована, чем сетка с шаговыми колёсами и обеспечивает более плавное движение по доске. Чтобы приступить к тестированию и проверке того, что сетка может достичь любой точки доски, очень полезным оказался микроконтроллер Arduino. Вся необходимая для этого электроника продаётся в виде готового простого набора для ЧПУ. Хотя сами по себе шаговые двигатели достаточно громкие, добавление тихих драйверов шаговых двигателей наподобие TMC 2209 помогает существенно снизить шум.

Результат должен выглядеть примерно так: я добавил в конструкцию ещё одну рейку, чтобы сделать доску более стабильной и позволить шаговым двигателям свободно двигаться. Пока в качестве устройства для захвата фигур используется электромагнит, но потом мы его заменим на другой компонент.

Механизм захвата фигур

Для захвата фигур в современных автоматизированных шахматных досках обычно применяются системы электромагнитов. К каждой фигуре прикрепляется небольшой магнит с разными полярностями, что позволяет захватывать фигуры разного цвета. После множества тестов с электромагнитами в моей конструкции я столкнулся со множеством проблем. Хотя в видео фигуры движутся почти идеально, возникала серьёзная проблема перегрева. Кроме того, многие современные электромагниты плохо справляются с мгновенным переключением полярности. В этом видео показан мой первый тест с электромагнитами, демонстрирующий плавное движение по диагонали. Позже я планирую провести тесты с другими фигурами. На этом этапе очень важно, чтобы клетки максимально точно совпадали с клетками эталонной доски, потому что они нужны для калибровки координат шаговых двигателей.

Как мы видим, возникают постоянные ошибки при отпускании фигур. Чтобы создать доску с наиболее оптимальными для взаимодействия с пользователем скоростью и точностью, нам нужно более надёжное решение. Проведя множество тестов, я пришёл к выводу, что электромагниты физически неспособны выполнять эту задачу эффективно.

Электромагниты против сервоприводов

Линейный сервопривод с магнитом вместо электромагнита обладает при использовании в автоматизированной шахматной доске различными преимуществами, главным из которых оказывается энергоэффективность. Требуемая электромагниту мощность P рассчитывается как $inline$P = I^2 R$inline$, где I — это ток, а R — сопротивление обмотки электромагнита. Чтобы генерировать магнитное поле, достаточно сильное для поднятия или притяжения объектов, обычно требуется высокий ток, что требует надёжного источника питания и приводит к сильному тепловыделению, с которым что-то нужно делать. Линейному сервоприводу питание нужно в основном только во время движения и он имеет гораздо более низкое энергопотребление в состоянии покоя. Для сервопривода мощность рассчитывается по формуле $inline$P = \tau \cdot \omega$inline$, где $inline$\tau$inline$ — крутящий момент, а $inline$\omega$inline$ — угловая скорость, применяемые только во время движения. Исходя из моих наблюдений и экспериментов, применение сервопривода в общем случае более энергоэффективно, особенно для такой периодически используемой системы, как шахматная доска; оно приводит к снижению энергозатрат и требований к электропитанию.

Оптимизация шагового механизма

Чтобы шаговые двигатели не возвращались каждый раз в исходное положение после совершения хода, я добавил алгоритм оптимизации, создающий матрицу 8 на 8 и вычисляющий позиции шаговых двигателей в каждый момент времени. Длина каждой стороны клетки — 2200 шагов двигателя. Эта позиция обновляется в глобальной переменной позиции, позволяя шаговым двигателям продолжать движение без возврата в исходное положение.

Ходы коней и рокировки?

Для ходов коня и рокировок на нашей шахматной доске нужно пересекать другие фигуры. С рокировками всё просто — их можно выполнять, написав две функции, покрывающие четыре возможных случая. Однако с ходом коня всё сложнее. Чтобы конь двигался правильно, я провёл множество тестов и исследовал разные паттерны оптимизации. Изначально я пробовал перемещать фигуру перед конём на пустую клетку, двигать коня, а затем возвращать фигуру в исходную позицию. Позже мы разработали более простое решение: конь совершает шаг на полклетки, делает свой ход, а затем возвращается назад на полклетки.

Комментарии (6)


  1. CBET_TbMbI
    23.05.2025 16:00

    Интересная штука. Если довести до ума и уложиться в приемлемые деньги, можно сделать бизнес.

    Так и вижу:

    1. Игрок расставляет фигуры, система по датчикам проверяет их (у каждой свой датчик)

    2. Игрок выбирает уровень сложности (хоть банальным переключателем) и жмёт старт.

    3. И всё. Можно играть.

    Надо только посмотреть, есть ли какой-нибудь шахматный алгоритм, который хорошо играет, но имеет небольшие системные требования, чтобы какой-нибудь самый дешёвый одноплатник потянул.

    И систему передвижения сделать максимально компактной и энергоэффективной. Правда, не думаю, что получится сделать автономной и компактной, чтобы без розетки или килограммового аккумулятора хватало на несколько часов.


    1. NotSlow
      23.05.2025 16:00

      Самое главное - сразу продумать куда потратить доход с бизнеса. Все остальное уже детали несущественные.


  1. tigreavecdesailes
    23.05.2025 16:00

    Во-первых надо было слона на c5 брать )

    Во-вторых такая механика требует гораздо более сложного алгоритма:
    - уводить побитую фигуру за край доски;
    - рокировку (и другие сложные ходы типа коня на закрытое поле) делать в несколько приёмов. Например, короля ставить со смещением, передвигать ладью чтобы она не сбивала другие фигуры, поправлять короля.

    В третьих сама механика требует ускорения. Подавляющее количество игр без соперника напротив (то есть за компом) - это блиц.

    Ну и в целом механика, по-моему (а я мечтаю о такой доске), это тупиковый вариант, потому что комфортная игра (с быстрыми ходами и без необходимости поправлять фигуры) в 2-х измерениях (не поднимая фигуры над другими при ходах) требует одновременного движения нескольких фигур, чтобы расступались когда нужно и вставали на место.


    1. xSVPx
      23.05.2025 16:00

      Очень зависит от размера клеток и размера фигур. Если фигуры занимают менее половины клетки, то сдвинуть в одну сторону, провести нужную фигуру и поправить в другую не особенная проблема. Современные двигатели могут это делать с такой скоростью, что дерево доски воспламеняться будет :).

      Но есть вариант и похардкорнее. Каждую клетку можно снабдить механизмом подъёма и опускания фигуры, с крышкой. Т.е. попросту механизм прятания фигур сделать. Спрятал, провел, вернул обратно. Будет вообще мгновенно.

      Можно и скрестить два варианта сделав механизм сдвигания и поправления фигур, т.е. банальных два электромагнита один с краю, второй в центре. Включил крайний, фигуры сдвинулись, провел, включил центральный.

      Много чего можно нарукоблудить... Вот на пенсию выйду :)....


  1. TimID
    23.05.2025 16:00

    Тоже пробовали похожую систему собрать.
    Но шахматы - нерациональная (для реализации) игра в данном случае. Гораздо лучше что-нибудь фентезийное.
    Там и рокировки, и "прыжки" конём не потребуются в таком случае.


    1. itGuevara
      23.05.2025 16:00

      Гораздо лучше что-нибудь фентезийное.

      Или процессное, типа стола Metasonic Touch