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.
- 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
- 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.
- 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 position32
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
- 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