Съдържание:

Шахматен робот, направен с LEGO и Raspberry Pi: 6 стъпки
Шахматен робот, направен с LEGO и Raspberry Pi: 6 стъпки

Видео: Шахматен робот, направен с LEGO и Raspberry Pi: 6 стъпки

Видео: Шахматен робот, направен с LEGO и Raspberry Pi: 6 стъпки
Видео: Изучаем iOS: создайте собственное приложение с помощью Objective-C! от Тянью Лю 2024, Ноември
Anonim
Image
Image

Удивете приятелите си с този шахматен робот!

Не е твърде трудно да се изгради, ако преди сте правили роботи на LEGO и ако имате поне елементарни познания по компютърно програмиране и Linux.

Роботът прави свои собствени движения и използва визуално разпознаване, за да определи хода на човешкия играч.

Едно от новите неща в този робот е кодът за разпознаване на ходове. Този код за визия може да се използва и за роботи за шах, изградени по много други начини (като моя ChessRobot, използващ роботизираната ръка Lynxmotion).

Не са необходими специална шахматна дъска, тръстикови превключватели или каквото и да е друго (тъй като ходът на човека се определя чрез визуално разпознаване).

Моят код е достъпен за лична употреба.

Стъпка 1: Изисквания

Светлини, камера, екшън!
Светлини, камера, екшън!

Целият код е написан на Python, който ще работи, наред с други неща, на Raspberry Pi.

Raspberry Pi е компютър с размер на кредитна карта, който може да бъде включен в екран и клавиатура. Това е евтин (около $ 40), способен малък компютър, който може да се използва в проекти за електроника и роботика и за много от нещата, които прави вашият настолен компютър.

Моят робот използва Raspberry Pi и Lego. Хардуерният интерфейс между двигателите и сензорите на RPi и Lego Mindstorms EV3 се осигурява от BrickPi3 от Dexter Industries.

Конструкцията на Lego е базирана на „Чарли шахматния робот“, от Darrous Hadi, модифициран от мен, включително модове за използване на RPi, а не на Lego Mindstorms процесор. Използват се двигатели и сензори Lego Mindstorms EV3.

Ще ви трябват също маса, камера, осветление, клавиатура, екран и посочващо устройство (например мишка).

И разбира се, шахматни фигури и дъска.

Описвам всички тези неща по -подробно в следващите стъпки.

Стъпка 2: Изграждане на хардуер

Image
Image

Както вече посочих, сърцевината на кода за визия ще работи с различни версии.

Базирах моя робот на „Чарли шахматния робот“(версия EV3) на Darrous Hadi, информацията на тази страница казва как да получите инструкции за изграждане. Списъкът с части е тук.

Промених робота по няколко начина.

1. Грабер. Това не работи при мен. Скоростите се подхлъзнаха, затова добавих допълнителни парчета Lego, за да предотвратя това. И тогава, когато кранът беше спуснат, той често се задръстваше, така че добавих връзка на Watt, за да предотвратя това.

По -горе е грайферът в действие, показващ модифицираната връзка.

2. Оригиналната компилация използва Lego Mindstorms EV3 процесор, но аз използвам Raspberry Pi, което улеснява използването на Python.

3. Използвам Raspberry Pi 3 Model B.

4. За да свържа RPi към Lego, използвам BrickPi3 от Dexter Industries. BrickPi се прикрепя към Raspberry Pi и заедно те заместват LEGO Mindstorms NXT или EV3 Brick.

Когато имате файла Lego Digital Designer, тогава възниква въпросът за получаване на LEGO части. Можете да получите тухли директно от магазина на LEGO и това е най -евтиният начин да ги получите. Те обаче няма да имат всичко необходимо и тухлите може да отнемат няколко седмици или повече, за да пристигнат.

Можете също да използвате Rebrickable: отворете акаунт, качете LDD файла и оттам вземете списък с продавачи.

Друг добър източник е Bricklink.

Стъпка 3: Софтуерът, който кара робота да се движи

Целият код е написан на Python 2.

  1. Dexter Industries доставя код за подпомагане на преместването на двигателите EV3 и т.н. Това идва с BrickPi3.
  2. Предоставям кода, за да накарам двигателите да се движат по такъв начин, че да преместват шахматните фигури!
  3. Шахматният двигател е Stockfish - който може да победи всеки човек! "Stockfish е един от най -силните шахматни двигатели в света. Освен това е много по -силен от най -добрите човешки шахматни гросмайстори."
  4. Кодът за задвижване на шахматната машина, потвърждава, че ходът е валиден и т.н. е ChessBoard.py
  5. Използвам някакъв код от https://chess.fortherapy.co.uk за взаимодействие с това.
  6. Моят код (в 2 по -горе) след това взаимодейства с това!

Стъпка 4: Софтуерът за разпознаване на движението на човека

След като играчът направи своя ход, камерата прави снимка. Кодът изрязва и завърта това, така че шахматната дъска да пасва точно на следващото изображение. Квадратите на шахматната дъска трябва да изглеждат квадратни !. В изображението има изкривяване, тъй като ръбовете на дъската са по -далеч от камерата, отколкото в центъра на платката. Камерата обаче е достатъчно далеч, така че след изрязването това изкривяване не е значително. Тъй като роботът знае къде са всички фигури след преместването на компютъра, тогава всичко, което трябва да се направи, след като човек направи ход, е кодът да може да различи следните три случая:

  • Празен квадрат
  • Черно парче от всякакъв вид
  • Бяло парче от всякакъв вид.

Това обхваща всички случаи, включително рокадата и пасажа.

Роботът проверява дали движението на човека е правилно и ги информира, ако не е така! Единственият случай, който не е обхванат, е, когато човешкият играч популяризира пешка в не-кралица. След това играчът трябва да каже на робота какво е рекламираното парче.

Сега можем да разгледаме изображението като квадрати на шахматна дъска.

При първоначалната настройка на дъската знаем къде са всички бели и черни фигури и къде са празните квадратчета.

Празните квадратчета имат много по -малко вариации в цвета, отколкото заетите квадрати. Изчисляваме стандартното отклонение за всеки от трите RGB цвята за всеки квадрат във всичките му пиксели (различни от тези близо до границите на квадрата). Максималното стандартно отклонение за всеки празен квадрат е много по -малко от минималното стандартно отклонение за всеки зает квадрат и това ни позволява след последващо движение на играча да определим кои квадрати са празни.

След като определихме праговата стойност за празни спрямо заети квадрати, сега трябва да определим цвета на парчетата за заети квадрати:

На първоначалната дъска изчисляваме за всеки бял квадрат, за всеки от R, G, B средната (средната) стойност на пикселите му (различни от тези близо до границите на квадрата). Минимумът на тези средни стойности за всеки бял квадрат е по -голям от максимума на средния за всеки черен квадрат и затова можем да определим цвета на парчетата за заетите квадрати. Както бе посочено по -горе, това е всичко, което трябва да направим, за да определим какъв е ходът на човешкия играч.

Алгоритмите работят най -добре, ако шахматната дъска има цвят, който е далеч от цвета на фигурите! В моя робот фигурите са почти бели и кафяви, а шахматната дъска е ръчно изработена от карта и е светлозелена с малка разлика между "черните" и "белите" квадратчета.

Редактиране на 17 октомври 2018 г.: Сега боядисах кафявите парчета в матово черно, което прави алгоритъма да работи при по -променливи условия на осветление.

Стъпка 5: Светлини, камера, действие

Светлини

Имате нужда от равномерен източник на светлина, поставен върху дъската. Използвам този, който е наистина евтин, от amazon.co.uk - и без съмнение има нещо подобно на amazon.com. При изключено осветление на стаята.

Актуализация: Сега имам две светлини, за да дам по -равномерен източник на светлина

Камера

Без съмнение можете да използвате специалния модул за камера Raspberry Pi (с дълъг кабел), но аз използвам USB камера - „Logitech 960-001064 C525 HD уеб камера - черна“- която работи с RPi. Трябва да се уверите, че камерата не се движи по отношение на дъската, като изградите кула или имате къде да я фиксирате здраво. Камерата трябва да е доста високо над дъската, за да намали геометричните изкривявания. Камерата ми е на 58 см над дъската.

Актуализация: Сега предпочитам HP Webcam HD 2300, тъй като го намирам за по -надежден.

Таблица

Имате нужда от здрав. Купих тази. На всичкото отгоре можете да видите, че имам квадрат от MDF, с някои неща, които да спрат робота да подскача, когато количката се движи. Добра идея е камерата да остане в същото положение над дъската!

Клавиатура

RPi се нуждае от USB клавиатура за първата си настройка. И аз го използвам за разработване на кода. Единственото нещо, за което роботът се нуждае от клавиатура, е да стартира програмата и да симулира удара на шахматния часовник. Взех един от тези. Но наистина, имате нужда само от мишка или бутон GPIO, свързан към RPi

Дисплей

Използвам голям екран за разработка, но единственото нещо, от което роботът се нуждае, е да ви каже, че ходът ви е невалиден, да проверите и т.н. Имам един от тях, също достъпен на amazon.com.

Но вместо да изисква дисплей, роботът ще говори тези фрази! Направих това, като преобразувах текст в реч, използвайки код, както е описано тук, и прикачих малък говорител. (Използвам „мини говорител за Хамбургер“).

Фразите, които роботът казва:

  • Проверете!
  • Мат -мат
  • Невалиден ход
  • Ти спечели!
  • Патова ситуация
  • Рисувайте с трикратно повторение
  • Правило за равенство с 50 хода

Правилото за петдесет хода в шаха гласи, че играчът може да претендира за равенство, ако не е бил заловен и пешка не е била преместена през последните петдесет хода (за тази цел "ход" се състои от играч, завършил хода си, последван от опонентът завърши своя ред).

Можете да чуете робота да говори в краткия видеоклип „приятел на глупак“по -горе (ако усилите звука си доста високо)!

Стъпка 6: Как да получите софтуера

1. Запас

Ако стартирате Raspbian на вашия RPi, можете да използвате двигателя Stockfish 7 - това е безплатно. Просто бягай:

sudo apt-get install stockfish

2. ChessBoard.py

Вземи това тук.

3. Код, базиран на

Идва с моя код.

4. Драйвери на Python за BrickPi3:

Вземете тези тук.

5. Моят код, който извиква целия код по -горе и който кара робота да прави движенията, и моят код за зрение.

Вземете това от мен, като публикувате коментар и аз ще отговоря.

Препоръчано: