E1 · Roteiro padrão
5 minRode o teleop com o roteiro do kit e 80 ms.
Pronto quando: python3 kit/teleop_sim.py --roteiro kit/passos.json | tail -1 → alvos atingidos: 5/6.
Aula 5 · 15 min
Teleoperar é o jeito mais rápido de um humanoide fazer uma tarefa nova e de juntar demonstrações para um VLA. O operador mexe os braços num óculos de VR e o robô repete; o atraso é o que estraga. Nesta aula você teleopera os dois braços do G1 por um roteiro e mede a partir de que latência tudo desanda.
Começar a aula
Objetivo: teleoperar os dois braços do G1 por um roteiro de alvos com latência e medir quantos alvos a mão atinge.
Clique em cada bloco.
Teleop é laço fechado com um humano dentro: atraso grande faz o operador corrigir o que já passou.
Clique em cada uma.
O SONIC tem um checkpoint de "baixa latência" (16/06/2026) que olha 4 quadros futuros a 20 ms: cerca de 80 ms de horizonte de referência. O checkpoint padrão olha 10 quadros (cerca de 200 ms).
O próprio README avisa: esses números não são a latência total da teleoperação, que inclui sensor, rede, pré-processamento e inferência.
O repositório GR00T-WholeBodyControl traz teleop por VR com PICO, CloudXR dentro do processo via isaacteleop[cloudxr] (16/06/2026) e IsaacTeleop 1.4 com Jetson AGX Orin (14/09/2026).
Em 07/05/2026 ganhou o fluxo VLA ponta a ponta no G1: coletar por teleop, ajustar o GR00T N1.7 e implantar com o SONIC.
O HOVER (ICRA 2025, relatado) destilou vários modos de comando (VR, mocap, exoesqueleto, joystick) numa política de cerca de 1,5M parâmetros.
O SONIC usa um espaço de tokens único para VR, vídeo humano e VLA: o mesmo controle obedece a qualquer um deles (aula 7).
O roteiro kit/passos.json faz o papel do operador: seis deslocamentos de controle, alternando as mãos. O sexto, de propósito, pede 60 cm à frente.
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/teleop_sim.py --roteiro kit/passos.json; echo "saída: $?"{
"descricao": "Roteiro de teleoperação: deslocamentos do controle de cada mão (em metros, a partir da posição inicial da mão), como um operador de VR moveria. Cada alvo vale até 'janela' segundos depois de enviado.",
"tolerancia_cm": 3,
"alvos": [
{"t": 0.2, "mao": "direita", "dx": 0.20, "dy": 0.00, "dz": 0.15, "janela": 0.6},
{"t": 0.9, "mao": "esquerda", "dx": 0.20, "dy": 0.00, "dz": 0.15, "janela": 0.6},
{"t": 1.6, "mao": "direita", "dx": 0.25, "dy": 0.10, "dz": 0.30, "janela": 0.6},
{"t": 2.3, "mao": "esquerda", "dx": 0.25, "dy": -0.10, "dz": 0.30, "janela": 0.6},
{"t": 3.0, "mao": "direita", "dx": 0.15, "dy": -0.05, "dz": 0.05, "janela": 0.6},
{"t": 3.7, "mao": "direita", "dx": 0.60, "dy": 0.00, "dz": 0.20, "janela": 0.6}
]
}latência do operador ao robô: 80 ms · tolerância: 3 cm · controle a 50 Hz alvo 1 · t=0.2 s · mão direita · atingido em 162 ms alvo 2 · t=0.9 s · mão esquerda · atingido em 160 ms alvo 3 · t=1.6 s · mão direita · atingido em 174 ms alvo 4 · t=2.3 s · mão esquerda · atingido em 154 ms alvo 5 · t=3.0 s · mão direita · atingido em 166 ms alvo 6 · t=3.7 s · mão direita · não atingido (chegou a 21.7 cm) robô de pé: sim alvos atingidos: 5/6 saída: 0
Cada alvo leva cerca de 80 ms de latência + 80 ms de movimento. O 6º não é atingido com nenhuma latência: está fora do alcance do braço.
ERRO no roteiro: mão 'esquerdo' (use direita ou esquerda) saída: 1
O roteiro aceita só "direita" e "esquerda". Erro de digitação para antes de mexer no robô, não no meio da sessão.
alvos atingidos: 6/6
O 6º alvo com dx 0,25 em vez de 0,60: todos atingidos.
O mesmo roteiro com cinco latências. A janela de cada alvo é de 0,6 s.
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
for ms in 0 80 300 450 550; do
echo "$ms ms → $(python3 kit/teleop_sim.py --roteiro kit/passos.json --latencia-ms $ms | tail -1)"
done0 ms → alvos atingidos: 5/6 80 ms → alvos atingidos: 5/6 300 ms → alvos atingidos: 5/6 450 ms → alvos atingidos: 4/6 550 ms → alvos atingidos: 0/6
Até 300 ms sobra janela. A 450 ms um alvo já perde a janela; a 550 ms nenhum é atingido a tempo. Num operador de verdade, o efeito aparece antes: ele começa a corrigir o atraso.
Roteiro, latência e alcance.
Rode o teleop com o roteiro do kit e 80 ms.
Pronto quando: python3 kit/teleop_sim.py --roteiro kit/passos.json | tail -1 → alvos atingidos: 5/6.
Copie o roteiro para ~/fth/movimentos/passos-meu.json e traga o 6º alvo para dentro do alcance (dx menor que 0,3).
Pronto quando: python3 kit/teleop_sim.py --roteiro ~/fth/movimentos/passos-meu.json | tail -1 → alvos atingidos: 6/6.
Rode a varredura de latência e diga, em uma frase, por que 550 ms zera tudo com janela de 0,6 s.
Pronto quando: python3 kit/teleop_sim.py --roteiro kit/passos.json --latencia-ms 550 | tail -1 → alvos atingidos: 0/6.
A explicação aparece depois da sua resposta.
Pergunta 1 de 3
O checkpoint de baixa latência do SONIC tem 4 quadros a 20 ms. O que são esses 80 ms?competência
Pergunta 2 de 3
O alvo 6 não é atingido nem com latência zero. O que isso indica?
Pergunta 3 de 3
Para que teleoperação de corpo inteiro serve além de operar o robô na hora?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.