Kartenspielroboter

Viele Menschen spielen gerne Karten, aber manchmal fehlt ein Mitspieler!

01.10.2019 - 14.03.2020

Kartenspielroboter

Projektbeschreibung

Kartenspiele stellen eine beliebten Zeitvertreib für Jung und Alt dar. Je nach Kartenspiel ist eine bestimmte Anzahl oder eine Mindestanzahl an Spielern notwendig, sonst kann das Spiel nicht gespielt werden. Da nicht immer die benötigte oder gewünschte Anzahl an Spielern verfügbar ist, sollte im Rahmen von Systems Engineering 1 ein Robotersystem entwickelt werden, das einen menschlichen Mitspieler für das Spielen verschiedener Kartenspiele mit echten Spielkarten ersetzen kann.

Beteiligte Personen

Studierendengruppe: 

Zentrale Spielsteuerung: Markus Wagner, Marco Westermair, Dominik Ziegler

Mensch-Maschine-Interaktion: Tobias Ertle, Manuel Mikschl, Alexander Markidonow

Kartenerkennung: Benedikt Degenstein, Ali Gözen, Thomas Henning, Dennis Religa, Burak Saglam

Roboteransteuerung: Michael Durach, Thomas Höger, Jan Sigg, Nikolas Voss

Betreuer: Prof. Dr.-Ing. Martin Bayer, Prof. Dr.-Ing. Claudia Meitinger

Veranstaltung

Systems Engineering 1 (E5-IK)

Laufzeit

WS 2019/2020

Zielsetzung

Entwicklung eines funktionsfähigen Prototypen eines Kartenspielroboters,

  • der einen menschlichen Mitspieler beim bayrischen Kartenspiel "Watten" für zwei ersetzen kann.
  • der mit echten Spielkarten spielen kann.
  • der einfach erweitert bzw. modifiziert werden kann (z.B. auf andere Kartenspiele, andere Technologien zur Kartenerkennung und/oder Kartenhandhabung, etc.).

Systemüberblick

Umzusetzende Funktionalitäten

Zur Realisierung der Zielsetzung sollten folgende technische Funktionalitäten umgesetzt werden:

  • Zentrale Spielsteuerung zur Ansteuerung der anderen Spielkomponenten
    • Interaktion mit menschlichen Mitspielern, wann immer sinnvoll/nötig
    • Bestimmen und Ausspielen einer Karte, sofern Roboterspieler an der Reihe ist (mindestens regelkonform, nach Möglichkeit mit einer einfachen Taktik)
  • Interaktion mit dem/n menschlichen Mitspieler(n) über verschiedene Modalitäten
  • Identifizieren von Spielkarten
    • verdeckte, d.h. eigene, noch nicht ausgespielte Karten des Roboterspielers, die für menschliche Mitspieler nicht sichtbar sein sollen
    • offene, d.h. die zuletzt ausgespielte Karte (egal von welchem Spieler)
  • Aufnehmen und Bewegen von Spielkarten des Roboterspielers
     
    • zu Spielbeginn vom Stapel
    • während des Spiels aus einer Kartenhalterung

Anordnung Systemkomponenten

Folgende Abbildung zeigt die gewählte Spieleranordnung sowie definierte Ablageorte für Spielkarten vor und während des Spiels. von OpenPNP selbst.

Modularisierung

Entsprechend der umzusetzenden technischen Funktionalitäten wurde das Projekt im Rahmen von vier Teilprojekten realisiert. Jede Funktionalität wurde für einen Raspberry Pi als Teil eines MQTT-Netzwerks umgesetzt.

Vorgehensweise

Die Umsetzung des Projektes erfolgte in mehreren Phasen über das Semester hinweg.

Projekt aufsetzen

  • Watten lernen
  • Lasten- & Pflichtenheft erstellen
  • Struktur, Arbeitspakete, Ablauf, Projektplan, Kosten planen
  • Synchronisations-Meilensteine festlegen
  • git-Repositories initialisieren

Gesamtsystemsimulation durchführen

Ziele:

  • Verbindliche Schnittstellende finition festlegen (hier: MQTT-Topics)
  • Gemeinsames Verständnis des Gesamtsystemverhaltens erlangen

Ablauf:

  • Jede Gruppe simuliert das Verhalten Ihres Teilsystems.
  • Die Kommunikation zwischen den Teilsystemen / Gruppen ist ausschließlich mittels MQTT erlaubt (z.B. über Kommandozeilentools).

System integrieren

  • Bei jeder Systemintegration wird versucht, einen vollständigen Spielablauf abzuarbeiten.
  • Fehler und Optimierungsmöglichkeiten werden dokumentiert und von den Gruppen anschließend bearbeitet.
  • Bei nächsten wöchentlichen Treffen werden die Verbesserungen und Erweiterungen wiederum in Form eines kompletten Spielablaufversuchs getestet.

Projekt abschließen

  • Präsentation der Ergebnisse der Teilprojekte
  • Dokumentation der Module
  • Abnahme / Übergabe

