Pular para o conteúdo principal
16,7 ms·······O ORÇAMENTO DE UM QUADRO
Semana · 14 → 21 set

O rover cabe no Jolt?

A entrada anterior fechou a ponte C++ e provou que o Jolt roda dentro do Godot. Mas o que roda hoje é um veículo de um corpo só — a VehicleConstraint é um modelo lumped, sem articulação nenhuma. Rover não é isso.

A pergunta que decide o rumo do projeto era: dá para montar dinâmica multicorpo de verdade com o Jolt — corpos e juntas — e ainda caber no orçamento de um quadro? Ela foi respondida antes da sprint começar. O que a semana faz agora é ir além do limite que a resposta revelou.

◈ atualização de 10/set · a faixa B foi antecipadaA reunião de 8/set foi cancelada e não será remarcada. Sem motivo para segurar trabalho esperando por ela, a faixa B foi executada nos dias 9 e 10, antes da sprint começar — e está publicada em Sete corpos, seis juntas.

A pergunta do título está respondida: a plataforma articulada existe, mantém o chassi a 0,00° onde o modelo de um corpo só inclina 4,34°, e custa 4 % do orçamento de um quadro. Boa parte da faixa A veio junto, de brinde. O que sobra para a sprint está reorganizado abaixo.

O entregável-âncora

faixa B · ✔ respondida em 9–10/set

O rover articulado cabe no Jolt — sim, e está medido

Sete corpos, seis juntas, motor no eixo de cada roda. Chassi a 0,00° contra 4,34° do modelo lumped no mesmo degrau, com 4 sub-passos por quadro consumindo 4 % do orçamento. Publicado em Sete corpos, seis juntas.

o novo âncora · ▶ é o que falta

O bogie: vencer o degrau de 0,30 m

O ensaio encontrou um limite exato: o rocker de quatro rodas sobe degrau de 0,20 m e para em 0,30 m — que é o raio da roda, o limite geométrico de uma roda rígida sem ajuda.

É precisamente esse limite que o bogie existe para vencer. A perna dianteira é erguida sobre o obstáculo pela geometria do conjunto. O entregável tem número para bater: subir um degrau que a montagem de quatro rodas não sobe.

Três faixas, uma pergunta

faixa B · ✔ feita em 9–10/set

Multicorpo de verdade

Plataforma articulada montada, medida e rodando no Godot. Trouxe junto duas descobertas: o modelo lumped sobe degraus maiores que a própria roda porque ignora a face do obstáculo, e o passo padrão do Jolt erra 12 cm nesta montagem.

faixa A · ~70 % adiantada

Quanto cabe num quadro

O cronômetro está no vehicle_probe e a curva do solver já foi levantada para a montagem articulada. Falta repetir com vários veículos na cena — o orçamento é do quadro inteiro, não de um veículo.

faixa C · intacta

O terreno

Chão de altura variável e deformação do sulco. Nada feito ainda, e agora com um motivo a mais: o obstáculo de face vertical mostrou que a forma do terreno importa.

◈ o que a antecipação mudouA sprint deixou de ser três faixas espremidas em cinco dias — que eu mesmo tinha admitido ser apertado — e virou uma faixa nova com espaço. O bogie é a continuação direta do limite medido, e as duas faixas restantes deixam de competir por tempo.

Faixa A · o orçamento do quadro

Quatro parâmetros controlam quanto o Jolt calcula por passo. Os três primeiros já foram varridos na montagem articulada — o resultado está em Sete corpos, seis juntas, e a conclusão é que a configuração recomendada é 4 sub-passos. Falta repetir com vários veículos na cena: o orçamento é do quadro inteiro, não de um veículo.

os botões de custo · o que cada um compra
sub-passos
Chamar Update várias vezes por quadro com dt/N · o botão principal · é o que aproxima do passo de 0,5 ms do professor
mNumVelocitySteps
Iterações do solver de velocidade · padrão 10 · quanto o solver insiste até as restrições fecharem
mNumPositionSteps
Iterações de correção de posição · padrão 2 · corrige penetração acumulada
colisão da roda
SetNumStepsBetweenCollisionTestActive · de quantos em quantos passos o raycast da roda é refeito — hoje todo passo
SEG · 14 SET

