ggajoch / Draughts

Automatic draughts player

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Draughts

Automatic draughts player

Wykorzystanie języka Python z biblioteką OpenCV oraz lego NXT w celu zbudowania automatu do gry w warcaby.

Abstrakt: Zbudowanie automarycznego robota do gry w warcaby. Komputer powinien wykrywać pionki na planszy do warcabów, analizować ruchy, rozstrzygać o ich poprawności a następnie odpowiedzieć na ruch gracza (przestawić pionki na szachownicy).

Założenia projektu: wykorzystanie kamery wbudowanej w telefon z androidem w celu rozpoznania pionków na szachownicy, zbudowanie suwnicy oraz mechanizmu przesuwającego pionki za pomocą lego NXT, transmisja danych pomiędzy NXT i komputerem za pomocą bluetooth zaimplementowanie algorytmu do gry w warcaby

Technologie: język python z biblioteką OpenCV - rozpoznawanie obrazu, analiza, algorytm do grania w warcaby, komunikacja z Lego NXT w celu przesłania koordynatów pionków do przesunięcia, oprogramowanie NXT w języku NXC (Not eXactly C) sterujące silnikami - przesuwające pionki.

backlog:

Modules:

  • Image - board recognition
  • Game backend - draughts play algorithm
  • NXT backend - low level functions to communicate with NXT brick
  • NXT middleend - high level functions moving plotter
  • FrontEnd - GUI showing user stats, board, moves etc.
  • Main - connect everything, main algorithm of the game, run GUI etc.

Physical Device:

  • Mostly done, based on Lego NXT + train +steel rods to hold main frame of device.

Image - done:

  • camera connection - done/improve - (MJPEG stream to frontend)
  • piece recognition - done
  • piece color recognition - done
  • board interface to other modules - done

Game backend - done:

  • Board and move normalisation classes - done
  • board position recognition and analysis - done
  • heuristic function to analyse board position - done/constant improve
  • heuristic algorithm (alfa-beta) choosing best possible move - done

NXT backend:

  • establish connection with NXT (bluetooth) - done
  • send coordinates - done
  • take piece, move, put it down - [todo]
  • optional - read press key to determine end of human move move

NXT middleEnd:

  • interface connecting low level functions from NXT backend and Main program

FrontEnd:

  • determine technology - PyQt ?
  • design interface
  • implement buttons, fields
  • connect to Game backend and NXT middleEnd to direct move plotter over board.

About

Automatic draughts player


Languages

Language:Python 100.0%Language:Shell 0.0%