Teilprojekt ZENTRALE SPIELSTEUERUNG

Aufgaben

  • Zentrale Steuerung des Spielablaufs
    • Interaktion mit menschlichen Mitspielern, wann immer sinnvoll/nötig
    • Anfordern von Roboteraktionen
    • Anfordern der Kartenerkennung
  • Implementierung einer Spielelogik
    • Bestimmen einer auszuspielenden Karte: regelkonform unter Verwendung einer einfachen Spieltaktik

Modulbeschreibung

Es wurde ein Python-Skript entwickelt, welches die Kommunikation unter den Gruppen steuert, den Spielablauf verwaltet und die Taktik implementiert. Ein systemd-Service startet die Skripte beim Systemstart automatisch, so dass kein manueller Eingriff notwendig ist.

Um flexibel hinsichtlich zukünftiger Änderungen zu sein, wurde ein objektorientierter Entwurf umgesetzt, in dem Spielertypen (Mensch/Roboter) ebenso einfach ausgetauscht werden können wie die Art des Spiels (Watten/...) oder die Art der Kommunikation zwischen den Kompontenten.

Die Funktion zur Kartenauswahl weist jeder Karte einen Wert zu, welcher bei der Entscheidungsfindung berücksichtigt wird. Zudem wird bei der Wahl von Spielschlag und Spielfarbe eine einfache Heuristik angewendet, so dass Spiele gewonnen werden konnten.

Zusätzlich wurde ein MQTT-Logger und ein Simulationsprogramm für interne Tests erstellt. Die gesendeten Nachrichten aller Systemkomponenten wurden aufgezeichnet, um die Fehlersuche zu erleichtern. Das Simulationsprogramm ermöglicht Tests der eigenen Software, ohne auf andere Gruppen angewiesen zu sein.

Teilprojekt MENSCH-MASCHINE-INTERAKTION

Aufgaben

  • Konzeption des Interaktionskonzepts in Absprache mit der zentralen Spielsteuerung
  • Implementierung von Spracheingabe, Sprachausgabe, Touch-Interaktion

Anforderungen (Auswahl)

  • Die Interaktion sollte für menschliche Spieler selbsterklärend, d.h. ohne Einweisung nutzbar sein.
  • Der Systemzustand im Hinblick auf den Spielfortschritt und gewählte Parameter (z.B. Spielschlag, Spielfarbe) sollte für den Menschen sichtbar sein.
  • Der Roboter sollte auf spielentscheidende Aktionen menschenähnlich reagieren.

Umsetzung

  • Programmiersprache Python3
  • Display mit Toucheingaben als Grundbaustein
    Sprachausgabe und Spracheingabe als Ergänzung
  • Paho-MQTT Bibliothek für MQTT Nachrichten
  • Startup zum Starten/Neustarten aller Programme als einzelne Tasks (Spracheingabe, Sprachausgabe und Display)
  • Kivy Bibliothek für die Benutzeroberfläche
  • Sprachausgabe mithilfe von eclipse für Text-to-Speech
  • Spracheingabe mithilfe von Snips

Verwendung

Nach dem Hochfahren des Raspberry Pi3 muss das Pythonskript für das Startup ausgeführt werden. Dieses wartet dann auf Kommandos, die via MQTT eintreffen.

Sobald vom Spieler eine Eingabe gefordert wird, wird dieser per Sprachausgabe und Bildschirmanweisung dazu aufgefordert.

Neben einer Touch-Eingabe ist dies auch mit einer Spracheingabe möglich.

Teilprojekt KARTENERKENNUNG

Aufgabe

  • Identifi kation von verdeckten und off enen Spielkarten (einzeln und im Stapel)

 Anforderungen

  • Die Spielkarten des Roboters müssen hinsichtlich Farbe und Schlag erkannt werden können.
  • Die ausgespielten Karten des Spielers müssen hinsichtlich Farbe und Schlag erkannt werden können.
  • Eine doppelte Erkennung der gleichen Spielkarte muss vermieden werden.

Die Karten wurden optisch mit Hilfe einer Kamera erkannt, welche mit einem Flachbandkabel an den Raspberry Pi angeschlossen wurde. In einer ersten Realisierungsstufe wurden die Spielkarten im Kamerabild basierend auf QR-Codes erkannt. In einer zweiten Stufe wurde ein neuronales Netz zur Erkennung der Karten trainiert.

Umsetzung - Variante 1: QR Codes

Die Spielkarten wurden jeweils mit 2 QR-Codes an der oberen und unteren Kante versehen. Diese Codes beinhalten Informationen über den Schlag und die Trumpffarbe der Spielkarte.

Die Erkennung der QR-Codes erfolgt mittels einer Python-Skripts. Dieses verwendet eine Bibliothek, zur Extraktion der Informationen aus den QR-Codes und übermittelt diese anschließend an die anderen Systemkomponenten.

Umsetzung - Variante 2: Neuronales Netz