Instrumentar o medidor

  1. Cronometrar cada PhysicsSystem::Update e reportar mínimo, mediana e máximo — o pico é o que estoura o quadro, não a média.
  2. Definir uma manobra padrão reproduzível: acelerar em reta, subir um degrau, curva fechada. Sem ela, nada é comparável.
  3. Fixar as métricas de fidelidade: erro no impulso de suspensão contra m·g·Δt, penetração máxima da roda, tremor do corpo parado.
↳ vehicle_probe cronometrado e repetível
TER · 15 SET

A varredura e a curva

  1. Variar um parâmetro por vez: sub-passos 1, 2, 4, 8, 16, 32 — até encostar no 0,5 ms do professor (33 sub-passos).
  2. Repetir para as iterações do solver e a frequência do raycast.
  3. Montar a curva e marcar o joelho: o ponto em que dobrar o custo para de melhorar o resultado. E marcar onde os 16,7 ms estouram.

Porquê: a partir daqui, "quanto isso custa" tem resposta em número para qualquer coisa que eu adicionar depois.

↳ curva custo × fidelidade

Faixa B · feita — e o que ela abriu

Executada em 9–10/set. O relato completo, com as tabelas e os dois erros de projeto que o ensaio precisou corrigir antes de valer alguma coisa, está em Sete corpos, seis juntas.

a articulação funcionaSete corpos, seis juntas, motor no eixo de cada roda. No mesmo degrau, mesma velocidade e mesma massa: chassi a 0,00° contra 4,34° do modelo de um corpo só. Os braços giram −4,1° e absorvem o obstáculo inteiro.
o lumped trapaceiaEle "sobe" degraus de 0,50 m com rodas de 0,30 m — porque a face vertical do degrau não existe no modelo. O raycast acha o topo e a fórmula puxa o veículo. Isso obriga a reler o que foi medido com ele sobre terreno acidentado.
o custo, medidoA razão de massa (chassi 1200 kg em braços de 50 kg) deixa o solver padrão 12 cm abaixo da altura correta. O joelho da curva está em 4 sub-passos; mesmo 8 usam só 4 % do quadro.
o limite encontradoO rocker de quatro rodas sobe 0,20 m e para em 0,30 m — o raio da roda. É o limite geométrico correto, e é o alvo da semana.

O bogie · o entregável da sprint

Uma roda rígida sozinha não sobe degrau maior que o próprio raio. O rocker-bogie resolve isso com geometria: a perna dianteira é erguida sobre o obstáculo pelo conjunto, em vez de ter que escalá-lo.

◈ por que este é o passo certo agoraNão é "mais rodas por ser mais bonito". O ensaio produziu um número exato — 0,30 m — e o bogie é o mecanismo cuja razão de existir é justamente vencer esse número. O critério de sucesso já está definido antes de começar: subir um degrau que a montagem de quatro rodas não sobe.
SEG · 14 SET

A geometria de seis rodas

  1. Estender src/rocker_rig.h: cada rocker ganha, na ponta traseira, um bogie — um segundo braço articulado com duas rodas. Total: 11 corpos, 10 juntas.
  2. O GroupFilterTable e o filtro de auto-colisão já existem e escalam sozinhos; o header foi escrito com isso em mente.
  3. Ajustar o curso de cada junta. O curso errado trava o mecanismo antes dele trabalhar.
↳ rocker-bogie montado e de pé
TER · 15 SET

A varredura de degrau, de novo

  1. Rodar a mesma manobra padrão nas três montagens — lumped, rocker de quatro, rocker-bogie de seis — varrendo o degrau de 0,10 a 0,50 m.
  2. A tabela responde de uma vez: até onde cada uma sobe, e com quanta inclinação de chassi.
  3. Medir o custo por quadro das 11 peças e conferir se ainda cabe nos 16,7 ms.

A pergunta que fecha: o bogie passa dos 0,30 m? Se passar, o rover está a uma refatoração de distância. Se não passar, saber por quê vale igual.

↳ tabela das três montagens + vídeo do bogie subindo o que o rocker não sobe

Faixa C · o terreno, se sobrar tempo

⚠ a distinção que organiza a faixaDeformar a geometria não é modelar o solo. O Jolt tem HeightFieldShape::SetHeights(), que permite abrir o sulco onde a roda passou, em tempo de execução. O que ele não tem é terramecânica: nenhum Bekker, nenhum Janosi, nenhuma força de resistência ao afundamento ou de cisalhamento. Essa parte existe no Chrono e teria que ser escrita à mão no Jolt.
SEX · 18 SET

