Orodha ya maudhui:

Chess Robot Iliyotengenezwa na LEGO na Raspberry Pi: 6 Hatua
Chess Robot Iliyotengenezwa na LEGO na Raspberry Pi: 6 Hatua

Video: Chess Robot Iliyotengenezwa na LEGO na Raspberry Pi: 6 Hatua

Video: Chess Robot Iliyotengenezwa na LEGO na Raspberry Pi: 6 Hatua
Video: Хитрая тюбитейка ► 8 Прохождение Red Dead Redemption 2 2024, Novemba
Anonim
Image
Image

Shangaza marafiki wako na robot hii ya chess!

Sio ngumu sana kujenga ikiwa umetengeneza roboti za LEGO hapo awali na ikiwa una angalau ujuzi wa kimsingi wa programu ya kompyuta na Linux.

Roboti hufanya harakati zake, na hutumia utambuzi wa kuona ili kuamua hoja ya mchezaji wa mwanadamu.

Moja ya mambo ya riwaya katika roboti hii ni nambari ya utambuzi wa hoja. Nambari hii ya maono pia inatumika kwa roboti za chess zilizojengwa kwa njia zingine nyingi (kama vile ChessRobot yangu inayotumia mkono wa roboti wa Lynxmotion).

Hakuna bodi maalum ya chess, swichi za mwanzi au chochote kinachohitajika (kama hatua ya mwanadamu imedhamiriwa na utambuzi wa kuona).

Nambari yangu ya nambari inapatikana kwa matumizi ya kibinafsi.

Hatua ya 1: Mahitaji

Taa, Kamera, Hatua!
Taa, Kamera, Hatua!

Nambari yote imeandikwa katika Python, ambayo itaendelea, kati ya mambo mengine, Raspberry Pi.

Raspberry Pi ni kompyuta yenye ukubwa wa kadi ya mkopo ambayo inaweza kuingizwa kwenye skrini na kibodi. Ni ya bei rahisi (karibu $ 40), kompyuta ndogo inayoweza kutumika katika miradi ya elektroniki na roboti, na kwa vitu vingi ambavyo PC yako ya mezani hufanya.

Roboti yangu hutumia Raspberry Pi, na Lego. Muunganisho wa vifaa kati ya RPi na motors na sensorer za Lego Mindstorms EV3 hutolewa na BrickPi3 kutoka kwa Dexter Viwanda.

Ujenzi wa Lego unategemea "Charlie the Chess Robot", na Darrous Hadi, iliyobadilishwa na mimi, pamoja na mods za kutumia RPi, badala ya processor ya Lego Mindstorms. Lego Mindstorms motors na sensorer EV3 hutumiwa.

Utahitaji pia meza, kamera, taa, kibodi, skrini na kifaa cha kuonyesha (k.m panya).

Na kwa kweli, vipande vya chess na bodi.

Ninaelezea mambo haya yote kwa undani zaidi katika hatua zinazofuata.

Hatua ya 2: Ujenzi wa Vifaa

Image
Image

Kama nilivyoonyesha hapo awali, moyo wa nambari ya maono utafanya kazi na anuwai ya ujenzi.

Nilitegemea roboti yangu kwenye "Charlie the Chess Robot" (toleo la EV3) na Darrous Hadi, maelezo kwenye ukurasa huo yanasema jinsi ya kupata maagizo ya ujenzi. Orodha ya sehemu iko hapa.

Nilibadilisha roboti kwa njia kadhaa.

1. Mtu anayenyakua. Hii haikufanya kazi kwangu. Gia ziliteleza, kwa hivyo niliongeza vipande vya Lego vya ziada kuzuia hilo. Na wakati crane ilipopunguzwa mara nyingi ingekuwa jam, kwa hivyo niliongeza uhusiano wa Watt kuzuia hilo.

Hapo juu ni mshikaji anayefanya kazi, akionyesha uhusiano uliobadilishwa.

2. Ujenzi wa asili hutumia processor ya Lego Mindstorms EV3, lakini ninatumia Raspberry Pi, ambayo inafanya iwe rahisi kutumia chatu.

3. Ninatumia Raspberry Pi 3 Model B.

4. Ili kusanikisha RPi na Lego, ninatumia BrickPi3 kutoka kwa Dexter Viwanda. BrickPi inashikilia Raspberry Pi na kwa pamoja wanachukua nafasi ya LEGO Mindstorms NXT au EV3 Brick.

