Erkennen der Objektplatzierung in einem Raster


11

Ich arbeite an einem Android ADK-Projekt. Ich suche nach einer Möglichkeit, die Positionen von Schachfiguren auf einem Brett (8x8) zu erkennen. Ich habe mir Dinge wie NFC angesehen, aber es sieht zu teuer aus. Gibt es eine andere Technologie, die ich in Betracht ziehen sollte? Ich brauche etwas, das die Welt jederzeit in der Lage ist, den vollständigen Status der Tafel zu lesen. Zum Beispiel könnten einige der Teile umgeworfen werden und sobald sie wieder aufgebaut sind, brauche ich die Orte. Um dies weiter zu erklären, wird in einem Touroment-Schachspiel das Spiel fortgesetzt, wenn die Figuren an den falschen Ort verschoben werden und keiner der Spieler bemerkt, dass das Spiel fortgesetzt wird. Ich muss das Spiel also aufzeichnen, auch wenn die Position aufgrund der Spielregeln nicht möglich ist.

Ich möchte nur in eine allgemeine Richtung weisen, welche Technologie zu betrachten ist.


"Wenn in einem Turnierschachspiel die Figuren an den falschen Ort verschoben werden und keiner der Spieler bemerkt, dass das Spiel fortgesetzt wird". Ich bin neugierig. Die Schachregeln sagen es? (Eigentlich macht es Sinn, denn - wenn sonst niemand zuschaut -, wie könnten sie nicht weitermachen, wenn keiner von ihnen es bemerkt?)
Telaclavo

@ Telaclavo Ich kann bestätigen, das ist mir in einem Turnier passiert. Bei meinem niedrigen Spielniveau gab es keine offensichtliche Lösung.
Stephen Collings

Antworten:


13

Erste Idee : RFID. Ein Etikett (sehr billig) unter jedem Stück. Jedes Tag sollte identifizieren, um welche Art von Stück es sich handelt (von {6 Weiß} + {6 Schwarz} = 12 verschiedenen Typen). Eine Transceiverschaltung und ein 1-zu-64-Multiplexer für die gesamte Karte. Außerdem 64 kleine Antennen, jede unter jeder Platinenposition. Der Transceiver arbeitet mit einer sehr geringen HF-Leistung (Sie sollten experimentell den optimalen finden). Durch Ändern der Multiplexer-Verbindungen scannen Sie alle 64 Positionen und lesen die IDs der Tags (falls vorhanden), die über jeder dieser Positionen vorhanden sind.

Ich habe noch nie die ICs verwendet, über die gesprochen wird, aber dieses Dokument könnte Ihnen bei der Implementierung des RFID-Multiplexers helfen (der zusammen mit seinem sorgfältigen Layout der schwierigste Teil sein wird).

Zweite Idee : Unterscheiden Sie jeden Stücktyp durch seine einzigartige magnetische Permeabilität. Zu jedem Stück fügen Sie unten eine bestimmte Masse hinzu. Diese zusätzliche Masse ist für alle 32 Teile gleich (damit sich die Benutzer mit ihnen wohl fühlen). Jede zusätzliche Masse ist die Summe zweier Massen: eine "magnetische" Masse plus eine "kompensierende" (nicht magnetische) Masse. Der einzige Zweck der Ausgleichsmasse besteht darin, die gesamte zusätzliche Masse für alle Arten von Teilen gleich zu machen. Sie müssen 12 verschiedene Arten von Stücken unterscheiden. Jeder Stücktyp muss eine magnetische Masse mit einer einzigartigen magnetischen Permeabilität . Sie werden wahrscheinlich Materialien mit einem hohen μ auswählen , aber es gibt viele Materialien, aus denen Sie auswählen können, jedes mit einem anderen μ (siehe eine Tabelle hierμμμ).

Unter jeder Platinenposition müssen Sie mehrere Drahtwindungen wickeln (so dass der Durchmesser fast der Seite des Quadrats entspricht). Sie haben 64 Spulen. Verwenden Sie erneut einen 1-zu-64-Multiplexer, um nur einen von ihnen an ein Induktivitätsmessgerät anzuschließen. Der Unterschied besteht nun darin, dass der Multiplexer nicht mit HF umgehen muss. Sie können einen Knoten aller Spulen miteinander verbinden und 64 analoge Schalter (sehr billig) verwenden, um, wie gesagt, eine Spule zum Induktivitätsmesser zu leiten. Die Schaltung muss in kürzester Zeit bestimmen, wie hoch die an jeder der 64 Spulen gemessene Selbstinduktivität ist. Es braucht nicht viel Genauigkeit. Es müssen nur 13 verschiedene mögliche Werte für L bestimmt werden (das sind weniger als 4 Bits!). Sie können mit Methoden im Zeitbereich experimentieren (z. B. Anlegen einer konstanten Spannung und Messen der Steigung des Stroms). oder im Frequenzbereich (z. B. der Versuch, mit einem bestimmten hinzugefügten Kondensator schnell nach der Resonanzfrequenz zu suchen). Um diese 12 verschiedenen Werte für L zu erreichen, können Sie mit unterschiedlichen Permeabilitäten und unterschiedlichen Abmessungen für das magnetische Material spielen.

