TUTORIAL – ROBOTICS TOOLBOX
1! INTRODUÇÃO
!
! Tutorial referente à Toolbox de robótica para Matlab desenvolvida por Peter Corke
que está disponível sob licença LGPL. Essa Toolbox permite a modelagem e controle de
robôs industriais e facilita o aprendizado dos parâmetros de Denavit-Hartenberg para o
estudo acadêmico.
2! INSTALAÇÃO
!
! Deve-se! fazer!o! download!mediante! cadastro! no! site: ([Link]
Robotics_Toolbox.html).! O! arquivo! obtido! deve!ser extraído, resultando na
pasta ʻʼrobotʼʼ que deve ser movida para a pasta de trabalho do Matlab (usualmente Meus
Documentos/MATLAB).
! Uma vez movida a pasta, deve-se abrir o Matlab e adicionar tal pasta para que faça
parte da área de trabalho do Matlab de forma definitiva, para isso deve-se acessar o
menu File -> Set Path...
Figura 1 – Adicionando-se diretório padrão no Matlab.
! Em seguida seleciona-se a opção ʻʼAdd Folder...ʼʼ e busca-se a pasta ʻʼrobotʼʼ
extraída anteriormente. Após confirmar, a pasta irá aparecer na lista de diretórios padrão,
para concluir a adição basta clicar no botão ʻʼSaveʼʼ.
Figura 2 – Confirmando adição da pasta.
ARTHUR SCHULER DA IGREJA! 1
3 PLOTAR UM ROBÔ MODELADO
A modelagem dos robôs através dos parâmetros de Denavit-Hartenberg
!seguem
Pode-se fechar aordem:
a seguinte janela em seguida.
3! PLOTAR UM ROBÔ MODELADO
! A modelagem dos robôs através dos parâmetros de Denavit-Hartenberg seguem a
seguinte ordem (exemplo):
Link ALFAi Ai Өi Di
Figura 3 – Exemplo de robô com 2 graus de liberdade.
1 0 1 Ө1 0
Nota-se
2 que se trata
0 de um robô com1 2 juntas rotacionais
Ө2 em função0 da
grandeza ! estar expressa como variável.
* No manual que acompanha a Toolbox a ordem dos parâmetros está demonstrada como
(am alfa, d, theta)
Deve-se sendo que
descrever estájunta
cada incorreto.
como um vetor:
!
!>> L1=link([0
Nota-se que 1 0se trata
0 0], de um robô com 2 juntas rotacionais em função da grandeza Ө
'standard')
estar expressa como variável. Deve-se descrever cada junta como um vetor:
>> L2=link([0 1 0 0 0], 'standard')
>> L1=link([0 1 0 0 0], 'standard')
Onde 1 as
>> L2=link([0 4 'standard')
0 0 0], primeiras posições do vetor indicam os parâmetros
cinemáticos e o 5 indica se a junta é rotacional (0) ou prismática (1).
! Onde as 4 primeiras posições do vetor indicam os parâmetros cinemáticos e a 5
indica se a junta
Uma vez édeclaradas
rotacional (0) ou prismática
as juntas, faz-se (1). O parâmetro
a união ʻstandardʼ demonstra que
de todas:
se está utilizando a notação padrão de D&H.
!>> r=robot({L1
Uma vez declaradas
L2}) as juntas, faz-se a união de todas:
>> r=robot({L1 L2}); a declaração do robô:
Para verificar
!>> r Para verificar a declaração do robô:
>> r Obtendo-se:
r=
noname (2 axis, RR)
grav = [0.00 0.00 9.81] standard D&H parameters
alpha A theta D R/P
0.000000 1.000000 0.000000 0.000000 R (std)
0.000000 1.000000 0.000000 0.000000 R (std)
! Ou seja, indica-se que o robô tem 2 eixos, ambos rotacionais, é demonstrada a
matriz de parâmetros D&H, que a gravidade será considerada como 9.81 e está
!"#$%"&'($%)*"&+,&-."*/,& 01.23,&4&
localizada
! no eixo ʻʼzʼʼ.
! Para plotar o primeiro robô no espaço de trabalho:
>> plot(r, [0 0])
ARTHUR SCHULER DA IGREJA! 2
>> plot(r,Para
[0 0])
plotar o primeiro robô no espaço de trabalho:
>> plot(r, [0 0])
Figura 4 – Robô com 2 graus de liberdade plotado.
Figura
Figura 44 –– Robô com 22 graus
Robô com grausde
deliberdade
liberdadeplotado.
plotado.
Os valores dos vetores indicam a posição angular de cada junta, por
! Os valores
exemplo, Os dos
para vetores
valores
plotardos indicam
coma
vetores
o robô aposição
indicam a angular
segunda junta de
posição cada
angular
com junta,
de cada
diferença por exemplo,
junta,
angular por90para
de
plotar oexemplo,
robô compara
a segunda
plotar o junta comadiferença
robô com segunda angular
junta comdediferença
90 grausangular
em relação
de 90à
graus em relação à primeira:
primeira:
graus em relação à primeira:
>> plot(r, [0 90])
>> plot(r,
>>[0 90]) [0 90])
plot(r,
Figura 5 – Mesmo robô com deslocamento na segunda junta.
Figura 5 – Mesmo robô com deslocamento na segunda junta.
Figura 5 – Mesmo robô com deslocamento na segunda junta.
4! GERAÇÃO DE TRAJETÓRIA PARA O ROBÔ MODELADO
! Considerando-se o robô modelado no exemplo anterior, deve-se declarar o vetor
com as!"#$%"&'($%)*"&+,&-."*/,&
posições iniciar para as juntas: 01.23,&4&
!"#$%"&'($%)*"&+,&-."*/,&
! 01.23,&4&
!
>> posic_inicial=[0,0];
! Em seguida, declarar o vetor com as posições finais para cada junta:
>> posic_final=[pi/2,-pi/2];
! Ou seja, a primeira junta de rotação terá um movimento de 0 até 90 graus e a
segunda junta terá um movimento de 0 até -90 graus.
! Em seguida deve-se usar o comando ʻʼjtrajʼʼ para gerar a trajetória para cada junta:
ARTHUR SCHULER DA IGREJA! 3
Em seguida deve-se usar o comando ‘’jtraj’’ para gerar a trajetória para
cada junta:
>> trajetoria=jtraj(posic_inicial,posic_final,400);
>> trajetoria=jtraj(posic_inicial,posic_final,400);
Onde o último parâmetro (400) denota o tempo de movimento, ou seja,
! quando
Onde o menor o parâmetro
último parâmetro maisdenota
(400) veloz o
será a simulação.
tempo de movimento, ou seja, quando
menor o parâmetro mais veloz será a simulação.
! Para visualizar
Para visualizar o robôomovimentando
robô movimentando executa-se
executa-se o comando:
o comando:
>> plot(r,trajetoria);
>> plot(r,trajetoria);
Figura 66 –– Posição
Figura Posição inicial
inicial do
do robô.
robô.
!"#$%"&'($%)*"&+,&-."*/,& 01.23,&4&
!
Figura 7 – Posição final do robô.
Figura 6 – Posição final do robô.
5! EXEMPLO DE MODELAGEM
!
! Segue exemplo de modelagem utilizando-se da metodologia de D&H para um robô
com 4 graus de liberdade conforme visto na Figura (8).
ARTHUR SCHULER DA IGREJA! 4
Figura 8 – Robô proposto para a modelagem.
! Trata-se de um robô com volume de trabalho cilíndrico, com um movimento
rotacional na base (q1) seguido de um movimento prismático na horizontal (q2) seguido
de um movimento prismático na vertical (q3) e que possui um movimento rotacional no
efetuador (q4). Para efeito de simulação considerou-se a altura da estrutura (distância
entre x0 e x1 como tendo 2 unidade de comprimento).
! O sistemas de coordenadas foram posicionados respeitando as seguintes regras:
- Eixo ʻʼzʼʻposicionado ao longo do eixo de movimento, ou seja, para movimentos
rotacionais é o eixo onde imagina-se o motor que realizará o movimento acoplado. Para
movimentos prismáticos é o eixo ao longo da onde acontece o estiramento do
mecanismo, por exemplo, para um cilindro pneumático o eixo ʻʼzʼʻ está na direção da
haste.
- Eixo ʻʼxʼʻposicionado perpendicular ao eixo ʻʼzʼʻarbitrariamente para o sistema de
coordenadas da origem. Para demais sistemas de coordenadas, deve ficar
perpendicular ao eixo ʻʼzʼʼ do movimento anterior e também perpendicular ao eixo ʻʼzʼʼdo
movimento atual. Para casos de eixos ʻʼzʼʼem paralelo, copia-se a direção do eixo ʻʼxʼʼdo
sistema de coordenadas anterior;
- Eixo ʻʼyʼʻposicionado perpendicular aos eixos ʻʼzʼʼ e ʻʼxʼʼ;
5.1! MODELAGEM D&H
!
! A modelagem segue o algoritmo de D&H conforme visto na página 204 do livro
Princípios de Mecarônica de João Maurício Rosário, presente em anexo neste
documento. O resultado da modelagem é visto na tabela que segue:
ARTHUR SCHULER DA IGREJA! 5
LINK ALFAi Ai Өi Di
1 -pi/2 0 Ө1 1
2 -pi/2 0 0 d2
3 0 0 0 d3
4 0 0 Ө4 0
! Segue declaração do robô no Matlab:
%alpha a theta D R/P
L{1} = link([-pi/2 0 0 2 0],'standard');
L{2} = link([-pi/2 0 0 0 1],'standard');
L{3} = link([0 0 0 0 1],'standard');
L{4} = link([0 0 0 0 0],'standard');
>> modelo = robot(L,'Robô cilíndrico');
! Segue declaração da geração de trajetória, pode-se observar que apenas um
movimento é realizado por vez:
q1 = [0 0 0 0];
q2 = [pi/2 0 0 0];
q3 = [pi/2 pi/2 0 0];
q4 = [pi/2 pi/2 pi/2 0];
q5 = [pi/2 pi/2 pi/2 pi/2];
[u1]=JTRAJ(q1, q2, 50)
[u2]=JTRAJ(q2, q3, 50)
[u3]=JTRAJ(q3, q4, 50)
[u4]=JTRAJ(q4, q5, 50)
! Plotar a animação do modelo:
figure
plot(modelo, u1);
plot(modelo, u2);
plot(modelo, u3);
plot(modelo, u4);
ARTHUR SCHULER DA IGREJA! 6
Figura 9 – Robô cilíndrico ao fim da simulação.
ARTHUR SCHULER DA IGREJA! 7
ANEXO 1 - ALGORITMO DE DENAVIT-HARTENBERG
ARTHUR SCHULER DA IGREJA! 8