karmanyaahm / chessbot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ChessBot: Automated Chessboard

Overview

ChessBot is an innovative project developed by the IEEE RAS - Demobots team. It is a CNC-inspired automated chessboard designed to enhance the experience of playing chess. Using an actuated electromagnet gantry system, ChessBot can move magnetized chess pieces across the board autonomously, allowing for a seamless game between two players or against a computer-controlled opponent. The project aims to merge the ancient game of chess with modern technology, providing a unique and interactive experience.

Features

  • Automated Piece Movement: Moves chess pieces using an electromagnet on a step-driven gantry system, controlled under the board.
  • Magnetized Chess Pieces: Each piece is magnetized for precise and secure movement. Piece movements are detected via 3D magnetic sensors underneath each square.
  • Player vs. Computer Mode: Play against an AI with adjustable difficulty settings.
  • Two-Player Online Mode: Enjoy an enhanced tele-chess experience with automated piece movements that reflect your partner's movements from across the internet using Lichess

Software

  • python/bitboard_move_analysis_test.py
    • test script for testing how to keep track of the game board and moves made using "bitboard"s generated by the chessboard sensor system
    • All the user-input code is just to act as a stand-in for getting a bitboard from the chessboard sensor system, this script is really meant to test comparison of bitboards and move tracking/legality. Its still a WIP as of writing.

    bitboards

    • are 64bit integer representations of the entire chessboard. 8x8 squares = 64 squares, so a digital for each individual square, that digit is 1 when a piece is on the corresponding square and 0 when a piece is absent from the square.
    • So far we arent using any "standard" bitboard implementations, as our situation is a tad unique. Most chess engines that utilize 12 bitboards, one for each piece type, ( [pawn + knight + bishop + rook + queen + king] * 2 teams = 12 piece types).
    • Here is a diagram of how each space on the chessboard is indexed in the bitboard, the number at each square is the digital that is either high or low depending on if a piece is there or not. For example, square a4 is position 32
        8 |  0  1  2  3  4  5  6  7
        7 |  8  9 10 11 12 13 14 15
        6 | 16 17 18 19 20 21 22 23
        5 | 24 25 26 27 28 29 30 31
        4 | 32 33 34 35 36 37 38 39
        3 | 40 41 42 43 44 45 46 47
        2 | 48 49 50 51 52 53 54 55
        1 | 56 57 58 59 60 61 62 63
           -------------------------
           a  b  c  d  e  f  g  h
      

TODO

  • Assemble and test chessboard PCB's - each is an individual rank of the board that connect together.
  • Develop control system - decide on MCU and highlevel / lowlevel control segregation
  • Fill this section in with what we have left to do lol

About


Languages

Language:C++ 53.3%Language:C 34.1%Language:Python 10.9%Language:Nix 1.5%Language:HTML 0.1%