Pular para o conteúdo
Igor FerreiraVoltar ao laboratório

Simulador 3D do Pátio de Granéis

Primeiro o teste, depois a instalação. O simulador faz o papel das antenas e do gateway de uma máquina de pátio: o software de posicionamento conecta nele como no campo, e cada escrita que ele devolve é conferida, palavra por palavra, contra o modelo.

Trecho do vídeo, sem som
Papel
Autor, com agentes de IA
Período
set–out/2026
Situação
concluído
  • Automação industrial
  • Node.js
  • TCP
  • NMEA 0183
  • Modbus TCP
  • WebGL
  • Blender
  • VM Linux
  • Claude Code

Compreensão simples

O problema

Num pátio de granéis, máquinas enormes andam sobre trilhos e giram lanças longas. Dentro de cada uma, um programa calcula onde ela está, a partir de antenas de satélite, e passa essa posição para o sistema que controla o pátio.

Para saber se uma versão nova desse programa funciona, o jeito direto é instalá-la e testar em campo, com a máquina, as antenas e alguém olhando a tela. Cada teste depende de máquina e de gente no pátio, e olhar a tela não diz se cada número que o programa publica está certo.

O que faz

  1. Faz o papel das antenas

    O simulador manda ao programa as posições que as antenas mandariam, 10 vezes por segundo. Para ligar, basta trocar seis campos da configuração: o programa testado é o mesmo que vai para a máquina.

  2. Confere cada resposta

    O programa calcula e devolve 16 números a cada meio segundo. O simulador refaz a conta e confere, número por número, se ele publicou o que deveria.

  3. Provoca falhas de propósito

    Antena muda, posição congelada, conexão cortada: as falhas entram quando se pede, e, quando a rede cai, o simulador mede quanto o programa leva para voltar.

  4. Mostra o pátio em 3D

    Cinco máquinas andam ao mesmo tempo num pátio em 3D, e o mesmo movimento pode ser repetido igual quantas vezes for preciso.

Na tela

Quadros do comercial do simulador, numa cópia preparada para o vídeo, com nomes de máquina genéricos.

1. Pátio. No modo demonstração, as cinco máquinas andam ao mesmo tempo, e a mesma semente repete a mesma trajetória.
2. Ligação. Para ligar o software ao simulador, basta trocar seis campos da configuração dele.
3. Conversa. A ordem é a real; o ritmo não. A posição vai 10 vezes por segundo, e a escrita volta a cada 500 ms.
4. Palavras. Cada palavra escrita ao lado do valor do modelo; aqui, quem escreve é o cliente de teste.
5. Placar. O resultado de 01/10, com o software na VM Linux; as células representam as escritas, mas não uma a uma.
6. Falhas. As falhas entram sob comando; nas de rede, o simulador mede quanto o software leva para voltar.
O pátio do vídeo em 3D: duas máquinas de pátio laranja entre as pilhas de granéis, com a anotação do giro da lança de uma delas.

Toque fora da imagem para fechar.

Um esquema do pátio com os trilhos, as pilhas e as cinco máquinas, cada uma ligada ao nó "Software, VM Linux", sob o texto "O software conecta como no campo".

Toque fora da imagem para fechar.

A sequência de mensagens entre o simulador e o software: a frase GGA da antena do eixo e da lança, as 16 palavras Modbus de volta e o eco da escrita.

Toque fora da imagem para fechar.

A aba Palavras da página do simulador: a máquina em 3D à esquerda e, à direita, a tabela com cada palavra escrita, o valor do modelo e a diferença.

Toque fora da imagem para fechar.

Um placar em grade com "628/628 escritas iguais" e o carimbo "conferido, diferença 0".

Toque fora da imagem para fechar.

Uma máquina de pátio no trilho com três anotações de falha: antena muda, perda de sinal e conexão cortada.

Toque fora da imagem para fechar.

O que muda

628 de 628

respostas iguais às do modelo, com o programa numa máquina virtual. Mudar 10 cm num ajuste derruba o acerto para 1.

