Forum: Mikrocontroller und Digitale Elektronik Stockfish (Schach) auf Mikrocomputer?


von Dirk E. (Gast)


Lesenswert?

Guten Tag liebe Elektronik-Mikrocontroller-Freunde!
Ich bin Laie, würde für mich ein Projekt interessant finden.
Ich habe in Foren gelesen, daß es Schachprogramme auf Mikrocontrollern 
gibt, diese aber relativ schwach sind.
Nun gibt es Schachprogramme (z. B. Stockfish), welche sehr stark sind 
und dessen C++-Quellcodes frei zur Verfügung stehen.

Meine Frage: Kann man diese C++-Quellcodes nicht in einen 
Mikrocontroller übertragen? Wäre dafür ein Arduino Due geeignet (oder 
andere)? 'Versteht' ein Mikrocontroller/Arduino C++? Man müßte dann wohl 
den Quellcode umändern, damit die Ein- und Ausgabe per Tasten und 
LCD-Anzeige erfolgt.
Würde das funktionieren?

Vielen Dank für informative Antworten
Dirk

von Bitflüsterer (Gast)


Lesenswert?

Grundsätzlich wird das vermutlich schon gehen.
Ein C/C++ Programm kann auf den meisten handelsüblichen Architekturen 
laufen; besser gesagt dafür übersetzt werden. (Siehe unten).

Aber für einen Laien ist das (sehr wahrscheinlich) nicht zu machen. Oder 
jedenfalls erst nach längerer Einarbeitung. Ich rede hier von mehreren 
Monaten.

Es gibt leider (für mich) einige Unbekannte dabei:
1. Speicherbedarf (wird mit einem AVR vermutlich nur mit externem RAM 
gehen).
2. Codegrösse (falls überhaupt, dann vermutlich in einem der sehr 
grossen AVRs).
3. Geschwindigkeit (hier vermute ich mal das ein AVR unannehmbar lange 
Antwortzeiten hätte).

Das wäre erstmal nicht schlimm. Vermutlich wird es auf einem grossen ST 
oder auch dem Raspberry Pi genug Speicher und Geschwindigkeit geben.

Nebenbei bemerkt: Ein Mikrocontroller versteht kein C oder C++. Das sind 
sogenannte "Hochsprachen" die ein Compiler erst in "Maschinencode" 
übersetzen muss. Aber es geht.

Ich kenne noch Zeiten in denen es Schachendspielprogramme für den 6502 
und 1KB Code gab. Das Problem ist eigentlich grundsätzlich, dass der 
übliche MiniMax-Algorithmus je nach Suchtiefe und der Anzahl der noch im 
Spiel befindlichen Fiugren recht viel Speicher braucht.

Aber, probiere es einfach. Nur mach Dich als "Laie" auf eine sehr harte 
Zeit gefasst. Besser wäre es wenn Du erstmal die Grundlagen von C/C++ 
und uCs lernst. Dann so in einem Jahr magst Du an dieses Vorhaben 
nochmal denken.

von Dr. Sommer (Gast)


Lesenswert?

Dirk E. schrieb:
> Meine Frage: Kann man diese C++-Quellcodes nicht in einen
> Mikrocontroller übertragen?
Theoretisch kann man alles übertragen. Die interessante Frage ist wie 
viel Speicher und Rechenleistung das Programm braucht. Wenn es am PC 1 
Minute rechnet, wirds es selbst auf den großen ARM Mikrocontrollern 
vermutlich 1 Tag brauchen...

Dirk E. schrieb:
> Man müßte dann wohl
> den Quellcode umändern, damit die Ein- und Ausgabe per Tasten und
> LCD-Anzeige erfolgt.
Das wird vermutlich das geringste Problem...

Wenn das Programm schon fertig ist, ist es wohl am einfachsten, einen 
Raspberry PI, Handy oder Smartphone dafür zu nehmen.

von michael (Gast)


Lesenswert?

Hallo,

Auf einem Raspberry Pi gibt es das schon:
http://www.chess.fortherapy.co.uk/
Auf dem Raspberry Pi läuft jedoch ein Betriebssystem. Damit ist es 
natürlich wesentlich leichter, stockfish zum laufen zu kriegen, also 
ohne.

Für den Controller auf dem Arduino Due gibt es C++ Compiler (z.B. 
mitgeliefert mit dem Atmel Studio). Damit könnte es was werden, mit der 
Arduino-Entwicklungsumgebung samt Bibliothek jedoch eher nicht.

Man wird den Quellcode ändern müssen. Beispielsweise verwendet book.cpp 
iostream, um auf Dateien (vermutlich Eröffnungsbücher?) zuzugreifen. Auf 
einem nackten Mikrocontroller, der kein Dateisystem mitbringt, 
funktioniert das nicht ohne weiteres.

Viele Grüße
Michael

