Pular para o conteúdo
← Todos os projetos

TCC · multinacional do setor automotivo · 2025 – 2026

MOVER · Campus Mauá 3D

Gêmeo digital de um caminhão autônomo no campus da Mauá, do levantamento topográfico à maquete 3D no navegador.

Meu papel
Ponta a ponta: simulação, mapa, painel e maquete 3D
anel viário
784 m
prédios reais
28
modelo 3D
0,4 MB
Fig. 1 — anel viário, 784 m

Problema

O TCC simula um caminhão autônomo no campus da Mauá dentro do CARLA, um simulador pesado que só roda numa máquina com placa de vídeo. Banca, feira e parceiro precisavam ver o resultado sem instalar nada.

Meu papel

Fiz todas as partes: a navegação em Python (percepção, fusão de sensores e controle), o pipeline do mapa, os painéis de telemetria e a maquete 3D publicada.

Solução

  • Maquete 3D do campus feita do levantamento topográfico real: malha glTF de 21 partes, 28 prédios casados com a planilha de edificações, anel viário de 784 m com 4 lombadas e 8 faixas, e 411 das 1.743 árvores levantadas.
  • Caminhão autônomo com perfil de velocidade determinístico: freia nas lombadas (8 km/h), reduz nas faixas (12 km/h) e para 3 s quando há pedestre.
  • Interface de operações: KPIs, linha do tempo da volta, busca com voo de câmera, modos de câmera e um modo apresentação para deixar rodando numa TV.

Como foi feito

  • Simulação: Python no CARLA 0.9.16, percepção com YOLO, LiDAR e câmeras, fusão GNSS + IMU com filtro de Kalman, controle Pure Pursuit e telemetria em SQLite.
  • Mapa: DXF do levantamento convertido em OpenDRIVE (34 vias, 4 junções, 1,56 km) por um pipeline com validação automática.
  • Web: Next.js com export estático e React Three Fiber; compressão meshopt leva o modelo a 0,4 MB e o site inteiro a 2,9 MB.
  • Testes: Playwright roda 5 voltas seguidas conferindo que nenhuma roda sai da pista, e um teste confirma que o site funciona offline. A simulação tem 362 testes offline.

Resultados

A maquete abre em qualquer navegador, inclusive no celular, e ficou no ar no GitHub Pages para a banca e a feira. O mesmo dado da simulação alimenta o painel 3D ao vivo e em replay.

Próximos passos

Validar ao vivo a nova rodada do mapa, calibrar o detector de lombadas com o LiDAR real e medir o custo do painel web sobre a simulação (meta: menos de 5% de FPS).

Código

// passes de frenagem (para tras) e aceleracao (para frente),
// duas voltas para fechar o ciclo
for (let r = 0; r < 2; r++)
  for (let k = 2 * n - 1; k >= 0; k--) {
    const i = k % n;
    const j = (i + 1) % n;
    v[i] = Math.min(v[i], Math.sqrt(v[j] * v[j] + 2 * A_FREIO * ds));
  }
for (let r = 0; r < 2; r++)
  for (let k = 0; k < 2 * n; k++) {
    const i = (k + 1) % n;
    const h = k % n;
    v[i] = Math.min(v[i], Math.sqrt(v[h] * v[h] + 2 * A_ACEL * ds));
  }
Perfil de velocidade: passes de frenagem para trás e de aceleração para frente sobre a grade da volta (trecho real do código).

Stack

  • Python
  • CARLA
  • YOLO
  • OpenDRIVE
  • Next.js
  • React Three Fiber
  • Playwright

Próximo estudo de caso

Serpentina →

Orçamento de ar-condicionado que o cliente aprova no celular, com Pix do sinal.