Përmbajtje:

Roboti i shahut i bërë me LEGO dhe Raspberry Pi: 6 hapa
Roboti i shahut i bërë me LEGO dhe Raspberry Pi: 6 hapa

Video: Roboti i shahut i bërë me LEGO dhe Raspberry Pi: 6 hapa

Video: Roboti i shahut i bërë me LEGO dhe Raspberry Pi: 6 hapa
Video: БАХШ ПЛОВ Бухарских Евреев 1000 летний РЕЦЕПТ КАК ПРИГОТОВИТЬ 2024, Korrik
Anonim
Image
Image

Habitni miqtë tuaj me këtë robot shahu!

Nuk është shumë e vështirë të ndërtosh nëse ke bërë robotë LEGO më parë dhe nëse ke të paktën një njohuri elementare të programimit kompjuterik dhe Linux.

Roboti bën lëvizjet e veta dhe përdor njohjen vizuale për të përcaktuar lëvizjen e lojtarit njerëzor.

Një nga gjërat e reja në këtë robot është kodi për njohjen e lëvizjes. Ky kod vizioni është gjithashtu i përdorshëm për robotët e shahut të ndërtuar në shumë mënyra të tjera (siç është ChessRobot im duke përdorur krahun robotik Lynxmotion).

Asnjë tabelë e veçantë shahu, ndërprerës kallami ose çfarëdo që kërkohet (pasi lëvizja e njeriut përcaktohet nga njohja vizuale).

Kodi im është i disponueshëm për përdorim personal.

Hapi 1: Kërkesat

Drita, Kamera, Veprim!
Drita, Kamera, Veprim!

I gjithë kodi është shkruar në Python, i cili do të funksionojë, ndër të tjera, në një Raspberry Pi.

Raspberry Pi është një kompjuter me madhësi të kartës së kreditit që mund të lidhet me një ekran dhe një tastierë. Shtë një kompjuter i lirë (rreth 40 dollarë), i aftë, i cili mund të përdoret në projekte elektronike dhe robotikë, dhe për shumë nga gjërat që bën kompjuteri juaj desktop.

Roboti im përdor Raspberry Pi dhe Lego. Ndërfaqja e harduerit midis motorëve dhe sensorëve RPi dhe Lego Mindstorms EV3 sigurohet nga BrickPi3 nga Dexter Industries.

Ndërtimi i Lego bazohet në "Charlie the Chess Robot", nga Darrous Hadi, i modifikuar nga unë, duke përfshirë modat për të përdorur një RPi, në vend të procesorit Lego Mindstorms. Përdoren motorë dhe sensorë Lego Mindstorms EV3.

Ju gjithashtu do të keni nevojë për një tavolinë, një aparat fotografik, ndriçim, një tastierë, ekran dhe pajisje drejtuese (p.sh. miun).

Dhe sigurisht, pjesë shahu dhe një tabelë.

Unë i përshkruaj të gjitha këto gjëra në mënyrë më të detajuar në hapat pasues.

Hapi 2: Ndërtimi i harduerit

Image
Image

Siç kam treguar më parë, zemra e kodit të vizionit do të funksionojë me një larmi ndërtimesh.

Unë e bazova robotin tim në "Charlie the Chess Robot" (versioni EV3) nga Darrous Hadi, informacioni në atë faqe thotë se si të merrni udhëzimet e ndërtimit. Lista e pjesëve është këtu.

Unë e modifikova robotin në disa mënyra.

1. Rrëmbyesi. Kjo nuk funksionoi për mua. Ingranazhet rrëshqitën, kështu që shtova pjesë shtesë Lego për ta parandaluar atë. Dhe kur vinçi u ul shpesh bllokohej, kështu që shtova lidhjen e një Watt për ta parandaluar atë.

Mbi të është grabitësi në veprim, duke treguar lidhjen e modifikuar.

2. Ndërtimi origjinal përdor procesorin Lego Mindstorms EV3, por unë përdor një Raspberry Pi, i cili e bën të lehtë përdorimin e Python.

3. Unë përdor Raspberry Pi 3 Model B.

4. Për të ndërlidhur RPi me Lego, unë përdor BrickPi3 nga Dexter Industries. BrickPi i bashkëngjitet Raspberry Pi dhe së bashku ato zëvendësojnë LEGO Mindstorms NXT ose EV3 Brick.

Kur keni skedarin Lego Digital Designer, atëherë lind pyetja për marrjen e pjesëve LEGO. Ju mund të merrni tulla direkt nga dyqani LEGO, dhe kjo është mënyra më e lirë për t'i marrë ato. Sidoqoftë, ata nuk do të kenë gjithçka që ju nevojitet, dhe tullave mund të duhen disa javë ose më shumë për të mbërritur.

