A Equação do Manipulador: Inércia, Coriolis, Gravidade
Objetivos de Aprendizagem
- Escrever a equação do manipulador e dizer quais partes são únicas (, e o vetor ) e qual parte é uma escolha (a matriz ).
- Montar pelos símbolos de Christoffel e mostrar, numa execução, que é antissimétrica nessa escolha e não em outras escolhas válidas.
- Separar a antissimetria da identidade de energia , que toda válida satisfaz.
- Dizer o efeito físico dos termos de inércia, centrífugo, de Coriolis e de gravidade simulando um de cada vez, e prever como cada um escala com a velocidade.
Contexto e Motivação
lagrangian-dynamics-of-an-open-chain-robot produziu os dois torques de um braço planar como expressões longas. Controladores, simuladores e provas de estabilidade precisam deles num formato padrão, em que cada termo tem nome e matriz. Esse formato é a equação do manipulador. Ela parece única, mas uma de suas matrizes não é, e uma propriedade usada em provas de controle vale só para uma escolha particular dela. A segunda metade da lição liga e desliga cada termo em simulação, porque "termo de Coriolis" diz pouco até você ver o que o braço faz sem ele.
Teoria Central
A forma padrão
é a matriz de massa, simétrica e definida positiva, de modo que . reúne a gravidade. reúne tudo o que é quadrático na velocidade. As convenções variam entre as fontes. O Modern Robotics escreve primeiro com um vetor de velocidade, , e depois, como observa ser comum, com uma matriz de Coriolis: exatamente a forma acima. As notas Underactuated Robotics, de Tedrake, escrevem , com a gravidade do lado direito, logo , e com uma matriz que leva entradas de controle a forças generalizadas. Confira o sinal do termo de gravidade antes de copiar fórmulas de uma para a outra.
Para o braço de dois elos, com e , os termos de velocidade da lição anterior são
Modern Robotics chama os termos em de centrípetos e os termos em com de Coriolis; as notas de Asada tratam os mesmos termos em como efeitos centrífugos, o nome usado a seguir. Assim, a junta 1 sente um termo de Coriolis e um termo centrífugo vindo da junta 2, e a junta 2 sente um termo centrífugo vindo da junta 1.
A matriz C é uma escolha
Só o vetor é fixado pela dinâmica. Qualquer matriz que o produza é válida. Duas escolhas para o braço de dois elos:
Multiplicar qualquer uma por dá o vetor acima. Uma terceira aparece impressa: as notas de Tedrake dão uma para o pêndulo duplo simples e observam que a escolha não era única.
A primeira é a escolha de Christoffel. Com os símbolos de Christoffel de primeira espécie
que é a Equação (8.19) de Modern Robotics. No braço de dois elos só e dependem de , por meio de , e o SymPy aplicado ao braço suposto () devolve , , , , a matriz acima.
Antissimetria, e a identidade mais fraca
Proposição 8.1 de Modern Robotics: com definida por (8.19), é antissimétrica. No braço de dois elos, , e
A primeira é antissimétrica; a segunda tem diagonal não nula e não é. As notas de Tedrake também enunciam a propriedade só para uma escolha apropriada de .
Uma afirmação mais fraca vale para toda válida. Derive a energia cinética e substitua a dinâmica:
A taxa de variação da energia cinética tem de ser igual à potência dos torques que não são gravidade, , então para toda que dê o certo. A antissimetria é a afirmação mais forte para todo vetor . Modern Robotics usa a propriedade na Seção 11.4.2.2, para mostrar que o controle PD com compensação de gravidade leva o braço ao repouso no setpoint.
Exemplos Resolvidos
Exemplo 1: duas matrizes válidas num mesmo estado
Em e rad/s, . Calculando por uma diferença central de ao longo de (passo s), sem usar a fórmula:
textC = [[ 0.0707, -0.0707], [ 0.1414, 0.0000]] C' = [[ 0.1414, 0.0707], [ 0.1414, 0.0000]] Mdot = [[ 0.1414, 0.0707], [ 0.0707, 0.0000]] Mdot-2C = [[ 0.0000, 0.2121], [-0.2121, 0.0000]] Mdot-2C' = [[-0.1414, -0.0707], [-0.2121, 0.0000]]
As duas dão N m, os termos de velocidade do Exemplo 1 da lição anterior.
Exemplo 2: a propriedade numa execução
Sorteie estados com numpy.random.default_rng(7), uniforme em e uniforme em rad/s, mais um vetor aleatório do standard_normal(2) do mesmo gerador, na ordem , , para cada estado. De novo, vem de uma diferença central:
textestado max|S+S^T|, C max|S+S^T|, C' qdot'S qdot, C qdot'S qdot, C' x'S x, C x'S x, C' 1 2.4e-10 0.529 6.8e-11 6.8e-11 5.4e-11 -0.174 2 1.2e-10 0.428 8.4e-11 8.4e-11 1.8e-11 -0.086 3 6.5e-11 0.058 -7.9e-14 -7.9e-14 4.5e-11 -0.051
Aqui para cada escolha, e os resíduos perto de são o erro da diferença finita em . A de Christoffel passa nos dois testes. passa na identidade de energia ao longo de e falha na antissimetria para um qualquer.
A matriz de Tedrake para o pêndulo duplo, tomada como impressa, com massas pontuais e comprimentos (os ângulos dele são medidos a partir da vertical para baixo, o que muda a gravidade, mas não nem ), em rad e rad/s, dá
Seu coincide com a forma de Christoffel do mesmo modelo, então a matriz é válida, satisfaz a identidade de energia e não é antissimétrica.
Exemplo 3: um termo de cada vez
Todas as execuções usam o braço suposto da lição anterior, (movimento num plano horizontal) salvo indicação, e scipy.integrate.solve_ivp com DOP853, rtol=1e-10, atol=1e-12.
Inércia: empurrar uma junta move a outra. Em repouso em , aplique N m. Então e : a junta 2 acelera para trás sem torque próprio, porque a aceleração do elo 1 arrasta de lado a base do elo 2. Depois de 0,2 s, . Com as entradas fora da diagonal de zeradas e o resto mantido, .
Centrífugo: girar a junta 1 abre o cotovelo. Acione a junta 1 a rad/s constante e deixe a junta 2 livre (), partindo de em repouso. Com , a junta 2 obedece , negativo para em . O cotovelo se abre, passa pela posição reta em s e vai até do outro lado, como um pêndulo cuja "gravidade" é o campo centrífugo. Sem os termos de velocidade, fica em . Segurar o cotovelo em exige N m.
Coriolis: dobrar o cotovelo acelera o ombro. Acione a junta 2 de a com rad/s (1,047 s) e deixe a junta 1 livre () com rad/s. Enquanto o cotovelo dobra, cai de 1,203 para 0,510 . Como não depende de e , o momento , que é o momento angular em torno da junta 1, tem de se conservar:
texttermos de velocidade em tau_1 qdot_1 no fim (rad/s) p_1 inicio p_1 fim ambos (modelo completo) 3.716 1.7628 1.7628 so Coriolis 2h qd1 qd2 2.358 1.7628 1.0700 so centrifugo h qd2^2 1.858 1.7628 0.8148 nenhum 1.000 1.7628 0.3772
Só o modelo completo conserva . É o efeito que Modern Robotics compara a uma patinadora que recolhe os braços durante um giro. Nenhuma parte sozinha conserva : só a parte de Coriolis dá cerca de metade da aceleração do ombro, só a centrífuga cerca de um terço, e as duas não se somam simplesmente, porque cada uma muda e, com ele, a outra.
Gravidade: o que precisa ser sustentado. Agora , em repouso com o braço horizontal, . Com , o braço parte com e depois de 0,2 s está em . Com , que vale N m nessa pose, o braço simulado fica em por 2 s, com velocidade zero.
Exemplo 4: como os termos escalam com a velocidade
Mova de a ao longo de , com gravidade, e avalie cada termo ao longo do caminho (2001 amostras). Picos de módulo em N m:
textduracao T |M qdd| j1, j2 |C qd| j1, j2 |g| j1, j2 |tau| j1, j2 1.0 s 14.60, 3.72 4.35, 2.11 19.18, 3.92 26.59, 7.21 0.5 s 58.42, 14.88 17.39, 8.43 19.18, 3.92 70.40, 18.28
Reduzir a duração à metade dobra toda velocidade e quadruplica toda aceleração, então os termos de inércia e de velocidade crescem exatamente 4 vezes, enquanto a gravidade, que só depende de , não muda. Neste movimento, a gravidade é o maior termo com s e a inércia é o maior com s, e os termos de velocidade crescem com o quadrado da velocidade.
Equívocos Comuns e Armadilhas
- " é uma matriz única." Só é único. O Exemplo 1 teve duas matrizes válidas, e as notas de Tedrake imprimem uma terceira.
- " é sempre antissimétrica." Só na escolha de Christoffel (ou em outra escolha construída para ter a propriedade). e a matriz de Tedrake falham no Exemplo 2.
- " prova a antissimetria." Isso vale para toda válida, porque é balanço de energia.
- "Efeitos de Coriolis e centrífugos são fictícios, então não custam nada." Em coordenadas de junta, são exigências reais de torque: 1,8 N m para segurar o cotovelo no Exemplo 3.
- "Os termos fora da diagonal de são pequenos demais para importar." Um torque só na junta 1 acelerou a junta 2 a .
- "A gravidade é o termo grande." Só em baixa velocidade. No Exemplo 4, reduzir a duração à metade deixou o termo de inércia na junta 1 com três vezes o tamanho do termo de gravidade.
- "Os sinais são padronizados." Algumas fontes põem a gravidade do lado direito como .
Resumo
A equação do manipulador põe a dinâmica numa forma padrão em que , e o vetor são fixos, mas a matriz não é. A escolha de Christoffel, , torna antissimétrica, como as execuções confirmaram até o erro de diferença finita de , enquanto uma igualmente válida e a impressa nas notas de Tedrake não tornam. Toda válida satisfaz , que é balanço de energia. Simulados um de cada vez, o acoplamento de inércia moveu uma junta sem torque, o termo centrífugo abriu um cotovelo livre enquanto a junta 1 girava, os termos de velocidade aceleraram o ombro de 1,0 para 3,7 rad/s quando o cotovelo dobrou, conservando o momento angular, o que nem a parte de Coriolis nem a centrífuga fizeram sozinhas, e a gravidade foi cancelada exatamente por . Reduzir à metade a duração de um movimento multiplicou por 4 os termos de inércia e de velocidade e deixou a gravidade igual.