Página principal | Anterior | Siguiente

Cinemática de manipuladores (página 2)

Reinaldo M. do Nascimento

3 – O MÉTODO SCM

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:

  • Os sistemas coordenados de referência (World) e o final, onde será instalada a ferramenta. Ambos ortogonais e diretos: - o sentido positivo dos ângulos é medido pela convenção usual (sentido anti-horário) e que é ilustrado na Figura 3-I;
  • A variável de junta
  • Os eixos de giro das juntas () com as setas indicando o sentido positivo de rotação (Figura 3-II: Regra da Mão Direita) e a representação de uma junta prismática (
);
  • A identificação dos elos (letra "L") é totalmente livre, sem nenhum vínculo com a numeração dos frames;
  • A figura é representada com as juntas rotativas em posição de zero matemático (
).

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ô:

  • Cada frame admitirá apenas uma variável
  • O sinal das variáveis dependerá de que o sentido dos eixos do Sistema Coordenado Móvel coincida ou não, com o sentido dos eixos de giro ou de deslocamento das juntas;
  • Transformações ocorridas entre a última junta e o sistema coordenado final, darão origem ao frame denominado Transformação Final (FT) que, como será visto, receberá um tratamento diferenciado em relação aos frames originados pelas variáveis de junta.

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 :

  • Se as três formas de representação levam ao mesmo resultado, porque as mudanças nos frames 3 e 4?

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

DHCONV

D&H conversões

GEO

Operador Geométrico

H2J

Transformação Homogênea p/ Matriz Jacobiana

HRX

Rotação homogênea sobre o eixo X

HRY

Rotação homogênea sobre o eixo Y

HRZ

Rotação homogênea sobre o eixo Z

HTX

Translação homogênea sobre o eixo X

HTY

Translação homogênea sobre o eixo Y

HTZ

Translação homogênea sobre o eixo Z

IK2Q

Auxiliar: Cinemática Inversa

QRAND

Cria vetores numéricos formatados de variáveis de junta

S2D

Valores simbólicos (sym) p/ Valores numéricos (double)

SCM2DH

Parâmetros SCM p/ Parâmetros D&H modificados

SCM

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

SCZIP

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

  • Cinemática Direta

>> S0 = scm (manipulator, 0)

  • Jacobiana (J0)

>> S1 = scm (manipulator, 1)

  • Jacobiana (Jn)

>> S2 = scm (manipulator, 2)

  • Transformação Inversa = (Cinemática Direta) ^ -1

>> S3 = scm (manipulator, -1)

  • Cinemática Inversa (manipulador, destino)

>> Si = scm (manipulator, )

  • Cinemática Inversa (manipulador, destino, origem)

>> Si = scm (manipulator, )

SCM2DH

  • >> DH = scm2dh(manipulator)

DHCONV

  • Modificados p/ Clássicos ou Clássicos p/ Modificados

>> DH = dhconv (DH)

ou

>> DH = dhconv (DH, 'exc')

  • Modificados p/ Clássicos

>> SDH = dhconv (DH, 'm2s')

  • Clássicos p/ Modificados

>> MDH = dhconv (DH, 's2m')

  • Modificados p/ Transformação Homogênea

>> H = dhconv (DH, 'm2h')

  • Clássicos p/ Transformação Homogênea

>> H = dhconv (DH, 's2h')

H2J

  • J0

>> J0 = h2j (H, manipulator)

ou

>> J0 = h2j (H, )

  • Jn

>> Jn = h2j (H, manipulator, 'n')

ou

>> Jn = h2j (H, , 'n')

HRX

  • >> HR = hrx(c)
  • >> HR = hrx(c,0)

HRY

  • >> HR = hry(b)
  • >> HR = hry(b,0)

HRZ

  • >> HR = hrz(a)
  • >> HR = hrz(a,0)

HTX

  • >> HT = htx(x)

HTY

  • >> HT = hty(y)

HTZ

  • >> HT = htz(z)

IK2Q

  • >> q = ik2q(Si)

>> q = ik2q(Si,'rad')

>> q = ik2q(Si,'deg')

GEO

  • >> Frame = geo(H)
  • >> H = geo(Frame)
  • >> H = geo (A, B)

QRAND

  • > q = qrand (manipulator)
  • >> q = qrand (manipulator,
)

S2D

  • >> D0 = s2d(M,
)
  • >> D0 = s2d(M,
,
'var')

SCZIP

  • >> SC0 = sczip (M)
  • >> SC0 = sczip (M, manipulator)

3.1.2 – ALGORITMOS

  • Cinemática Direta e (Cinemática Direta) ^ -1:

Aplicação direta de e .

  • Cinemática Inversa:

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:

    1. Não utilização de "máscaras" em manipuladores com menos de 6 DOF: - Em algumas configurações muito próximas às regiões singulares, a solução pode não convergir. Alterando-se o ponto de origem com pequenos incrementos nas juntas críticas, pode-se chegar a uma solução convergente.
    2. Aumento da variável stol de 1e-12 para 1e-6: - Outro artificio para a solução de alguns casos específicos de não convergência e que não interferiu na confiabilidade dos dados calculados.
    3. A solução é conferida: - Se forem atribuídos valores muito elevados para os elos, a solução pode conter discrepância para os valores de orientação.
  • Matriz Jacobiana
    • Relações de velocidade na extremidade do manipulador (FT)

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:

    1. Frame de representação 0 (Base):
    2. \* MERGEFORMAT (.)322

  1. Frame de representação FT (Ferramenta):

\* 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:

    1. transformação utilizada em . Vide .
que após ser "simplificada":

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

  • Parâmetros DH

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:

    1. Valores de offset não apenas para juntas rotativas, mas também para as prismáticas;
    2. Frames sem variáveis de junta não apenas no final (ferramenta) como também no início (base) e em posições intermediárias dependendo é claro, da complexidade do modelo.

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 .

4 – CONCLUSÃO

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:

  • Que se oriente exatamente como o frame final.

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:

  • As implicações de natureza computacional já estão bem fundamentadas.

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.

5 – LINKS

  • Vijay Kumar
  • J. M. Hollerbach
  • Jacob Rosen
  • P. I. Corke
  • Vítor Santos
  • Leonardo Tavares
  • Alberto Adade Filho

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



Página principal | Anterior | Siguiente



As opiniões expressas em todos os documentos publicados aqui neste site são de responsabilidade exclusiva dos autores e não de Monografias.com. O objetivo de Monografias.com é disponibilizar o conhecimento para toda a sua comunidade. É de responsabilidade de cada leitor o eventual uso que venha a fazer desta informação. Em qualquer caso é obrigatória a citação bibliográfica completa, incluindo o autor e o site Monografias.com.