Ju gjithashtu mund të përdorni Rebrickable: hapni një llogari, ngarkoni skedarin LDD dhe nga kjo merrni një listë të shitësve.

Një burim tjetër i mirë është Bricklink.

Hapi 3: Softueri që e bën Robotin të lëvizë

I gjithë kodi është shkruar në Python 2.

  1. Dexter Industries furnizon kod për të mbështetur lëvizjen e motorëve EV3, etj. Kjo vjen me BrickPi3.
  2. Unë jap kodin për t'i bërë motorët të lëvizin në atë mënyrë që të lëvizin pjesët e shahut!
  3. Motori i shahut është Stockfish - i cili mund të mposhtë çdo njeri! "Stockfish është një nga motorët më të fortë të shahut në botë. Alsoshtë gjithashtu shumë më i fortë se mjeshtërit më të mirë të shahut njerëzor."
  4. Kodi për të drejtuar motorin e shahut, vërtetoni që një lëvizje është e vlefshme, dhe kështu me radhë është ChessBoard.py
  5. Unë përdor një kod nga https://chess.fortherapy.co.uk për t'u ndërlidhur me atë.
  6. Kodi im (në 2 më lart) pastaj ndërlidhet me atë!

Hapi 4: Softueri për njohjen e lëvizjes së njeriut

Pasi lojtari të ketë bërë lëvizjen e tij, kamera merr një fotografi. Kodi e korr dhe e rrotullon atë në mënyrë që tabela e shahut të përshtatet saktësisht me imazhin pasues. Sheshet e tabelës së shahut duhet të duken katrore !. Ekziston shtrembërim në imazh sepse skajet e tabelës janë më larg nga kamera sesa qendra e tabelës. Sidoqoftë, kamera është mjaft larg, në mënyrë që, pas prerjes, ky shtrembërim të mos jetë i rëndësishëm. Për shkak se roboti e di se ku janë të gjitha pjesët pas lëvizjes së kompjuterit, atëherë gjithçka që duhet bërë pasi njeriu të bëjë një lëvizje është që kodi të jetë në gjendje të tregojë ndryshimin midis tre rasteve të mëposhtme:

  • Një shesh bosh
  • Një copë e zezë e çdo lloji
  • Një copë e bardhë e çdo lloji.

Kjo mbulon të gjitha rastet, përfshirë castling dhe en passant.

Roboti kontrollon që lëvizja e njeriut është e saktë dhe i informon ata nëse nuk është! Rasti i vetëm që nuk mbulohet është kur lojtari njerëzor promovon një peng në një jo-mbretëreshë. Lojtari duhet t'i tregojë robotit se cila është pjesa e promovuar.

Tani mund ta konsiderojmë imazhin në aspektin e shesheve të tabelës së shahut.

Në strukturën fillestare të tabelës ne e dimë se ku janë të gjitha pjesët e bardha dhe të zeza dhe ku janë katrorët bosh.

Katrorët e zbrazët kanë shumë më pak ndryshim në ngjyrë se sa katrorët e zënë. Ne llogarisim devijimin standard për secilën nga tre ngjyrat RGB për secilin katror në të gjithë pikselët e tij (përveç atyre pranë kufijve të sheshit). Devijimi standard maksimal për çdo katror bosh është shumë më pak se devijimi standard standard për çdo katror të zënë, dhe kjo na lejon, pas një lëvizjeje të mëvonshme të lojtarit, të përcaktojmë se cilët sheshe janë bosh.

Pasi të kemi përcaktuar vlerën e pragut për katrorët bosh kundrejt atyre të zënë, tani duhet të përcaktojmë ngjyrën e pjesës për katrorët e zënë:

Në tabelën fillestare ne llogarisim për secilin katror të bardhë, për secilën prej R, G, B, vlerën mesatare (mesatare) të pikselëve të tij (përveç atyre pranë kufijve të sheshit). Minimumi i këtyre mjeteve për çdo katror të bardhë është më i madh se maksimumi i mjeteve në çdo katror të zi, dhe kështu ne mund të përcaktojmë ngjyrën e copës për katrorët e zënë. Siç u tha më parë, kjo është gjithçka që duhet të bëjmë për të përcaktuar se cila ishte lëvizja e lojtarit njerëzor.

