·

Engenharia de Controle e Automação ·

Manipuladores Robóticos

· 2023/2

Send your question to AI and receive an answer instantly

Ask Question

Preview text

RELATÓRIO Procedimentos 1) Computar o modelo de cinemática direta do manipulador. Computar o modelo de cinemática direta de um manipulador significa calcular a relação entre as variáveis de entrada do sistema, geralmente os ângulos ou deslocamentos das juntas, e as variáveis de saída, que representam a posição e orientação do efetuador final do robô. O modelo de cinemática direta fornece uma descrição matemática de como as diferentes partes do manipulador se movem em relação umas às outras, permitindo determinar a posição e orientação do efetuador final com base nos valores das juntas. Em outras palavras, ele mapeia as coordenadas das juntas para as coordenadas do efetuador final. Esse modelo é fundamental para o controle e planejamento de trajetória em robótica. Com o modelo de cinemática direta, é possível calcular a posição do efetuador final do robô em resposta a mudanças nas juntas, o que é essencial para realizar tarefas específicas e garantir movimentos precisos. Para manipuladores robóticos com várias juntas, o modelo de cinemática direta é frequentemente representado por uma matriz de transformação homogênea, que descreve a posição e orientação do efetuador final em relação a um sistema de coordenadas de referência. Este modelo é derivado da geometria e cinemática do robô, usando métodos como os parâmetros de Denavit-Hartenberg. Os parâmetros de Denavit-Hartenberg do manipulador são obtidos a partir do script mdl_puma560.m, sendo indicados a seguir. 2) Computar o modelo cinemático inverso do manipulador. O modelo de cinemática inversa é essencialmente o oposto do modelo de cinemática direta. Enquanto o modelo de cinemática direta mapeia as coordenadas das juntas para a posição e orientação do efetuador final, o modelo de cinemática inversa calcula as posições e orientações das juntas necessárias para alcançar uma determinada posição e orientação desejada do efetuador final. Para simplificar o problema, fui excluída a cinemática do pulso e consideradas somente as três primeiras juntas do robô manipulador. O modelo de cinemática inversa é apresentado a seguir. θ1=arctg(2. p y px) θ2=θ23−θ3 θ3=−arctg( K √l2 2−K 2) K=( px 2+ p y 2+ pz 2−l2²) 2l1 θ23=arcsen( l2c3 pz+(c1 px+s1 p y)(l1s3−l2) pz 2−(c1 px+s1 p y) 2 ) θ4=arctg(2. −r13 s1+r23c1 −r13c1c23−r23 s1c23+r33 s4) θ5=arctg(2. s5 c5) θ6=arctg(2. s5 c5) 3) Desenvolver um controlador cinemático de primeira ordem que permita realizar o rastreamento de uma trajetória desejada, a qual pode variar no tempo em relação à posição e orientação do efetuador. Para a geração da trajetória, implementou-se um movimento pontual simples, calculando-se posição, velocidade e aceleração. foi desenvolvido um movimento simples ponto a ponto. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function td = cin_dir(plotCima, plotBaixo, l1, l2, T1, T2, T3, T4, T5, T6, select); % a2,a3,d3,d4 – parâmetros de dimensionamento a2 = l1; a3 = 0; d3 = 0; d4 = l2; % tn – ângulos das juntas em rad t1 = T1 *pi/180; t2 = T2 *pi/180; t3 = T3 *pi/180; t4 = T4 *pi/180; t5 = T5 *pi/180; t6 = T6 *pi/180; P6 = [0 0 0 1]’; R6 = [1 0 0; 0 1 0; 0 0 1;0 0 0]; PR = [R6 P6]; % Tin – matriz de transformação i a n T56 = [cos(t6), -sin(t6), 0, 0; 0, 0, 1, 0; -sin(t6), -cos(t6), 0, 0; 0, 0, 0, 1]; T45 = [cos(t5), -sin(t5), 0, 0; 0, 0, -1, 0; sin(t5), cos(t5), 0, 0; 0, 0, 0, 1]; T34 = [cos(t4), -sin(t4), 0, a3; 0, 0, 1, d4; -sin(t4), -cos(t4), 0, 0; 0, 0, 0, 1]; T23 = [cos(t3), -sin(t3), 0, a2; sin(t3), cos(t3), 0, 0; 0, 0, 1, d3; 0, 0, 0, 1]; T12 = [cos(t2), -sin(t2), 0, 0; 0, 0, 1, 0; -sin(t2), -cos(t2), 0, 0; 0, 0, 0, 1]; T01 = [cos(t1), -sin(t1), 0, 0; sin(t1), cos(t1), 0, 0; 0, 0, 1, 0; 0, 0, 0, 1]; P03 = T01*(T12*(T23*P6)); % P – cinemática direta P = T01*(T12*(T23*(T34*(T45*(T56*PR))))); aux = [0 P03(1,1) P(1,4);0 P03(2,1) P(2,4);0 P03(3,1) P(3,4)]; % td - retorno da função com a matriz de transformação td = round(P,3,’decimals’); %%%%%%%%%%%%%%%%%%%% function thethas = cin_inv(P,l1, l2) px = P(1,4); py = P(2,4); pz = P(3,4); r = [P(1,1) P(1,2) P(1,3); P(2,1) P(2,2) P(2,3); P(3,1) P(3,2) P(3,3)]; a2 = l1; a3 = 0; d3 = 0; d4 = l2; theta1 = (atan2(py,px)); K = (px^2 + py^2 + pz^2 - a2^2 - a3^2 - d3^2 - d4^2)/(2*a2); theta3 = atan(2*a3/d4) - atan(K/sqrt(a3^2 + d4^2 - K^2)); theta23 = real(asin(((-a3 - a2*cos(tetha3))*pz + (cos(tetha1)*px + sin(tetha1)*py)*(a2*sin(tetha3) - d4)) / (pz^2 + (cos(tetha1)*px + sin(tetha1)*py) ^2))); theta2 = (theta23 - theta3); x = cos(theta1)*(cos(theta2)*(l1 - l2*sin(theta3)) - l2*cos(theta3)*sin(theta2)); y = sin(theta1)*(cos(theta2)*(l1 - l2*sin(theta3)) - l2*cos(theta3)*sin(theta2)); z = - sin(theta2)*(l1 - l2*sin(theta3)) - l2*cos(theta2)*cos(theta3); if round(x,3,’decimals’) ~= round(px,3,"decimals") || round(y,3,"decimals") ~= round(py,3,"decimals") || round(z,3,"decimals") ~= round(pz,3,"decimals") t2a = ((pi-theta23) - (theta3)); x = cos(theta1)*(cos(t2a)*(l1 - l2*sin(theta3)) - l2*cos(theta3)*sin(t2a)); y = sin(theta1)*(cos(t2a)*(l1 - l2*sin(theta3)) - l2*cos(tetha3)*sin(t2a)); z = -sin(t2a)*(l1 - l2*sin(tetha3)) - l2*cos(t2a)*cos(tetha3); if round(x,3,’decimals’) ~= round(px,3,"decimals") || round(y,3,"decimals") ~= round(py,3,"decimals") || round(z,3,"decimals") ~= round(pz,3,"decimals") else tetha2 = t2a; tetha23 = (pi-tetha23); end end tetha4 = atan2((-r(1,3)*sin(tetha1))+r(2,3)*cos(tetha1) , (-r(1,3)*cos(tetha1)*cos(tetha23) - r(2,3)*sin(tetha1)*cos(tetha23) + r(3,3)*sin(tetha23))); s5 = -(r(1,3)*(cos(tetha1)*cos(tetha23)*cos(tetha4) + sin(tetha1)*sin(tetha4)) +r(2,3)*(sin(tetha1)*cos(tetha23)*cos(tetha4)-cos(tetha1)*sin(tetha4)) -r(3,3)*(sin(tetha23)*cos(tetha4))); c5 = (r(1,3)*(-cos(tetha1)*sin(tetha23)) + r(2,3)*(-sin(tetha1)*sin(tetha23)) + r(3,3)*(- cos(tetha23))); tetha5 = atan2(s5,c5); s6 = (-r(1,1)*(cos(tetha1)*cos(tetha23)*sin(tetha4) - sin(tetha1)*cos(tetha4)) - r(2,1)*(sin(tetha1)*cos(tetha23)*sin(tetha4) + cos(tetha1)*cos(tetha4)) + r(3,1)*(sin(tetha23)*sin(tetha4))); c6 = (r(1,1)*((cos(tetha1)*cos(tetha23)*cos(tetha4) + sin(tetha1)*sin(tetha4))*cos(tetha5) - cos(tetha1)*sin(tetha23)*sin(tetha5)) + r(2,1)*((sin(tetha1)*cos(tetha23)*cos(tetha4) - cos(tetha1)*sin(tetha4))*cos(tetha5) - sin(tetha1)*sin(tetha23)*sin(tetha5)) - r(3,1)*(sin(tetha23)*cos(tetha4)*cos(tetha5) + cos(tetha23)*sin(tetha5))); tetha6 = atan2(s6,c6); %%%%%%%%%%%%%%%%%%%% %% trajetoria function a = trajetoria(plotsT,plotCima, plotBaixo, Pi,Pf,tempo,passo,l1,l2,select) tf=tempo; T=passo; t=0:T:tf; ji=cin_inv(l1,l2,Pi); jf=cin_inv(l1,l2,Pf); for i=1:(tf/T+1); % dji -> posição junta i % ddji -> Velocidade junta i % dddji -> Aceleração junta i [dj1(i),ddj1(i),dddj1(i)]=polin(ji(1),jf(1),tf,t(i)); [dj2(i),ddj2(i),dddj2(i)]=polin(ji(2),jf(2),tf,t(i)); [dj3(i),ddj3(i),dddj3(i)]=polin(ji(3),jf(3),tf,t(i)); [dj4(i),ddj4(i),dddj4(i)]=polin(ji(4),jf(4),tf,t(i)); [dj5(i),ddj5(i),dddj5(i)]=polin(ji(5),jf(5),tf,t(i)); [dj6(i),ddj6(i),dddj6(i)]=polin(ji(6),jf(6),tf,t(i)); end %%%%%%%%%%%%%%%%%% Para controle de primeira ordem, prevendo apenas tempo de acomodação suficiente para evitar tempo de estabilização elevado, projeta-se um controlador proporcional-integral na forma: G pi (s)=K p(1+ 1 T i s) O controle PI assegura ganho e velocidade suficiente para o setpoint ser atingido, bem como reduz o erro de posição em regime permanente.  Ti - tempo integrativo (ou reset time), é o tempo para que a saída do integrador atinja o valor Kp para uma entrada unitária.  A ação integral acelera o movimento do processo em direção ao setpoint, eliminando (ou diminuindo) o erro residual que ocorre com o controlador puramente proporcional.  Como o termo integral isolado acumula erros do passado, valores elevados para Ki provocam o efeito colateral de aumento no sobressinal. O sistema se torna menos estável. 0 10 20 30 40 50 60 70 80 90 100 t 0 50 100 150 200 250 y saída integral Sob as condições dadas, a resposta é estabilizada, ainda que lentamente, pela ação do integrador. 0 10 20 30 40 50 60 70 80 90 100 t 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y saída controlada para passo simples 4) Desenvolver um controlador cinemático de segunda ordem que permita realizar o rastreamento de uma trajetória desejada, a qual pode variar no tempo em relação à posição e orientação do efetuador. Sugere-se o uso de um controlador PID com parâmetros que garantam um tempo de estabilização de 3 segundos e fator de amortecimento de 0,707. GMF (s)= 1,406 s 2+2s+2 5) Obter o modelo dinâmico do robô utilizando as abordagens de Euler-Lagrange e Newton-Euler. A abordagem de Newton-Euler utiliza as leis de Newton e Euler para derivar as equações de movimento. Ela é frequentemente dividida em duas etapas: avanço direto (forward dynamics) e avanço inverso (inverse dynamics). a) Avanço Direto (Forward Dynamics) – calculam-se as forças e torques nas juntas, propagando as acelerações do elo para a base usando as equações de Newton-Euler. b) Avanço Inverso (Inverse Dynamics) – calculam-se as forças e torques necessários nas juntas para realizar um determinado movimento. Este passo envolve a propagação das forças do elo para a base. As equações resultantes do avanço inverso representam o modelo dinâmico do robô. Despreza-se o pulso e as juntas dependentes, escrevendo-se para as juntas principais: x=l1cosθ1+l2cos(θ1+θ2) y=l1senθ1+l2sen(θ1+θ2) U 1=m1gl1senθ1 U 2=m2 g (l1senθ1+l2sen(θ1+θ2) τ1=m1gl1cosθ1+m2 g (l1cosθ1+l2cos(θ1+θ2)) τ 2=m2 gl2cos(θ1+θ2) Escrevendo o modelo dinâmico: [ τ1 τ 2]=[ I 1 I 12 I 21 I 2][ ¨θ1 ¨θ2]+[ C1(θ , ˙θ) C2(θ , ˙θ)]+[ G1(θ) G2(θ)] [ τ1 τ 2]=[ 0,2343 0,0354 0,0453 0,2353][ ¨θ1 ¨θ2]+[ C1(θ , ˙θ) C2(θ , ˙θ)]+[ G1(θ) G2(θ)] 6) Desenvolver um controlador dinâmico para o rastreamento de uma trajetória variável no tempo definida como referência para os ângulos das juntas do manipulador. O controlador dinâmico é o mesmo obtido a partir do modelo de segunda ordem levantado, permitindo-se que o fator de amortecimento possa ser calculado de forma adaptativa para assegurar sobressinal percentual constante conforme haja modificação dos comprimentos dos passos. 7) Integrar os controladores dinâmicos e cinemáticos obtidos nos itens 4 e 6. Em tese, por se tratar de um controlador de 2ª ordem replicado, pode-se estabelecer uma planta de 4ª ordem cuja função de transferência é GMF (s)= 1,9768 s 4+4 s 3+8 s 2+8 s+4 Trabalho 1 (Valor: 30 pontos) O propósito deste trabalho é solidificar os conceitos teóricos abordados em sala de aula. O trabalho é individual e vale 30 pontos. Para avaliação, deve ser entregue um relatório com uma breve descrição da teória utilizada, junto a um script escrito em MATLAB com os códigos implementados para obter os resultados. Dentre os critérios de avaliação, inclui-se a habilidade do aluno em apresentar suas ideias de maneira clara e concisa. Para desenvolver o trabalho, o aluno deve instalar a “Robotics toolbox” no Matlab. Tal toolbox foi desenvolvida pelo Prof. Peter Corke e pode ser encontrada em: https://petercorke.com/toolboxes/robotics- toolbox/. O trabalho deve ser realizado utilizando o robô Puma560. Para iniciá-lo, após instalar a robotics toolbox, basta executar o script mdl_puma560.m. (Obs: Coloquei um exemplo na nossa pasta compartilhada no google drive, arquivo: \MATLAB\Simulação manipulador\ManipulatorPuma.m). Deve-se realizar as seguintes tarefas: 1) Computar o modelo de cinemática direta do manipulador. Obs: para obter os parâmetros de Denavit-Hartenberg do manipulador, basta executar o script mdl_puma560.m e utilizar o comando p560.display(). Os parâmetros são fornecidos de acordo com a Convenção de Denavit-Hartenberg Modificada. Incluí na pasta do Google Drive o arquivo 'ConvencaoDHModificada.pdf', que contém explicações detalhadas sobre essa convenção. Fique à vontade para explorar outros materiais, se desejar. 2) Computar o modelo cinemático inverso do manipulador. Obs: Para simplificar o problema, exclua a cinemática do pulso e, portanto, considere somente as três primeiras juntas do robô manipulador 3) Desenvolver um controlador cinemático de primeira ordem que permita realizar o rastreamento de uma trajetória desejada, a qual pode variar no tempo em relação à posição e orientação do efetuador. Obs: O aluno deve propor uma trajetória desejada que seja exequível pelo manipulador. 4) Desenvolver um controlador cinemático de segunda ordem que permita realizar o rastreamento de uma trajetória desejada, a qual pode variar no tempo em relação à posição e orientação do efetuador. 5) Obter o modelo dinâmico do robô utilizando as abordagens de Euler-Lagrange e Newton-Euler. 6) Desenvolver um controlador dinâmico para o rastreamento de uma trajetória variável no tempo definida como referência para os ângulos das juntas do manipulador 7) Integrar os controladores dinâmicos e cinemáticos obtidos nos itens 4) e 6). UNIVERSIDADE FEDERAL DE MINAS GERAIS ESCOLA DE ENGENHARIA Departamento de Engenharia Elétrica Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10026 Robótica A Parâmetros de Denavit-Hartenberg Prof. Walter Fetter Lages 5 de dezembro de 2022 1 Convenção de Denavit-Hartenberg 1.1 Regras Básicas 1. ˆZi−1 está ao longo do eixo a junta i. 2. ˆXi é normal a ˆZi−1. 3. ˆYi completa o sistema. 1.2 Atribuição dos Sistemas de Coordenadas Sistema de coordenadas da base: Estabeleça o sistema de coordenadas da base { ˆX0, ˆY0, ˆZ0} na base de apoio do robô, com o eixo ˆZ0 sobre o eixo da junta 1 e apontando para o "ombro" do robô. Os eixos ˆX0 e ˆY0 podem ser conve- nientemente estabelecidos, desde que formando um sistema ortonormal. Sistemas de coordenadas dos elos: Eixo da junta: Alinhe ˆZi com o eixo da junta i + 1 (rotacional ou prismática). Origem do sistema i: Localize a origem do sistema i na intersecção de ˆZi e ˆZi−1 ou na intersecção da normal comum a ˆZi e ˆZi−1 e o eixo ˆZi. Eixo ˆXi: ˆXi = ± ˆZi−1× ˆZi | ˆZi−1× ˆZi| ou sobre a normal comum entre ˆZi−1 e ˆZi se eles forem paralelos. Eixo ˆYi: ˆYi = + ˆZi× ˆ Xi | ˆZi× ˆ Xi|, para completar o sistema. Sistema de coordenadas da garra: Usualmente a n-ésima junta é rotacional. Ali- nhe ˆZn na mesma direção que ˆZn−1e apontando para fora do robô. Alinhe ˆXn de forma que seja normal a ˆZn−1 e a ˆZn. ˆYn completa o sistema. 1 Parâmetros das juntas e elos: di: é o deslocamento da origem do sistema i − 1 à intersecção dos eixos ˆZi−1 e ˆXi, medido sobre o eixo ˆZi−1. É a variável de junta, se a junta i for prismática. ai: é o deslocamento da intersecção de ˆZi−1 e ˆXi à origem do sistema i, medido sobre o eixo ˆXi. θi: é o deslocamento angular em torno de ˆZi−1, medido de ˆXi−1 à ˆXi. É a variável de junta se a junta i for rotacional. αi: é o deslocamento angular em torno de ˆXi, medido de ˆZi−1 à ˆZi. eloi−1 juntai xi−1 thetai xi zi thetai juntai+1 thetai+1 alphai zi−1 eloi di ai Figura 1: Parâmetros de Denavit-Hartenberg. 1.3 Transformação entre Frames a partir dos Parâmetros de Denavit-Hartenberg Da definição dos parâmetros de Denavit-Hartenberg, pode-se perceber que um ponto Pi, expresso no sistema de coordenadas i, pode ser expresso no sistema de coordenadas i − 1 fazendo-se a seguinte sequência de transformações: 2 1. Rotação de um ângulo α_i em torno de X̂_i, para alinhar Ẑ_{i-1} com Ẑ_i. R_x(α_i) = \left[ \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & \cos α_i & -\sin α_i & 0 \\ 0 & \sin α_i & \cos α_i & 0 \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (1) 2. Translação de a_i ao longo de X̂_i para fazer os eixos Ẑ coincidentes. D_x(a_i) = \left[ \begin{array}{cccc} 1 & 0 & 0 & a_i \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (2) 3. Translação de d_i ao longo de Ẑ_{i-1} para fazer as origens coincidentes. D_z(d_i) = \left[ \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (3) 4. Rotação de um ângulo θ_i em torno de Ẑ_{i-1}, para alinhar X̂_{i-1} com X̂_i. R_z(θ_i) = \left[ \begin{array}{cccc} \cos θ_i & -\sin θ_i & 0 & 0 \\ \sin θ_i & \cos θ_i & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (4) Logo, i^{-1}T_i = R_z(θ_i)D_z(d_i)D_x(a_i)R_x(α_i) = \left[ \begin{array}{cccc} \cos θ_i & -\cos α_i \sin θ_i & \sin α_i \sin θ_i & a_i \cos θ_i \\ \sin θ_i & \cos α_i \cos θ_i & -\sin α_i \cos θ_i & a_i \sin θ_i \\ 0 & \sin α_i & \cos α_i & d_i \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (5) e portanto, \left[ \overset{\scriptscriptstyle{-1}}{i^{-1}T_i} \right]^{-1} = iT_{i-1} = \left[ \begin{array}{cccc} \cos θ_i & \sin θ_i & 0 & -a_i \\ -\cos α_i \sin θ_i & \cos α_i \cos θ_i & \sin α_i & -d_i \sin α_i \\ \sin α_i \sin θ_i & -\sin α_i \cos θ_i & \cos α_i & -d_i \cos α_i \\ 0 & 0 & 0 & 1 \end{array} \right] \quad \quad (6) 3 2 Convenção de Denavit-Hartenberg Modificada Uma das críticas usuais à convenção de Denavit-Hartenberg é que a junta i gira (ou desloca-se) em torno (ou ao longo) do eixo ˆZi−1. Para contornar este incon- veniente, em [1] é proposta uma adaptação à convenção de Denavit-Hartenberg que ficou conhecida como Convenção de Denavit-Hartenberg Modificada. Obvi- amente, a característica principal desta convenção modificada é que a junta i gira (ou desloca-se) em torno (ou ao longo) do eixo ˆZi. 2.1 Regras Básicas 1. ˆZi está ao longo do eixo a junta i. 2. ˆXi é normal a ˆZi+1. 3. ˆYi completa o sistema. 2.2 Atribuição dos Sistemas de Coordenadas Sistema de coordenadas da base: Estabeleça o sistema de coordenadas da base { ˆX0, ˆY0, ˆZ0} na base de apoio do robô, de tal forma que o sistema {0} fique alinhado com o sistema {1} quando a variável de junta 1 for zero. Sistemas de coordenadas dos elos: Eixo da junta: Alinhe ˆZi com o eixo da junta i (rotacional ou prismática). Origem do sistema i: Localize a origem do sistema i na intersecção de ˆZi e ˆZi+1 ou na intersecção da normal comum a ˆZi e ˆZi+1 com o eixo ˆZi. Eixo ˆXi: ˆXi = ± ˆZi× ˆZi+1 | ˆZi× ˆZi+1| ou sobre a normal comum entre ˆZi e ˆZi+1. Eixo ˆYi: ˆYi = + ˆZi× ˆ Xi | ˆZi× ˆ Xi|, para completar o sistema. Sistema de coordenadas n: ˆZn é o eixo da junta n. A origem e o eixo ˆXn po- dem ser escolhidos livremente. Em geral, para fazer os parâmetros dos elos serem 0, alinha-se ˆXn na mesma direção que ˆXn−1 e apontando para fora do robô. ˆYn completa o sistema. Parâmetros das juntas e elos: di: é o deslocamento da intersecção dos eixos ˆXi−1 e ˆZi, à origem do sistema i, medido sobre o eixo ˆZi. É a va- riável de junta, se a junta i for prismática. ai: é o deslocamento da origem do sistema i à intersecção de ˆXi e ˆZi+1, medido sobre o eixo ˆXi. 4 θi: é o deslocamento angular em torno de ˆZi, medido de ˆXi−1 à ˆXi. É a variável de junta se a junta i for rotacional. αi: é o deslocamento angular em torno de ˆXi, medido de ˆZi à ˆZi+1. juntai−1 zi juntai thetai zi−1 di xi thetai alphai−1 ai−1 eloi−1 eloi thetai−1 xi−1 Figura 2: Parâmetros de Denavit-Hartenberg modificados. 2.3 Transformação entre Frames a partir dos Parâmetros de Denavit-Hartenberg Modificados Da definição dos parâmetros de Denavit-Hartenberg modificados, pode-se perce- ber que um ponto Pi, expresso no sistema de coordenadas i, pode ser expresso no sistema de coordenadas i − 1 fazendo-se a seguinte sequência de transformações: 1. Translação de di ao longo de ˆZi. Dz(di) =   1 0 0 0 0 1 0 0 0 0 1 di 0 0 0 1   (7) 5 2. Rotação de um ângulo θi em torno de ˆZi, para alinhar ˆXi com ˆXi−1. Rz(θi) =   cos θi − sin θi 0 0 sin θi cos θi 0 0 0 0 1 0 0 0 0 1   (8) 3. Translação de ai−1 ao longo de ˆXi−1 para fazer as origens coincidentes. Dx(ai−1) =   1 0 0 ai−1 0 1 0 0 0 0 1 0 0 0 0 1   (9) 4. Rotação de um ângulo αi−1 em torno de ˆXi−1, para alinhar ˆZi com ˆZi−1. Rx(αi−1) =   1 0 0 0 0 cos αi−1 − sin αi−1 0 0 sin αi−1 cos αi−1 0 0 0 0 1   (10) Logo, i−1Ti = Rx(αi−1)Dx(ai−1)Rz(θi)Dz(di) =   cos θi − sin θi 0 ai−1 sin θi cos αi−1 cos θi cos αi−1 − sin αi−1 − sin αi−1di sin θi sin αi−1 cos θi sin αi−1 cos αi−1 cos αi−1di 0 0 0 1   (11) Referências [1] J. J. Craig. Introduction to Robotics Mechanics and Control. Addison- Wesley Series in Electrical and Computer Engineering: Control Engineering. Addison-Wesley, Reading, MA, 2nd edition, 1989. [2] K. S. Fu, R. C. Gonzales, and C. S. G. Lee. Robotics Control, Sensing, Vision and Intelligence. Industrial Engineering Series. McGraw-Hill, New York, 1987. 6 A Exercícios 1. Para cada um dos manipuladores abaixo: (a) Atribua os sistemas de coordenadas segundo as convenções de Denavit- Hartenberg. (b) Faça a tabela dos parâmetros de Denavit-Hartenberg (c) Obtenha as matrizes de transformação homogênea Figura 3: AdeptOne. 7 Figura 4: Puma 260. Figura 5: Puma 560. Figura 6: Barrett WAM. 9 2. Compare a tabela de parâmetros de Denavit-Hartemberg obtida para o mani- pulador Barrett WAM no item 1b com a tabela "oficial"do fabricante, mos- trada na tabela 1. Tabela 1: Parâmetros de Denavit Hartenberg do Manipulador Barrett WAM, se- gundo o fabricante. i ai αi di θi 1 0 −π/2 0 θ1 2 0 π/2 0 θ2 3 0.045 −π/2 0.55 θ3 4 −0.045 π/2 0 θ4 5 0 −π/2 0.3 θ5 6 0 π/2 0 θ6 7 0 0 0.06 θ7 T 0 0 0 3. Ajuste os eixos atribuídos para o manipulador Barrett WAM, de forma que os parâmetros de Denavit-Hartenberg passem a ter os valores mostrados na Tabela 1. 10