Wykrywanie umiejscowienia obiektu na siatce

11

Pracuję nad projektem Android ADK. Szukam sposobu na wykrycie lokalizacji szachów na planszy (8x8). Patrzyłem na takie rzeczy jak NFC, ale wygląda to zbyt drogo. Czy jest inna technologia, którą powinienem rozważyć. Potrzebuję czegoś, co świat będzie w stanie odczytać pełny stan tablicy w dowolnym momencie. Na przykład niektóre elementy mogą zostać przewrócone, a gdy zostaną ponownie ustawione, potrzebuję lokalizacji. Aby to wyjaśnić dalej, w grze w szachy touroment, jeśli elementy zostaną przeniesione w niewłaściwe miejsce i żaden z graczy nie zauważy, że gra będzie kontynuowana. Muszę więc nagrać grę, nawet jeśli pozycja jest niemożliwa na podstawie zasad gry.

Chcę tylko wskazać ogólny kierunek, na jaką technologię patrzeć.

theJosh
źródło
„W turniejowej grze w szachy, jeśli elementy zostaną przeniesione w niewłaściwe miejsce i żaden z graczy nie zauważy, że gra będzie kontynuowana”. Jestem ciekawy. Reguły szachowe tak mówią? (Właściwie to ma sens, ponieważ - jeśli nikt inny nie patrzy - jak mogliby nie kontynuować, jeśli nikt z nich nie zauważy?)
Telaclavo
@Telaclavo Mogę potwierdzić, że spotkało mnie to podczas turnieju. Na moim niskim poziomie gry nie było widocznego rozwiązania.
Stephen Collings

Odpowiedzi:

13

Pierwszy pomysł : RFID. Jeden tag (bardzo tani) pod każdym kawałkiem. Każdy znacznik powinien określać, jaki to jest typ (spośród {6 białych} + {6 czarnych} = 12 różnych typów). Jeden obwód nadawczo-odbiorczy i multiplekser od 1 do 64 dla całej płyty. Również 64 małe anteny, każda pod każdą pozycją płyty. Transceiver działa przy bardzo niskiej mocy RF (eksperymentalnie powinieneś znaleźć optymalną). Zmieniając połączenia multipleksera, skanujesz wszystkie 64 pozycje i odczytujesz identyfikatory tagów (jeśli istnieją) obecnych na każdym z nich.

Nigdy nie korzystałem z układów scalonych, o których mówi, ale ten dokument może pomóc wdrożyć multiplekser RFID (który będzie najtrudniejszy, wraz z jego ostrożnym układem).

Drugi pomysł : rozróżnij każdy rodzaj sztuki według jego unikalnej przepuszczalności magnetycznej. Do każdego elementu dodasz pewną masę na dole. Ta dodatkowa masa będzie taka sama dla wszystkich 32 sztuk (aby użytkownicy czuli się z nimi dobrze). Każda dodatkowa masa będzie sumą dwóch mas: masy „magnetycznej” plus masy „kompensacyjnej” (niemagnetycznej). Jedynym celem masy kompensacyjnej będzie wyrównanie dodatkowej masy całkowitej dla wszystkich rodzajów elementów. Musisz rozróżnić 12 różnych rodzajów elementów. Każdy typ elementu musi mieć masę magnetyczną o unikalnej przenikalności magnetycznej, . Prawdopodobnie wybierzesz materiały o wysokim , ale istnieje wiele materiałów, z których każdy może mieć inny (patrz jedna tabelaμμμtutaj ).

Pod każdą pozycją deski trzeba nawijać kilka zwojów drutu (aby średnica była prawie z boku kwadratu). Będziesz miał 64 cewki. Ponownie użyj multipleksera od 1 do 64, aby podłączyć tylko jeden z nich do miernika indukcyjności. Różnica polega na tym, że multiplekser nie musi radzić sobie z RF. Możesz powiązać jeden węzeł wszystkich cewek i użyć 64 przełączników analogowych (bardzo tanie), aby skierować, jak powiedziałem, jedną cewkę do miernika indukcyjności. Obwód będzie musiał określić, w możliwie najkrótszym czasie, jaka jest indukcyjność mierzona na każdej z 64 cewek. Nie wymaga dużej dokładności. Musi jedynie określić 13 różnych możliwych wartości dla L (czyli mniej niż 4 bity!). Możesz eksperymentować z metodami w dziedzinie czasu (np. Przykładając stałe napięcie i mierząc nachylenie prądu), lub w dziedzinie częstotliwości (np. próbując szybko wyszukać częstotliwość rezonansową z pewnym dodatkowym kondensatorem). Aby osiągnąć te 12 różnych wartości dla L, możesz grać z różnymi przepuszczalnościami i różnymi wymiarami dla materiału magnetycznego.

Ponieważ musisz przeskanować 64 pozycje (zmierzyć 64 indukcyjności) w rozsądnym czasie, prawdopodobnie wybrałbym podejście w dziedzinie czasu. Na przykład, jeśli pozwolisz sobie na 1 sekundę odczytania całego stanu płytki, masz 15,6 ms na każdy pomiar indukcyjności. Trudne, ale wykonalne.

Jeśli prędkość naprawdę stanowi wąskie gardło, możesz sprawić, że twój system będzie 8 razy szybszy, jeśli zastosujesz 8 analogowych frontów zamiast jednego. Każdy front byłby poświęcony dla każdego rzędu na planszy. W ten sposób można jednocześnie zmierzyć 8 indukcyjności własnych (co daje 125 ms na każdy pomiar, a stan całej planszy nadal trwa 1 sekundę). Jestem pewien, że wystarczy jeden MCU, nawet z jednym ADC (z 8 kanałami).

Może to być (bez wszystkich szczegółów) schemat dla każdego frontu (który może być jeden dla całej płyty lub jeden dla każdego rzędu, jak wspomniano) oraz sposób na szybkie oszacowanie indukcyjności do (N oznacza 8 lub 64). Wspólny węzeł dla cewek byłby górny, a dla uproszczenia nie pokazano sygnałów sterujących dla przełączników analogowych. TS byłby stały, a VX próbkowany w TS byłby wykorzystywany do obliczania indukcyjności własnej. TG byłby tylko nieco dłuższy niż TS.L.1L.N.

Pomysł 2

Korzyści z drugiego pomysłu: bez udziału RF. Musisz jednak zbudować własne „tagi” o różnych przepuszczalnościach.

Telaclavo
źródło
Dziękuję Ci. Twój pierwszy pomysł wydaje się być dobrym pomysłem. Podoba mi się kreatywność twojego drugiego pomysłu. Może być lepiej dla produktu komercyjnego, w którym elementy mogą być wykonane na zamówienie. Robię to jednak dla zabawy.
theJosh
@ Josh Nawet po udzieleniu odpowiedzi w twoim pytaniu jest zdanie, które nadal mnie myli. Ten „Na przykład niektóre elementy mogą zostać przewrócone, a gdy zostaną ponownie ustawione, potrzebuję lokalizacji” nie ma dla mnie większego sensu, ponieważ jeśli części zostaną przewrócone, powinna to być pamięć twojego systemu, który powinien powiedzieć użytkownikowi, gdzie umieścić elementy, a nie na odwrót. Zinterpretowałem to zdanie w następujący sposób: chcesz, aby system był w stanie odczytać dowolny stan tablicy, bez polegania na historii, i odrzuciłem prostsze odpowiedzi, mając to na uwadze.
Telaclavo
@ theJosh (ciąg dalszy). Gdyby tak nie było, rozwiązanie Davidcary'ego byłoby prostsze.
Telaclavo,
Problem z pierwszym pomysłem polega na tym, że wymaga on dość krótkiego zasięgu dla RFID. Jeśli zasięg jest zbyt duży (więcej niż kwadrat), trudniej jest wyczuć właściwe położenie elementu. Nie niemożliwe (mam nadzieję), po prostu znacznie trudniejsze.
@DavidKessner Racja, dlatego powiedziałem, że będzie musiał eksperymentalnie znaleźć optymalną moc RF. Odległość od anteny do znacznika jest znacznie mniejsza niż odległość między dwoma sąsiadującymi kwadratami, więc powinna być wykonalna.
Telaclavo,
4

Widziałem wiele elektronicznych szachownic z wywierconym otworem pośrodku każdego z 64 kwadratów, z prostym fotodetektorem pod każdym otworem, co daje tylko 1 bit - „nic tu nie ma” lub „jakiś kawałek jest zakrycie detektora ”. Wymaga to (a) pewnej pamięci i kodu do zapamiętania starej konfiguracji planszy oraz do śledzenia, który kawałek się poruszył, oraz (b) czegoś specjalnego do obsługi promocji pionków. Może to wykryć, które kwadraty są zajęte i które kwadraty są otwarte w dowolnym momencie, ale nie pełny stan planszy.

Davidcary
źródło
1
Sprytny! Bardzo prosty sprzęt wspierany logiką!
clabacchio
Działa to tak długo, jak tylko jeden element jest przenoszony na raz. Nie działa to w przypadku wspomnianego OP, w którym kilka kawałków jest przewróconych, a następnie odłożonych z powrotem. W przeciwnym razie jest to dobre rozwiązanie.
1