Algoritmet funksionojnë më mirë nëse tabela e shahut ka një ngjyrë që është shumë larg ngjyrës së pjesëve! Në robotin tim, pjesët janë të bardha dhe kafe, dhe tabela e shahut është punuar me dorë në kartë, dhe është një ngjyrë jeshile e lehtë me pak ndryshim midis shesheve "të zezë" dhe "të bardhë".

Edit 17 Tetor 2018: Tani kam pikturuar pjesët kafe të zeza mat, gjë që e bën algoritmin të funksionojë në kushte më të ndryshueshme ndriçimi.

Hapi 5: Dritat, Kamera, Veprimi

Dritat

Keni nevojë për një burim të barabartë drite të vendosur mbi tabelë. Unë e përdor këtë, e cila është vërtet e lirë, nga amazon.co.uk - dhe pa dyshim që ka diçka të ngjashme në amazon.com. Me dritat e dhomës të fikura.

Përditësim: Tani kam dy drita, për të dhënë një burim më të barabartë të dritës

Kamera

Pa dyshim që mund të përdorni modulin special të kamerës Raspberry Pi (me një kabllo të gjatë), por unë përdor një aparat USB - "Webite Web Logitech 960-001064 C525 HD - Black" - e cila punon me RPi. Ju duhet të siguroheni që kamera të mos lëvizë në lidhje me tabelën, duke ndërtuar një kullë ose duke pasur diku për ta rregulluar atë fort. Kamera duhet të jetë mjaft lart mbi tabelë, në mënyrë që të zvogëlojë shtrembërimin gjeometrik. Unë kam kamerën time 58 cm mbi dërrasë.

Përditësim: Tani preferoj HP Webcam HD 2300 HP, pasi mendoj se është më i besueshëm.

Tabela

Keni nevojë për një të fortë. E bleva këtë. Për më tepër ju mund të shihni që unë kam një shesh MDF, me disa gjëra për të ndaluar që roboti të kërcejë kur lëviz karroca. Ideashtë ide e mirë ta mbani kamerën në të njëjtin pozicion mbi tabelë!

Tastierë

RPi ka nevojë për një tastierë USB për konfigurimin e tij të parë. Dhe e përdor atë për zhvillimin e kodit. E vetmja gjë për të cilën robotit i duhet një tastierë është të fillojë programin dhe të simulojë goditjen e orës së shahut. Kam marrë një nga këto. Por në të vërtetë, ju duhet vetëm një mi ose një buton GPIO i lidhur me RPi

Shfaq

Unë përdor një ekran të madh për zhvillim, por e vetmja gjë që i nevojitet robotit është t'ju tregojë se lëvizja juaj është e pavlefshme, kontrolloni, etj. Kam një nga këto, gjithashtu e disponueshme në amazon.com.

Por në vend që të kërkojë një ekran, roboti do të flasë këto fraza! Unë e kam bërë këtë duke konvertuar tekstin në të folur duke përdorur kodin siç përshkruhet këtu, dhe duke bashkangjitur një folës të vogël. (Unë përdor një "mini -folës Hamburger").

Frazat që thotë roboti:

  • Kontrolloni!
  • Matmak
  • Lëvizje e pavlefshme
  • Ju fituat!
  • Ngërç
  • Vizatoni me përsëritje të trefishtë
  • Rregulli i barazimit me 50 lëvizje

Rregulli i pesëdhjetë lëvizjeve në shah thotë se një lojtar mund të pretendojë një barazim nëse nuk është bërë kapje dhe asnjë peng nuk është zhvendosur në pesëdhjetë lëvizjet e fundit (për këtë qëllim një "lëvizje" përbëhet nga një lojtar që përfundon kthesën e tij të ndjekur nga kundërshtari duke përfunduar radhën e tyre).

Ju mund ta dëgjoni robotin duke folur në videon e shkurtër "shoku i budallait" më lart (nëse e ngrini zërin tuaj mjaft lart)!

Hapi 6: Si të merrni softuerin

1. Peshku aksionesh

Nëse drejtoni Raspbian në RPi tuaj, mund të përdorni motorin Stockfish 7 - është falas. Thjesht vrapo:

sudo apt-get install stockfish

2. ChessBoard.py

Merre këtë këtu.

3. Kodi i bazuar në

Vjen me kodin tim.

4. Drejtuesit e Python për BrickPi3:

Merrni këto këtu.

5. Kodi im i cili thërret të gjithë kodin e mësipërm dhe që e bën robotin të bëjë lëvizjet, dhe kodin tim të vizionit.

Merre këtë nga unë duke postuar një koment, dhe unë do të përgjigjem.

Recommended: