Configurar a compensação de gravidade
Resultado : use um modelo correspondente ao seu braço e entenda o que acontece quando o controle termina. Você precisa de calibração verificada e de um arquivo do controlador .
Verifique a correspondência do modelo
O host calcula o esforço das posições medidas e o envia para os servos. O firmware não contém geometria de braço. O esforço positivo segue o aumento da contagem de codificadores; o modelo deve levar em conta a direção física da junta.
Dois modelos descrevem braços verticais com pinças vazias:
Arquivo em host/arm-control/models/ |
Braço |
|---|---|
arm-upright-empty.json |
SO-102 |
so101-upright-empty.json |
SO-101 |
Ambos definem termos acoplados para M2–M4 e esforço zero explícito para M1, M5 e M6. A configuração de braço de seis motores fornecida usa IDs 1 – 6 com um perfil para cada motor. Sua calibração vincula deslocamentos específicos do encoder, resolução da unidade e sinalizadores de reversão; o preflight compara esses valores com os motores antes de iniciar o controle .
Um nome de braço ou uma leitura de referência de 2048 é insuficiente. Não copie os deslocamentos de outro braço em seus motores ou altere apenas encoderCalibration para passar na verificação. Diferentes calibrações, montagens, geometrias ou cargas requerem um modelo adaptado ou ajustado e validação de hardware.
Conecte um modelo validado
Para tools/poses/controller.local.json , adicione este campo ao objeto JSON existente ; a linha não é uma configuração completa:
"gravityModel": "../../host/arm-control/models/arm-upright-empty.json"
Esse caminho seleciona o modelo SO-102. O arquivo SO-101 é so101-upright-empty.json; seu status requer explicitamente a validação do braço pretendido e da trajetória de movimento. Use um caminho relativo para seu próprio modelo e preserve vírgulas entre os campos JSON.
O gravitySlewEffortPerS de cada perfil limita a rapidez com que o esforço da gravidade muda; effortLimit limita a saída total do motor. Sem gravityModel , as ferramentas são executadas sem um modelo e eliminam a gravidade retida ao reutilizar uma sessão. Uma configuração de variação diferente de zero por si só não permite a compensação.
Verifique antes de se mudar
Execute a visualização normal da sua gravação:
macOS / Linux
npm run replay -- tools/poses/controller.local.json POSES.json
Windows PowerShell
npm.cmd run replay -- tools/poses/controller.local.json POSES.json
Uma incompatibilidade de calibração, falta de entrada ou esforço computacional excessivo requer investigação. Os resultados acima dos limites do modelo ou do motor são rejeitados em vez de serem cortados silenciosamente. Não aumente um limite apenas para suprimir o erro sem revisar a carga.
Com --run, o controlador calcula, envia e confirma a gravidade antes do primeiro alvo de movimento. Em um mecanismo apoiado, verifique a direção e o comportamento em diversas posições e cargas. Uma pose bem-sucedida não valida todo o espaço de trabalho.
Durante o controle e após a saída
O feedback e a gravidade compartilham um leitor, com atualizações aproximadamente a cada 50 ms. As verificações de atualização e prazo do host não tornam o host um sistema em tempo real.
A conclusão normal deixa a compensação final no servo. Ele não se adapta mais a alterações de pose ou carga útil. Mensagens ausentes também não eliminam a gravidade: o firmware aborda a última solicitação na taxa de variação configurada e a mantém. Torque-off limpa isso. Veja finalizando o primeiro movimento .
Criando um modelo
Todo motor controlado precisa de um modelo explícito, incluindo entradas de compensação zero. Cada entrada usada por termos acoplados deve ser controlada e medida. Os termos usam coefficient × sin(angle) ou coefficient × cos(angle) , onde angle = offsetRad + sum(counts[id] × weights[id]) . Os ângulos são radianos e os coeficientes são unidades de esforço PWM. Os termos constantes não têm pesos.
O ajuste baseado em log e a validação independente pertencem ao processo de ajuste . Os coeficientes ajustados não são medidos no torque físico e não constituem automaticamente um modelo validado.
Início da documentação · Revisão de origem: a995f77 . Extension 9.0 .