09 Simulação MuJoCo e o gémeo ao vivo
O MuJoCo é usado de duas formas neste projeto, ambas com hardware/v1/robot_v1.xml (o modelo do robô real a partir da mesma fonte):
- Simulação local: sem robô ligado, repita em ciclo as quatro posturas deitadas e os respetivos levantamentos no computador, para validar as sequências de referência e observar o movimento;
- Gémeo ao vivo: o robô real transmite a sua atitude por WiFi e a janela do MuJoCo espelha o movimento real em tempo real (um gémeo digital).
A janela funciona da mesma forma nos dois casos: arrastar com o botão esquerdo roda a vista, arrastar com o botão direito desloca e a roda faz zoom. Antes da primeira utilização, crie e ative o .venv como na página 02 e instale nele as dependências das ferramentas (pip install -r tools/requirements.txt, ver página 02).
9.1 Janela de simulação local
Na pasta SR-Support (.venv ativado):
python tools/play_getup_executor.py --xml hardware/v1/robot_v1.xmlA janela tem o título MuJoCo : sr_support_v1 (figura 9-1). O robô é colocado sucessivamente nas quatro posturas deitadas (roll_pos → roll_neg → pitch_pos → pitch_neg); de cada vez, o executor executa a sequência de referência com exatamente os parâmetros do firmware até o robô se levantar, e em seguida é definida a postura seguinte. O ciclo repete-se até fechar a janela. O terminal imprime a postura e o resultado:
--- cycle 1 pose 1/4 requested=roll_pos actual=roll_pos up=(+0.00,+1.00,-0.00)
executor ok=True up=+1.00 servo=[0.0, -0.0] steps=113ok=True significa que a postura se levantou em simulação. Se obtiver ok=False, verifique a sequência de referência e quaisquer parâmetros que tenha alterado face à página 06.

Figura 9-1: um fotograma do ciclo das quatro posturas - o executor levanta uma postura deitada.
Diferença conhecida do modelo: com o modelo de massa 1×, o
roll_negimprimeok=Falseem simulação (a massa/atrito do braço do modelo difere do robô real, ver página 11 11.4); isto não afeta o firmware real.
9.2 Gémeo ao vivo por WiFi
Pré-requisito: o robô aderiu à rede doméstica como na página 08 e o computador está na mesma rede. A página de estado mostra o endereço do robô como Robot IP; copie-o para o comando abaixo.
- Na página de estado, prima
Twin ON(o mesmo quedna série); - Na pasta
SR-Supportcom o.venvativado, execute (substitua o endereço peloRobot IPda página de estado):
python tools/live_twin.py --tcp <Robot IP>:3333O modelo espelha a atitude real ao vivo (fluxo de quaterniões a 50 Hz) e mantém o corpo no chão; o braço é mantido no seu ângulo de contacto com o chão como o servo bloqueado, pelo que nunca penetra o chão.
- Computador ligado diretamente ao hotspot do robô: o endereço é sempre
192.168.4.1,python tools/live_twin.py --tcp 192.168.4.1:3333; - Alternativa com fios:
python tools/live_twin.py --port COM27(a ferramenta enviadpara ativar o fluxo automaticamente); - Reprodução offline:
python tools/live_twin.py --replay logs/hw_fast_xxx.txt; - O gémeo é apenas de leitura, com exceção de alternar o fluxo: nunca envia comandos de controlo.
9.3 Registo de telemetria
python tools/tcp_log.pyGuarda o fluxo de telemetria em logs/wifi_<time>.txt para reprodução offline (--replay) e análise de falhas. No hotspot liga-se por omissão a 192.168.4.1:3333; na rede doméstica, passe o Robot IP da página de estado:
python tools/tcp_log.py <Robot IP> 33339.4 Referência de simulação e treino
training/b_line/ inclui o executor, as sequências de referência e o ambiente de simulação — idênticos valor a valor ao firmware — para reprodução, validação e afinação de parâmetros; os ficheiros de modelo estão descritos na página 11 11.1.