In einer zweiten Ausbaustufe wurde ein neuronales Netz mit Kartenbildern trainiert, so dass eine Erkennung der Karten stattfinden kann, ohne diese verändern zu müssen. Diese Variante wird aktuell noch getestet und in das Gesamtsystem integriert.

Teilprojekt ROBOTERANSTEUERUNG

Aufgabe

  • Konzeption und Aufbau des Spielbereichs
  • Auswahl und Ansteuerung eines Robotersystems und Greifers

Modulbeschreibung

Gegenstand dieser Systemkomponente ist der Transport von Karten mit Hilfe eines Roboterarms. Zentrale Anforderung ist die flüssige Bewegung des Roboterarms. Mit den 6 Achsen des Roboterarms Niryo One ist ein Spielablauf nahe dem einer realen Hand gut umsetzbar.

Zudem dient der Roboterarm als Kamerahalter für das Teilprojekt "Kartenerkennung". Je nach aktuellem Bedarf wird zwischen dem Tool "Vakuum-Greifer" und dem Tool "Kamera" gewechselt, indem ein eigens konstruierter Halter für Greifer und Kamera gedreht wird.

Bewegungen, die im Rahmen dieses Teilprojekts umgesetzt wurden, sind:

  • Aufnahme von Karten von einem verdeckten Stapel und Ablage in eine der fünf Kartenhalterungen
  • Ausspielen einer Karte aus einer der fünf Kartenhalterungen auf den Tisch
  • Erkennungsfahrt mit Kamera, um Spielkarten in den Kartenhalterungen erkennen zu können
  • Positionierung der Kamera über dem Tisch, um ausgespielte Karten erkennen zu können
  • Kalibrierungsfahrt

Umsetzung

  • Aufnahme der Karten über einen Saugnapf
  • Entwurf und 3D-Druck aller nötigen mechanischen Bauteile(Kartenhalterung, Kartenablage, Werkzeughalterung, Schlauch-/Kabelführung)
  • Programmierung der Roboterbahnen in Python
  • Aufruf der Roboterbahnen infolge Anfoderungen anderer Systemkomponenten über MQTT (zentrale Spielsteuerung, Kartenerkennung)
  • Verwendung der Python-Bibliothek Paho für MQTT Interaktionen

Wir benutzten ...

Roboter Niryo One, ROS, Vakuum-Sauger, MQTT, Raspberry Pi 3B+, Raspi-Camera, Python, eSpeak, SNIPS, KI, QR Codes, 3D-Druck, YOLO, ...

Verwendung

Im Video wird gezeigt, wie der Kartenspielroboter Karten erkennt, auf Sprache reagiert und sie mit seinem Roboterarm bewegt.

Weitere Projekte an der THA

23. E2D-Werkschau 2026

20.10.2026 - 31.12.2026

Projektgalerie | 23. E2D Werkschau

Im Rahmen der 23. E2D Werkschau werden ausgewählte Studierendenprojekte auch digital präsentiert.

Projekt entdecken

01.10.2026 - 31.12.2028

KI-Produktionsnetzwerk II

Gemeinsam KI anwenden – sicher, effizient, interaktiv, nachhaltig

Projekt entdecken

17.09.2026 - 23.09.2027

Ressourceneffizienz

Suffizienz­matrix­methode

Suffiizienzmatrix zur Nachhaltigkeitsbewertung von Produkten und Dienstleistungen nach planetaren Grenzen jenseits des Greenwashing.

Projekt entdecken

01.09.2026 - 01.03.2027

Digitalisierung

Online-Services: Kooperationsprojekt mit der Stadt Augsburg

Wie werden digitale Verwaltungsangebote besser genutzt? Studierende der THA entwickeln gemeinsam mit der Stadt Augsburg konkrete Ansätze für nutzerfreundlichere Bürgerservices.

Projekt entdecken
Mann mit Helm und lederner Umhängetasche fährt Fahrrad

01.07.2026 - 30.06.2029

A2W

Active to Work - Aktive Mobilität auf dem Arbeitsweg: Auswirkungen auf die psychische Gesundheit und die Rolle städtischer Umweltfaktoren

Projekt entdecken
Studierende mit VR-Brille

01.04.2026 - 30.04.2029

Gesellschaft • KI

KI-unterstützter, VR-basierter Deutsch-Kompetenzerwerb für zukünftige Fachkräfte

Das Projekt „KI-unterstützter, VR-basierter Kompetenzwettbewerb zukünftiger Fachkräfte im Bereich Deutsch als Fach- und Berufssprache" adressiert angesichts des anhaltenden Fachkrä

Projekt entdecken

01.02.2026 - 31.01.2029

Texspread360

Alttextilien vollständig erfassen und präzise sortieren: TexSpread360 entwickelt ein KI- und robotikgestütztes System, das jedes Kleidungsstück rundum analysiert und dem passenden

Projekt entdecken

01.02.2026 - 31.01.2029

Digitalisierung • Robotik

BOSDra

BOSDra entwickelt ein automatisiertes Erstzugriffs-Drohnensystem für Behörden und Organisationen mit Sicherheitsaufgaben (BOS).

Projekt entdecken