TUTORIAL – ROBOTICS TOOLBOX 1
INTRODUÇÃO
Tutorial referente à Toolbox Toolbox de robótica para Matlab desenvolvida por Peter Corke que está disponível sob licença LGPL. Essa Toolbox 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: (http://petercorke.com/ Robotics_Toolbox.html). 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 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
Pode-se fechar a 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
1
0
1
!1
0
2
0
1
!2
0
* No manual que acompanha a Toolbox a ordem dos parâmetros está demonstrada como (am alfa, d, theta) sendo que está incorreto. Nota-se que se trata de um robô com 2 juntas rotacionais em função da grandeza estar expressa como variável. Deve-se descrever cada junta como um vetor:
!
>> L1=link([0 1 0 0 0], 'standard') >> L2=link([0 1 0 0 0], 'standard') Onde as 4 primeiras posições do vetor indicam os parâmetros cinemáticos e a 5 indica se a junta é rotacional (0) ou prismática (1). O parâmetro ʻstandardʼ demonstra que se está utilizando a notação padrão de D&H. Uma vez declaradas as juntas, faz-se a união de todas: >> r=robot({L1 L2}); Para verificar a declaração do robô: >> r r=
noname (2 axis, RR) grav = [0.00 0.00 9.81] alpha
A
theta
standard D&H parameters 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á localizada no eixo ʻʼzʼʼ. Para plotar o primeiro robô no espaço de trabalho: >> plot(r, [0 0]) ARTHUR SCHULER DA IGREJA
2
Figura 4 – Robô com 2 graus de liberdade plotado. Os valores dos vetores indicam a posição angular de cada junta, por exemplo, para plotar o robô com a segunda junta com diferença angular de 90 graus em relação à primeira: >> plot(r, [0 90])
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: >> 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
>> trajetoria=jtraj(posic_inicial,posic_final,400); Onde o último parâmetro (400) denota o tempo de movimento, ou seja, quando menor o parâmetro mais veloz será a simulação. Para visualizar o robô movimentando executa-se o comando: >> plot(r,trajetoria);
Figura 6 – Posição inicial do robô.
Figura 7 – 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:
L{1} L{2} L{3} L{4}
= = = =
%alpha link([-pi/2 link([-pi/2 link([0 link([0
a 0 0 0 0
theta 0 0 0 0
D 2 0 0 0
R/P 0],'standard'); 1],'standard'); 1],'standard'); 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 q2 q3 q4 q5
= = = = =
[0 [pi/2 [pi/2 [pi/2 [pi/2
0 0 pi/2 pi/2 pi/2
[u1]=JTRAJ(q1, [u2]=JTRAJ(q2, [u3]=JTRAJ(q3, [u4]=JTRAJ(q4,
0 0 0 pi/2 pi/2
q2, q3, q4, q5,
0]; 0]; 0]; 0]; pi/2];
50) 50) 50) 50)
Plotar a animação do modelo: figure plot(modelo, plot(modelo, plot(modelo, plot(modelo,
u1); u2); u3); u4);
ARTHUR SCHULER DA IGREJA
6
Figura 9 – Robô cilíndrico ao fim da simulação. 5.2 COMANDO DRIVEBOT Outro recurso interessante provido pela Toolbox é o comando drivebot que permite comandar diretamente o robô através de uma interface interativa. Basta declarar os parâmetros cinemáticos do modelo e movimentá-lo. Exemplo prático para o robô anterior:
L{1} L{2} L{3} L{4}
= = = =
%alpha link([-pi/2 link([-pi/2 link([0 link([0
a 0 0 0 0
theta 0 0 0 0
D 2 0 0 0
R/P 0],'standard'); 1],'standard'); 1],'standard'); 0],'standard');
>> modelo = robot(L,'Robô cilíndrico');
Em seguida basta utilizar o comando para que o robô seja plotado e a interface de comando apareça no canto da tela. >> drivebot(modelo);
ARTHUR SCHULER DA IGREJA
7
Figura 10 – Painel de comando ao lado do robô plotado. Caso o usuário mova os valores de ʻʼqʼʼ, são geradas tragetórias para cada eixo e acompanha-se em tempo real a movimentação. Nos quadros ʻʼxʼʼ, ʻʼyʼʼ e ʻʼzʼʼ pode-se verificar a posição espacial do efetuador. Caso o robô tenha alguma junta rotacional em seu corpo ou efetuador que causem inclinação, os parâmetros ʻʼaxʼʼ, ʻʼayʼʼ e ʻʼazʼʼ indicam a orientação espacial do efetuador.
Figura 11 – Robô após execução do movimento.
ARTHUR SCHULER DA IGREJA
8
ANEXO 1 - ALGORITMO DE DENAVIT-HARTENBERG
ARTHUR SCHULER DA IGREJA
9