Detectar la colocación de objetos en una cuadrícula


11

Estoy trabajando en un proyecto Android ADK. Estoy buscando una manera de detectar la ubicación de las piezas de ajedrez en un tablero (8x8). Estaba mirando cosas como NFC pero parece demasiado caro. ¿Hay una tecnología diferente que debería considerar? Necesito algo para que el mundo pueda leer el estado completo de la pizarra en cualquier momento. Por ejemplo, algunas de las piezas pueden volcarse y una vez que se vuelven a instalar, necesito las ubicaciones. Para explicar esto más a fondo, en un juego de ajedrez touroment si las piezas se mueven a la ubicación incorrecta y ninguno de los jugadores se da cuenta de que el juego continuará. Así que necesito grabar el juego incluso si la posición es imposible según las reglas del juego.

Solo quiero señalar en una dirección general de qué tecnología mirar.


"En un juego de ajedrez de torneo si las piezas se mueven a la ubicación incorrecta y ninguno de los jugadores se da cuenta de que el juego continuará". Soy curioso. ¿Las reglas del ajedrez lo dicen? (En realidad, tiene sentido, porque -si no hay nadie más mirando-, ¿cómo podrían no continuar, si ninguno de ellos lo nota?)
Telaclavo

@Telaclavo Puedo confirmar, eso me pasó en un torneo. No había una solución aparente en mi bajo nivel de juego.
Stephen Collings

Respuestas:


13

Primera idea : RFID. Una etiqueta (muy barata) debajo de cada pieza. Cada etiqueta debe identificar qué tipo de pieza es (de {6 blanco} + {6 negro} = 12 tipos diferentes). Un circuito transceptor y un multiplexor de 1 a 64 para toda la placa. Además, 64 pequeñas antenas, cada una debajo de cada posición de la placa. El transceptor funciona a una potencia de RF muy baja (debe encontrar la óptima, experimentalmente). Al cambiar las conexiones del multiplexor, escanea las 64 posiciones y lee las ID de las etiquetas (si las hay) presentes en cada una de ellas.

Nunca he usado los circuitos integrados de los que habla, pero este documento podría ayudarlo a implementar el multiplexor RFID (que será la parte más difícil, junto con su diseño cuidadoso).

Segunda idea : distinguir cada tipo de pieza por su permeabilidad magnética única. A cada pieza, agregará una cierta masa en su parte inferior. Esta masa extra será la misma para las 32 piezas (para que los usuarios se sientan cómodos con ellas). Cada masa adicional será la suma de dos masas: una masa "magnética", más una masa de "compensación" (no magnética). El único propósito de la masa de compensación será hacer que la masa extra total sea igual para todos los tipos de piezas. Debe distinguir 12 tipos diferentes de piezas. Cada tipo de pieza debe tener una masa magnética con una permeabilidad magnética única, . Probablemente elegirá materiales con un μ alto , pero hay muchos materiales entre los que puede elegir, cada uno con un μ diferente (consulte una tabla aquíμμμ)

Debajo de cada posición del tablero, deberá enrollar varias vueltas de alambre (de modo que el diámetro sea casi el lado del cuadrado). Tendrás 64 bobinas. Nuevamente, use un multiplexor de 1 a 64, para conectar solo uno de ellos a un medidor de inductancia. La diferencia, ahora, es que el multiplexor no necesita lidiar con RF. Puede unir un nodo de todas las bobinas y usar 64 interruptores analógicos (muy baratos) para dirigir, como dije, una bobina al medidor de inductancia. El circuito tendrá que determinar, en el menor tiempo posible, cuál es la auto inductancia medida en cada una de las 64 bobinas. No necesita mucha precisión. Solo necesita determinar 13 valores posibles diferentes para L (¡eso es menos de 4 bits!). Puede experimentar con métodos en el dominio del tiempo (por ejemplo, aplicando un voltaje constante y midiendo la pendiente de la corriente), o en el dominio de la frecuencia (por ejemplo, tratando de buscar rápidamente cuál es la frecuencia resonante, con un cierto condensador agregado). Para alcanzar esos 12 valores diferentes para L, puedes jugar con diferentes permeabilidades y diferentes dimensiones para el material magnético.

Dado que tiene que escanear 64 posiciones (medir 64 auto inductancias) en un tiempo razonable, probablemente optaría por enfoques de dominio de tiempo. Por ejemplo, si se permite 1 segundo para leer todo el estado de la placa, tiene 15,6 ms para cada medición de inductancia. Desafiante, pero factible.

Si la velocidad termina siendo realmente el cuello de botella, podría hacer que su sistema sea 8 veces más rápido, si incluye 8 terminales analógicos, en lugar de uno. Cada front end se dedicaría a cada fila en el tablero. De esa manera, podría medir 8 auto inductancias simultáneamente (dándole 125 ms para cada medición, y aún tendría un estado de placa completo en 1 segundo). Estoy seguro de que una MCU, incluso con un solo ADC (con 8 canales), sería suficiente.

L1LN

Idea 2

Beneficio de esta segunda idea: no hay RF involucrada. Sin embargo, debe crear sus propias "etiquetas", con diferentes permeabilidades.


Gracias. Su primera idea parece ser el camino a seguir. Me gusta la creatividad de tu segunda idea. Podría ser mejor para un producto comercial donde las piezas se pueden personalizar. Sin embargo, solo estoy haciendo esto por diversión.
theJosh

@theJosh Incluso después de haber respondido, hay una oración en tu pregunta que todavía me confunde. El que dice "Por ejemplo, algunas de las piezas pueden volcarse y una vez que se vuelven a configurar necesito las ubicaciones" no tiene mucho sentido para mí, porque si las piezas se vuelcan, debería ser el recuerdo de su sistema quien debería decirle al usuario dónde colocar las piezas, y no al revés. Interpreté esa oración como: quieres que el sistema pueda leer cualquier estado arbitrario de la junta, sin depender de la historia, y descarté respuestas más simples con eso en mente.
Telaclavo

@theJosh (continuación). Si ese no fuera el caso, la solución de davidcary sería más simple.
Telaclavo

El problema con la primera idea es que requiere un rango bastante corto para la RFID. Si el rango es demasiado (más de un cuadrado), entonces se hace más difícil detectar la posición correcta de la pieza. No imposible (espero), simplemente mucho más difícil.

@DavidKessner Correcto, por eso dije que necesitaría encontrar la potencia de RF óptima experimentalmente. La distancia desde la antena hasta la etiqueta es mucho más corta que la distancia entre dos cuadrados adyacentes, por lo que debería ser factible.
Telaclavo

4

He visto muchos tableros de ajedrez electrónicos que tienen un agujero perforado en el centro de cada uno de los 64 cuadrados, con un simple fotodetector debajo de cada agujero, que da solo 1 bit: "nada aquí" o "una pieza de algún tipo es cubriendo el detector ". Esto requiere (a) un poco de memoria y código para recordar la configuración anterior del tablero, y rastrear qué pieza se movió a dónde, y (b) algo especial para manejar la promoción de peones. Esto puede detectar qué casillas están ocupadas y qué casillas están abiertas en cualquier momento, pero no el estado completo del tablero.


1
¡Inteligente! ¡Hardware muy simple respaldado por lógica!
clabacchio

Eso funciona siempre que solo se mueva una pieza a la vez. No funciona para el caso que el OP mencionó donde varias piezas se volcan y luego se vuelven a colocar. De lo contrario, es una buena solución.

1

GlyphChess resuelve esto usando un tablero de ajedrez transparente. Un escáner debajo lee el código de barras único pegado en la parte inferior de cada pieza para averiguar en qué pieza se encuentra. Slashdot "Código secreto de PARC" : Juegue GNU Chess en su escáner Esto puede releer el estado completo del tablero en cualquier momento. Dado que hay menos de 18 tipos únicos de piezas en el tablero de ajedrez, quizás sería mejor usar fiduciales fáciles de reconocer , como marcadores d-touch, en lugar de códigos de barras de alta resolución capaces de distinguir millones de objetos.


