Voltar para projetos

Case de projeto

Carro Para Dirigir Sem Motorista

Frota de carros com redes neurais que aprende a dirigir por neuroevolução, em Canvas e JavaScript puro.

Meu papelDesenvolvedor
Tecnologias utilizadas
  • Canvas API
  • JavaScript
  • HTML
  • CSS
  • Node.js
Neural Drive Lab com a estrada, os carros e seus sensores de raio, a rede neural e as métricas por geração.
self-drive-car.vercel.app / Página inicial

Problema

Ensinar um carro a dirigir sem dados rotulados exige uma forma de selecionar bons comportamentos.

Uma rede pequena sozinha bate com frequência no tráfego.

Solução

Arquitetura resumida
  • Tráfego sintético gerado aleatoriamente.
Decisões técnicas
  1. Sensor de 9 raios e rede feedforward com mutação por interpolação (base do curso).
  2. Camada de segurança que avalia risco por faixa e corrige os comandos.
  3. Fitness com penalidades por faixa, suavidade, ré, carro parado e proximidade, com elitismo.

Resultado

Um estudo honesto sobre a base de um curso, com camadas próprias de segurança, fitness e persistência.

  • Canvas 2D
  • Neuroevolução
  • Crédito de base de estudo

Aprendizados e limitações

  • A camada de segurança usa as posições reais do tráfego, não só os sensores.
  • A ativação da rede é em degrau, com saída 0 ou 1.
  • O backend opcional não está publicado.

Mais sobre o projeto

Detalhes completos do case, colapsados para leitura opcional.

Descrição completa

Simulação em que uma frota de carros com redes neurais pequenas aprende a dirigir no tráfego por neuroevolução.

A base vem do curso Self-driving car – No libraries, de Radu Mariescu-Istodor: carro, estrada, sensores de raio e rede neural em JavaScript puro.

Por cima dela, este projeto adiciona uma camada de segurança determinística, uma função de fitness com penalidades, presets de treino e persistência do melhor cérebro.

A camada de segurança lê as posições reais do tráfego e substitui a decisão da rede quando há bloqueio, então a direção é em boa parte por regras.

JavaScript puro com Canvas 2D, PWA e um backend Node opcional com testes; publicado como site estático.

Funcionalidades e destaques
  • Simulação com visualização da rede neural.
  • Presets de treino.
  • Salvar, importar e exportar o melhor cérebro.
  • Atalhos de teclado.
  • PWA.
  • Credita a base ao curso de Radu Mariescu-Istodor e separa o que é próprio.
  • Adiciona uma camada de segurança determinística sobre a rede.
  • Rende a simulação a 16,7 ms por quadro (p50) no navegador.
  • Salva e restaura o melhor cérebro em JSON.
Arquitetura técnica e dados

Arquitetura técnica

Como o case foi pensado como produto

Frota de carros com redes neurais que aprende a dirigir por neuroevolução, em Canvas e JavaScript puro.

Canvas APIPlataforma webJavaScriptLinguagemHTMLPlataforma webCSSPlataforma webNode.jsFramework

Dados utilizados

  • Tráfego sintético gerado aleatoriamente.

Principais componentes

  • Simulação com visualização da rede neural.
  • Presets de treino.
  • Salvar, importar e exportar o melhor cérebro.
  • Atalhos de teclado.
  • PWA.

Decisões técnicas

  • Canvas 2D
  • Neuroevolução
  • Crédito de base de estudo

Trade-offs

  • A camada de segurança usa as posições reais do tráfego, não só os sensores.
  • A ativação da rede é em degrau, com saída 0 ou 1.
  • O backend opcional não está publicado.
Como executar
  1. npm install && npm run start
  2. Ou: python -m http.server 5500
  3. Build: npm run build && npm run preview
Mídia adicional
Vídeo de demonstração do projeto.
Créditos

Desenvolvido por Matheus Siqueira sobre a base do curso Self-driving car – No libraries, de Radu Mariescu-Istodor - https://www.matheusdev.tech

Próximo projetoAd Performance Intelligence

Dashboard de BI em Next.js que compara Google Ads e Meta Ads com dados simulados: KPIs, funil e ROAS.

Ver case completo