Benutzer-Werkzeuge

Webseiten-Werkzeuge


projektewise20:schachroboter:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projektewise20:schachroboter:start [2020/12/13 22:19]
Moritz02 Greifarm Schnittstellen zu anderen Teilaufgaben
projektewise20:schachroboter:start [2021/03/13 17:30] (aktuell)
Moritz02
Zeile 1: Zeile 1:
-====== Projektplanung Schachroboter ======+====Inhaltsverzeichnis==== 
 +  * [[projektewise20:​schachroboter:​Planung|Projektplanung]] 
 +  * [[projektewise20:​schachroboter:​Projektdokumentation|Projektdokumentation]] 
 +  * [[projektewise20:​schachroboter:​Code|Code]]
  
-==== Projektbeteiligte ==== 
-Moritz Merkel, Phillip von Hülsen, Jacob Kunscke, Yannik Mika 
- 
- 
-===== Einführung ===== 
- 
-In unserem Schachroboter-Projekt wollen wir versuchen einen Menschen gegen den Roboter spielen zu lassen. Dazu wollen wir ein handelsübliches Schachpiel verwenden. Der Roboter soll die Züge des Menschen mit einer Kamera erkennen und eigene Züge mit einem Greifarm tätigen. Zunächst werden wir uns lediglich auf die Durchführung der Spielzüge fokussieren,​ jedoch wäre es denkbar einen eigenen Schach-Algorythmus zu entwickeln. 
- 
-===== Ziele und Prioritäten ===== 
- 
-Was muss der Roboter können? 
-  * Schachfiguren bewegen (ohne Algorythmus) 
-  * Bewegung von Schachfiguren erkennen 
- 
-Was sollte der Roboter können? 
-  * Schachspiel gegen Menschen spielen 
-  * durch einen opensource Algorhythmus,​ wie zum Beispiel Stockfish 12 
- 
-Was wäre nett? 
-  * Eigener Schach-Algorhythmus 
-  * Zeiterfassung der Züge: Schachuhr 
- 
-Was wird weggelassen?​ 
-  * Überprüfung ob der Mensch einen validen Zug macht 
- 
-===== Teilaufgaben und Arbeitspakete ===== 
-====Greifarm==== 
-Der Greifarm soll später die einzelnen Schachfiguren bewegen können. Um diese Aufgabe wirklich zu vollenden, muss ein Greifarm sich sicher zu einer bestimmten Stelle auf dem Schachfeld bewegen können, dort eine Schachfigur greifen und diese zu einer anderen Position befördern können. Der Arm soll aus Holz bestehen und durch drei Motoren bewegt werden. Einer davon soll den gesamten Arm drehen und die beiden anderen sollen bestimmen können, wie weit sich der Arm ausstreckt und wie hoch sich dieser über dem Brett bewegt. Außerdem wird ein vierter Motor gebraucht, um den greifenden Teil zu öffnen, beziehungsweise schließen zu können. Auf diese Weise soll eine Art Kran entstehen. Die Befehle für die Position des Greifarms sollen für diesen ersten Teil noch über den Computer eingegeben werden. Später soll das durch einen Schachalgorhythmus und die Kamera entfallen. Da diese Teilaufgabe die größte ist, wird diese hier in die weiteren Punkte Drehbasis, Kranarm und Greifklau unterteilt. 
- 
-===Drehbasis=== 
-Die Drehbasis ist die Grundlage, auf der der Schachroboter steht. Sie ist wichtig, um den sich auf ihr befindenden Kran mitsamt Greifer zu drehen und so jede Schachfigur auf jede Position stellen zu können. Zudem liefert die Drehbasis Platz für das Breadboard. 
- 
-==Arbeitspakete== 
-  * Basis aus Holz bauen 
-  * Zahnrädern und Schrittmotor anbringen 
- 
-==Materialien== 
-  * Holz 
-  * Großes Zahnrad-Plastik 
-  * Kleines Zahnrad-Metall 
-  * Schrittmotor 
- 
-==Risiken und Alternativen== 
-Die Basis hält nicht den Kranarm, oder der Motor ist nicht stark genug. in diesem Fall muss man die Basis einfach größer anlegen. 
- 
-==Schnittstellen zu anderen Teilaufgaben== 
-Die Drehbasis soll später den Kranarm bewegen können. 
- 
-===Kranarm=== 
- 
-Der Kranarm ist an der drehenden Basis befestigt und ist lang genug, um alle Schachfelder sowie die Abstellfelder für die austauschbaren Figuren zu erreichen. Er besteht aus zwei leichten Holzschienen,​ die parallel zueinander verlaufen. Darauf wird ein kleiner Wagen mit vier Rollen mithilfe eines dünnen Seils hin und her gezogen. Auf der Drehbasis befindet sich dazu ein Schrittmotor,​ der eine Achse dreht. Auf diese Achse wird zunächst ein Seil, welches am vorderen Teil des Wagens befestigt ist, aufgewickelt. Ein weiteres Seil wird am anderen Ende des Wagens befestigt und über eine Umlenkrolle am Ende des Kranarms geleitet, sodass dieses Seil ebenfalls von der gleichen Achse aufgewickelt werden kann, allerdings in entgegengesetzte Richtung. Wenn sich das eine Seil aufrollt, rollt sich das andere ab. So ist eine Steuerung nach vorne und hinten möglich. 
- 
-{{ :​projektewise20:​schachroboter:​schachroboter_1_.png |}} 
- 
-==Arbeitspakete== 
-  - Wagen bauen 
-  - Schienen mit Achse bauen 
-  - Seilwinden installieren 
- 
-==Materialien== 
-  * Holzrahmen 
-  * Vier Reifen 
-  * Zwei lange Holzlatten 
-  * Zwei Achsen 
-  * Eine Umlenkrolle 
-  * Zwei Rollen, fest an Seilen 
-  * Seile 
-  * Schrittmotor 
- 
-==Risiken und Alternativen== 
-Als Alternative könnte man einen als Greifarm einen menschlichen Arm nachempfinden,​ allerdings würde diese Konstruktion größer und schwerer werden. 
- 
-==Schnittstellen zu anderen Teilaufgaben== 
-Diese Teilaufgabe steht in direkter Verbindung mit der Drehbasis und der Greifklaue. 
- 
- 
- 
-===Greifklaue=== 
- 
-Die Greifklaue ist an dem beweglichen Holzgestell befestigt und muss zunächst runterfahren und dann ein Objekt greifen können. Dazu wird folgender Aufbau verwendet: ​ 
- 
-{{ :​projektewise20:​schachroboter:​schachroboter.png |}} 
- 
-Die Greifklaue ist wieder mit einem Seil aufgehangen,​ dessen Enden einmal zur Achse von //Kranarm// und zu einer seperaten Achse, die ebenfalls von einem Schrittmotor angetrieben wird, führen. Durch passenden Rotation letzterer Achse kann die Greifklaue nach unten gelassen werden. Damit die Kralle stabil bleibt, müsste man den im Bild gezeigten Aufbau wiederholen,​ damit die Greifklaue an vier Punkten aufgehangen ist. Die Greifklaue selbst ist ein vorgefertigtes Teil von Arduino, welches wir verwenden wollen. Der Motor dazu befindet sich direkt an dem Bauteil. 
- 
-==Arbeitspakete== 
-  - Seilwinden installieren 
-  - Holzgestell mit Greifer und Motor basteln 
-  - Gestell mit Umlenkrollen mit dem Seil verbinden 
- 
-==Materialien== 
-  * Eine Achse 
-  * Schrittmotor 
-  * Vier Rollen, fest an Seilen 
-  * Zehn Umlenkrollen 
-  * Seil 
-  * Greifer 
-  * Motor für den Greifer 
-  * Holzbasis zur Befestigung von Greifer und Motor 
- 
-==Risiken und Alternativen== 
-Wie bereits erwähnt könnte man ebenfalls einen “menschlichen Greifarm” machen. Die Hoch-runter-bewegung würde dabei entfallen, der Greifer an sich würde aber unverändert bleiben. 
- 
-==Schnittstellen zu anderen Teilaufgaben== 
-Diese Teilaufgabe steht in direkter Verbindung mit dem Kranarm. 
- 
-===Arbeitspaket:​ Zusammensiel der einzelnen Teile:=== 
-Über die trigonometrischen Funktionen wird es ermöglicht die Greifklaue gezielt zu einem Feld zu bewegen.Hierfür ist es wichtig, dass die verwendeteten Motoren alle kleinschrittig und genau genug sind. Wenn der Greifarm sicher die einzelnen Felder erreicht und von dort Schachfiguren bewegen kann, dann ist diese Teilaufgabe erfüllt. 
---------- 
- 
-====Kamera==== 
-Philipp 
-Die Kamera soll Auf Das Schachfeld Gerichtet sein und man soll mithilfe der aufgenommenen Bilder Die Positionen der Figuren erkennen. 
-Also müssen wir nach jedem Zug ein Standbild aufnehmen und die Differenz der beiden Bilder nehmen. Da jede Figur einen festen Platz auf dem Spielfeld hat sollte man aus diesen Bildern mithilfe von vorherigen Aufnahmen die Position und Art von jeder Figur feststellen können. 
- 
-===Arbeitspakete=== 
-  * Kamera über dem Spielfeld positionieren 
-  * oben beschriebenes Programm entwerfen 
-===Materialien=== 
-  * Kamera 
-  * Holz 
-  * standartisiertes Schachbrett (46,​4cm*46,​4cm) mit Figuren 
-===Risiken und Alternativen=== 
-Es ist jedoch möglich dass der Pigmentunterschied zwischen den Figuren und dem Brett zu gering ist und wir andersfarbige Figuren Benutzen Müssen. 
- 
----------------- 
- 
-====Schachuhr (Zusatz)==== 
-Die Schachuhr ist dazu da, dem Schachzug, den der Spieler macht, ein Ende zu setzen, welches der Roboter versteht. 
-Wenn man also fertig mit seinem Zug ist, drückt man den Knopf. Dieser sendet dem Roboter dann über das USB-Kabel ein Signal, was für den Roboter den Start seines Zuges bedeutet. 
-===Arbeitspakete=== 
-  * Knopf durch Holzhebel erstellen 
-  * Schachuhr auf Computer, zum Beispiel in Processing, programmieren 
-===Materialien=== 
-  * Knopf 
-  * USB-Kabel 
-  * Holz 
-===Risiken und Alternativen=== 
-Der Roboter würde durch die doch sehr lange Zugzeit schnell Zeitprobleme bekommen. 
- 
--------------------------------------------------------------------- 
- 
-====Schach-Algorhythmus==== 
-Wir möchten versuchen einen eigenen Schachalgorhythmus zu entwerfen, da dieser nicht von Nöten ist um den Roboter zu bewegen, sondern viel mehr ein rein theoretischen Teil darstellt, wird auch dieser Algorhythmus als Teilaufgabe betrachtet. Der Algorhythmus soll in der Programmiersprache Python geschrieben werden. Die Bibliothek "​chess"​ wirkt hierbei sehr unterstützend,​ da die formalen Dinge übernommen werden, so müssen Beispielsweise nicht mehr die einzelnen Figuren einprogrammiert werden. 
- 
-===Arbeitspaket:​ Berechnung des besten Zuges=== 
-Zunächst werden schlicht alle möglichen Züge im vorraus bis zu einem gewissen Grad berechnet. Dieser soll durch eine Obergrenze an zu berechnenden möglichen Zügen festgelegt werden. So wird am Anfang deutlich weniger in absoluten Zügen vorrausgedacht als zum Schluss. Zudem soll die Möglichkeit bestehen, die interessantesten Züge punktuell noch weiter zu berechnen, hierbei werden zum Beispiel nur Figuren nahe des gegnerischen Königs unter Betracht gezogen. Um zu entscheiden,​ welcher Zug getätigt werden soll, wird eine Funktion programmiert,​ welche Stellungen bewerten soll. Hier sollen vorallem zwei Dinge betrachtet werden. Zum einen der schlichte Materialwert,​ wobei ein Bauer Eins, ein Springer oder Läufer Drei, ein Turm Fünf und eine Dame 9 Wert ist, die Werte der Könige gleichen sich aus, da immer beide auf dem Brett sind. Und zum anderen die Anzahl der möglichen Züge, so ist ein Springer ist in der Ecke zum Beispiel weitaus weniger wert als in der Mitte. Auch sollen die Möglichkeiten des Gegners, den König anzugreifen betrachtet werden, sowie die eigenen Möglichkeiten den gegnerischen König anzugreifen. Mit Sicherheit werden sich beim Testen des Algorhythmus mehrere weitere Aspekte finden, so müsste zum Beispiel ein Bauer auf der vorletzten Linie als sehr wertvoll erkannt werden, und es muss immer Überblick über die angegriffenen beziehungsweise verteidigten Figuren behalten werden. 
- 
-===Risiken und Alternativen=== 
-Wenn der Algorhythmus nicht funktioniert oder nicht rechtzeitig fertig wird, möchten wir den Schachroboter "​Stockfish 12" von der Seite https://​stockfishchess.org/​ benutzen oder die Züge einfach direkt über den Computer eingeben. 
- 
--------------------------------------------------------------------- 
- 
-====Gantt Diagramm==== 
-{{:​projektewise20:​schachroboter:​gantt_diagramm.png|}} 
projektewise20/schachroboter/start.1607894368.txt.gz · Zuletzt geändert: 2020/12/13 22:19 von Moritz02