Unapokuwa na faili ya Lego Digital Designer, basi kuna swali la kupata vipande vya LEGO. Unaweza kupata matofali moja kwa moja kutoka duka la LEGO, na hii ndiyo njia rahisi zaidi ya kuzipata. Walakini, hawatakuwa na kila kitu unachohitaji, na matofali yanaweza kuchukua wiki kadhaa au zaidi kufika.

Unaweza pia kutumia Inaweza kushonwa: fungua akaunti, pakia faili ya LDD na kutoka hapo pata orodha ya wauzaji.

Chanzo kingine kizuri ni Bricklink.

Hatua ya 3: Programu ambayo hufanya Robot Sogee

Nambari yote imeandikwa katika Python 2.

  1. Viwanda vya Dexter vinapeana nambari kusaidia kuhama motors za EV3, nk Hii inakuja na BrickPi3.
  2. Ninatoa nambari ili kufanya motors zisonge kwa njia ya kusonga vipande vya chess!
  3. Injini ya chess ni Stockfish - ambayo inaweza kumpiga mwanadamu yeyote! "Samaki wa samaki ni moja wapo ya injini kali za chess ulimwenguni. Pia ina nguvu zaidi kuliko mabwana bora wa chess wa kibinadamu."
  4. Nambari ya kuendesha injini ya chess, thibitisha kuwa hoja ni halali, na kadhalika ni ChessBoard.py
  5. Ninatumia nambari kadhaa kutoka kwa https://chess.fortherapy.co.uk kuungana na hiyo.
  6. Nambari yangu (katika 2 hapo juu) basi inaingiliana na hiyo!

Hatua ya 4: Programu ya Kutambua Hoja ya Binadamu

Baada ya mchezaji kupiga hatua, kamera inachukua picha. Mazao ya nambari na huzungusha hii ili chessboard iwe sawa kabisa na picha inayofuata. Viwanja vya chessboard vinahitaji kuangalia mraba !. Kuna upotovu kwenye picha kwa sababu kingo za bodi ziko mbali zaidi na kamera kuliko katikati ya bodi. Walakini, kamera iko mbali vya kutosha ili, baada ya kupanda, upotoshaji huu sio muhimu. Kwa sababu roboti inajua mahali vipande vyote viko baada ya kompyuta kusonga, basi yote ambayo inapaswa kufanywa baada ya mwanadamu kufanya hoja ni kwa nambari ya nambari kuweza kutofautisha kati ya kesi tatu zifuatazo:

  • Mraba tupu
  • Kipande cheusi cha aina yoyote
  • Kipande cheupe cha aina yoyote.

Hii inashughulikia kesi zote, pamoja na castling na en passant.

Roboti hukagua kuwa hoja ya mwanadamu ni sahihi, na huwajulisha ikiwa sio hivyo! Kesi pekee ambayo haijafunikwa ni pale ambapo mchezaji wa kibinadamu huendeleza pawn kuwa malkia. Mchezaji anapaswa kumwambia roboti kipande kilichopandishwa ni nini.

Sasa tunaweza kufikiria picha hiyo kwa viwanja vya chessboard.

Kwenye usanidi wa bodi ya kwanza tunajua sehemu zote nyeupe na nyeusi ziko wapi na mraba yuko wapi.

Mraba tupu ina utofauti kidogo wa rangi kuliko mraba iliyokaliwa. Tunakadiria kupotoka kwa kawaida kwa kila moja ya rangi tatu za RGB kwa kila mraba kwenye saizi zake zote (zaidi ya zile zilizo karibu na mipaka ya mraba). Kupotoka kwa kiwango cha juu kwa mraba wowote tupu ni chini sana kuliko kupunguka kwa kiwango cha chini kwa mraba wowote ulichukua, na hii inatuwezesha, baada ya hoja ya mchezaji inayofuata, kuamua ni mraba gani tupu.

Baada ya kuamua kiwango cha kizingiti cha mraba tupu dhidi ya ulichukua, sasa tunahitaji kuamua rangi ya kipande kwa viwanja vilivyokaliwa:

Kwenye ubao wa mwanzo tunahesabu kwa kila mraba mweupe, kwa kila moja ya R, G, B, wastani (wastani) wa saizi zake (isipokuwa zile zilizo karibu na mipaka ya mraba). Kiwango cha chini cha njia hizi kwa mraba mweupe ni kubwa kuliko kiwango cha juu cha njia kwenye mraba wowote mweusi, na kwa hivyo tunaweza kuamua rangi ya kipande kwa mraba uliochukuliwa. Kama ilivyoelezwa hapo awali, hii ndiyo yote tunayohitaji kufanya ili kubaini ni nini hatua ya mchezaji wa kibinadamu ilikuwa.