Relevo, sulco e o custo dos dois

  1. Trocar o chão de caixa por um HeightFieldShape e confirmar que a suspensão responde ao relevo — a telemetria por roda deve deixar de ser simétrica.
  2. Deformar onde a roda tocou, com SetHeights numa janela pequena ao redor do contato — a ideia de domínio ativo copiada do GDChrono.
  3. Medir o custo por quadro e somar ao orçamento da faixa A.
  4. Listar o que o SCMTerrain calcula e o Jolt não, e estimar o que seria escrever isso à mão — e se vale, dado que o Chrono entrega pronto.
↳ sulco aparecendo, custo medido, nota de decisão para a frente roda–solo

O que sai desta sprint

Já entregue · 9–10 set

  • A plataforma articulada rodando no terminal e no Godot, com a comparação contra o modelo de um corpo só.
  • A curva do solver — o joelho em 4 sub-passos, e a constatação de que o padrão do Jolt erra 12 cm nesta montagem.
  • O limite geométrico medido — 0,30 m, o raio da roda.
  • A entrada publicada: Sete corpos, seis juntas.

Até terça, 15 de setembro

  • O rocker-bogie de seis rodas — 11 corpos, 10 juntas (o entregável-âncora).
  • A tabela das três montagens — até onde cada uma sobe, e com quanta inclinação.
  • O custo por quadro das 11 peças, conferido contra os 16,7 ms.
  • Vídeo do bogie subindo o degrau que o rocker de quatro não sobe.

Esta semana eu NÃO vou

✕ trava de escopo

Um mecanismo, não um veículo. O bogie existe para responder uma pergunta com número — não para virar o rover final.

  • Modelar o rover da ExoTerra com geometria real — a montagem é genérica de propósito
  • Refatorar a cena para nascer da física — agora há duas montagens, o que torna a abstração fácil, mas não é esta semana
  • Migrar o build para CMake
  • Escrever terramecânica do zero
  • Recuperar o modelo de pneu perdido na troca
◈ modo da semanaExperimental. Toda afirmação tem que vir com o número ao lado. Se não deu pra medir, não entra na conclusão.
?

Perguntas para o professor

Continuam abertas — a reunião de 8/set foi adiada. Duas delas a semana responde sozinha, e isso está marcado.

Sobre o rumo · as que só ele responde

  • O alvo é uma ponte ou duas? Faz sentido o projeto ter Jolt e Chrono lado a lado — um para tempo real, outro para fidelidade — ou é para convergir numa só?
  • Posso usar o Viper como referência de rover articulado, ou o alvo é um rover da ExoTerra com geometria própria?
  • O que conta como validação para o PIBIC: comparar contra o Chrono na mesma manobra, ou contra dado experimental?
  • O rover precisa rodar em tempo real, ou pode rodar mais devagar que o relógio? Isso muda toda a leitura da curva da faixa A.

Sobre o código dele

  • O passo de 0,5 ms do GDChrono foi escolhido por convergência do SCM, por estabilidade das juntas do Viper, ou empiricamente?
  • Em ChWorld.cpp, o SCMTerrain terrain(&sys) é variável local dentro do Init() — o terreno continua vivo depois que a função retorna?

As que eu mesmo respondi

  • Dá para montar multicorpo articulado no Jolt? ✔ Sim — 7 corpos, 6 juntas, chassi a 0,00° contra 4,34°.
  • Cabe no orçamento de um quadro? ✔ Sim, com folga — 4 % em 4 sub-passos, que é onde a curva para de melhorar.
  • Solo deformável é viável no Jolt em tempo real? → ainda em aberto, faixa C.

De onde eu parto

◈ o que a sprint anterior entregou

A ponte C++ está de pé e verificada — ver Dois mundos, uma cena. Tenho um vehicle_probe que roda o veículo sem Godot e imprime telemetria, o que torna a faixa A quase só instrumentar o que já existe.

E tenho as duas leituras que sustentam a faixa B: a mecânica interna da VehicleConstraint, que explica por que ela não articula, e a tabela de graus de liberdade das juntas, que é exatamente o material para montar a perna.

O que abrir