Inhaltsverzeichnis:

Schachroboter Raspberry Pi Lynxmotion AL5D Arm - Gunook
Schachroboter Raspberry Pi Lynxmotion AL5D Arm - Gunook

Video: Schachroboter Raspberry Pi Lynxmotion AL5D Arm - Gunook

Video: Schachroboter Raspberry Pi Lynxmotion AL5D Arm - Gunook
Video: A Robot Playing Chess 2024, Juli
Anonim
Image
Image

Bauen Sie diesen Schachroboter und sehen Sie, wie er alle besiegt!

Es ist ziemlich einfach zu bauen, wenn Sie die Anweisungen zum Bau des Arms befolgen können und wenn Sie mindestens Grundkenntnisse in Computerprogrammierung und Linux haben.

Der Mensch, der weiß spielt, macht einen Zug. Dies wird vom visuellen Erkennungssystem erkannt. Der Roboter überlegt dann und macht dann seine Bewegung. Und so weiter …

Das vielleicht Neuartigste an diesem Roboter ist der Code zur Bewegungserkennung. Dieser Vision-Code ist auch für Schachroboter verwendbar, die auf viele andere Arten gebaut wurden (wie meinen Schachroboter mit LEGO-Bauweise).

Da die Bewegung des Menschen von einem Vision-System erkannt wird, ist keine spezielle Schachbrett-Hardware (wie Reed-Schalter oder was auch immer) erforderlich.

Mein Code ist für den persönlichen Gebrauch verfügbar.

Schritt 1: Anforderungen

Der Hardware-Build
Der Hardware-Build

Der gesamte Code ist in Python geschrieben, das unter anderem auf einem Raspberry Pi läuft.

Der Raspberry Pi ist ein kleiner, kostengünstiger (ca. 40 US-Dollar) Einplatinencomputer, der von der Raspberry Pi Foundation entwickelt wurde. Das ursprüngliche Modell wurde weitaus beliebter als erwartet und wurde für Anwendungen wie Robotik verkauft

Mein Roboter verwendet einen Raspberry Pi und der Roboterarm besteht aus einem Bausatz: Lynxmotion AL5D. Das Kit wird mit einer Servo-Controller-Platine geliefert. (Der Link, den ich gerade gegeben habe, führt zur US-amerikanischen Website von RobotShop; klicken Sie auf eine der Flaggen oben rechts auf den Seiten der Website für Ihr Land, z. B. Großbritannien).

Außerdem benötigen Sie einen Tisch, eine Kamera, Beleuchtung, eine Tastatur, einen Bildschirm und ein Zeigegerät (z. B. Maus). Und natürlich Schachfiguren und ein Brett. All diese Dinge beschreibe ich in den folgenden Schritten genauer.

Schritt 2: Der Hardware-Build

Der Hardware-Build
Der Hardware-Build

Wie ich bereits erwähnt habe, funktioniert das Herzstück des Vision-Codes mit einer Vielzahl von Builds.

Dieser Build verwendet ein Roboterarm-Kit von Lynxmotion, den AL5D. Im Lieferumfang des Kits ist eine SSC-32U-Servo-Controller-Platine enthalten, die zur Steuerung der Motoren im Arm verwendet wird.

Ich habe mich für die AL5D entschieden, weil der Arm immer wieder genaue Bewegungen machen und nicht abdriften muss. Der Greifer muss zwischen die Steine gelangen und der Arm muss die andere Seite des Bretts erreichen können. Ich musste noch einige Änderungen vornehmen, wie unten beschrieben.

Der von mir verwendete Raspberry Pi ist ein Raspberry Pi 3 Model B+. Dieser kommuniziert über eine USB-Verbindung mit dem SSC-32U-Board.

BEARBEITEN: Der Raspberry Pi 4 ist jetzt verfügbar. Sie benötigen:

  • Ein 15W USB-C Netzteil – wir empfehlen das offizielle Raspberry Pi USB-C Netzteil
  • Eine mit NOOBS geladene microSD-Karte, die Software, die das Betriebssystem installiert (kaufen Sie eine vorinstallierte SD-Karte zusammen mit Ihrem Raspberry Pi oder laden Sie NOOBS herunter, um eine Karte selbst zu laden)
  • Eine Tastatur und Maus (siehe später)
  • Ein Kabel zum Anschluss an ein Display über den Micro-HDMI-Anschluss eines Raspberry Pi 4

Ich brauchte mehr Reichweite am Roboterarm, also habe ich einige kleinere Änderungen daran vorgenommen, indem ich zusätzliche Lynxmotion-Teile verwendet habe, die bei RobotShop gekauft werden können:

1. Ersetzte das 4,5-Zoll-Rohr durch ein 6-Zoll-Rohr - Lynxmotion-Teil AT-04, Produktcode RB-Lyn-115.