Da Sie in angemessener Zeit 64 Positionen scannen müssen (64 Selbstinduktivitäten messen), würde ich mich wahrscheinlich für Zeitbereichsansätze entscheiden. Wenn Sie sich beispielsweise 1 Sekunde Zeit lassen, um den gesamten Zustand der Karte zu lesen, haben Sie 15,6 ms für jede Induktivitätsmessung. Herausfordernd, aber machbar.

Wenn Geschwindigkeit wirklich der Engpass ist, können Sie Ihr System 8x schneller machen, wenn Sie 8 analoge Frontends anstelle von einem einschließen. Jedes Frontend würde für jede Zeile in der Tafel reserviert. Auf diese Weise können Sie 8 Selbstinduktivitäten gleichzeitig messen (was 125 ms für jede Messung ergibt und Sie würden in 1 Sekunde immer noch einen vollständigen Platinenzustand haben). Ich bin sicher, dass eine MCU, selbst mit einem einzelnen ADC (mit 8 Kanälen), ausreichen würde.

L1LN

Idee 2

Vorteil dieser zweiten Idee: keine RF beteiligt. Sie müssen jedoch Ihre eigenen "Tags" mit unterschiedlichen Permeabilitäten erstellen.


Vielen Dank. Ihre erste Idee scheint der richtige Weg zu sein. Ich mag die Kreativität Ihrer zweiten Idee. Es könnte besser für ein kommerzielles Produkt sein, bei dem die Teile nach Maß angefertigt werden könnten. Ich mache das jedoch nur zum Spaß.
TheJosh

@theJosh Auch nachdem Sie geantwortet haben, enthält Ihre Frage einen Satz, der mich immer noch verwirrt. Das eine "Zum Beispiel könnten einige der Teile umgeworfen werden und sobald sie wieder eingerichtet sind, brauche ich die Orte" macht für mich nicht viel Sinn, denn wenn Teile umgeworfen werden, sollte es die Erinnerung Ihres Systems sein, wer sollte dem Benutzer mitteilen, wo die Teile platziert werden sollen, und nicht umgekehrt. Ich habe diesen Satz so interpretiert: Sie möchten, dass das System den Status einer beliebigen Kammer lesen kann, ohne sich auf die Geschichte zu verlassen, und ich habe in diesem Sinne einfachere Antworten verworfen.
Telaclavo

@theJosh (Fortsetzung). Wenn dies nicht der Fall wäre, wäre die Lösung von davidcary einfacher.
Telaclavo

Das Problem bei der ersten Idee ist, dass für die RFID eine relativ kurze Reichweite erforderlich ist. Wenn der Bereich zu groß ist (mehr als ein Quadrat), wird es schwieriger, die richtige Position des Stücks zu erkennen. Nicht unmöglich (hoffe ich), nur viel schwieriger.

@ DavidKessner Richtig, deshalb habe ich gesagt, dass er experimentell die optimale HF-Leistung finden muss. Der Abstand zwischen Antenne und Tag ist viel kürzer als der Abstand zwischen zwei benachbarten Quadraten, daher sollte dies machbar sein.
Telaclavo

4

Ich habe viele elektronische Schachbretter gesehen, die in der Mitte jedes der 64 Quadrate ein Loch gebohrt haben, mit einem einfachen Fotodetektor unter jedem Loch, der nur 1 Bit ergibt - "nichts hier" oder "eine Art ist" den Detektor abdecken ". Dies erfordert (a) etwas Speicher und Code, um sich an die alte Konfiguration des Bretts zu erinnern und zu verfolgen, welches Stück sich wohin bewegt hat, und (b) etwas Besonderes, um die Bauernwerbung zu handhaben. Dies kann erkennen, welche Felder belegt sind und welche Felder zu einem beliebigen Zeitpunkt geöffnet sind, jedoch nicht den vollständigen Status der Tafel.


1
Klug! Sehr einfache Hardware, die durch Logik gesichert wird!
Clabacchio

Das funktioniert so lange, wie immer nur ein Stück gleichzeitig bewegt wird. Es funktioniert nicht für den Fall, dass der OP erwähnt hat, dass mehrere Teile umgeworfen und dann wieder aufgestellt werden. Ansonsten ist es eine gute Lösung.

1

GlyphChess löst dieses Problem mithilfe eines transparenten Schachbretts. Ein Scanner darunter liest den eindeutigen Barcode, der an der Unterseite jedes Stücks angebracht ist, um herauszufinden, welches Stück sich wo befindet. "PARC's Secret Code" Slashdot: Spielen Sie GNU-Schach auf Ihrem Scanner Dies kann jederzeit den vollständigen Status des Bretts erneut lesen. Da sich weniger als 18 einzigartige Arten von Stücken auf dem Schachbrett befinden, ist es möglicherweise besser, leicht zu erkennende Passermarken wie D-Touch-Marker zu verwenden, als hochauflösende Barcodes, mit denen Millionen von Objekten unterschieden werden können.