Algorithms hufanya kazi vizuri ikiwa chessboard ina rangi ambayo ni njia ndefu kutoka kwa rangi ya vipande! Katika roboti yangu, vipande ni nyeupe-nyeupe na hudhurungi, na bodi ya chess imetengenezwa kwa mkono katika kadi, na ni kijani kibichi na tofauti kidogo kati ya mraba "mweusi" na "mweupe".

Hariri 17 Oktoba 2018: Sasa nimechora vipande vya hudhurungi matt nyeusi, ambayo inafanya algorithm kufanya kazi chini ya hali ya taa zaidi.

Hatua ya 5: Taa, Kamera, Hatua

Taa

Unahitaji chanzo hata cha nuru kilichowekwa juu ya bodi. Ninatumia hii, ambayo ni ya bei rahisi sana, kutoka amazon.co.uk - na bila shaka kuna kitu kama hicho kwenye amazon.com. Na taa za chumba zimezimwa.

Sasisho: Sasa nina taa mbili, ili kutoa chanzo zaidi cha nuru

Kamera

Bila shaka unaweza kutumia moduli maalum ya kamera ya Raspberry Pi (na kebo ndefu), lakini ninatumia kamera ya USB - "Logitech 960-001064 C525 HD Webcam - Nyeusi" - ambayo inafanya kazi na RPi. Unahitaji kuhakikisha kuwa kamera haiendi kwa heshima na bodi, kwa kujenga mnara au kuwa na mahali pa kuirekebisha. Kamera inahitaji kuwa juu juu ya bodi, ili kupunguza upotovu wa kijiometri. Nina kamera yangu 58 cm juu ya bodi.

Sasisha: Sasa napendelea HP Webcam HD 2300, kwani naona inaaminika zaidi.

Jedwali

Unahitaji imara. Nilinunua hii. Juu ya hayo unaweza kuona nina mraba wa MDF, na vitu kadhaa vya kusimamisha roboti ikiruka wakati troli inahamia. Ni wazo nzuri kuweka kamera katika nafasi sawa juu ya bodi!

Kinanda

RPi inahitaji kibodi ya USB kwa usanidi wake wa kwanza. Ninatumia hiyo kukuza nambari. Kitu pekee ambacho roboti inahitaji kibodi ni kuanza programu na kuiga kupiga saa ya chess. Nilipata moja ya hizi. Lakini kwa kweli, unahitaji tu panya au kitufe cha GPIO-kilichounganishwa na RPi

Onyesha

Ninatumia skrini kubwa kwa maendeleo, lakini vitu pekee ambavyo roboti inahitaji ni kukuambia hoja yako ni batili, angalia, nk nilipata moja ya hizi, pia inapatikana kwa amazon.com.

Lakini badala ya kuhitaji onyesho, roboti atasema misemo hii! Nimefanya hivi kwa kubadilisha maandishi kuwa hotuba kwa kutumia nambari kama ilivyoelezwa hapa, na kuambatanisha spika ndogo. (Ninatumia "spika ya mini ya Hamburger").

Misemo ya roboti inasema:

  • Angalia!
  • Mwangalizi
  • Hoja batili
  • Umeshinda!
  • Mkazo
  • Chora kwa kurudia mara tatu
  • Chora kwa sheria 50 za kusonga

Sheria ya hoja hamsini katika chess inasema kwamba mchezaji anaweza kudai sare ikiwa hakuna kukamata kumefanywa na hakuna pawn iliyohamishwa katika hatua hamsini zilizopita (kwa kusudi hili "hoja" inajumuisha mchezaji anayekamilisha zamu yake na kufuatiwa na mpinzani akikamilisha zamu yao).

Unaweza kusikia roboti ikiongea kwenye video fupi ya "mwenzi mpumbavu" hapo juu (ikiwa utainua sauti yako juu kabisa)!

Hatua ya 6: Jinsi ya Kupata Programu

1. samaki wa samaki

Ikiwa utaendesha Raspbian kwenye RPi yako unaweza kutumia injini ya Stockfish 7 - ni bure. Endesha tu:

Sudo apt-get kufunga samaki ya samaki

2. ChessBoard.py

Pata hii hapa.

3. Msimbo kulingana na

Inakuja na nambari yangu.

4. Madereva ya chatu ya BrickPi3:

Pata hizi hapa.

Nambari yangu ambayo inaleta nambari yote hapo juu na ambayo hupata roboti kufanya harakati, na nambari yangu ya maono.

Pata hii kutoka kwangu kwa kutuma maoni, nami nitajibu.

Ilipendekeza: