Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 39 reacties

Joey Meyer heeft zijn Raspberry Pi voor een bijzonder project ingezet: hij heeft het bordje namelijk gebruikt als basis voor een schaakrobot. Deze Raspberry Turk kan schaakstukken herkennen en ze zelfstandig op een andere plaats neerzetten.

Op zijn website toont Meyer de robot, en levert daarbij ook nog eens de instructies om zelf een dergelijke schaakrobot in elkaar te klussen. Voor de hardware is onder andere een Raspberry Pi en de Raspberry Pi Camera nodig, terwijl de software in Python is geschreven. Daarbij kan het systeem zelfstandig de verschillende schaakstukken van elkaar onderscheiden, en hoe dat werkt wordt op een van de webpagina's uitgelegd.

Zoals het een echte robot betaamt kan de Raspberry Turk zelfstandig beslissingen nemen. De software wordt aangedreven door Stockfish, dat door Meyer wordt omschreven als de beste opensource-schaakengine ter wereld. Overigens stelt Meyer op termijn nog een eigen schaakengine te willen ontwikkelen.

Hoe goed je moet zijn in schaken om de Raspberry Turk te verslaan is niet duidelijk. Volgens Meyer is zijn machine gebaseerd op de Mechanical Turk, een 'schaakrobot' uit de 18e eeuw, die uiteindelijk nep bleek te zijn; in de Turk bleek een menselijke schaker te zijn verstopt die de machine bediende.

Raspberry Turk

Moderatie-faq Wijzig weergave

Reacties (39)

Hoe goed je moet zijn in schaken om de Raspberry Turk te verslaan is niet duidelijk.
Stockfish is de engine. Die is best wel goed. Op een Intel CPU zeker. Maar zelfs op een minder krachtige Raspberry Pi is het resultaat aardig.

Snelle google:
https://groups.google.com...pic/picochess/nWZIYbG2mxc

Geschatte sterkte van Stockfish op een Raspberry Pi 2: 2972 elo rating.

Veel succes.
Stockfish is de engine. Die is best wel goed.
Stockfish is de sterkste engine die er is op dit moment.

Het is bekend dat Rybka 4, draaiend op een off-the-shelf Intel quadcore laptop, niet te verslaan is voor een 'standaard' grootmeester (2500-2600 ELO) als de grootmeester niet minstens een stuk als toegift krijgt (Rybka begint aan de partij met een paard of een loper achterstand), en dat de supergrootmeesters (2700+) enkel kans maken op een remise... als ze een goede dag hebben.

Uit de bovenstaande tabel blijkt dat Stockfish 8 zo'n 240 ELO sterker is dan Rybka 4, en dus kun je eigenlijk wel zeggen: onverslaanbaar voor welk mens dan ook.
onzin.

Met een loper/paard als toegift verslaat een random grootmeester Rybka echt wel hoor.

[Reactie gewijzigd door roT- op 24 maart 2017 19:23]

Nee. Wikipedia meldt dit:
In September 2008, Rybka played an odds match against Vadim Milov, its strongest opponent yet in an odds match. Milov at the time had an Elo rating of 2705, ranking him 28th in the world. The result was a narrow victory to Milov: In two standard games (Milov played White, no odds), Milov lost the first game and drew the second one. Then they played two games at the classical "pawn and move" handicap (f7 removed). The first game ended in an early draw by perpetual check, while the second was won by Milov. Finally they played four games at odds of the exchange (Rybka removed a1 rook, Milov b8 knight); here Rybka drew three times and lost once. The final score was 4.5–3.5 for Milov.[28]
"Pawn and move odds" en "Exchange odds" leveren effectief een half paard/loper en 2/3de paard/loper op als voorgift. Rybka heeft deze match verloren, maar.... dat was (bijna) 10 jaar geleden (2008). Dat zal Rybka 2.x zijn geweest (release 2006/2007).

Het verschil tussen Rybka 2.x en 4.x is bijna 200 ELO punten, en het verschil tussen Rybka 4 en Stockfish 8 is nogmaals 240 punten.

Als Rybka 2.2 @ 2/3rde paard/loper voorgift in 2007 nťt nipt verloor van een grootmeester met een speelsterkte van 2700 ELO, dan zal Rybka 4.x, na een stijging van 200 ELO, gegarandeerd winnen, ook met een volledige loper/paard toegift.

En Stockfish, nog eens 240 punten sterker, is dan onverslaanbaar voor iedereen onder de ELO 2800 als diegene niet minstens een paard/loper + zet krijgt, of misschien zelfs paard/loper + pion + zet of een hele toren.

Oh, En deze dan? Een match tegen Komodo:
No human can currently hope to survive on equal terms in a match against Komodo. Odds must be given. In this match, Komodo offered Nakamura pawn and move, pawn, exchange, and four-move odds. All games were played at a time control of 45 minutes with a 15-second increment.
Dus, de computer speelt met de volgende handicaps:

- pion
- pion + zet
- exchange (toren weg bij computer, paard/loper bij speler)
- 4 startzetten voor de speler

Zoals je in de tabel kunt zien, is Komodo van vergelijkbare sterkte als Stockfish. Komodo, Stockfish en Houdini wisselen vaak stuivertje in de lijst, en sinds kort is Shredder 13, na 5 jaar ontwikkelen en herschrijven, daarbij gekomen.

Ga er maar gerust van uit dat een 2500-2700 ELO grootmeester tegen een van die engines kansloos is, als hij niet minstens een paard/loper voorzet krijgt, als Nakamura met een rating van rond de 2800 er al de grootste moeite mee heeft.

[Reactie gewijzigd door Katsunami op 24 maart 2017 19:47]

Interessant :)

Echter ben ik nog steeds niet overtuigd, je kunt je lelijk vergissen in het menselijk kunnen en denken m.b.t. schaken.

Laatst is een schaakpuzzel opgedoken die niet op te lossen valt door de sterkste engine en voor een mens vrij snel op te lossen is.

edit: schaakpuzzel: http://www.telegraph.co.u...-key-human-consciousness/

[Reactie gewijzigd door roT- op 24 maart 2017 19:45]

Dat is een gespecialiseerde anti-computer-positie zo te zien.

Misschien heb je de berichten over AlphaGo van Google/Deepmind gelezen een tijdje terug. Go is een spel dat voor een computer nog veel lastiger is om te spelen, omdat het vol zit met "zou kunnen zijn", en een nog veel groter bord van 19x19 in plaats van 8x8. Tot 15 jaar terug waren computers compleet kansloos, zelfs tegen amateurs.

Go-programma's werkten destijds met een analysetechniek die zeer goed werkt voor schaak: min-max met alpha/beta-cutoff (en nog uitgebreid met bepaalde optimalisaties zoals null-move, MTD, quiescence search; zat over te vinden op Google.)

Dat bleek niet goed te werken voor Go, en in 2003-2004 is er een nieuwe techniek ontwikkeld door Remi Coulom: MCTS (Monte Carlo Tree Search), die later is uitgebreid met optimalisaties en de mogelijkheid om op meerdere CPU's te runnen.

AlphaGo, de top engine/supercomputer-combo van dit moment, heeft vorig jaar Lee Sedol, een van de sterkste Go-spelers allertijden, met 4-1 ingemaakt. AlphaGo speelt op dit moment op Tygem, onder de naam Master (P). De (P) betekent dat Tygem AlphaGo als een officiŽle professional Go-speler erkent. AlphaGo/Master is onverslaanbaar in een gelijke partij zonder handicaps.

En de technieken en optimalisaties van AlphaGo beginnen via DarkForest (van Facebook) nu door te druppelen naar de 'normale' Go-engines voor gebruik op normale computers.

Over dammen en Othello/Reversi begin ik niet eens. Zoek maar eens op "Chinook" (checkers-engine, al onverslaanbaar sinds 1994), en "Zebra" (Othello-engine, sterkste van dit moment, zover ik weet; speelt Othello perfect / foutloos, en dus onverslaanbaar).

In de denksporten, van Othello via dammen tot schaak en Go, is de mens tegenwoordig kansloos. De enige mensen die nog kans maken, zijn grootmeesters in Go als ze spelen tegen een Go-engine op een normale computer, maar ook dat zal niet lang meer duren.

[Reactie gewijzigd door Katsunami op 24 maart 2017 20:54]

Klopt ik heb daar het nodige ook over gelezen/gezien @ go.

Maar de grote vraag is nu: heb je de puzzel al opgelost? :D
Edit: hoe wit dus op zn minst remise maakt.

[Reactie gewijzigd door roT- op 24 maart 2017 20:06]

Ik heb er niet veel tijd aan besteed, maar de clou is dat het hele zwarte blok aan de linkerkant eigenlijk nutteloos is. Het staat muurvast. Zolang je als wit geen van de torens slaat, en de pion op C6 niet verplaatst, kunnen al die stukken en pionnen niet spelen.

Zwart heeft effectief alleen 3 zwartveldige lopers die kunnen spelen.

