그리드에서 객체 배치 감지


11

Android ADK 프로젝트를 진행 중입니다. 보드에서 체스 조각의 위치를 ​​감지하는 방법을 찾고 있습니다 (8x8). NFC와 같은 것을보고 있었지만 너무 비싸 보입니다. 고려해야 할 다른 기술이 있습니까? 세상이 언제라도 보드의 전체 상태를 읽을 수있는 무언가가 필요합니다. 예를 들어 조각 중 일부가 넘어지면 다시 설정되면 위치가 필요합니다. 이것을 더 설명하기 위해 touroment 체스 게임에서 조각이 잘못된 위치로 이동하고 플레이어가 게임이 계속되는 것을 알지 못하는 경우. 따라서 게임 규칙에 따라 위치가 불가능하더라도 게임을 기록해야합니다.

나는 어떤 기술을보아야하는지에 대한 일반적인 방향으로 지적하고 싶습니다.


"토너먼트 체스 게임에서 조각이 잘못된 위치로 이동하고 플레이어가 게임이 계속되는 것을 알지 못하면" 궁금해. 체스 규칙은 그렇게 말합니까? (실제로, 아무도보고 있지 않다면, 아무도 눈치 채지 못하면 어떻게 계속할 수 없습니까?)
Telaclavo

@Telaclavo 나는 확인할 수있다. 그것은 토너먼트에서 일어난 일이다. 저수준의 플레이에서는 명백한 해결책이 없었습니다.
Stephen Collings 2016 년

답변:


13

첫 번째 아이디어 : RFID. 각 조각 아래에 하나의 태그 (매우 저렴한). 각 태그는 어떤 유형 의 조각 인지 식별해야합니다 ({6 white} + {6 black} = 12 가지 유형 중). 전체 보드를위한 하나의 트랜시버 회로와 1-64 멀티플렉서. 또한 각 보드 위치 아래에 각각 64 개의 작은 안테나가 있습니다. 트랜시버는 매우 낮은 RF 전력으로 작동합니다 (실험적으로 최적의 전력을 찾아야 함). 멀티플렉서 연결을 변경하면 64 개의 위치를 ​​모두 스캔하고 각 위치에 존재하는 태그의 ID (있는 경우)를 읽습니다.

필자가 말한 IC를 사용한 적이 없지만 이 문서 는 RFID 멀티플렉서를 구현하는 데 도움이 될 수있다.

두 번째 아이디어 : 고유 한 투자율로 각 조각 유형을 구별하십시오. 각 조각마다 바닥에 특정 질량을 추가합니다. 이 추가 질량은 모든 32 개 조각에 대해 동일하므로 사용자가 편안하게 느낄 수 있습니다. 각 추가 질량은 "자기"질량과 "보상"(비 자기) 질량의 두 질량의 합이됩니다. 보상 질량의 유일한 목적은 모든 유형의 조각에 대해 총 추가 질량을 동일하게 만드는 것입니다. 12 가지 유형의 조각을 구별해야합니다. 각 유형의 조각에는 고유 한 투자율 의 자기 질량이 있어야합니다 . 아마도 높은 인 재료를 선택할 것입니다 . 그러나 각각 다른 인 재료를 선택할 수 있습니다 (한 테이블 참조)μ μμμμ여기 ).

각 보드 위치 아래에서 와이어를 여러 번 감아 야합니다 (직경이 거의 사각형의 측면이되도록). 64 개의 코일이 있습니다. 다시 1-64 멀티플렉서를 사용하여 이들 중 하나만 인덕턴스 미터에 연결하십시오. 차이점은 이제 멀티플렉서는 RF를 처리 할 필요가 없다는 것입니다. 내가 말했듯이 모든 코일의 한 노드를 함께 묶고 64 개의 아날로그 스위치 (매우 저렴한)를 사용하여 하나의 코일을 인덕턴스 미터에 연결할 수 있습니다. 회로는 가능한 한 짧은 시간에 64 개의 코일 각각에서 측정되는 자기 인덕턴스를 결정해야합니다. 많은 정확도가 필요하지 않습니다. L에 대해 13 가지 가능한 다른 값 (4 비트 미만) 만 결정하면됩니다. 시간 영역에서 방법 (예 : 정전압을 적용하고 전류의 기울기를 측정)을 실험 할 수 있습니다. 또는 주파수 영역에서 (예를 들어, 특정 커패시터가 추가 된 공진 주파수가 무엇인지 신속하게 찾으려고 함). L에 대한 12 가지 다른 값을 얻기 위해 다른 투자율과 다른 자성 물질 치수를 가지고 놀 수 있습니다.

합리적인 시간에 64 개의 위치 (64 개의 자기 인덕턴스 측정)를 스캔해야하므로 시간 영역 접근 방식을 사용합니다. 예를 들어, 1 초 동안 보드의 전체 상태를 읽도록 허용하면 각 인덕턴스 측정에 대해 15.6ms가 있습니다. 도전적이지만 가능합니다.

속도가 실제로 병목 현상이 발생하는 경우 하나 대신 8 개의 아날로그 프런트 엔드를 포함 시키면 시스템을 8 배 더 빠르게 만들 수 있습니다. 각 프런트 엔드는 보드의 각 행마다 사용됩니다. 이렇게하면 8 개의 자기 인덕턴스를 동시에 측정 할 수 있습니다 (각 측정에 대해 125ms를 제공하며 1 초 안에 전체 보드 상태를 유지함). 단일 ADC (8 채널 포함)를 사용하더라도 하나의 MCU로 충분할 것이라고 확신합니다.

이는 각 프런트 엔드에 대한 회로도 (전체 보드에 대해 하나 또는 언급 된대로 각 행에 대해 하나 일 수 있음) 및 자체 인덕턴스 ~ 을 빠르게 추정하는 방법 일 수 있습니다 (N은 8 또는 64). 코일의 공통 노드가 최상위 노드가되고 아날로그 스위치의 제어 신호는 간략화하기 위해 표시되지 않습니다. TS는 일정하며 TS에서 샘플링 된 VX는 자체 인덕턴스를 계산하는 데 사용됩니다. TG는 TS보다 약간 길다.L NL1LN

아이디어 2

이 두 번째 아이디어의 장점 : RF가 필요하지 않습니다. 그러나 다른 투과율로 고유 한 "태그"를 작성해야합니다.


감사합니다. 첫 번째 아이디어는 갈 길입니다. 나는 두 번째 아이디어의 창의성을 좋아한다. 피스를 맞춤 제작할 수있는 상용 제품에 더 적합 할 수 있습니다. 그러나 나는 단지 재미를 위해 이것을하고 있습니다.
theJosh

@theJosh 대답 한 후에도 여전히 혼란스러운 문장이 있습니다. "예를 들어 조각 중 일부가 넘어지면 다시 설정해야하는 위치"가 의미가 없습니다. 조각이 넘어지면 시스템의 메모리 여야하기 때문입니다. 사용자에게 조각을 배치 할 위치를 알려 주어야합니다. 나는 그 문장을 다음과 같이 해석했다 : 당신은 시스템이 역사에 의존하지 않고 임의의 보드 상태를 읽을 수 있기를 원하며, 그 점을 염두에두고 간단한 대답을 버렸다.
Telaclavo

@theJosh (계속). 그렇지 않은 경우 davidcary의 솔루션이 더 간단합니다.
Telaclavo

첫 번째 아이디어의 문제점은 RFID에 대해 상당히 짧은 범위가 필요하다는 것입니다. 범위가 너무 많으면 (정사각형 이상) 조각의 올바른 위치를 감지하기가 더 어려워집니다. 불가능하지는 않지만 훨씬 더 어렵습니다.

@DavidKessner 맞다. 그래서 나는 실험적으로 최적의 RF 전력을 찾아야한다고 말했다. 안테나에서 태그까지의 거리는 인접한 두 사각형 사이의 거리보다 훨씬 짧으므로 가능해야합니다.
Telaclavo

4

나는 64 개의 정사각형의 중앙에 구멍이 뚫린 많은 전자식 체스 판을 보았습니다. 각 구멍 아래에 간단한 광 검출기가 있고 1 비트 만 제공합니다. "아무것도 없습니다." 탐지기를 덮고 ". 이를 위해서는 (a) 보드의 이전 구성을 기억하고 어느 부분이 어디로 이동했는지 추적하고 (b) 폰 프로모션을 처리하기 위해 특별한 것이 필요합니다. 이것은 어느 사각형이 점유되어 있고 어느 사각형이 열려 있는지 감지 할 수 있지만 보드의 전체 상태는 아닙니다.


1
영리한! 논리에 의해 백업되는 매우 간단한 하드웨어!
clabacchio

한 번에 한 조각 만 움직 인 한 작동합니다. OP가 여러 조각을 쓰러 뜨린 다음 언급 한 경우에는 효과가 없습니다. 그렇지 않으면 좋은 해결책입니다.

1

GlyphChess는 투명한 체스 판을 사용하여이 문제를 해결합니다. 아래의 스캐너는 각 조각의 아래쪽에 붙어있는 고유 한 바코드를 읽어서 어느 조각이 어디에 있는지 알아냅니다. "PARC의 비밀 코드" Slashdot : 스캐너에서 GNU Chess 재생 언제든지 보드의 전체 상태를 다시 읽을 수 있습니다. 체스 판에는 고유 한 종류의 조각이 18 개 미만이기 때문에 수백만 개의 물체를 구별 할 수있는 고해상도 바코드보다 인식하기 쉬운 d-touch 마커 와 같은 기준점 을 사용하는 것이 좋습니다 .


