Computando a matriz jacobiana para cinemática inversa

19

Ao calcular a matriz jacobiana para resolver analiticamente um cinemático inverso, li em muitos lugares que eu poderia usar essa fórmula para criar cada uma das colunas de uma junta na matriz jacobiana:

JEu=eϕEu=[[umaEu×(epos-rEu)]T[umaEu]T]

De tal modo que uma é o eixo de rotação no espaço do mundo, r é o ponto de articulação no espaço do mundo, e epos é a posição do instrumento terminal no espaço do mundo.

No entanto, não entendo como isso pode funcionar quando as articulações têm mais de um DOF. Tome o seguinte como exemplo:

insira a descrição da imagem aqui

Os θ são o DOF rotacional, o e é a extremidade actuante, o g é o objectivo do efector final, a P1 , P2 e P3 são as articulações.

Primeiro, se eu fosse calcular a matriz jacobiana com base na fórmula acima para o diagrama, obteria algo assim:

J=[((0 0,0 0,1)×e)x((0 0,0 0,1)×(e-P1))x((0 0,0 0,1)×(e-P2))x((0 0,0 0,1)×e)y((0 0,0 0,1)×(e-P1))y((0 0,0 0,1)×(e-P2))y((0 0,0 0,1)×e)z((0 0,0 0,1)×(e-P1))z((0 0,0 0,1)×(e-P2))z0 00 00 00 00 00 0111]

Supõe-se que todos os eixos de rotação sejam (0 0,0 0,1) e todos tenham apenas um DOF rotacional. Então, acredito que cada coluna é para um DOF, neste caso, o θ# .

Agora, aqui está o problema: e se todas as juntas tiverem 6 DOFs cheias? Digamos agora, para cada junta, eu tenho DOFs rotacionais em todos os eixos, θx , θy e θz , e também DOFs translacionais em todos os eixos, tx , ty e tz .

Para tornar minha pergunta mais clara, suponha que se eu aplicasse "forçosamente" a fórmula acima a todos os DOFs de todas as juntas, provavelmente terei uma matriz jacobiana como esta:

insira a descrição da imagem aqui

(clique para ampliar)

Mas isso é incrivelmente estranho, porque todas as 6 colunas do DOF para cada junta estão repetindo a mesma coisa.

Como posso usar a mesma fórmula para construir a matriz jacobiana com todos os DOFs? Como seria a matriz jacobiana neste caso?

xenon
fonte
Na verdade, não tenho certeza se deveria ter postado esta pergunta aqui, em matemática, em GamesDev ou em física. Tenho a sensação de ter postado esta pergunta no lugar errado.
Xenon
Eu acho que o seu erro é que você não mudou o a 'para cada DOF, é por isso que eles parecem iguais.

Respostas:

11

Devo admitir que não tenho visto essa fórmula específica com muita frequência, mas meu palpite seria que, no caso de mais de um DOF, você o avaliaria para todas as articulações de cada coluna e depois (talvez?) Multiplicaria esses resultados em cada coluna.

Mas deixe-me sugerir uma abordagem mais simples aos jacobianos no contexto de muitos DOFs arbitrários: Basicamente, o jacobiano diz a você quão longe cada junta se move, se você mover o quadro efetor final em uma direção escolhida arbitrariamente. Deixe- ser a cinemática para a frente, onde θ = [ q 1 , . . . , θ n ] são as juntas, f pos é a parte posicional da cinemática direta e f rot a parte rotacional. Então você pode obter o jacobiano diferenciando a cinemática direta em relação às variáveis ​​conjuntas: f(θ)θ=[θ1,...,θn]fposfpodridão é Jacobian do seu manipulador. A inversão daria a cinemática inversa em relação àsvelocidades. No entanto, ainda pode ser útil, se você quiser saber até que ponto cada junta deve se mover, se quiser mover seu efetor final em umapequenaquantidadeΔxem qualquer direção (porque no nível da posição, isso seria efetivamente uma linearização): Δθ=J-1Δx

J=fθ=[fposθ1,fposθ2...,fposθnfpodridãoθ1,fpodridãoθ2...,fpodridãoθn]
Δx
Δθ=J-1Δx

Espero que isso ajude.