De witte pionnen staat op witte velden. Ook de koning kan zichzelf op de witte velden houden. Dat maakt de zwartveldige lopers nutteloos, of het er nu 1 is, of 3, of 5.

De oplossing is dat wit alleen met zijn koning speelt en op de witte velden blijft, en dan zal de partij remise worden vanwege de 50-zetten-regel. Er is immers geen manier om die koning, of de witte pionnen, aan te vallen.

[Reactie gewijzigd door Katsunami op 24 maart 2017 21:41]

Volgens mij klopt dat inderdaad. Ik snap alleen niet hoe een computer zich daarin zou verslikken. Het grootste deel van het bord staat vast en dat kan alleen veranderen als wit gaat proberen te promoveren of torens gaat slaan. Daarnaast heeft zwart met 3 lopers als enige losse stukken elke beurt slechts rond de 30 mogelijkheden met allemaal een gelijke waarde. Die situatie doorrekenen tot 50 zetten is in een ogenblik gebeurd.

Zwart kan de boel niet zelfstandig los krijgen. Voor hem heeft het in deze stelling nog geen zin om na te denken over wat er daarna allemaal kan gebeuren. Dat is pas van toepassing als die pion van wit naar voren gaat.

[Reactie gewijzigd door blorf op 25 maart 2017 09:13]

Is simpel. Voor een mens.

Maar niet zo veel anders voor een schaak-programma. Die ziet ook geen winst en geen verlies. Dus remise. Echter, een mens kan door redenering zichzelf er van overtuigen dat het remise is. Een computer-programma kan dat niet. Die denkt: "ik heb niet alle mogelijkheden tot in het oneindige onderzocht, dus ik denk dat het remise is, maar ik weet het niet zeker".

Die stelling is meer een grapje, dan dat het echt iets over schaken zegt. Het zegt misschien iets over AI. Maar dat wisten we al.
Nee hoor.. De computer zal juist altijd denken dat zwart wint.

En nee hoor.. zo simpel is dat ook niet voor een mens. Remise zul je wellicht na een tijdje zien hoe wit verder zou moeten gaan. Maar wit kan ook winnen. Knap als je die ziet...

[Reactie gewijzigd door roT- op 24 maart 2017 21:14]

De computer zal denken dat zwart een groot materieel voordeel heeft. En dus (ook) denken dat zwart beter staat. Maar mijn stockfish dacht niet dat zwart won. (Evalutie was "-28". Niet "#-20", wat betekent: zwart wint in 20 zetten").

[Reactie gewijzigd door gryz op 24 maart 2017 21:26]

Wit kan deze positie alleen winnen als zwart dom genoeg is om de h2-b8 diagonaal op te geven met alle drie zijn lopers, terwijl de witte koning op d7 staat. Dan volgt namelijk c6-c7, en dan gaat zwart op de volgende zet schaakmat na c6-c7Q, omdat hij de witte pion niet kan tegenhouden, en niet met zijn koning kan ontsnappen. Zelfs na Ka5-b6 gaat zwart mat, omdat de (nieuwe) dame op c8 op de volgende zet alle velden die de zwarte koning ter beschikking heeft onder controle houdt.
Ik probeerde het op lichess (webbased Stockfish tegenstander op hoogste niveau).
Daar "gelooft" zwart dat de dreigende promotie van wit zijn verlies betekent en blijft constant met minimaal 2 lopers c7 dekken of bezetten, Daarmee lijkt zwart akkoord te gaan met remise, tenzij de regel "50 zetten niks geslagen = remise" door het programma niet gehanteerd wordt.

Maar anderzijds zou het mij ook niet verbazen als ze deze stelling + mogelijke vertakkingen gewoon voorgerekend in hun stelling-database hebben staan omdat veel spelers het al geprobeerd hebben.
Laat 2x dezelfde robot tegen elkaar spelen ;)
Dan krijg je het resultaat in war games en wordt het heel eenvoudig boter kaas eieren.

Dat heeft 3 vlakken. Uiteindelijk met 8x8 16x16 of 100x100 als de computers snel genoeg zijn komt er als het goed is nooit een winnaar uit de bus.

[Reactie gewijzigd door bbob1970 op 25 maart 2017 11:45]

Stockfish is de engine. Die is best wel goed.
...
Geschatte sterkte van Stockfish op een Raspberry Pi 2: 2972 elo rating.
Dat is inderdaad "beste wel goed". Wereldkampioen Magnussen heeft een elo van 2880...
Stockfish zelf heeft geen rating. De hardware waar het op draait maakt ook verschil. Stockfish op een 8-core cpu is natuurlijk slimmer dat Stockfish op een 2-core cpu. En Stockfish op een 4.5GHz cpu is natuurlijk slimmer dan Stockfish op dezelfde cpu (of hetzelfde type/familie) die slechts op 3 GHz draait.

