Skip to content

pedrohdea/chess

Repository files navigation

Xadrez Automatizado com OpenCV e Arduino

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


Funcionalidades

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

Requisitos


Instalação

  1. Instale o Stockfish:
sudo apt install stockfish

Ou baixe diretamente do site: https://stockfishchess.org/download/linux/

  1. 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.)


Treinamento e Detecção de Peças (OpenCV)

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 10

Você 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"

Treinamento com YOLO:

yolo detect train data=dataset/data.yaml model=yolov8n.pt epochs=100 imgsz=640,360 augment=True

Continuar treinamento

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

Uso com Docker

Se desejar isolar o ambiente com Docker:

docker compose run opencv
cd app/

Referências


Autor

Pedro Henrique de Assumpção
Engenharia de Controle e Automação – IFRS Campus Farroupilha

TCC

  • 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

About

Chess

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors