Como funciona o controle de movimento
Um comando de destino não define diretamente uma saída fixa do motor. No modo Extension, o host fornece metas e limites; cada servo planeja uma trajetória, mede o movimento e calcula a saída. Esta página explica esses relacionamentos. Use o guia de ajuste para a sequência prática.
Como funciona o modo de extensão
O host é o computador ou controlador conectado aos servos. Ele envia um destino : um destino e limite de velocidade. As configurações de aceleração e compensação são configuradas antes de habilitar a alimentação do motor. Cada servo então:
- Planeja um movimento suave em direção ao destino.
- Mede sua posição e estima sua velocidade.
- Ajusta a saída do motor para seguir o movimento planejado.
- Mantém o destino quando o movimento termina.
A posição e velocidade planejadas em qualquer momento são chamadas de referência . O controlador compara-os com o movimento medido, portanto uma posição de referência e uma posição real podem diferir.
Alguns termos usados ao longo deste documento:
| Prazo | Significado |
|---|---|
| Contagem do encoder | Uma unidade de medição de posição; nominalmente 4096 conta por revolução |
| Comando de saída do motor | O comando de saída do motor assinado: seu sinal define a direção e seu tamanho define a força de saída |
| Ganho de controle | Uma configuração que determina a intensidade com que o controlador responde |
| Ação antecipatória | Saída extra do motor calculada a partir da demanda esperada, em vez de esperar por um erro de posição ou velocidade |
| Realimentação | Medições e status retornados pelo servo |
| Registrador | Uma configuração ou leitura identificada por um número |
| Sessão | Um período de controle de extensão, identificado por um número fornecido pelo host |
O esforço é expresso em unidades PWM, as unidades usadas para controlar a saída elétrica do motor. A extensão permite um limite de saída de até 1000 em qualquer direção. Esses valores não são medições diretas de torque ou corrente.
Movimento da curva S
Torna a aceleração e a travagem mais graduais. A curva ilustra a aceleração ao longo do tempo. Ilustração conceitual, não dados de hardware medidos.
Uma curva S faz com que a aceleração aumente e diminua gradualmente. Em vez de aplicar repentinamente aceleração ou frenagem total, o servo entra e sai de cada parte do movimento. Isso pode reduzir solavancos mecânicos e vibrações.
Um movimento completo de repouso a repouso tem estes estágios:
| Etapa | O que acontece |
|---|---|
| 1 | A aceleração aumenta gradualmente |
| 2 | O servo acelera a uma taxa constante |
| 3 | A aceleração diminui gradualmente até zero |
| 4 | O servo se move a uma velocidade constante |
| 5 | A frenagem aumenta gradualmente |
| 6 | O servo freia a uma taxa constante |
| 7 | A frenagem diminui gradualmente à medida que o servo para |
Movimentos curtos pulam etapas quando não há distância suficiente para atingir a velocidade ou aceleração solicitada. O mesmo limite de aceleração se aplica ao acelerar e desacelerar.
A configuração ramp_time_ms controla quanto tempo a aceleração leva para subir de zero até seu limite. Uma rampa mais longa proporciona uma mudança mais suave, mas geralmente requer mais tempo e distância para acelerar ou parar.
Jerk significa a taxa na qual a aceleração muda. Este planejador limita os solavancos, para que a aceleração mude suavemente. O próprio Jerk ainda pode mudar abruptamente entre os estágios. Sua magnitude aproximada é:
jerk = 1000 × acceleration / ramp_time_ms [counts/s³]
Alterar um destino durante o movimento
Um novo alvo continua a partir do movimento planejado atual, preservando sua posição, velocidade e aceleração. Enviar novamente o mesmo destino não reinicia a movimentação. Mantenha o mesmo limite de velocidade solicitado enquanto se desloca; ele pode mudar para o próximo movimento assim que o movimento planejado for interrompido. A aceleração e o tempo de rampa pertencem à configuração e requerem o desligamento do motor e uma sessão desarmada para serem alterados.
Um destino fora dos limites de posição herdados salvos é ajustado para o limite mais próximo . A velocidade solicitada também é limitada ao limite configurado. O servo usa a aceleração configurada para cada movimento. A velocidade zero ou a aceleração configurada são inválidas.
Todo o movimento planejado deverá ficar dentro dos limites de posição. Um novo alvo pode, portanto, ser rejeitado se o servo já estiver se aproximando de um limite rápido demais para parar dentro dele, mesmo quando o próprio destino for permitido.
Na chegada, o servo mantém automaticamente o destino com o motor ligado. A posição medida ainda pode apresentar algum erro devido ao atrito, carga, limites de saída ou ajuste. Segurar continua a corrigir o erro de posição; não congela a saída do motor em um valor fixo.
Cada servo planeja seu próprio movimento. Enviar vários alvos juntos não garante que todos os servos chegarão ao mesmo tempo.
Limites de posição compartilhada
O controle legado e de extensão usam os mesmos registros de limite de posição: 9 – 10 contém o mínimo e 11 – 12 o máximo. Cada um é um valor de bit 16 não assinado nas contagens corrigidas do codificador, incluindo a direção configurada do servo e a correção de posição. Não há configurações separadas de limite de posição de extensão.
A calibração atribui contagens de codificador a posições físicas. A ferramenta de calibração faz com que a pose de referência capturada seja 2048 e, em seguida, mede os limites de deslocamento. Essa contagem não é automaticamente um ângulo de junta de zero grau e o ponto médio do percurso medido não substitui a referência capturada. Modelos e visualizações de gravidade precisam de um mapeamento de contagem para ângulo correspondente.
O firmware lê esses registros ao iniciar o controle. Com os limites habilitados, o mínimo deve estar abaixo do máximo, o máximo deve estar no máximo 32767 e a posição medida deve estar dentro da faixa. Caso contrário, a partida falhará sem mover o motor. O planejador mantém o movimento completo, incluindo a frenagem, dentro da faixa lida.
Valores mínimos e máximos iguais desativam os limites de deslocamento , correspondendo ao comportamento legado. Os comandos Extension ainda permanecem dentro da faixa de posição suportada de – contagens de 32767 a 32767.
Uma gravação aceita em qualquer um dos limites encerra uma sessão de extensão ativa e desliga a alimentação do motor, incluindo gravações que são aplicadas apenas na RAM. Arme uma nova sessão para usar os valores alterados. A persistência normal das configurações herdadas ainda se aplica.
Controlador PID
Ajusta como o servo corrige o erro de posição. A curva cinza ilustra a oscilação; a curva branca ilustra uma resposta mais amortecida. A linha tracejada é o alvo. Ilustração conceitual, não dados de hardware medidos.
O controlador PID ajusta a saída do motor para seguir o movimento planejado. Suas três configurações têm funções diferentes:
| Configuração | O que isso faz | Compensação principal |
|---|---|---|
| P — correção de posição | Puxa o motor em direção à posição planejada; erros maiores produzem mais correção | P mais alto pode reduzir o erro, mas também pode causar oscilação |
| I — correção acumulada | Cria correção extra quando um erro persiste | Pode reduzir um erro duradouro, mas pode aumentar o overshoot ou o tempo de acomodação |
| D — correção de velocidade | Responde à diferença entre velocidade planejada e medida; resiste ao movimento enquanto segura | Pode melhorar o amortecimento, mas a resposta excessiva a leituras de velocidade ruidosas pode tornar a saída irregular |
O cálculo é:
position error = planned position − measured position
speed error = planned speed − filtered measured speed
motor output = Kp × position error
+ Kd × speed error
+ accumulated I correction
+ gravity compensation
+ velocity feedforward
O resultado é limitado à saída máxima configurada. A proteção do motor pode reduzi-lo ainda mais. O feedback informa a saída solicitada e aplicada para que o host possa ver quando o motor está sendo limitado.
A velocidade medida é suavizada usando leituras de posição recentes e um filtro ajustável. Uma configuração velocity_filter_q8 maior responde mais rapidamente às alterações, mas remove menos ruído de medição.
Prevenindo correção acumulada excessiva
A contribuição I tem seu próprio limite. O controlador também impede que continue a construir numa direção onde a potência do motor já está limitada; isso é comumente chamado de anti-windup . Ainda pode diminuir para ajudar o motor a se recuperar desse limite. Definir Ki como zero desativa e limpa a correção I.
Quando o servo estiver quase estacionário por pelo menos 50 ms e o erro de posição estiver dentro de uma contagem do encoder, I para de acumular. P, D e ambas as formas de feedforward permanecem ativas. Desligar a saída do motor limpa a correção I.
Velocidade feedforward
Adiciona a saída do motor com base na velocidade planejada, calculada dentro do servo. Ambas as curvas progridem da esquerda para a direita ao longo do tempo. Ilustração conceitual, não dados de hardware medidos.
O feedforward de velocidade fornece parte da saída que se espera que seja necessária para o movimento antes que um erro de rastreamento se desenvolva. É calculado dentro do servo a partir da velocidade planejada:
velocity feedforward = velocity gain × planned speed
Há um ganho para cada direção e um limite na saída resultante. Ambos os ganhos não são negativos; a direção do movimento determina o sinal de saída. Seu limite de saída não deve ser maior que o limite de saída do motor principal.
Como o servo conhece sua própria velocidade planejada, a compensação segue a aceleração e a frenagem automaticamente e torna-se zero quando o movimento planejado para. O host fornece apenas suas configurações; não é necessário enviar valores contínuos de feedforward de velocidade.
Configure este recurso junto com as outras configurações em 0xA0, enquanto a alimentação do motor está desligada e a sessão desarmada. Defina os ganhos e seu limite de saída como zero para desativá-lo.
Compensação de gravidade
O host calcula a contribuição e o servo a aplica. A seta para baixo representa o peso; a seta para cima representa suporte. Ilustração conceitual, não dados de hardware medidos.
A compensação de gravidade fornece a saída necessária para suportar o peso de um braço e sua carga. É útil mesmo quando o motor está parado, onde o feedforward de velocidade é zero.
O host calcula a compensação de gravidade e envia um valor de saída assinado para cada servo. O cálculo pode usar ângulos de junta, dimensões de braço, pesos de link e carga útil. O host deve converter a carga estimada nas unidades de saída do servo. O firmware não contém um modelo do braço.
A direção é importante: a saída de extensão positiva segue contagens crescentes de codificadores. A convenção de ângulo de articulação de um braço pode ocorrer na direção oposta, portanto a conversão do hospedeiro deve levar em conta isso.
Cada atualização de gravidade contém o valor de saída desejado. A taxa de variação — a rapidez com que a compensação pode mudar, em unidades de saída por segundo — faz parte da configuração principal e permanece fixa durante toda a sessão.
O servo muda gradualmente sua compensação em direção ao valor solicitado e adiciona-o à saída do controlador. Todas as contribuições juntas permanecem sujeitas ao limite de saída configurado e à proteção do motor.
Se as atualizações de gravidade pararem de chegar, o servo continuará em direção à última compensação solicitada em sua taxa de variação configurada e, em seguida, manterá esse valor. Não há temporizador de expiração. O anfitrião deve atualizar a compensação quando a postura do braço ou a carga mudarem. Definir o registro de habilitação de torque 40 para zero limpa a compensação e desliga a saída do motor.
Aplique a explicação ao ajuste
Se um movimento curto nunca atingir a velocidade solicitada, aumentar o limite de velocidade pode não torná-lo mais rápido. A saturação prolongada da produção exige a verificação da carga, da trajetória e do esforço permitido, e não apenas de maiores ganhos. Se o codificador seguir sua referência, mas a ferramenta perder um ponto físico, verifique a calibração, a geometria e a mecânica.
Distinguir movimento planejado e medido e precisão de posicionamento e repetibilidade . Os quatro diagramas de controle e animações acima são gráficos servo conceituais e não medidos.
Início da documentação · Revisão de origem: a995f77 . Extension 9.0 .




