Este projeto tem como objetivo construir um sistema de xadrez físico automatizado que utiliza visão computacional (OpenCV) para detectar movimentos no tabuleiro e Stockfish, uma poderosa engine de xadrez, para calcular a melhor jogada. O sistema então sinaliza a jogada da máquina através de LEDs controlados por um microcontrolador (ex: Arduino ou ESP32).
- Detecção de movimento das peças no tabuleiro usando OpenCV;
- Reconhecimento da jogada realizada pelo jogador humano;
- Cálculo da melhor jogada via engine Stockfish;
- Indicação visual da jogada da máquina com LEDs conectados ao Arduino.
- Python 3.8+
- Stockfish Chess Engine
- OpenCV
- Arduino IDE
- Docker (opcional para uso em ambiente isolado)
- Instale o Stockfish:
sudo apt install stockfishOu baixe diretamente do site: https://stockfishchess.org/download/linux/
- Instale as dependências do Python:
. install.sh(O script install.sh deve conter os comandos para instalar opencv-python, numpy, python-chess, pyserial, etc.)
Você pode usar ferramentas como opencv_createsamples e opencv_traincascade para treinar detectores em cascata para as peças de xadrez:
opencv_createsamples -info pos.dat -w 24 -h 24 -num 1000 -vec pos.vec
opencv_traincascade -data cascade/ -vec pos.vec -bg neg.txt -w 24 -h 24 -numPos 200 -numNeg 100
# Exemplo com menos imagens (rápido para testes)
opencv_traincascade -data cascade/ -vec pos.vec -bg neg.txt -w 24 -h 24 -numPos 20 -numNeg 500 -numStages 10Você também pode utilizar a API do Roboflow para detecção de imagens:
base64 negativas/1701128875.2898896.jpg | curl -d @- "https://detect.roboflow.com/chess-4jvm8/1?api_key=Yc9P3iOmEuSts3mFZLd3"yolo detect train data=dataset/data.yaml model=yolov8n.pt epochs=100 imgsz=640,360 augment=True
Após anotar as imagens no ROBOFLOW, basta mesclar os diretórios com
rsync -av --ignore-existing datasetV5/ dataset/
E depois re-treinar o YOLO8
yolo detect train model=yolov8n.pt data=dataset/data.yaml epochs=100 imgsz=640,360 augment=True
Se desejar isolar o ambiente com Docker:
docker compose run opencv
cd app/Pedro Henrique de Assumpção
Engenharia de Controle e Automação – IFRS Campus Farroupilha
- Fazer checkpoint para relatar nos resultados
- Falar nos resultados sobre os testes de código
- Dizer nas conclusões sobre github e versionamento de testes e código e yolo