Nur neugierig. Wie zeigen sie dem Benutzer schwarze und weiße Quadrate, wenn die Tafel transparent ist? Vielleicht mit etwas Transparenz? Und sieht der Benutzer die Lichter nicht?
Telaclavo

@Telaclavo: Ich weiß nicht - vielleicht haben fast transparente Quadrate das traditionelle Grün und Buff getönt? Wenn ich das heute bauen würde, würde ich das Innere der Box weiß machen, dann eine Kamera auf den Boden legen und das Glasschachbrett oben platzieren. Wenn genug Licht für Menschen vorhanden ist, um die Teile zu sehen, wird mehr als genug Licht vom weißen Innenraum reflektiert und der Barcode auf der Unterseite jedes Teils beleuchtet, damit eine Kamera es lesen kann - es sind keine Lichter erforderlich.
Davidcary

1

Ich würde dies tun, indem ich für jedes Quadrat einen Farbsensor herstelle und ein anderes Farbetikett auf die Unterseite des Stücks klebe.

Der Farbsensor würde mit drei LEDs (wahrscheinlich Rot, Grün und Blau) und einem Fototransistor hergestellt, der für alles sichtbare Licht empfindlich ist. Schalten Sie die LEDs nacheinander ein und messen Sie, was der Fototransistor misst, wenn er von der Schachfigur reflektiert wird.

Sie können es auch umgekehrt machen, wenn Sie eine weiße LED und drei verschiedene Fototransistoren haben, die für verschiedene Farben empfindlich sind. Das ist aber schwieriger. Die meisten Fototransistoren sind nicht so farbselektiv. Sie könnten Filter verwenden, aber es ist einfacher, nur LEDs mit verschiedenen Farben zu verwenden.

Wenn die LEDs kurz genug leuchten, sehen Sie sie nicht "zu viel". Die LEDs können auch für andere Zwecke verwendet werden, z. B. zum Markieren des Bretts oder für coole kleine Lichtshows, wenn das Spiel gewonnen ist.

Das ist ein kleiner Trick, der es einfach macht, alles zu verkabeln und aufzubauen. Avago hat etwas Umgebungslicht für I2C-Chips, was es möglicherweise einfacher macht. Andere Unternehmen haben ähnliche Dinge.

Der nächste Trick besteht darin, genügend verschiedenfarbige Etiketten zu erstellen, damit Sie eine eindeutige Farbe pro Stück erhalten. Dies erfordert nur einige Versuche und Irrtümer, da wir das genaue Spektrum der verschiedenen Druckertinten- / Tonerpigmente nicht kennen. Trotzdem sollte es nicht zu schwierig sein, vorausgesetzt, Sie können vom Lichtsensor eine Auflösung von 6 Bit erhalten. (6 Bit würden Ihnen viel Rauschabstand geben.)


1

Keine Notwendigkeit, Farbe zu erkennen, nur Graustufen. Jedes Stück hat einen Grauton auf der Unterseite und ein einfaches IR-Emitter / Detektor-Paar in der Platine liest den Analogwert.


0

Eine Firma namens "Zowie" produzierte einmal einige Spielsets, darunter "Ellie's Enchanted Garden", die sich mit einem Computer verbinden ließen und die Position einiger Token auf einer Spielfläche erfassen konnten. Jeder Token bestand aus einem Kondensator und einer Drahtspule, und auf der Spielfläche befand sich ein Drahtgitter. Wenn ein Strom durch einen horizontalen Draht mit einer Frequenz geleitet wird, die mit der LC-Frequenz einer Coil-Cap-Baugruppe übereinstimmt, würde diese Frequenz auf den vertikalen Drähten auftreten. Das Drahtgitter betrug ungefähr sechs Drähte / Zoll in beiden Richtungen, und die scheinbare Positionierungsauflösung betrug wahrscheinlich ungefähr 0,05 ", aber es waren nur ungefähr 16 Drähte mit der CPU-Platine verbunden; ich würde vermuten, dass die Drähte in einem Muster so angeordnet waren, dass jeder Token würde auf zwei oder mehr horizontale Drähte reagieren und mindestens zwei vertikale Drähte stimulieren; Durch Feststellen, welche Kombination von Drähten auf Reize reagieren würde, konnte die CPU herausfinden, wo sich das Token befand. Ich erinnere mich nicht, was Zowie in ihrem Patent behauptet hat oder welchen Stand der Technik es zitiert hat, aber es ist durchaus möglich, dass der Stand der Technik einen inzwischen gemeinfreien Ansatz beinhaltet, der für Ihre Zwecke angemessen wäre.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.