Implantação no Robô e Avaliação de Desempenho
Execute ACT em um robô real, entenda o pré-processamento e a execução de blocos de ações, meça o sucesso e melhore os dados analisando as falhas.
- Inferência no robô
- Execução de blocos de ações
- Avaliação
- Iteração de dados
Fluxo de Dados de Inferência em um Relance

Pré-processamento e Desnormalização
O modelo foi treinado com dados normalizados, portanto a inferência deve aplicar as mesmas regras de entrada e saída:
| Direção | Processamento | Estatísticas |
|---|---|---|
| Para dentro do modelo | Redimensionar imagens e aplicar normalização ImageNet; subtrair as médias dos estados e dividir pelos desvios padrão (z-score). | Conjunto de dados de treinamento meta/stats.json |
| Para fora do modelo | Multiplicar as ações pelos desvios padrão e somar as médias para recuperar os ângulos físicos das juntas. | As mesmas estatísticas |

Iniciar a Inferência no Robô e Iterar nos Dados
Carregue a política com lerobot-record. Use exatamente os mesmos parâmetros de robô e câmera usados durante a coleta:
Versão RS:
lerobot-record \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.can_adapter=socketcan \
--robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"} }' \
--robot.id=follower1 \
--display_data=false \
--dataset.repo_id=seeed/eval_test18 \
--dataset.single_task="Grab the crayfish into the box" \
--dataset.num_episodes=10 \
--dataset.episode_time_s=60 \
--dataset.reset_time_s=10 \
--policy.path=outputs/train/act_rebot_test/checkpoints/last/pretrained_model \
--policy.push_to_hub=false
Versão DM:
lerobot-record \
--robot.type=seeed_b601_dm_follower \
--robot.port=/dev/ttyACM0 \
--robot.can_adapter=damiao \
--robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"} }' \
--robot.id=follower1 \
--display_data=false \
--dataset.repo_id=seeed/eval_test18 \
--dataset.single_task="Grab the crayfish into the box" \
--dataset.num_episodes=10 \
--dataset.episode_time_s=60 \
--dataset.reset_time_s=10 \
--policy.path=outputs/train/act_rebot_test/checkpoints/last/pretrained_model \
--policy.push_to_hub=false
-
--dataset.num_episodes=10: registra 10 episódios de avaliação. -
--dataset.episode_time_s=60: permite no máximo 60 segundos por episódio. Defina isso de acordo com a duração da tarefa: se colocar o lagostim na caixa leva 20–30 segundos, permita 30–40 segundos. Para observação prolongada sem esperar entre episódios, você pode usar uma duração maior, como 300 segundos. -
--dataset.reset_time_s=10: permite 10 segundos entre episódios para restaurar as posições dos objetos. Mantenha as condições iniciais o mais consistentes possível durante a avaliação.
Executando um Bloco de Ações
-
Uma inferência prediz um bloco de ações de 100 passos. Execute apenas os primeiros n passos em malha aberta (
n_action_steps), depois observe novamente: as previsões se tornam menos confiáveis quanto mais distante no futuro. -
Com o agrupamento temporal (
temporal_ensemble_coeff), a ação em cada passo de tempo é uma média ponderada de previsões sobrepostas, produzindo trajetórias mais suaves. -
Pausas visíveis geralmente ocorrem quando um bloco termina antes que a próxima inferência esteja pronta. Aumentar
n_action_stepspode reduzir essas pausas, ao custo de respostas mais lentas a perturbações.
Segurança: Limites, Velocidade e Paradas de Emergência
-
Use ESC para encerrar a sessão; não use Ctrl+C. Antes de parar, deixe o braço terminar o bloco de ações atual ou retorne-o manualmente a uma pose segura (embora Ctrl+C atualmente também retorne o robô para zero), para evitar deixá-lo suspenso sob carga.
-
Esteja pronto para desconectar a alimentação imediatamente se o braço se comportar de forma anormal.
Avaliar Taxa de Sucesso e Tempo de Conclusão
Fixe as condições iniciais e execute 20 tentativas, registrando cada resultado.
-
Taxa de sucesso = tentativas bem-sucedidas ÷ 20. Para o primeiro modelo treinado, acima de 50% é um ponto de partida normal e acima de 80% é excelente.
-
Tempo de conclusão indica consistência. As tentativas bem-sucedidas devem levar tempos semelhantes; grandes variações sugerem hesitação.
-
Para falhas, registre o tipo de falha, em vez de apenas marcar um X.
Testar Generalização
Após testar as condições padrão, altere uma condição por vez e meça a queda na taxa de sucesso. Um modelo ACT treinado em 50 episódios tem generalização limitada; uma cobertura mais ampla exige mais demonstrações.
| Teste | Método | Comportamento esperado |
|---|---|---|
| Generalização de posição | Coloque o bloco longe dos cinco pontos marcados, mas dentro da região demonstrada. | Pouca degradação; uma queda sugere diversidade de posição insuficiente. |
| Distração leve | Adicione objetos não relacionados à mesa. | Um modelo com compreensão visual limpa não deve ser afetado. |
| Mudança clara de distribuição | Use um objeto completamente novo ou uma superfície de mesa reflexiva. | A falha é esperada fora da distribuição de treinamento. |
O objetivo é mapear o limite de capacidade do modelo e depois estendê-lo gradualmente com mais dados.
Analisar Tipos de Falha
| Falha | Causa mais provável | Resposta |
|---|---|---|
| Alcança em direção à posição errada | Cobertura de dados insuficiente nessa posição; mudança de distribuição. | Coletar mais demonstrações nessa região. |
| Encosta no objeto mas não consegue segurá-lo, ou o deixa cair | Momento de fechamento mal aprendido ou poucos exemplos de preensão. | Adicionar demonstrações de alta qualidade do momento de preensão. |
| Move-se de forma errática o tempo todo | O treinamento não convergiu ou a cena e a iluminação mudaram substancialmente. | Verifique se a cena e a iluminação durante a coleta correspondem às da inferência. |
Descarte problemas de configuração antes de culpar os dados. Movimento errático geralmente exige verificações de configuração; alcance impreciso geralmente exige melhor cobertura.
Iteração de Dados: Coletar para Casos de Falha
Feche o ciclo transformando falhas em dados:
-
Classifique a falha e a cena em que ela ocorre.
-
Colete de 10 a 20 novas demonstrações direcionadas a esse caso. Para alcances perdidos, registre a localização problemática; para preensões instáveis, enfatize o movimento de fechamento. Expanda gradualmente a região coberta, por exemplo com novos pontos espaçados de 5 a 10 cm ao redor da cruz original.
-
Re-treine usando o conjunto de dados atualizado.
