Observando com um pouco mais de atenção , e , com relação à Figura 1, podemos imaginar o sistema coordenado deslocar-se (translações), chegar à origem do sistema coordenado e, através de transformações sucessivas sobre o eixo corrente (rotações), orientar-se exatamente como o mesmo . As mesmas transformações no sentido inverso , nos levam de volta ao ponto de partida . O "método SCM" baseia-se nesta "viagem de ida" do frame de referência ao frame final. A seqüência abaixo ilustra esta idéia para o manipulador de Stanford:
Figura 2: Método SCM para o manipulador de Stanford
Na seqüência estão presentes todos os elementos necessários para a abordagem do método:
Para a análise será adotado como padrão as transformações apresentadas em ou seja: translações seguidas de rotações. Obtém-se a relação entre os frames, a medida em que o Sistema Coordenado Móvel avança na estrutura do robô:
Obtém-se então, o seguinte resultado para a Cinemática Direta do manipulador de Stanford:
\* MERGEFORMAT (.)31
Figura 3: I – Sentido positivo dos ângulos
II – Regra da mão direita
3.1 – O "TOOLBOX SCM" PARA O MATLAB
Embora seja possível utilizar a estrutura para a solução de alguns problemas da Cinemática de robôs manipuladores , ela nos servirá apenas como uma ferramenta auxiliar na entrada de dados para o modelo em estudo. O primeiro passo será a elaboração de um arquivo-M do tipo script para a introdução
dos dados necessários.
Pode-se verificar a utilização do script para o manipulador de Stanford, digitando no prompt de comandos do MATLAB:
>> scm_stanford
=========================================================
Robot 'stanford' ==> RRPRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, a1, 0, 0]
[ 0, L1, 0, 0, a2, 0]
[ 0, 0, d3, 0, 0, 0]
[ 0, 0, 0, a4, 0, 0]
[ 0, 0, 0, 0, a5, 0]
[ 0, 0, L2, a6, 0, 0]
Final Transformation
0 0 0 0 0 0
Tool
0 0 0 0 0 0
Verify Data
1
É importante ressaltar que a estruturação dos dados SCM (Parâmetros de Junta, Transformação Final e Ferramenta) tem como padrão os argumentos presentes em :
\* MERGEFORMAT (.)32
Com o comando edit ou open pode-se verificar diretamente o conteúdo dos arquivos do tipo script (scm_manipulador.m). A estrutura de um script é basicamente a mesma para todos os manipuladores, portanto, a descrição abaixo para o manipulador de Stanford servirá de base para todos os outros modelos apresentados neste texto:
>> edit scm_stanford
syms L0 L1 L2 a1 a2 d3 a4 a5 a6
%SCM joint parameters
% Transl Rot(RPY Angles)
% X Y Z A B C
joint1=[ 0 0 L0 a1 0 0];%Z(L0)A(a1)
joint2=[ 0 L1 0 0 a2 0];%Y(L1)B(a2)
joint3=[ 0 0 d3 0 0 0];%Z(d3)ABC(0)
joint4=[ 0 0 0 a4 0 0];%XYZ(0)A(a4)
joint5=[ 0 0 0 0 a5 0];%XYZ(0)B(a5)
joint6=[ 0 0 L2 a6 0 0];%Z(L2)A(a6)
%=================================================
jp=[joint1;joint2;joint3;joint4;joint5;joint6];
%=================================================
clear joint*
%Final Transformation
% X Y Z A B C
finalTransformation=[0 0 0 0 0 0];%XYZ(0)ABC(0)
tool= [0 0 0 0 0 0];%XYZ(0)ABC(0)
%===================================
ftr=[finalTransformation;tool];
%===================================
clear finalT* tool
%Auxiliary
variables=[a1 a2 d3 a4 a5 a6];
links=[L0 L1 L2
.412 .154 .263];%meters
%==========================================================================
chain=struct('variables',variables,'links',links(1,:),'linksValues',links(2,:));
%==========================================================================
%Description
description='Robot ''stanford'' ==> RRPRRR';
%Debug (1==on/0==off)
verify=1;
%Robot
%==========================================================================
stanford=struct('jointParameters',jp,'finalTransformation',ftr,'chain',chain,'description',description,'verifyData',verify);
%==========================================================================
manipulator=stanford;
%=====================
clear variables links chain
%Display Visualization
disp('=========================================================');
disp(description);
disp('=========================================================');
disp('SCM Joint Parameters');disp(' X Y Z A B C');disp(jp);
disp('Final Transformation ');disp(ftr(1,:));
disp('Tool');disp(ftr(2,:));
disp('Verify Data');disp(verify);
clear jp ftr description verify
A seguir, serão apresentados outros modelos que também fazem parte do "toolbox SCM":
ONELINK
Figura 4: Onelink
\* MERGEFORMAT (.)33
>> scm_onelink
=========================================================
Robot 'onelink' ==> R
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, 0, a1, 0, 0]
Final Transformation
[ L1, 0, 0, 0, 0, 0]
Tool
[ 0, 0, 0, 0, 0, 0]
TWOLINK
Figura 5: Twolink
\* MERGEFORMAT (.)34
>> scm_twolink
=========================================================
Robot 'twolink' ==> RR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, 0, a1, 0, 0]
[ L1, 0, 0, a2, 0, 0]
Final Transformation
[ L2, 0, 0, 0, 0, 0]
Tool
[ 0, 0, 0, 0, 0, 0]
UW
Figura 6: UW
\* MERGEFORMAT (.)35
>> scm_uw
=========================================================
Robot 'UW'==> RRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, 0, a1, 0, 0]
[ L1, 0, 0, 0, -a2, 0]
[ L2, 0, 0, 0, -a3, 0]
Final Transformation
[ L3, 0, 0, 0, 0, pi/2]
Tool
[ 0, 0, 0, 0, 0, 0]
SCARA
Figura 7: Scara
\* MERGEFORMAT (.)36
>> scm_scara
=========================================================
Robot 'scara' ==> RRPR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, a1, 0, 0]
[ L1, 0, 0, -a2, 0, 0]
[ 0, 0, -d3, 0, 0, 0]
[ L2, 0, 0, -a4, 0, 0]
Final Transformation
[ 0, 0, -L3, 0, 0, pi]
Tool
[ 0, 0, 0, 0, 0, 0]
SCORBOT
Figura 8: Scorbot
\* MERGEFORMAT (.)37
>> scm_scorbot
=========================================================
Robot 'scorbot' ==> RRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, a1, 0, 0]
[ L1, -L2, 0, 0, -a2, 0]
[ L3, 0, 0, 0, -a3, 0]
[ L4, 0, 0, 0, -a4, 0]
[ 0, 0, L5, a5, 0, 0]
Final Transformation
0 0 0 0 0 0
Tool
0 0 0 0 0 0
CLOOS
Figura 9: Cloos
\* MERGEFORMAT (.)38
>> scm_cloos
=========================================================
Robot 'cloos' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, 0, a1, 0, 0]
[ 0, 0, 0, 0, -a2, 0]
[ L1, 0, 0, 0, a3, 0]
[ 0, 0, L2, a4, 0, 0]
[ 0, 0, 0, 0, -a5, 0]
[ 0, 0, -L3, -a6, 0, 0]
Final Transformation
0 0 0 0 0 3.1416
Tool
0 0 0 0 0 0
KR100P
Figura 10: Kr100p
\* MERGEFORMAT (.)39
>> scm_kr100p
=========================================================
Robot 'kr100p' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, -a1, 0, 0]
[ L1, 0, 0, 0, a2, 0]
[ L2, 0, 0, 0, a3, 0]
[ L4, 0, L3, 0, 0, -a4]
[ 0, 0, 0, 0, a5, 0]
[ L5, 0, 0, 0, 0, -a6]
Final Transformation
0 0 0 0 1.5708 0
Tool
0 0 0 0 0 0
KR125
Figura 11: Kr125
\* MERGEFORMAT (.)310
>> scm_kr125
=========================================================
Robot 'kr125' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, -a1, 0, 0]
[ L1, 0, 0, 0, a2, 0]
[ L2, 0, 0, 0, a3, 0]
[ L3, 0, 0, 0, 0, -a4]
[ 0, 0, 0, 0, a5, 0]
[ L4, 0, 0, 0, 0, -a6]
Final Transformation
0 0 0 0 1.5708 0
Tool
0 0 0 0 0 0
KR2150K
Figura 12: Kr2150k
\* MERGEFORMAT (.)311
>> scm_kr2150k
=========================================================
Robot 'kr2150k' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, -a1, 0, 0]
[ L1, 0, 0, 0, a2, 0]
[ L2, 0, 0, 0, a3, 0]
[ L4, 0, -L3, 0, 0, -a4]
[ 0, 0, 0, 0, a5, 0]
[ L5, 0, 0, 0, 0, -a6]
Final Transformation
0 0 0 0 1.5708 0
Tool
0 0 0 0 0 0
PUMA560
Figura 13: Puma560
\* MERGEFORMAT (.)312
>> scm_puma560
=========================================================
Robot 'puma560' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, 0, a1, 0, 0]
[ 0, -L1, 0, 0, -a2, 0]
[ L2, 0, 0, 0, -a3, 0]
[ L3, 0, L4, a4, 0, 0]
[ 0, 0, 0, 0, -a5, 0]
[ 0, 0, 0, a6, 0, 0]
Final Transformation
0 0 0 0 0 0
Tool
0 0 0 0 0 0
PUMA600
Figura 14: Puma600
\* MERGEFORMAT (.)313
>> scm_puma600
=========================================================
Robot 'puma600' ==> RRRRRR
=========================================================
SCM Joint Parameters
X Y Z A B C
[ 0, 0, L0, a1, 0, 0]
[ 0, -L1, 0, 0, -a2, 0]
[ L2, 0, 0, 0, -a3, 0]
[ 0, 0, -L3, -a4, 0, 0]
[ 0, 0, 0, 0, -a5, 0]
[ 0, 0, -L4, -a6, 0, 0]
Final Transformation
0 0 0 0 0 3.1416
Tool
0 0 0 0 0 0
Agora, um pequeno esclarecimento sobre :
A razão é que a principal ferramenta, o arquivo-M SCM, é um pouco exigente!
Para juntas prismáticas as únicas possibilidades são:
\* MERGEFORMAT (.)314
Juntas rotativas não admitem valores de offset:
\* MERGEFORMAT (.)315
Devido a ausência de variáveis de junta, transformações do tipo são admitidas apenas no frame Transformação Final(FT). Uma mensagem de erro será emitida nos casos onde este detalhe não for observado.
Resumindo, é como se o Sistema Coordenado Móvel fosse conduzido à última variável de junta da cadeia cinemática apenas por translações. A partir daí (FT), as rotações são permitidas para o correto "acoplamento" com o sistema coordenado final.
Se for permitido ao Sistema Coordenado Móvel realizar rotações e translações apenas sobre os eixos X e Z ( e ), com a exigência de que o eixo Z coincida exatamente com os eixos de giro ou de deslocamento das juntas, obteremos os parâmetros de Denavit & Hartenberg de uma forma simples. O "toolbox SCM" provê um conversor de parâmetros SCM para DH denominado SCM2DH e um arquivo auxiliar DHCONV para o tratamento de operações básicas.
3.1.1 – REFERÊNCIA RÁPIDA
Tabela 1
SCM TOOLBOX |
|
D&H conversões |
|
Operador Geométrico |
|
Transformação Homogênea p/ Matriz Jacobiana |
|
Rotação homogênea sobre o eixo X |
|
Rotação homogênea sobre o eixo Y |
|
Rotação homogênea sobre o eixo Z |
|
Translação homogênea sobre o eixo X |
|
Translação homogênea sobre o eixo Y |
|
Translação homogênea sobre o eixo Z |
|
Auxiliar: Cinemática Inversa |
|
Cria vetores numéricos formatados de variáveis de junta |
|
Valores simbólicos (sym) p/ Valores numéricos (double) |
|
Parâmetros SCM p/ Parâmetros D&H modificados |
|
Sistema Coordenado Móvel (Cinemática de manipuladores) |
|
SCM_MENU1 |
Auxiliar: Demonstração do método SCM |
SCM_MENU2 |
Auxiliar: Demonstração do método SCM |
SCM_MENU3 |
Auxiliar: Demonstração do método SCM |
SCMDEMO |
Demonstração do método SCM |
Notação simplificada: |
|
SCM_manipulador |
Script (modelo de um manipulador) |
FIG_manipulador |
Figura.bmp |
Uma maneira simples de se começar a utilizar o "toolbox SCM", é digitar no prompt de comandos do MATLAB:
>> scmdemo
Figura 15: Menu de acesso aos modelos
Qualquer modelo selecionado levará a um novo menu, que exceto pela descrição do manipulador, é comum para todos:
Figura 16: Opções disponíveis para verificação
Pode-se também utilizar os arquivos-M contidos na Tabela 1 de forma individual, sempre após o carregamento de um modelo (script). Segue uma breve descrição de como utilizá-los:
SCM
>> S0 = scm (manipulator, 0)
>> S1 = scm (manipulator, 1)
>> S2 = scm (manipulator, 2)
>> S3 = scm (manipulator, -1)
>> Si = scm (manipulator, )
>> Si = scm (manipulator, )
SCM2DH
DHCONV
>> DH = dhconv (DH)
ou
>> DH = dhconv (DH, 'exc')
>> SDH = dhconv (DH, 'm2s')
>> MDH = dhconv (DH, 's2m')
>> H = dhconv (DH, 'm2h')
>> H = dhconv (DH, 's2h')
H2J
>> J0 = h2j (H, manipulator)
ou
>> J0 = h2j (H, )
>> Jn = h2j (H, manipulator, 'n')
ou
>> Jn = h2j (H, , 'n')
HRX
HRY
HRZ
HTX
HTY
HTZ
IK2Q
>> q = ik2q(Si,'rad')
>> q = ik2q(Si,'deg')
GEO
QRAND
S2D
SCZIP
3.1.2 – ALGORITMOS
Aplicação direta de e .
A função foi escrita baseada no arquivo-M "IKINE" (the Robtics Toolbox for MATLAB), de autoria de Peter I. Corke, cuja solução é computada interativamente usando-se a pseudo-inversa da matriz jacobiana do manipulador.
Alterações efetuadas:
Velocidade no espaço das juntas
\* MERGEFORMAT (.)316
Velocidade no espaço cartesiano
\* MERGEFORMAT (.)317
A matriz jacobiana relaciona e :
\* MERGEFORMAT (.)318
com k indicando o frame de representação e será visualizada com o seguinte formato:
\* MERGEFORMAT (.)319
Apesar da aparência de , podemos montar cada coluna de sem diferenciar qualquer matriz de transformação homogênea. Relembrando que cada frame de dados (1 x 6) de "parâmetros SCM" admite apenas uma variável de junta , o respectivo vetor velocidade (angular ou linear) pode ser encontrado através de uma simples inspeção:
\* MERGEFORMAT (.)320
Uma nova verificação sobre nos permitirá obter o vetor velocidade para cada frame do manipulador de Stanford:
\* MERGEFORMAT (.)321
De maior interesse, entretanto, é o vetor unitário .
A notação genérica acima não nos permite distinguir entre juntas rotativas e prismáticas. Um pequeno ajuste faz-se necessário para corrigir este inconveniente:
Vetor unitário para uma junta rotativa
Vetor unitário para uma junta prismática
As colunas da matriz jacobianasão obtidas das seguinte forma:
\* MERGEFORMAT (.)322
\* MERGEFORMAT (.)323
Conforme o modelo da junta, ou será substituído pelo vetor em .
O vetor posição para os dois casos acima, foi obtido das transformações homogêneas:
foi utilizada em .
Vide .
Segue fielmente o proposto em . A matriz contém toda a informação necessária para descrever a posição e a orientação do frame [FT] relativo ao frame [0]. Então, a derivada desta matriz conterá toda a informação necessária para descrever a velocidade linear e angular do frame [FT] relativo ao frame [0]. Exatamente o necessário para descrever .
A velocidade linear é obtida diretamente e a velocidade angular, através da conhecida relação :
\* MERGEFORMAT (.)324
Uma grande quantidade de material valioso sobre robótica aborda este tema ou o torna uma peça imprescindível sem a qual não é possível seguir adiante. O "método SCM" pode auxilia-lo na determinação dos parâmetros DH para uma vasta gama de manipuladores, seja de uma forma intuitiva com o auxílio de lápis e papel, ou utilizando o arquivo-M SCM2DH . Sobre este último, gostaria de salientar, que algumas restrições em SCM são permitidas em DH:
SCM2DH fornece os dados no formato modificado : - Cada frame começa com uma transformação
homogênea sobre o eixo X e termina com uma transformação homogênea sobre o eixo Z .
Utilizando DHCONV os parâmetros podem ser visualizados no formato standard .
Espero que você leitor, esteja convencido como eu, de que realmente podemos dispor os sistemas coordenados na estrutura dos robôs de uma forma aleatória. A "viagem" do Sistema Coordenado Móvel do frame de referência ao frame final pode ser realizada de diferentes maneiras e com uma única regra a ser imposta:
Sob este ponto de vista, considero o conjunto de regras para a obtenção dos parâmetros DH, um caso particular do "método SCM" que possui apenas uma vantagem:
Por favor, não seja muito exigente com o "toolbox SCM". Considere-o como uma tentativa de expressar o "método SCM" em sua forma mais simples, utilizando apenas elementos já conhecidos.
6 – AGRADECIMENTOS
A Deus, pelo dom maravilhoso de aprender!
A todos os que partilham o saber!
Reinaldo M. do Nascimento
Técnico em Eletrotécnica – CEFET-MG
Técnico em Eletrônica – COTEMIG-MG
reinaldomn[arroba]terra.com.br
|
|