von michael (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Es gibt leider (für mich) einige Unbekannte dabei:
> 1. Speicherbedarf (wird mit einem AVR vermutlich nur mit externem RAM
> gehen).
> 2. Codegrösse (falls überhaupt, dann vermutlich in einem der sehr
> grossen AVRs).
> 3. Geschwindigkeit (hier vermute ich mal das ein AVR unannehmbar lange
> Antwortzeiten hätte).

Auf einem Arduino Due, der vom TO vorgeschlagen wurde, sitzt ein Cortex 
M3. Die von dir genannten Probleme dürften jedoch auch hier bestehen.

von Mark B. (markbrandis)


Lesenswert?

Dirk E. schrieb:
> Guten Tag liebe Elektronik-Mikrocontroller-Freunde!
> Ich bin Laie, würde für mich ein Projekt interessant finden.
> Ich habe in Foren gelesen, daß es Schachprogramme auf Mikrocontrollern
> gibt, diese aber relativ schwach sind.

Das liegt doch aber nicht (nur) am Programm, sondern an den 
Beschränkungen der Hardware.

> Nun gibt es Schachprogramme (z. B. Stockfish), welche sehr stark sind
> und dessen C++-Quellcodes frei zur Verfügung stehen.

Ein Schachprogramm frisst nun mal große Mengen an Arbeitsspeicher und 
Rechenleistung, wenn es wirklich gut sein soll. Somit ist klar, dass ein 
Mikrocontroller dafür eher nicht die geeignete Hardware ist.

Ohne ein Betriebssystem wird Stockfish sowieso schon mal gar nicht 
funktionieren. Da kommt man mit einem Arduino Due nicht weit. 96 kB SRAM 
und 512 kB Flash - nee, lass ma gut sein. :-)

Sorry, aber Deine Fragestellung geht ein bisschen in die Richtung "Ich 
will Tempo 100 fahren - mit einem Fahrrad". Warum darf es nicht ein Auto 
sein? ;-)

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

HI

>Ein Schachprogramm frisst nun mal große Mengen an Arbeitsspeicher und
>Rechenleistung, wenn es wirklich gut sein soll. Somit ist klar, dass ein
>Mikrocontroller dafür eher nicht die geeignete Hardware ist.

In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus. 
Taktfrequenz 2,5...4 MHz.

MfG Spess

von c-hater (Gast)


Lesenswert?

spess53 schrieb:

> In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus.
> Taktfrequenz 2,5...4 MHz.

Die dürften allerdings auch nicht annähernd die Spielstärke von 
Stockfish erreicht haben, oder?

von Ich (Gast)


Lesenswert?

c-hater schrieb:
> Die dürften allerdings auch nicht annähernd die Spielstärke von
> Stockfish erreicht haben, oder?

Stockfisch liegt bei ELO 3112, die berühmten Mephistios aus den 80ern 
mit 680xx zwischen 12 und 14mHz bei etwa 2000.
Die Fidelity anfang der 80er mit 6502 und etwa 4MHz bei 1600-1700. Das 
sollte man mit einem AVR erreichen können.

von 6A66 (Gast)


Lesenswert?

c-hater schrieb:
>> In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus.
>> Taktfrequenz 2,5...4 MHz.
>
> Die dürften allerdings auch nicht annähernd die Spielstärke von
> Stockfish erreicht haben, oder?

Na ja, über 2000 ELO kamen die aber gut hinaus was für die Kreisliga 
reichen dürfte (6502 mit 4MHz und 32kRam). War aber alles Assembler und 
viel schachspezifisches Wissen drinnen (Eröffnungen, Endspielthorie).
Hab da früher mitgearbeitet.
Also ein CortexM3 hat gute Karten da auch in der Bezirksliga die Show zu 
stehlen.

rgds

von 6A66 (Gast)


Lesenswert?

6A66 schrieb:
> Na ja, über 2000 ELO kamen die aber gut hinau

Korrektur, hab gerade die ELO lIste durchgesehen: Knapp 2000
http://www.schach-computer.info/wiki/index.php/Mephisto_Nigel_Short

von Soul E. (Gast)


Lesenswert?


von Matthias (Gast)


Lesenswert?

Ein klassischer Mikrocontroller dürfte tatsächlich überfordert sein. 
Geht es dir allerdings in erster Linie über die Bauform und -groesse sei 
dir folgende Plattform empfohlen:
http://hardkernel.com/main/products/prdt_info.php

Denk lieber garnicht an den RasPi. Der ist 10-20x langsamer als der 
Odroid und kostet nur unbedeutend weniger.

von Mark B. (markbrandis)


Lesenswert?

Ja gut, wenn man die Anforderung reduziert auf "es muss nicht Stockfish 
sein, sondern einfach irgendein Schachprogramm, das auf einem 
Mikrocontroller läuft" - das geht natürlich schon.

Ich denke halt dass es für jemanden, der komplett neu in die 
Mikrocontroller-Welt einsteigt, geeignetere erste Ziele gibt. Lieber 
erstmal eine LED zum Blinken bringen, ein LCD anschließen und Texte 
darauf ausgeben... wenn das alles klappt, kann man gerne anfangen größer 
zu denken.

von Dirk E. (Gast)


Lesenswert?

Hallo,
danke für Eure doch recht zahlreichen, kompetenten und nützlichen 
Antworten ... hab ich gar nicht so erwartet.
Ich werd´s dann doch sein lassen, zu kompliziert!
Wie michael mit seinem Link http://www.chess.fortherapy.co.uk/ gezeigt 
hat, gibt´s sowas auch schon. Ich aber werde mir ein Android-Smartphone 
besorgen und dann mach ich Stockfish drauf :-)

Nochmals danke
Dirk

von michael (Gast)


Lesenswert?

Dirk E. schrieb:
> Ich aber werde mir ein Android-Smartphone
> besorgen und dann mach ich Stockfish drauf :-)

Ich würde da eher zu einem Tablet greifen. Das Display eines Smartphones 
wäre mir zu klein, ein 7 Zoll Tablet finde ich gerade noch in Ordnung. 
Die App Droidfish funktioniert übrigens gut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.