Hier hebben we het over Stockfish op een Raspberry Pi 2. Die heeft een ELO-rating van ~3000. Op een 4-core i7 met HT op 4+GHz heeft Stockfish misschien een rating van 3300. Je hebt vast gelijk. Maar we hebben het hier over Stockfish op heel specifieke hardware.

[Reactie gewijzigd door gryz op 24 maart 2017 21:07]

Dat is het punt van de CCRL; die is genormaliseerd. De rating van Stockfish is -in die lijst- 3390 ofzo, en die is opgebouwd uit tientallen/honderden lijsten van ratings op verschillende hardware.

Een persoon laat bijvoorbeeld 20 engines spelen op een Raspberri Pi 2, en dan komt Stockfish daaruit met 3390; een andere persoon laat diezelfde engines met dezelfde settings spelen op een Core i7 met 4 of 6 of meer cores, en dan komt Stockfish daar ůůk uit met 3390. Die twee getallen zijn uiteraard niet hetzelfde; ze gelden alleen binnen hun eigen pool, maar je kunt dan wel zeggen dat Stockfish een rating heeft van 3390, in vergelijking tot andere engines, -mits- die op dezelfde hardware draaien.

Een ELO-rating is geen absolute speelsterkte; het is een manier om speelsterkte aan te duiden in vergelijking tot andere spelers in dezelfde pool. Als je ratings wil vergelijken tussen pools, dan zul je spelers van de pool A in pool B moeten laten meespelen, hun rating in pool B bepalen, en dan pool A herkalibreren.

Als je Stockfish uit de "Raspi pool" zou laten meespelen in de "i7 pool", dan komt "Rapsi Stockfish" binnen die i7-pool misschien op 2950 uit; het gevolg is dat de hele Rapsi-ratingtabel met 440 punten zakt, maar dan zijn de ratings wel vergelijkbaar. (Het wordt natuurlijk nauwkeuriger naarmate je meer engines uit de ene pool laat meespelen in de andere.)

Natuurlijk heb je dan ook nog het punt dat er engines zijn die veel beter gebruik maken van meer geheugen of meerdere of snellere CPU's dan anderen; het kan zijn dat engine X, en engine Y, die op een Raspi 2 ongeveer gelijk zijn, opeens heel ver uit elkaar liggen als er meer processorkracht en meer geheugen beschikbaar is. De ene engine schaalt dan veel beter dan de andere.

Daarom wordt de kalibratie nauwkeuriger naarmate je meer engines uit de ene pool laat spelen in de andere; je zou namelijk een engine uit de Raspi-pool kunnen pakken die helemaal niet zo goed schaalt op een i7 waardoor de gekalibreerde ratings te laag uitvallen; of je kunt er een pakken die uitzonderlijk schaalt, waardoor de gekalibreerde ratings te hoog uitvallen. Idealiter gooi je beide pools een tijd compleet bij elkaar, maakt een gecombineerde lijst, en dan splits je de engines uit de te kalibreren pool af in hun eigen lijst.

[Reactie gewijzigd door Katsunami op 24 maart 2017 22:08]

Houd er wel rekening mee dat het verschil niet 500+ punten is. Omdat Stockfish en Magnus Carlsen niet in dezelfde pool spelen, kun je de ratings niet vergelijken.

Om de CCRL-lijst te kalibreren naar 'echte' ratings, vergelijkbaar met mensen, zou een doorsnede van engines uit die lijst een jaartje mee moeten spelen als een 'grootmeester'. Laten we zeggen, 20 engines, startend met Stockfish, en gelijk verdeeld over een gebied tot 1000 punten lager.

Als de 'officiŽle rating" van die engines bekend is, dan kan de lijst aan de hand daarvan gekalibreerd worden. Het wordt gezegd dat elk punt voorgift dat je moet krijgen gelijk staat aan 100 ELO. Een zet voorgift wordt beschouwd als 50 ELO. Als Nakamura een Exchange (2 punten) of 4 zetten (2 punten) of een fractie minder dan een paard/loper (2.5 punt) voorgift moet krijgen met een rating van 2800 ELO, dan verwacht ik dat Stockfish rond de 3000 zal eindigen.
Best wel goed?
Zeg maar gerust de beste schaak engine die er is.

