Skip to content

BrendoAlmeida/webGaiola

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Argus

Visão geral

Project Argus é uma plataforma integrada para monitoramento e automação de gaiolas experimentais. O sistema combina visão computacional, telemetria térmica, automação de alimentação e monitoramento hídrico para fornecer uma visão contínua do comportamento dos animais. A aplicação web (Flask + Socket.IO) entrega vídeo ao vivo, gráficos de métricas, status de atuadores e painéis de configuração em tempo real.

Principais recursos

  • Detecção e rastreamento de roedores com filtro de Kalman, métricas de velocidade e aceleração e gravação contínua em segmentos rotacionados.
  • Streaming web de vídeo RGB, mapa térmico e gráficos históricos via WebSocket, reduzindo latência em conexões locais.
  • Controle de alimentadores e bebedouros com agendamento dinâmico, feedback de sensores e integração com banco de dados SQLite.
  • Captura térmica redundante com reconexão automática, geração de placeholders e registro paralelo em disco.
  • Persistência histórica de telemetria (mouse_status) e cadastro de animais (mouse) para posterior análise e auditoria experimental.

Arquitetura

  • app.py: aplicação Flask/Soket.IO que orquestra filas de frames, threads de captura, emissores e rotas REST.
  • drivers/: componentes de hardware (câmera RGB, câmera térmica, motor, bebedouro) e pipeline de detecção.
  • data/model/: camada de acesso ao SQLite, responsável por criação e conexão transparente do banco.
  • static/ e templates/: frontend em Bootstrap + Socket.IO para dashboards e visualização em tempo real.
  • scripts/: utilitários e rotinas de calibração da câmera térmica.

Requisitos

  • Python 3.9 ou superior.
  • Pip e virtualenv (recomendado).
  • Dependências de sistema: libatlas-base-dev, libopenjp2-7, libtiff5, libjpeg, além do stack picamera2 funcionando na Raspberry Pi OS.
  • Biblioteca Python: opencv-python, numpy, flask, flask-socketio, python-socketio, eventlet (ou gevent), pyserial, picamera2, sqlalchemy (se adotado no futuro) e quaisquer dependências locais listadas no requirements.txt (caso exista).

Configuração

  1. Clone o repositório ou sincronize o diretório em uma Raspberry Pi com câmera instalada.
  2. (Opcional) Crie um ambiente virtual: python3 -m venv .venv && source .venv/bin/activate.
  3. Instale as dependências Python: pip install -r requirements.txt (ou instale manualmente conforme a lista acima).
  4. Revise config.ini e system/config.py para definir portas seriais, parâmetros do motor e diretórios de gravação.
  5. Execute python data/model/DatabaseManager.py (ou chame setup_database() via REPL) para garantir que as tabelas existam.

Execução

python app.py

O servidor expõe a interface web em http://<host>:5000/. Durante a inicialização o sistema:

  • inicia threads de captura RGB, processamento, gráficos e escrita em banco;
  • tenta inicializar o alimentador e o bebedouro conforme a configuração persistida;
  • negocia a conexão com a câmera térmica (ou apresenta placeholders caso indisponível).

Estrutura principal

app.py                     # Servidor Flask + Socket.IO
config.ini                 # Configurações persistidas
config.txt / configBackup.txt  # Backups de configuração

data/
  model/DatabaseManager.py # Gerenciamento do SQLite
  recordings/              # Armazenamento de vídeos segmentados

drivers/
  miceDetect.py            # Pipeline de detecção de roedores (refatorado)
  thermalCamera.py         # Captura da câmera térmica
  motorDriver.py           # Controle do alimentador
  waterBottle.py           # Monitoramento do bebedouro

static/                    # Assets do frontend
system/config.py           # Leitura/escrita de configurações persistentes
templates/                 # Layouts HTML

Fluxos em background

  • camera_capture_thread: lê frames RGB da Picamera2, grava segmentos e publica em fila.
  • frame_processor_thread: aplica detecção, calcula métricas e disponibiliza JPEGs para streaming.
  • graph_processor_thread: transforma o histórico recente em gráfico (velocidade/aceleração) e envia ao cliente.
  • database_writer_thread: agrega bateladas de telemetria e persiste no SQLite.
  • thermal_camera_thread: mantém captura da câmera térmica com lógica de reconexão e placeholders.

Banco de dados

O banco data/data.db é criado automaticamente na primeira execução. A tabela mouse_status recebe as métricas registradas pela pipeline e mouse armazena metadados dos animais. Utilize ferramentas SQLite ou scripts dedicados para análises offline. Para exportar dados, pode-se usar sqlite3 data/data.db '.headers on' '.mode csv' 'SELECT * FROM mouse_status;' > export.csv.

Logs e monitoramento

Todos os componentes reportam status via logging. Ajuste o nível desejado em app.py (logging.basicConfig). Para depuração aprofundada, ative LOG.setLevel(logging.DEBUG) em componentes específicos ou utilize variáveis de ambiente (PYTHONLOGGING).

Próximos passos sugeridos

  • Automatizar instalação de dependências com script shell ou ansible.
  • Criar testes automatizados para a pipeline de visão e para o módulo de banco de dados.
  • Expor APIs REST adicionais para consulta histórica sem recorrer diretamente ao SQLite.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published