Cada versão nova do programa pode ser testada no computador, quantas vezes for preciso, antes de chegar à máquina, e a ida ao pátio vira a confirmação, não o primeiro teste.

O teste diz certo ou errado, número por número, em vez de alguém olhar a tela e achar que parece certo. Na versão atual, foram 1.202 respostas iguais às do modelo, com o programa real.

E o mesmo jeito serve a outros equipamentos cujo programa lê sensores e conversa com o controle da planta, como um carregador de navios ou uma ponte rolante: testar contra uma planta simulada antes de ir para o campo.

Compreensão técnica

Problema, otimização e resultado

Problema
O software de posicionamento de cada máquina de pátio, empilhadeiras e recuperadoras sobre trilhos, lê a frase GGA das antenas do eixo e da lança, e o rumo na lança com dupla antena, e escreve 16 palavras Modbus num gateway para o sistema de controle. Validar uma versão nova pedia instalá-la e testar em campo, com máquina, antenas e alguém olhando a tela, sem prova de que cada palavra publicada estava certa.
Otimização
Um simulador em Node.js, sem dependências, faz o papel das antenas e do gateway: manda GGA por TCP 10 vezes por segundo, responde ao Modbus TCP como o gateway real e refaz o cálculo com o mesmo modelo, exigindo diferença zero nas 12 palavras comparadas, mais CRC e STATUS. O software conecta trocando seis campos da configuração, numa VM Linux ou no PC, por rede fechada. Em volta, falhas sob comando com o tempo de volta medido nas de rede, um roteiro de aceite de 16 fases com veredito por critério e cinco máquinas em 3D (WebGL, modelos do Blender), repetíveis por semente.
Resultado
Em 01/10/2026, com o software numa VM Linux por 5,3 minutos, 628 de 628 escritas iguais ao modelo e CRC certo em todas; com 0,1 m mudado num parâmetro, o acerto caiu para 1 de 628. Na versão atual, com o software real no PC, 1.202 escritas iguais em 4 rodadas, sem nenhum STATUS diferente (07/10). Também: 12 rodadas de aceite sem falha, em 4 máquinas e 4 versões do software; atraso mediano da frase de posição à escrita de 90 ms na VM e 82 ms no PC; cerca de 145 quadros por segundo com as cinco máquinas numa placa de vídeo integrada; 87 testes automáticos do simulador.

Evidências

  • 628 de 628 escritas iguais ao modelo, com o software numa VM Linux

    Em 01/10/2026, rodei o software numa VM Linux, ligado ao simulador por uma rede privada do próprio PC, durante 5,3 minutos, com uma máquina e a versão anterior do simulador: diferença zero nas 12 palavras comparadas e CRC certo em todas. Para provar que o teste discrimina, mudei 0,1 m num parâmetro, e o acerto caiu para 1 de 628.

    Medido.

  • 1.202 escritas iguais ao modelo na versão atual

    Em 07/10/2026, testei a versão atual com o software real no PC: 4 rodadas, nenhum STATUS diferente. O modo com as cinco máquinas foi conferido com um cliente de teste que imita o software.

    Medido.

  • 12 rodadas de aceite automático sem falha

    Na versão anterior, com o software real no PC: 16 fases em cerca de 8,5 minutos por rodada e veredito por critério, em 4 máquinas e 4 versões do software.

    Medido.

  • 87 testes automáticos passando

    73 do conjunto antigo e 14 do modo demonstração, em 08/10/2026. Eles conferem o próprio simulador.

    Medido.

O problema

Para saber se uma versão nova do software de posicionamento funciona, o jeito direto é instalá-la e testar em campo, com a máquina, as antenas e alguém olhando a tela. O simulador traz o teste para a bancada. O software conecta nele como se estivesse no campo, recebe as posições, calcula e escreve a resposta, e o simulador diz, escrita por escrita, se o que ele publicou é o que deveria ter publicado.

Como se usa