Kijk al alleen naar het rating verschil tussen nr 1 en 2, in schaakbegrippen is dat een enorm verschil.

[Reactie gewijzigd door roT- op 24 maart 2017 18:42]

Het ding in actie: https://youtu.be/lpJIBVU_WJE
Lijkt vrij vlot te werken, mooi project!

[Reactie gewijzigd door Chris.nl op 24 maart 2017 18:14]

Ik vind deze toch leuker, met alle bewegende delen onzichtbaar weggewerkt.
https://www.youtube.com/watch?v=dX37LFv8jWY
Snelheid van filmpje is wel niet normaal ;)
Maar dan nog leuk gemaakt!!
Ehhh, het is versneld. De vraag is nu 'Hoeveel keer?". :)
Er is veel aandacht besteed aan het herkennen van de stukken. Dat zou kunnen suggereren dat de 'robot' elke zet vanaf scratch het bord bekijkt, en gaat nadenken. Voordeel is dat de robot niet zelf hoeft te weten wat het effect is van een zet (bijvoorbeeld promotie van een pion naar koningin of toren), maar dit kan zien. De nauwkeurigheid van de herkenning lijkt me wel cruciaal (stel je voor dat je de koning niet kan vinden).
Je hoeft natuurlijk niet steeds alles te herkennen. Er zijn naar een beperkt aantal mogelijkheden als je een zet hebt gedaan, de meeste stukken blijven elke set staan.
Edit: nvt

[Reactie gewijzigd door gjmi op 24 maart 2017 18:41]

Ik ben 1 van de SA's van Chess Team Holland op chess.com. Dat maakt mij geen autoriteit op het gebied van schaak, maar wel 1 van de bestuurders van een zeer competitief schaakteam met meer dan 1600 leden, waaronder aardig wat spelers met een titel. Hoe goed je moet je zijn om te winnen van stockfish? Laat ik het zo zeggen, Magnus Carlsen en onze eigen Anish Giri gecombineerd bij elkaar, met Kasparov vanwege zijn ervaring met Deep Blue zullen het gezamelijk niet meer winnen van de schaakcomputer. Ook niet op een raspberry. Tenzij je de engine echt hele rare beperkingen gaat geven veegt ie elk mens - of groep mensen - zo van het bord. Het ratingverschil tussen stockfish en de Magnus (bijnaam: de Mozart van het schaak) is even groot als het verschil tussen iemand die alleen de regels van zetten kent (1200 elo) en een gemiddelde clubspeler (1600-1700). Uitgemaakte zaak.
Precies. Stockfish heeft dan ook bijna moeiteloos het 9de seizoen van de Thoresen Chess Engines Competition (kortweg TCEC, het kampioenschap tussen schaak-engines) gewonnen. Geen mens op aarde die daar nog tegenop kan. Binnenkort start trouwens het 10de seizoen, dat zoals gewoonlijk weer live te volgen zal zijn op TCEC en op FICS.
Belangrijkere vraag: Raspberry Pi vs Carlsen, wie wint?
Zoals bovenstaande reacties al aangeven, schaak-engines zijn heel erg goed geworden, dus zelfs een oude Raspi heeft een goede kans tegen Carlsen, of willekeurig welke menselijke speler. Het verlies in rekenkracht is significant, maar de voorsprong is nu zo groot (honderden ELO-punten) dat ook een simpele computer nu ver komt.
wow goed voorbeeld van "the power of FOSS"
Nou, een hele schaakrobot met alles erop en eraan in elkaar zetten was geen probeelm zo te zien.

Maar de afbeelding opslaan was blijkbaar teveel gevraagd. :) Hehehe, ik kan door het kwaliteitsverlies niet eens meer zien of het een echte uitgeknipte foto is of een render. Wellicht is dit de eerste frame van een animated GIF? Dat is de enige verklaring die ik kan bedenken voor de belabberde kwaliteit. :)

Maar een kniezoor die daarop let. Mooi werk! :)
It is the rise of the machines....
Deze Turk kan dus al zelf al de schaak stukken verzetten... Oh jee oh jee...

http://terminator.wikia.com/wiki/The_Turk
Wel een beetje omslachtig om hem die stukken te laten herkennen met een camera, je kan toch gewoon de start posities invoeren en de maat van het bord?

Edit: toch wel handig als je de stukken van de tegenstander wil slaan en die wil oppakken

[Reactie gewijzigd door fonsmeister op 27 maart 2017 06:13]

Op dit item kan niet meer gereageerd worden.



Nintendo Switch Samsung Galaxy S8+ LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One (Scorpio) Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True

*