Daniel Eberts
fonte
Obrigado por responder! Mas isso significaria que terei que calcular os valores numericamente? Na verdade, eu vi esse exemplo analítico em graphics.cs.cmu.edu/nsp/course/15-464/Fall09/handouts/IK.pdf do slide 19 e graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt no slide 78. A partir dos slides, parece que talvez eu não tenha que passar pelos métodos numéricos. Em situações em que não tenho as funções reais para diferenciar, posso usar esta fórmula. Mas o problema é o que acontece quando tenho mais DOFs para cada articulação.
Xenon
Se eu entender os slides corretamente, você iria lidar com o caso de muitos DOFs arbitrárias (rotação), determinando os vetores para cada uma dessas articulações, onde P i é a posição da junta. Portanto, se você tem, digamos 46 juntas, você realmente obteria um jacobiano com 46 colunas e 6 linhas (ou 3, se negligenciar a orientação do efetor final). Para encurtar a história: você pode aplicar essa fórmula a qualquer número de articulações e não precisa "combiná-la" com outras articulações. (eEu-PEu)PEu
Daniel Eberts
Mas o que acontece se uma junta tem muitos DOFs como , θ y , θ z e DOFs de translação como t x , t y , t z ? Agora, cada junta tem 6 DOFs. Pelo meu entendimento de como a matriz jacobiana funciona para a IK, as 6 primeiras colunas serão as derivadas do efetor final em relação às 6 DOFs diferentes, e essas 6 primeiras colunas devem descrever a primeira junta. As próximas 6 colunas subsequentes descreverão a segunda junta em relação aos 6 DOFs e assim por diante. Usando a equação ( e i - P i )θxθyθztxtytz(eEu-PEu), significa que as 6 colunas de cada junta são compactadas automaticamente em uma coluna?
Xenon
3
Ah entendo. Não, nesse caso, a fórmula não funcionaria porque foi projetada para juntas de rotação com um eixo de rotação. Se você deseja tratar, por exemplo, juntas esféricas, precisará de uma fórmula diferente que trate esse tipo específico de junta ou de uma forma fechada da cinemática direta do robô. Se você tiver isso, poderá diferenciá-lo das articulações e obter o jacobiano. θ
Daniel Eberts
Obrigado! :) Apenas curioso, o Slide 58 do graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt está sugerindo que é possível usar a fórmula para juntas rotacionais com 3 DOFs? O que significa que, se uma junta não possui DOFs translacionais e possui 3 DOFs rotacionais, ainda é possível? Embora eu não saiba por que está demorando a multiplicar com várias rotações para obter os diferentes DOFs. (1,0 0,0 0,0 0)
Xenon
2

Sua fórmula para uma junta de 6 dof pressupõe que todas as 6 juntas tenham o eixo no quadro mundial e que todas as juntas sejam rotativas. Como as 6 articulações são assim idênticas, suas colunas no jacobiano também são idênticas.(0 0,0 0,1)

Começar de novo, suponha que uma joint tem um eixo passar por um ponto r . Seja e a posição do efetor final. As coordenadas de um , r , e e são dadas no quadro mundial e estão sendo atualizados conforme o robô está sendo movido. O eixo a tem comprimento 1 .umareumareuma1

Se a articulação é revoluta, a coluna jacobiana da articulação é

Jθ(uma,r)=[uma×(e-r)uma]

Se a junta é prismática, a coluna é

Jp(uma)=[uma0 0]

Suponha que tenhamos uma junta de 6 dof, que não é apenas esférica, mas também pode se traduzir no espaço. Suponhamos que os eixos da articulação são , um Y , e um de Z e que cada revolutas e prismáticos partes conjuntas de um eixo, de modo que o Jacobiana para o conjunto torna-seumaxumayumaz

J=[Jp(umax)Jp(umay)Jp(umaz)Jθ(umax,r)Jθ(umay,r)Jθ(umaz,r)]

umaxumayumazk

Fk=Eu=1keuEuTEu

euEuTEuRc(q)Pc(q)qcxyz

Δq=(Δpx,Δpy,Δpz,Δθx,Δθy,Δθz)EuΔT=Px(Δpx)Py(Δpy)Pz(Δpz)Rx(Δθx)Ry(Δθy)Rz(Δθz)

TEuTEuΔT

umaxumayumazEuFEurFEu

antonakos
fonte
0

Tanto quanto eu entendo sua pergunta, você quer a matriz jacobiana para a junta dos 6 DOF.

Deixe-me começar com o básico da robótica. Você está na fase inicial variada do aprendizado de robótica. Você precisa entender que cada articulação representa um único DOF, seja uma articulação revoluta ou prismática.

No que diz respeito à articulação esférica, ela pode ser convertida em articulação de 3 rotações com três eixos mutuamente perpendiculares. Então, agora você simplificou sua articulação esférica.

Avançando para a matriz jacobiana. Ele contém 6 linhas. As primeiras 3 linhas representam a orientação e as 3 últimas linhas indicam a posição com referência a um sistema de coordenadas específico. Cada coluna na matriz indica uma única junta. Portanto, o número de junta / DOF tem a mesma coluna de número que você tem na matriz jacobiana.

Aqui está a visão mais clara da sua pergunta: Uma única junta nunca preenche mais de um DOF, porque complica a junta e o controle preciso nunca será alcançado. Mesmo se considerarmos hipoteticamente uma articulação com mais de um DOF, você precisará converter essa articulação em várias articulações com 1 DOF cada para simplificar a matemática e a solução.

Idealmente, o robô 6 DOF com 6 juntas de revolução funciona para a maioria dos problemas reais. Mas, de acordo com a sua pergunta, você considerou 6 robôs articulados, cada um com 3 DOF, o que faz 18 robôs do DOF. Isso fornecerá DOF redundante (ou seja, 18-6 = 12 DOF redundante). Portanto, para alcançar o efeito final do robô em qualquer local com qualquer orientação, você terá infinitas soluções diferentes (solução significa rotação de cada junta). Portanto, resolva esse tipo de problema de cinemática inversa e você precisará de um método iterativo de cinemática inversa.

Espero ter respondido sua pergunta mais claramente. Para aprender robótica básica, você pode consultar John J. Craig - Introdução à Mecânica e Controle de Robótica - Pearson Education, Inc.

Atenciosamente, Manan Kalasariya

manan kalsariya
fonte