Ничего не найдено :(
    В гостях у Самоделкина! » Роботы » Симпатичный робот, который умеет решать судоку

    Симпатичный робот, который умеет решать судоку




    Симпатичный робот, который умеет решать судоку

    Решать судоку - задача не для всех. Новичку может потребоваться несколько часов, чтобы решить простую головоломку судоку. В этой статье мы увидим, как создать простого робота решателя судоку, который может решить любую головоломку за несколько секунд.
    Давайте посмотрим короткое обзорное видео.

    Для изготовления такого робота нужны следующие

    Инструменты и материалы:
    -Raspberry Pi 3 В;
    -Модуль камеры Raspberry Pi V2;
    -Модуль сенсорного экрана Raspberry Pi;
    -Небольшой динамик;
    -ИК-датчик движения;
    -Светодиоды;
    -Блок питания;
    -Перемычки;
    -Сломанная детская игрушка-робот;

    Шаг первый: о судоку
    Прежде чем создать собственного робота для решения судоку, давайте рассмотрим правила судоку. В судоку играют на сетке 9 x 9 клеток. Внутри рядов и столбцов находится 9 «квадратов» ( 3х3 ). Каждую строку, столбец и квадрат (по 9 пробелов) необходимо заполнить числами от 1 до 9, не повторяя никаких чисел в строке, столбце или квадрате.

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

    Результатом будет решенная головоломка, которая будет отображаться на экране робота.

    Шаг второй: сборка робота
    Перед сборкой установите последнюю версию ОС Rasbian на карту памяти. Скачать ее можно перейдя по этой ссылке.
    Вставьте карту памяти в raspberry pi.
    Тело робота можно напечатать на 3D-принтере или взять любое подходящее. Мастер использует сломанную игрушку-робота. К голове робота нужно закрепить экран.

    Затем установить камеру.

    К экрану подсоединить перемычки.

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

    Подключил перемычки к Рассбери, динамику и ИК-датчик движения. Подробно о подключении всех компонентов мастер не пишет, но в сети много подобных инструкций.

    Шаг третий: решение судоку
    Теперь роботу нужен какой-то алгоритм для решения головоломок судоку. Здесь будет использоваться отслеживание с возвратом, поскольку это очень эффективно для такого рода приложений. Теперь простой алгоритм поиска с возвратом для решения судоку выглядит так:
    Find row, col of an unassigned cell<br>  If there is none, return true
      For digits from 1 to 9
        a) If there is no conflict for digit at row, col
            assign digit to row, col and recursively try fill in rest of grid
        b) If recursion successful, return true
        c) Else, remove digit and try another
      If all digits have been tried and nothing worked, return false
    							source: Geeksforgeeks

    Этот алгоритм легко реализовать на любом языке программирования. В данном случае мастер использовали python 2.7. Код показан ниже:

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

    мы должны записать цифры по порядку слева направо. Для пробелов мы должны записать в последовательности «0». Таким образом, в этом случае последовательность будет
    sequence = "530070000600195000098000060800060003400803001700020006060000280000419005000080079"

    После этого, если мы выполним программу, вывод будет:
    5 3 4 |6 7 8 |9 1 2
    6 7 2 |1 9 5 |3 4 8
    1 9 8 |3 4 2 |5 6 7
    ------+------+------
    8 5 9 |7 6 1 |4 2 3
    4 2 6 |8 5 3 |7 9 1
    7 1 3 |9 2 4 |8 5 6
    ------+------+------
    9 6 1 |5 3 7 |2 8 4
    2 8 7 |4 1 9 |6 3 5
    3 4 5 |2 8 6 |1 7 9

    Шаг четвертый: считывание судоку
    Теперь робот знает, как решать головоломку судоку, но ему нужны входные данные. И здесь есть небольшая хитрость. Ему необходимо отсканировать изображение головоломки судоку и получить от него информацию. Для этого нужна помощь в обработке изображений и машинного обучения. Нужно обработать захваченное изображение и распознать на нем цифры в определенной последовательности. Затем мы передадим последовательность предыдущей программе решения судоку и получим окончательный результат.

    На основании уже готового кода от Майка Деффенбо мастер пишет модифицированный код для raspberry pi:

    Так же нужно установить несколько библиотек и инструментов Python:
    openCV2 (apt-get install python-opencv)
    picameraespeak (apt-get install espeak)

    Не забудьте сохранить код решателя судоку в том же каталоге, что и «sudoku-solve.py». Вам также понадобятся несколько обученных файлов для запуска этого кода. Вы можете найти все это здесь.
    Скачать все файлы:
    generalresponses.data
    generalsamples.data
    sudoku_solve.py
    main.py
    Просто скачайте эти файлы и сохраните их в той же папке. Затем запустите программу main.py.

    Шаг пятый: анимация лица
    Для анимации лица мастер использовал библиотеку Pygame от python, и на основе распознавания движения, обнаруженного ИК-датчиком, робот изменяет анимацию и преобразует вступление в речь (считывание в решение и отображение).

    Все готов. В дальнейшем мастер представил свое устройство на выставке «Kolkata Mini Makers Faire 2019» в Восточной Индии. Также устройство появилось на первой обложке в 98-м выпуске официального журнала Raspberry Pi "The Magpi".

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: Raspberry Pi

    Подводный дрон с видеокамерой

    Робот, ездящий по линии

    9.3
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.3
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    10
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 9.56 из 10 (голосов: 3 / История оценок)

    Добавить комментарий

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии