Мазмұны:

Шахмат роботы 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 қозғалтқыштары мен сенсорлары арасындағы аппараттық интерфейсті Dexter Industries компаниясының BrickPi3 қамтамасыз етеді.

Lego конструкциясы Даро Хади жасаған «Чарли шахмат роботына» негізделген, оны мен өзгерткенмін, соның ішінде Lego Mindstorms процессорына емес, RPi пайдалану режимі. Lego Mindstorms EV3 қозғалтқыштары мен сенсорлары қолданылады.

Сондай -ақ, сізге үстел, камера, жарықтандыру, пернетақта, экран және меңзегіш құрылғы қажет (мысалы, тышқан).

Әрине, шахмат фигуралары мен тақта.

Мен мұның бәрін келесі қадамдарда толығырақ сипаттаймын.

2 -қадам: аппараттық құралдарды құрастыру

Image
Image

Мен бұрын айтқанымдай, көру кодының жүрегі әр түрлі құрылымдармен жұмыс істейді.

Мен роботты Дарроси Хадидің «Чарли шахмат роботына» (EV3 нұсқасы) негіздедім, сол беттегі ақпарат құрастыру нұсқаулығын қалай алуға болатынын айтады. Бөлшектер тізімі мына жерде.

Мен роботты бірнеше жолмен өзгерттім.

1. Ұрғыш. Бұл мен үшін жұмыс істемеді. Редукторлар сырғып кетті, сондықтан мен бұған жол бермеу үшін қосымша Lego бөлшектерін қостым. Содан кейін кран түсірілгенде ол жиі кептеліп қалады, сондықтан мен бұған жол бермеу үшін Ватт байланысын қостым.

Жоғарыда өзгертілген сілтемені көрсететін ұстаушы бар.

2. Түпнұсқа құрылым Lego Mindstorms EV3 процессорын қолданады, бірақ мен Raspberry Pi қолданамын, бұл Python -ды қолдануды жеңілдетеді.

3. Мен Raspberry Pi 3 Model B қолданамын.

4. RPi -ді Lego -мен байланыстыру үшін мен Dexter Industries -тен BrickPi3 қолданамын. BrickPi Raspberry Pi -ге бекітіледі және олар бірге LEGO Mindstorms NXT немесе EV3 кірпішін ауыстырады.

Егер сізде Lego Digital Designer файлы болса, онда LEGO бөлшектерін алу мәселесі туындайды. Сіз кірпішті LEGO дүкенінен тікелей ала аласыз, және бұл оларды алудың ең арзан әдісі. Алайда, олар сізге қажет нәрсенің бәрін алмайды, ал кірпіштің келуіне бірнеше апта немесе одан да көп уақыт кетуі мүмкін.

Сіз сондай -ақ Rebrickable функциясын қолдана аласыз: есептік жазбаны ашыңыз, LDD файлын жүктеңіз және одан сатушылардың тізімін алыңыз.

Тағы бір жақсы дереккөз - Bricklink.

3 -қадам: Роботтың қозғалысын қамтамасыз ететін бағдарламалық жасақтама

Барлық код Python 2 -де жазылған.

  1. Dexter Industries EV3 қозғалтқыштарын және т.б. қозғалуды қолдау үшін код береді. Бұл BrickPi3 бірге келеді.
  2. Мен моторды шахмат фигураларын жылжытатындай етіп қозғау үшін код беремін!
  3. Шахмат қозғалтқышы - 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 веб -камерасы HD 2300 -ді жақсы көремін, себебі мен оны сенімді деп санаймын.

Кесте

Сізге берік керек. Мен бұны сатып алдым. Оның үстіне менде МДФ төртбұрышы бар екенін көруге болады, онда арба қозғалғанда роботтың секіріп кетуін тоқтататын заттар бар. Камераны тақта үстінде бір қалыпта ұстаған дұрыс!

Пернетақта

RPi бірінші рет орнату үшін USB пернетақтасын қажет етеді. Мен мұны кодты әзірлеу үшін қолданамын. Роботқа пернетақта қажет жалғыз нәрсе - бұл бағдарламаны бастау және шахмат сағатына соқтығу. Мен бұлардың бірін алдым. Бірақ шын мәнінде сізге тек RPi-ге қосылған тышқан немесе GPIO түймесі қажет

Дисплей

Мен даму үшін үлкен экранды қолданамын, бірақ роботқа тек сіздің әрекетіңіздің жарамсыз екенін, тексеруді және т.б. айту қажет. Мен бұлардың бірін алдым, оларды amazon.com сайтынан алуға болады.

Бірақ робот дисплейді талап етпей, бұл фразаларды айтады! Мен мұны осында сипатталғандай кодты пайдаланып мәтінді сөйлеуге түрлендіру және кішкентай динамикті бекіту арқылы жасадым. (Мен «Гамбургер шағын динамигін» қолданамын).

Роботтың сөйлемдері:

  • Тексеріңіз!
  • Шахмат жарысы
  • Жарамсыз қозғалыс
  • Сіз жеңдіңіз!
  • Тоқтап қалу
  • Үш рет қайталау арқылы сурет салу
  • 50 қадаммен сурет салу ережесі

Шахматтағы елу қадам ережесінде ойыншы соңғы елу жүрісте ұстау жасалмаса және ешқандай пешка қозғалмаса, ұтыс ойынына қатысуға құқылы екендігі айтылады (бұл үшін «жылжу» кезегін аяқтаған ойыншыдан тұрады, содан кейін қарсылас өз кезегін аяқтайды).

Сіз роботтың жоғарыда айтылған «ақымақтың жұбайы» бейнебаянында сөйлейтінін ести аласыз (егер сіз дауысыңызды жоғары көтерсеңіз)!

6 -қадам: Бағдарламаны қалай алуға болады

1. Балық балықтары

Егер сіз Raspi -ді RPi -де іске қоссаңыз, Stockfish 7 қозғалтқышын пайдалануға болады - бұл тегін. Тек жүгір:

sudo apt-get stockfish орнатыңыз

2. ChessBoard.py

Мұны мына жерден алыңыз.

3. https://chess.fortherapy.co.uk/home/a-wooden-chess… негізделген код

Менің кодыммен бірге келеді.

4. BrickPi3 үшін Python драйверлері:

Осыларды осында алыңыз.

5. Жоғарыдағы барлық кодты шақыратын және роботты қимыл жасауға мәжбүрлейтін менің кодым және менің көру коды.

Мұны маған түсініктеме беру арқылы алыңыз, мен жауап беремін.

Ұсынылған: