julioandClaude Opus 5.5 05e82dfd75 feat(criacao): estúdio para criar expressões, atividades e figurinhas com IA
Menu "Criar com IA" (Ao vivo › Gestos e Reações) com grade igual à dos
favoritos. Para cada pedido escolhe-se o tipo (expressão, atividade ou
figurinha) e a IA: Gemini, IA local (qualquer servidor compatível com
OpenAI na rede, como o ROG Ally com LM Studio/llama-server) ou o Qwen do S10.

- A IA não escreve código: responde uma receita de formato fixo (schema
  JSON) montada só com peças que o rosto já anima. O servidor valida,
  limita números e descarta peças desconhecidas antes de chegar ao celular.
- Reaproveita o que existe: o prompt leva exemplos reais dos gestos e
  atividades atuais, e "Basear em" manda a receita de um gesto, atividade
  ou criação para a IA fazer uma variação.
- Expressões viram sequências como as de sequencias(), com mãos e espiral.
- Atividades usam uma cena genérica com o bonequinho (poses, pernas, pulo,
  balanço) e os objetos das cenas feitas à mão (bola, livro, xícara,
  notas, estrelas, coração, Zzz, chama, bolha, halter, microfone,
  controle, pincel, flor), com movimentos pular/girar/subir/orbitar.
- Figurinhas reaproveitam o desenho e a biblioteca de reações.
- A estrela põe expressões e atividades criadas nos favoritos (e nas
  teclas 1 a 9); a IA local é configurada na própria tela, com teste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:22:52 -03:00

Carinha Control Panel

Robô de mesa: o rosto roda num Galaxy S10 (app Android), o servidor num Orange Pi Zero 3 (Python, só biblioteca padrão) e o painel em qualquer navegador da rede. O mesmo servidor comanda um braço de 7 articulações por um PCA9685 (I²C) e conversa por Gemini ou Qwen local.

Painel: http://192.168.1.35:8100/

 PC / celular (navegador)          Orange Pi :8100                  Galaxy S10 (app)
 ┌──────────────────────┐   HTTP   ┌──────────────────────┐   HTTP   ┌──────────────────┐
 │ painel Svelte (web/) │ ───────► │ kiosk-server.py      │ ◄─────── │ carinha.html     │
 │  1 EventSource       │ ◄─SSE─── │  /eventos /estado    │ ──SSE──► │  (rosto)         │
 │  WebRTC ◄────────────┼──────────┼── sinalização /rtc ──┼──────────┼─► câmera         │
 └──────────────────────┘          │ braço · servos (I²C) │          └──────────────────┘
                                   │ conversa · reações   │
                                   └──────────────────────┘

O painel

Quatro áreas + ajustes, todas alimentadas por um fluxo SSE (/eventos), sem polling:

Área O que tem
Ao vivo Câmera do celular (WebRTC) e rosto lado a lado, gestos favoritos, aparência, sensores, IA local, acontecimentos
Conversa Chat com voz, motor de IA, memória (lembranças + rotina)
Reações Biblioteca (criar, editar, desfazer), criar com Gemini, todos os gestos, diário
Movimento Braço com homem-morto, sequências, posturas, calibração e diagnóstico do PCA9685
Ajustes Celular (agrupado, com busca), IA e chave Gemini, token, sistema

Controles que valem em qualquer tela:

  • Parar tudo (botão vermelho, Shift+Espaço ou Esc duas vezes): desliga todos os servos, para reações e acalma o rosto. Os motores ficam travados até Rearmar.
  • Ctrl+K: paleta com gestos, rostos, cores, telas, ações e posturas.
  • 1–9: gestos favoritos (fixe com a estrela em Reações › Gestos). g + letra navega (g v Ao vivo, g c Conversa, g r Reações, g m Movimento, g a Ajustes).
  • O braço só se move enquanto você segura o botão ou o slider; ao soltar, os motores desligam em menos de meio segundo. Detalhes em docs/PAINEL.md.

Usar

  1. iniciar.bat confere o Orange Pi e abre o painel.
  2. No celular, toque longo › Mudar o servidor › http://192.168.1.35:8100.
  3. Se a placa tiver token (recomendado, veja docs/SEGURANCA.md): toque longo › Token do servidor no celular, e o painel pede o token uma vez.

Desenvolver

# servidor local (sem I²C ele avisa "PCA9685 indisponível")
python kiosk-server.py --porta 8100

# painel com recarga automática, falando com o servidor local ou com a placa
cd web; npm install
npm run dev                                   # usa http://127.0.0.1:8100
$env:CARINHA_SERVIDOR='http://192.168.1.35:8100'; npm run dev

Publicar na placa: .\deploy.ps1 (compila o painel, faz backup e reinicia o serviço).

Verificações

python -m pytest tests -q --ignore-glob='*browser*'   # servidor: token, SSE, E-Stop, trava, módulos
cd web; npm run check; npm test; npm run build; cd ..  # tipos, lógica pura e build do painel
python tests/test_painel_web_browser.py               # painel de ponta a ponta (Playwright)
python tests/test_rtc_browser.py                      # WebRTC real com câmera sintética
python tests/test_browser.py                          # rosto (carinha.html)
node tests/test_qualidade.js                          # qualidade automática do vídeo
python android/build-apk.py                           # APK (precisa de keystore e libs nativas)

tests/test_tracking_browser.py precisa dos modelos (python obter-rastreamento.py) e das imagens de teste em ../work/tracking-fixtures.

Documentos

Painel · Segurança · Orange Pi · Braço · Conversa · IA local · Vídeo · Rastreamento · Repositório · Registro

S
Description
Painel de controle moderno para o projeto Carinha - UI glassmorphism com IA Gemini
Readme
2.2 MiB
Languages
HTML 35.7%
Python 25.6%
JavaScript 17.4%
Java 12.4%
CSS 8.7%