Sólo curioso. Siendo el tablero transparente, ¿cómo muestran cuadrados en blanco y negro al usuario? ¿Quizás con alguna transparencia intermedia? ¿Y el usuario no ve las luces?
Telaclavo

@Telaclavo: No lo sé, ¿tal vez los cuadrados casi transparentes tiñen el verde tradicional y el color de ante? Si estuviera construyendo esto hoy, haría que el interior de la caja fuera blanco, luego colocaría una cámara en la parte inferior y colocaría el tablero de vidrio en la parte superior. Si hay suficiente luz para que los humanos vean las piezas, hay luz más que suficiente rebotando en el interior blanco e iluminando el código de barras en la parte inferior de cada pieza para que una cámara la lea, no se necesitan luces.
davidcary

1

Haría esto haciendo un sensor de color para cada cuadrado y poniendo una etiqueta de color diferente en la parte inferior de la pieza.

El sensor de color se fabricaría con tres LED (probablemente rojo, verde y azul) y un fototransistor sensible a toda la luz visible. Encienda los LED en secuencia y mida lo que mide el fototransistor reflejándose en la pieza de ajedrez.

Podría hacerlo a la inversa, donde tiene un LED blanco y tres fototransistores diferentes sensibles a diferentes colores. Pero eso es más difícil de hacer. La mayoría de los fototransistores no son tan selectivos de color. Podrías usar filtros, pero es más fácil usar solo LED de diferentes colores.

Si los LED están encendidos por un tiempo lo suficientemente corto, entonces no lo vería "demasiado". Además, los LED podrían usarse para otras cosas como marcar el tablero o hacer pequeños espectáculos de luces cuando se gana el juego.

Hay un pequeño truco para esto, que hace que todo sea fácil de conectar y construir. Avago tiene algo de luz ambiental para los chips I2C que podrían facilitarlo. Otras compañías tienen cosas similares.

El siguiente truco es hacer suficientes etiquetas de diferentes colores para que tenga un color único por pieza. Esto solo requerirá un poco de prueba y error, ya que no conocemos el espectro exacto de los diversos pigmentos de tinta / tóner de la impresora. Aun así, no debería ser demasiado difícil siempre que pueda obtener quizás 6 bits de resolución del sensor de luz. (6 bits le darían mucho margen de ruido).


1

No es necesario detectar el color, solo tonos de gris. Cada pieza tiene un tono de gris en la parte inferior y un simple par de emisor / detector IR ubicado en la placa lee el valor analógico.


0

Una compañía llamada "Zowie" una vez produjo algunos juegos, incluido "Ellie's Enchanted Garden", que se conectaba a una computadora y podía detectar la posición de algunas fichas en una superficie de juego. Cada ficha consistía en un condensador y una bobina de cable, y la superficie de juego presentaba una red de cables; poner una corriente a través de un cable horizontal a una frecuencia que coincida con la frecuencia LC de un conjunto de tapa de bobina causaría que esa frecuencia aparezca en los cables verticales. La rejilla del cable era de aproximadamente seis cables / pulgada en ambas direcciones, y la resolución de posicionamiento aparente era probablemente de aproximadamente 0.05 ", pero solo había unos 16 cables que se conectaban a la placa de la CPU; supongo que los cables se organizaron en un patrón tal que cada ficha reaccionaría a dos o más cables horizontales y estimularía al menos dos cables verticales; Al observar qué combinación de cables reaccionaría a los estímulos, la CPU podría averiguar dónde estaba el token. No recuerdo qué reclamó Zowie en su patente, o qué técnica anterior citó, pero es completamente posible que la técnica anterior incluya un enfoque de dominio público que sea adecuado para sus propósitos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.