A página mostra o pátio de cima ou em perspectiva, com abas para dirigir a máquina, ver a posição, injetar falhas, ler as palavras, ver as ligações e o registro. Um veredito no topo diz se o software está publicando igual ao modelo.

  • O que volta. STATUS, a posição do eixo e da lança em X, Y e Z, rumo, inclinação, distância, os satélites de cada antena, a baliza, o CRC e duas reservas. X, Z, rumo, inclinação e distância vão multiplicados por 100; Y e baliza, por 10.
  • Régua e baliza. A posição de cada máquina ao longo do trilho é uma régua em metros. A baliza é a posição, na régua, do centro da ponta da lança: no giro de trabalho, fica de 0,0 a 0,3 m dele; na medição de 02/10, numa recuperadora, deu de −0,26 m a +0,23 m conforme o ângulo da lança.
  • Atraso. Da frase de posição da antena da lança até a escrita do software, mediana de 90 ms na VM e de 82 ms no PC, na mesma rodada de 5 minutos; na VM foi pior porque o PC estava ocupado.
  • Fluidez. Com as cinco máquinas em 3D, cerca de 145 quadros por segundo numa placa de vídeo integrada, medidos sem limite de quadros para achar o teto.

Na tela

1. Pátio. No modo demonstração, as cinco máquinas andam ao mesmo tempo, e a mesma semente repete a mesma trajetória.
2. Ligação. Para ligar o software ao simulador, basta trocar seis campos da configuração dele.
3. Conversa. A ordem é a real; o ritmo não. A posição vai 10 vezes por segundo, e a escrita volta a cada 500 ms.
4. Palavras. Cada palavra escrita ao lado do valor do modelo; aqui, quem escreve é o cliente de teste.
5. Placar. O resultado de 01/10, com o software na VM Linux; as células representam as escritas, mas não uma a uma.
6. Falhas. As falhas entram sob comando; nas de rede, o simulador mede quanto o software leva para voltar.
O pátio do vídeo em 3D: duas máquinas de pátio laranja entre as pilhas de granéis, com a anotação do giro da lança de uma delas.

Toque fora da imagem para fechar.

Um esquema do pátio com os trilhos, as pilhas e as cinco máquinas, cada uma ligada ao nó "Software, VM Linux", sob o texto "O software conecta como no campo".

Toque fora da imagem para fechar.

A sequência de mensagens entre o simulador e o software: a frase GGA da antena do eixo e da lança, as 16 palavras Modbus de volta e o eco da escrita.

Toque fora da imagem para fechar.

A aba Palavras da página do simulador: a máquina em 3D à esquerda e, à direita, a tabela com cada palavra escrita, o valor do modelo e a diferença.

Toque fora da imagem para fechar.

Um placar em grade com "628/628 escritas iguais" e o carimbo "conferido, diferença 0".

Toque fora da imagem para fechar.

Uma máquina de pátio no trilho com três anotações de falha: antena muda, perda de sinal e conexão cortada.

Toque fora da imagem para fechar.

Como funciona

O simulador faz o papel do mundo lá fora: a posição desce para o software, as palavras calculadas sobem, e o simulador confere as duas pontas.

  1. Movimento

    A máquina anda, gira e eleva pela página, vai para uma posição ou reproduz um cenário.

    Node.js
  2. Posição

    Cada antena manda a frase GGA por TCP; na lança com dupla antena, também o rumo.

    NMEA 018310 por segundo
  3. Cálculo

    O software de posicionamento, numa VM Linux ou no próprio PC, calcula a posição do eixo e da lança.

    VM Linux
  4. Escrita

    Ele escreve 16 palavras no gateway simulado, que responde como o gateway de verdade.

    Modbusa cada 500 ms
  5. Conferência

    O simulador refaz o cálculo com o mesmo modelo e exige diferença zero nas 12 palavras comparadas, mais CRC e STATUS.

    diferença 0
  6. Falhas

    Sob comando, frase com checksum errado, antena muda, posição congelada, conexão derrubada ou meio aberta e reinício do receptor.

O simulador termina nas 16 palavras: nada nele decide o que o sistema de controle faz com elas. Ele confere se o software calcula e publica o que deveria, dada a geometria simulada; a acurácia em campo e o desempenho no computador da máquina se confirmam na instalação.