2. Ich habe versucht, einen zusätzlichen Satz Federn zu verwenden, bin aber zu einem Paar zurückgekehrt, als ich Punkt 3 unten implementiert habe

3. Verlängerte Höhe mit einem 1-Zoll-Abstandshalter - Lynxmotion-Teil HUB-16, Produktcode RB-Lyn-336.

4. Erweitert die Greiferreichweite mit Ersatz-Greiferpads, die mit einigen LEGO-Ersatzteilen, die ich hatte, und Gummibändern (!) befestigt waren. Dies funktioniert sehr gut, da es beim Anheben von Teilen Flexibilität bietet.

Diese Modifikationen sind im Bild oben rechts zu sehen.

Über dem Schachbrett ist eine Kamera montiert. Dies wird verwendet, um die Bewegung des Menschen zu bestimmen.

Schritt 3: Die Software, die den Roboter bewegt

Der gesamte Code ist in Python 2 geschrieben. Um die verschiedenen Motoren korrekt zu bewegen, damit Schachfiguren bewegt werden können, wird inverser Kinematikcode benötigt. Ich verwende Bibliothekscode von Lynxmotion, der das Bewegen der Motoren in zwei Dimensionen unterstützt und habe diesen mit meinem eigenen Code für 3 Dimensionen, Greiferwinkel und Greiferbackenbewegung ergänzt.

Also haben wir dann Code, der Figuren bewegt, Figuren nimmt, burgt, en passant unterstützt und so weiter.

Die Schachengine ist Stockfish - die jeden Menschen schlagen kann! "Stockfish ist eine der stärksten Schachmotoren der Welt. Es ist auch viel stärker als die besten menschlichen Schachgroßmeister."

Der Code, um die Schach-Engine zu steuern, zu überprüfen, ob ein Zug gültig ist usw. ist ChessBoard.py

Ich benutze etwas Code von https://chess.fortherapy.co.uk, um damit zu kommunizieren. Mein Code (oben) verbindet sich dann damit!

Schritt 4: Die Software, die die Bewegung des Menschen erkennt

Ich habe dies im Instructable für meinen Schachroboter Lego-Build ausführlich beschrieben - also muss ich es hier nicht wiederholen!

Meine "schwarzen" Stücke waren ursprünglich braun, aber ich habe sie mattschwarz lackiert (mit "Tafelfarbe"), wodurch der Algorithmus bei variableren Lichtverhältnissen besser funktioniert.

Schritt 5: Kamera, Lichter, Tastatur, Tisch, Display

Kamera, Beleuchtung, Tastatur, Tisch, Display
Kamera, Beleuchtung, Tastatur, Tisch, Display
Kamera, Beleuchtung, Tastatur, Tisch, Display
Kamera, Beleuchtung, Tastatur, Tisch, Display

Diese sind die gleichen wie in meinem Chess Robot Lego-Build, daher muss ich sie hier nicht wiederholen.

Nur habe ich diesmal einen anderen und deutlich besseren Lautsprecher verwendet, einen Lenrui Bluetooth-Lautsprecher, den ich per USB mit dem RPi verbinde.

Erhältlich bei amazon.com, amazon.co.uk und anderen Verkaufsstellen.

Außerdem verwende ich jetzt eine andere Kamera - eine HP Webcam HD 2300, da ich die vorherige Kamera nicht dazu bringen konnte, sich zuverlässig zu verhalten.

Die Algorithmen funktionieren am besten, wenn das Schachbrett eine Farbe hat, die weit von der Farbe der Figuren entfernt ist! In meinem Roboter sind die Figuren cremefarben und braun, und das Schachbrett ist aus Karton handgefertigt und ist hellgrün mit geringem Unterschied zwischen den "schwarzen" und "weißen" Quadraten.

Die Algorithmen benötigen eine bestimmte Ausrichtung von Kamera zu Board. Bitte kommentieren Sie unten, wenn Sie ein Problem haben. Der Arm hat eine begrenzte Reichweite, daher sollte die Quadratgröße 3,5 cm betragen.

Schritt 6: Beziehen der Software

1. Stockfisch

Wenn Sie Raspbian auf Ihrem RPi ausführen, können Sie die Stockfish 7-Engine verwenden - sie ist kostenlos. Renn einfach:

sudo apt-get install Stockfish

2. ChessBoard.py Holen Sie sich das hier.

3. Code basierend auf https://chess.fortherapy.co.uk/home/a-wooden-chess… Kommt mit meinem Code.

4. Python 2D Inverse Kinematics Bibliothek -

5. Mein Code, der den gesamten obigen Code aufruft und der den Roboter dazu bringt, die Bewegungen auszuführen, und mein Visionscode. Holen Sie sich dies von mir, indem Sie zuerst meinen YouTube-Kanal abonnieren, dann auf die Schaltfläche "Favorit" oben in diesem Instructable klicken und dann einen Kommentar zu diesem Instructable posten, und ich werde antworten.

Empfohlen: