Sida 1 av 2

Automatiskt schack, detektera pjäser.

Postat: 31 oktober 2008, 17:27:33
av victor_passe
Hej, det projektarbete jag och cafaroo håller på med kommer att ändras lite.
Vi byggde en whiteboard skrivande robot men nu ska det bli ett schack-spel.
Det kommer att ha 2st steg motorer och 2st trapets-stänger som flyttar en elektromagnet under planen och varje pjäs har en bit plåt under sig så de kan flyttas på.
En pic18F4680 styr driv kortet och magneten. På pic:en kommer vi att programera ett schack-AI som man spelar emot.

Först var tanken att man skulle knappa in hur man vill flytta på några knappar men det skulle vara roligare om man kunde flytta pjäserna själv och datorn flyttade sina pjäser själv.
Man skulle alltså inte behöva ha någon skärm/knapp-sats eller sådant.

Men då till frågan hur ska pic:en kunna se när en pjäs har flyttats?
Den får ju gå under alla pjäser och läsa av vilken som har flyttats.
Topp-brädan kommer att vara av 3mm plexi så man skulle kunna ha en reflex-detektor/LDR eller något sådant.
Men då kan inte alltid se vad som har hänt för man måste kunna skilja mellan svarta pjäser, vita pjäser eller ingen pjäs.

Om man har en magnet i alla de svarta och har ett LDR och en HAL-sensor skulle det funka.
Man kan också måla botten på alla pjäser och ha någon färg-sensor.

Hur tror ni att man kan skilja mellan pjäserna och ingen pjäs på ett effektivt sätt?
Att skilja mellan vit bonde och vit kung tex behövs inte.
Bara vit/svart/ingen.

Postat: 31 oktober 2008, 17:31:38
av Joe
En magnet under de svarta med N polen nedåt och under de vita med S polen nedåt.
Då kan ni känna magnetfältet med en hall sensor och slå omkull pjäserna med elektromagneten!?

Postat: 31 oktober 2008, 17:42:18
av victor_passe
Jo, men elektromagneten ska ju flytta pjäserna.

Men 75-444-14 på elfa är både billig och simpel.
Om man har en vit led och lyser på pjäsen underifrån och har gröna bottnar på se vita pjäserna och röda bottnar på de vita så borde man ju kunna se skillnad på dem, eller?

Postat: 31 oktober 2008, 17:57:28
av Joe
S och N pol attraherar varandra, S och S pol repelerar varandra.

Dvs växla polaritet på elektromagneten om den ska flytta pjäs eller slå omkull...

Postat: 31 oktober 2008, 19:38:30
av JimmyAndersson
Det låter enkelt och smidigt. Men tyvärr måste jag vara lite jobbig:
En pjäs kan behöva hoppa över en annan pjäs (ta löparen som exempel). Det går inte så bra om man flyttar dem underifrån.

Vore det inte läckert med en robotarm? Då får man nånting fysiskt att spela emot. :)

Postat: 31 oktober 2008, 20:56:51
av strombom
Varför ha olika polaritet för svart och vit, inga problem för mjukvara att komma ihåg vilken som är vilken, den måste ju ändå skilja på de olika typerna.

Om en löpare är instängd, då får man på något smart sätt planera temporära flytter av omkringliggande pjäser, spännande problem :)

Postat: 1 november 2008, 00:31:51
av victor_passe
ni båda har fel.
Pjäsens diameter är ca 45% av rutans sida.
Då flyttar man pjäsen 50% av rutans sida först och flyttar den sedan på linjen.

Och om du har en häst och har möjligheten att döda 2 olika bönder.
Du dödar den ena och datorn ser bara att du har flyttats bort och dödat någon av dem. Därför måste man skilja på svart/vit/ingen.

Och jag har helst inte magneter i pjäserna då det ska finnas schack, 3-i-rad, dam, sänka skäpp osv.
Men andra ord många olika pjäser. Säg 50-60 pjäser, det blir många magneter och om varje magnet kostar 5:- blir det för mycket pengar för att skilja pjäser imellan.

men det du säger strombom är ju ganska smart, då kan pjäserna vara 90% av sidan. Lite mera kodande men ett bättre resultat. Lite att fundera på...

Postat: 1 november 2008, 00:53:39
av 13th.Marine
Vill bara flika in, 20minimagneter för ~2USD från DealExtreme.

Har en omgång såna på väg hem.

Postat: 1 november 2008, 01:27:45
av strombom
>Och om du har en häst och har möjligheten att döda 2 olika bönder.

Smart mjukvara kan registrera att du har lyft bonden och satt ner hästen ;)

Postat: 1 november 2008, 11:03:44
av victor_passe
strombom:
Magneten åker ca 1cm/sek.
Så den kan inte skanna hela tiden utan bara när man har gjort sitt drag.
Så hur ska den se det? analysera ens beteenende och lista ur hur människan borde ha gjort?

Postat: 1 november 2008, 13:17:27
av strombom
jag tänkte mig en hallsensor under varje ruta

Postat: 1 november 2008, 13:23:11
av PeterH
Ett annat sätt att detektera pjäser kan vara att sätta en klisterlapp på undersidan med pdf-417 kod (3D kod för scanners) På detta vis kan man inte bara tala om att det är en vit eller svart pjäs, utan också exakt vilken pjäs det är! Spelplanen måste naturligtvis vara av glas, men det gör ju bara att man ser all häftig mekanik och elektronik under :D

Det blir en mindre risk att man ställer en pjäs fel utan att datorn får reda på det... Om man tar en vanlig (pdf-kompatibel) handscanner (laser eller LED) och sveper över spelplanen för att kolla vad som står vart och börjar sedan flytta :wink:

/PeterH

Postat: 1 november 2008, 13:57:47
av victor_passe
En hal-sensor under varje ruta funkar inte, både ekonomiskt och för att planen ska vara utbytbar. Och en sträck-kod funkar ju men det låter lite avancerat eftersom vi inte ska ha någon dator(okej, pic är en dator men ni fattar...). Och det ska vara något så simpelt som möjligt.
Det får nog bli en rgb sensor och en vit led som lyser under pjäserna. För det borde la funka?
Men det kommer nog att bli stora pjäser och göra som strombom säger med temporära flytter och en algoritm för att se den snabbaste vägen till målet och flytta så få pjäser som möjligt.

Postat: 1 november 2008, 17:56:48
av strombom
Kan du förklara lysdiodsidén lite närmare ?

Postat: 1 november 2008, 18:04:47
av v-g