Mudar 0,1 m num parâmetro derruba o acerto de 628 para 1. É assim que se sabe que o teste discrimina.

Decisões

A escolhaEm vez deCusto aceito
Prova palavra por palavra

Em vez de: Olhar se a tela do software parece certa.

Custo aceito: O simulador precisa reproduzir o cálculo do software, e cada versão nova pede o modelo dela.

Falhas de rede de verdade, não só de dado

Em vez de: Só mandar posições erradas.

Custo aceito: Mais casos para manter, com o tempo de volta do software medido em cada um.

Ligar o software trocando seis campos

Em vez de: Uma versão especial do software só para teste.

Custo aceito: O gerador de configuração confere, campo a campo, que nada mais mudou.

Rede fechada

Em vez de: Escutar em qualquer rede do computador.

Custo aceito: Só o próprio computador ou a rede privada com a VM; as outras redes são recusadas, com teste automático.

Cinco máquinas repetíveis, por semente

Em vez de: Movimentos diferentes a cada execução.

Custo aceito: É demonstração, não operação; em algumas máquinas, a velocidade e o limite de giro são estimados, e trocá-los por medidas está nos próximos passos.

Node sem dependências

Em vez de: Bibliotecas prontas para TCP e Modbus.

Custo aceito: Mais código próprio para as portas, as frases NMEA e as respostas do gateway.

Como foi construído

  1. set/2026
    A bancada

    Simuladores de antena e de Modbus e um kit para levar o software à VM.

  2. 01/10
    O simulador ao vivo

    O simulador no PC e o software na VM, lado a lado, com 628 de 628 escritas iguais.

  3. 02/10
    O aceite automático

    Entrada por coordenada, abas, o roteiro de aceite com 12 rodadas sem falha e um tutorial de um minuto com a VM.

  4. 07/10
    A versão 4

    O receptor de dupla antena emulado e 4 rodadas com o software real, com 1.202 escritas iguais.

  5. 08/10
    As cinco máquinas

    O modo demonstração, as máquinas articuladas feitas no Blender, uma revisão adversarial e a correção.

Este simulador é todo feito por mim usando agente de IA e comunicação com uma máquina virtual. Concebi e dirigi; a implementação foi feita em sessões do Claude Code, e os testes com o software, eu mesmo rodei.

Limites

  • O simulador termina nas 16 palavras e confere o cálculo e a publicação dada a geometria simulada; a acurácia em campo e o desempenho no computador da máquina se confirmam na instalação.
  • O próximo passo é repetir na VM Linux, com a versão 4, a rodada de 628 escritas feita com a versão anterior, e ligar o software real ao modo com as cinco máquinas, que hoje roda com um cliente de teste.
  • Depois, medir por versão do software quanto tempo de campo o teste em bancada evita e trocar por medidas as velocidades e os limites de giro que ainda são estimados.

Hoje e a seguir

Hoje

A versão 4 roda no meu computador, com as cinco máquinas e o receptor de dupla antena emulado, e foi conferida com o software real no PC. Cada versão nova do software pode passar pelo mesmo teste antes de ir para a máquina.

A seguir

  1. Testar a versão 4 com o software na VM Linux, como foi feito com a anterior.
  2. Medir quanto tempo de campo o teste em bancada evita, por versão do software.
  3. Trocar por medidas as velocidades e os limites de giro que ainda são estimados.

As imagens são quadros do comercial do projeto, gravados numa cópia do simulador preparada para o vídeo, com nomes de máquina e endereços de rede genéricos. O pátio é um cenário feito para o vídeo: as pilhas, as correias, o entorno e a luz foram criados; os trilhos, as máquinas e os movimentos vêm do simulador.

O mapa, a sequência de mensagens e o placar são ilustrativos: mostram o tipo de dado e a ordem da conversa, não uma rodada gravada. Nas telas da página, quem está conectado é um cliente de teste que imita o software.

Próximo projeto da visitaProcesso de Pelotização em VR