GlyphChess rozwiązuje to za pomocą przezroczystej szachownicy. Skaner pod spodem odczytuje unikalny kod kreskowy przyklejony na spodzie każdego elementu, aby dowiedzieć się, który element jest umiejscowiony. Slashdot „Tajny kod PARC” : Zagraj w szachy GNU na skanerze W dowolnym momencie możesz ponownie odczytać pełny stan planszy. Ponieważ na szachownicy znajduje się mniej niż 18 unikalnych rodzajów elementów, być może lepiej byłoby użyć łatwych do rozpoznania fiduciali, takich jak znaczniki d-touch, niż kodów kreskowych o wysokiej rozdzielczości, zdolnych do odróżnienia milionów obiektów.

Davidcary
źródło
Po prostu ciekawy. Ponieważ plansza jest przezroczysta, w jaki sposób pokazują użytkownikom czarno-białe kwadraty? Może z pośrednią przezroczystością? I czy użytkownik nie widzi świateł?
Telaclavo
@Telaclavo: Nie wiem - może prawie przezroczyste kwadraty zabarwiły tradycyjną zieleń i wzmocnienie? Gdybym to dzisiaj budował, uczyniłbym wnętrze pudełka białym, a następnie postawiłem kamerę na dole i umieściłem szklaną szachownicę na górze. Jeśli jest wystarczająco dużo światła, aby ludzie mogli zobaczyć te elementy, to jest więcej niż wystarczająco światła odbijającego się od białego wnętrza i oświetlającego kod kreskowy na spodzie każdego elementu, aby kamera mogła go odczytać - żadne światła nie są konieczne.
davidcary
1

Zrobiłbym to, wykonując czujnik koloru dla każdego kwadratu i umieszczając inną etykietę koloru na spodzie kawałka.

Czujnik koloru zostałby wykonany przy użyciu trzech diod LED (prawdopodobnie czerwonej, zielonej i niebieskiej) oraz fototranzystora wrażliwego na całe światło widzialne. Włącz kolejno diody LED i zmierz, co mierzy fototranzystor, odbijając się od figury szachowej.

Możesz to zrobić odwrotnie, gdzie masz białą diodę LED i trzy różne fototranzystory wrażliwe na różne kolory. Ale trudniej to zrobić. Większość fototranzystorów nie jest selektywna pod względem kolorów. Możesz użyć filtrów, ale łatwiej jest po prostu użyć diod LED różnych kolorów.

Jeśli diody LED świecą wystarczająco krótko, nie zobaczysz tego „za dużo”. Ponadto diody LED można wykorzystać do innych celów, takich jak oznaczanie planszy lub robienie fajnych małych pokazów świetlnych po wygraniu gry.

Jest w tym trochę sztuczki, która sprawia, że ​​wszystko jest łatwe do podłączenia i zbudowania. Avago ma trochę światła otoczenia do układów I2C, które mogą to ułatwić. Inne firmy mają podobne rzeczy.

Kolejną sztuczką jest wykonanie wystarczająco wielu różnych kolorowych etykiet, aby uzyskać niepowtarzalny kolor na sztukę. Będzie to wymagało tylko prób i błędów, ponieważ nie znamy dokładnego spektrum różnych pigmentów atramentowych / tonerów do drukarek. Mimo to nie powinno to być zbyt trudne, pod warunkiem, że czujnik światła uzyska około 6 bitów rozdzielczości. (6 bitów daje duży margines hałasu).


źródło
1

nie ma potrzeby wykrywania koloru, tylko odcienie szarości. Każdy element ma odcień szarości na dole, a prosta para nadajnika / detektora podczerwieni umieszczona na płytce odczytuje wartość analogową.

Geoff
źródło
0

Firma o nazwie „Zowie” wyprodukowała kiedyś kilka zestawów, w tym „Ellie's Enchanted Garden”, które łączyłyby się z komputerem i które mogły wyczuwać pozycję kilku żetonów na powierzchni do gry. Każdy żeton składał się z kondensatora i cewki z drutu, a powierzchnia do gry zawierała siatkę drutów; przepuszczenie prądu przez przewód poziomy z częstotliwością odpowiadającą częstotliwości LC zespołu cewki-osłony spowoduje pojawienie się tej częstotliwości na drutach pionowych. Siatka druciana miała około sześciu drutów / cal w obu kierunkach, a pozorna rozdzielczość pozycjonowania prawdopodobnie wynosiła około 0,05 ", ale tylko około 16 drutów łączyło się z płytą CPU; zgaduję, że przewody były ułożone w taki sposób, że każdy token reagowałby na co najmniej dwa druty poziome i stymulowałby co najmniej dwa druty pionowe; zauważając, która kombinacja drutów zareaguje na bodźce, procesor może dowiedzieć się, gdzie jest token. Nie pamiętam, co Zowie twierdzili w swoim patencie ani jakie cytaty ze stanu techniki przytaczają, ale jest całkiem możliwe, że wcześniejsze techniki obejmowałyby podejście do domeny publicznej, które byłoby odpowiednie dla twoich celów.

supercat
źródło