그냥 궁금해서 보드가 투명하기 때문에 사용자에게 검은 색과 흰색 사각형이 어떻게 표시됩니까? 아마도 중간 정도의 투명성이 있습니까? 그리고 사용자에게 표시등이 보이지 않습니까?
Telaclavo

@Telaclavo : 잘 모르겠습니다. 아마도 거의 투명한 사각형이 전통적인 녹색과 버프를 착색했을까요? 오늘이 건물을 짓고 있다면 상자의 내부를 흰색으로 만들고 카메라를 바닥에 놓고 유리 체스 판을 위에 놓습니다. 사람이 조각을 볼 수있는 빛이 충분하면 흰색 내부에서 튀어 나와 카메라가 읽을 수 있도록 각 조각 아래쪽에 바코드를 비추는 빛이 충분합니다.
davidcary 2016 년

1

각 사각형마다 색상 센서를 만들고 조각의 바닥에 다른 색상 레이블을 붙여서이 작업을 수행합니다.

컬러 센서는 3 개의 LED (아마도 빨강, 녹색 및 파랑)와 모든 가시 광선에 민감한 포토 트랜지스터를 사용하여 만들어졌습니다. LED를 순차적으로 켜고 체스 조각에서 반사되는 포토 트랜지스터가 측정하는 것을 측정합니다.

흰색 LED와 서로 다른 색상에 민감한 세 가지 포토 트랜지스터가있는 경우에는 반대로 할 수 있습니다. 그러나 그것은 더 어렵습니다. 대부분의 광 트랜지스터는 색상 선택이 아닙니다. 필터를 사용할 수는 있지만 다른 색상의 LED를 사용하는 것이 더 쉽습니다.

LED가 충분한 시간 동안 켜져 있으면 "너무 많이"표시되지 않습니다. 또한 LED는 보드를 표시하거나 게임에서 승리했을 때 멋진 작은 조명 쇼를하는 것과 같은 다른 용도로 사용될 수 있습니다.

여기에는 약간의 트릭이있어 모든 것을 쉽게 구축하고 구축 할 수 있습니다. Avago에는 I2C 칩에 약간의 주변 광이있어 더 쉽게 만들 수 있습니다. 다른 회사들도 비슷한 것을 가지고 있습니다.

다음 트릭은 조각마다 고유 한 색상을 갖도록 충분히 다른 색상의 레이블을 만드는 것입니다. 다양한 프린터 잉크 / 토너 안료의 정확한 스펙트럼을 알지 못하므로 시행 착오가 필요합니다. 그럼에도 불구하고, 광 센서로부터 6 비트의 해상도를 얻을 수 있다면 너무 어렵지 않아야합니다. (6 비트는 많은 노이즈 마진을 제공합니다.)


1

색상을 감지 할 필요가없고 회색 음영 만 있습니다. 각 부분은 바닥에 회색 음영이 있으며 보드에 설정된 간단한 IR 이미 터 / 검출기 쌍이 아날로그 값을 읽습니다.


0

"Zowie"라는 회사는 한때 컴퓨터에 연결될 수있는 "Ellie 's Enchanted Garden"을 포함하여 몇 개의 플레이 세트를 만들었으며, 플레이 표면에서 몇 개의 토큰의 위치를 ​​감지 할 수있었습니다. 각 토큰은 커패시터와 와이어 코일로 구성되었으며, 플레이 표면은 그리드 그리드를 특징으로합니다. 코일 캡 어셈블리의 LC 주파수와 일치하는 주파수에서 수평 와이어를 통해 전류를 공급하면 해당 주파수가 수직 와이어에 나타납니다. 와이어 그리드는 양방향으로 약 6 개의 와이어 / 인치였으며, 명백한 포지셔닝 해상도는 아마도 약 0.05 "였지만 CPU 보드에 연결하는 와이어는 약 16 개 밖에 없었습니다. 와이어는 각 토큰이 2 개 이상의 수평 와이어에 반응하고 2 개 이상의 수직 와이어를 자극하고; 어떤 와이어 조합이 자극에 반응하는지 알아 냄으로써 CPU는 토큰이 어디에 있는지 알아낼 수있었습니다. Zowie가 자신의 특허에서 주장한 바 또는 어떤 선행 기술을 인용했는지는 기억 나지 않지만, 선행 기술에는 사용자의 목적에 적합한 공개 도메인 접근 방식이 포함될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.