-
Departamento de Engenharia Elétrica
CONTROLE DE SISTEMAS ROBÓTICOS COOPERATIVOS
Aluno: Gustavo Bertagna Peixoto Barbosa
Orientador: Antonio Candea Leite
Introdução
Na área de robótica existem tarefas que são impossíveis de serem
executadas por
um sistema robótico simples. Alguns exemplos são: manipulação de
cargas muito pesadas
e manipulação de objetos flexíveis. Com isso, quando é
implementado um sistema
robótico cooperativo [1], essas tarefas se tornam fáceis de
serem executadas. Esses
sistemas consistem em dois robôs manipuladores que atuam de
forma conjunta e síncrona
para a realização de uma determinada tarefa. Esse sistema
robótico, é constituído por uma
cadeia cinemática fechada, onde todas as juntas são ativas (é
possível atuar em todas elas)
e é considerado que há contato continuo do efetuador com o
objeto manipulado. Em geral,
esses sistemas são redundantes, ou seja, possuem mais graus de
liberdade do que é
necessário para a realização de uma determinada tarefa. Esse
acréscimo de graus de
liberdade, acrescenta maior destreza, evita situações de
singularidade, evita obstáculos do
espaço de trabalho, minimiza o consumo de energia, entre outras
vantagens.
Para a implementação de sistemas robóticos cooperativos, foram
estudadas algumas
metodologias de modelagem e controle clássicas desenvolvidas
para robôs manipuladores
simples e avaliou-se como elas podem ser aplicadas para robôs
cooperativos, capazes de
executar tarefas de manipulação bi-manual de objetos [1]. Para
isso, utilizaram-se os
conceitos de cinemática direta e cinemática diferencial, para
obter respectivamente a pose
e a velocidade do objeto manipulado em relação à base do robô,
bem como as matrizes
Jacobianas de cada manipulador para realizar o controle do
sistema robótico completo
[2]. A estratégia de controle cooperativo que foi investigada é
baseada em um algoritmo
de controle cinemático com restrições de velocidade e na
separação do espaço das juntas
em juntas ativas (ou atuadas) e passivas (não atuadas) [3]. Além
disso, utilizou-se o
ambiente de programação Matlab/Simulink para realizar simulações
numéricas do algoritmo de controle cinemático de posição e
orientação de 2 (dois) robôs manipuladores
de 3-DoF (degrees of freedom) movendo um objeto. A verificação e
validação da solução
proposta para um robô manipulador simples foi realizada em um
robô PhantomX Pincher
de 4-DoF, para tarefas de rastreamento de trajetórias,
utilizando o Matlab e o ROS (Robot
Operating System) como ambiente de programação.
Metodologia
Para realizar a manipulação de um objeto utilizando um sistema
robótico
cooperativo, utilizou-se alguns conceitos de robótica, como
cinemática direta, cinemática
diferencial e controle cinemático. O primeiro conceito, o de
cinemática direta, serve para
encontrar a posição do efetuador (ferramenta) em relação a um
referencial que será
chamado de base, em função dos ângulos de cada junta. Para isso,
usa-se a convenção de
Denavit- Hartenberg, que cria uma transformação homogênea entre
as coordenadas do
efetuador do robô e a sua base [2]. Será feito o cálculo de
cinemática direta de um sistema
robótico nas sessões posteriores com dois manipuladores 3-DoF
(degrees of freendom).
Depois do cálculo da cinemática direta, será utilizado o segundo
conceito dito
acima, que é o da cinemática diferencial. Esse conceito, serve
para achar a
correspondência das velocidades dos efetuador em relação as
velocidades das juntas.
Essa correspondência é feita por meio de uma matriz chamada de
Jacobiana. Essa matriz,
é possível ser calculada de duas formas, como será visto nas
outras sessões. Essas
maneiras, são chamadas de geométrica e analítica. O jacobiano
também serve para
-
Departamento de Engenharia Elétrica
calcular a manipulabilidade do robô. Esse conceito, serve para
dizer se um robô está em
uma região de singularidade ou não. Caso ele esteja, o robô se
torna não controlável.
Por último, tem-se o conceito de controle cinemático. Dessa
maneira, é projetado
um sinal de controle de posição e orientação em função das
velocidades das juntas de
ambos os robôs . Nessa abordagem, será assumido que os robôs
possuem alta taxa de
redução nas engrenagens das juntas, e que as tarefas podem ser
executadas com
velocdades baixas e acelerações lentas. Com isso, é possível
desprezar os efeitos
dinâmicos do robô durante a execução da tarefa. Dessa maneira,
também é assumido que
existe uma malha interna de controle de velocidade que possui
alto ganho. Desse jeito, é
possível projetar um sinal de controle que seja aproximadamente
igual as velocidades das
juntas.
Após calcular todas as equações necessárias, será feito uma
simulação do controle
cinemático [3]. Para realizar essa simulação, foram utilizados
os ambientes de
programação Matlab/Simulink. Esse algoritmo simula o controle
cinemático de dois
robôs manipuladores planares 3-DoF (degrees of freedom) movendo
um objeto. O
programa é divido em diversas funções, que são a inicialização
dos parâmetros dos
manipuladores, o cálculo da cinemática direta, o cálculo de
cinemática diferencial e o
controle cinemático, que é feito por meio do Simulink. Após
rodar o algoritmo de
controle, são mostrados gráficos que dizem se os robôs estão
conseguindo manipular o
objeto de forma cooperativa seguindo uma trajetória
especificada. Dessa maneira, serão
explicadas cada parte mencionada acima, detalhadamente, para um
maior entendimento
delas.
Após a simulação, foi verificado a validação da solução proposta
para um robô
manipulador simples, que é o PhantomX Pincher de 4-DoF.
Utilizou-se esse robô para
fazer o rastreamento de uma trajetória. Dessa maneira, como
ambiente de programação,
utilizou-se novamente o Matlab/Simulink, aliado com ROS (Robot
Operating System).
Com isso, os conceitos de robótica listados acima: cinemática
direta, cinemática
diferencial e de controle cinemático foram ampliados para
manipuladores de 4-DoF. Após
a realização do controle, foram feitas análises de gráficos
gerados pelo Matlab. Dessa
maneira, foi possível verificar o desempenho e a eficácia da
estratégia de controle.
Hardware
Como dito acima, foi utilizado um robô PhantomX Pincher. Esse
robô possui 5-
DoF, contudo, um grau de liberdade está na ferramenta, então
para uma abordagem
cinemática ele possui 4-DoF. É possível verificar uma imagem
desse robô a seguir:
Figura 1 – PhantomX Pincher AX-12 com eixos na base e no
efetuador
-
Departamento de Engenharia Elétrica
As características mecânicas do PhantomX Pincher podem ser
vistas na tabela a
seguir:
Peso 550 g
Alcance Vertical 350 mm
Alcance Horizontal 310 mm
Capacidade de carga para 150 mm 100 g
Capacidade de carga para 200 mm 70 g
Capacidade de carga para 250 mm 40 g
Os atuadores contidos no robô são servomotores do modelo AX-12A
da
Dynamixel. Eles são mecanismo poderosos e rápidos que possuem
300 graus de
movimento. Esses motores possuem um microcontrolador embutido
que faz o controle
de posição angular. Eles também possuem somente 3 fios para
conexão, que faz com que
reduza bastante a fiação do robô. As principais características
desses motores são:
Tensão de operação 12 V
Torque de travamento 15,3 Kg.cm
Velocidade sem carga 59 RPM
Peso 55 g
Dimensões 32 x 50 x 40 mm
Resolução 0,29º
Taxa de redução 1/254
Ângulo de operação 300º Corrente Máxima 900 mA
Corrente de Standby 50 mA
Temperatura de Operação Interna -5ºC a 70º C
Protocolo de Operação TTL Half Duplex Async Serial
Velocidade de comunicação 7343bps ~ 1Mbps
No kit que contém o PhantomX Pincher, também se tem um
microcontrolador
ArbotiX, que é similar a um microcontrolador Arduino ATMEGA644P
de 16 MHz. Ele
pode ser programado em uma linguagem “wiring” e em um ambiente
de programação
que roda no Windows, Linux e no MacOS. Para se comunicar ao
controlador utiliza-se
uma interface USB que aparece como uma porta serial para o
computador conectado. O
ArbotiX possui 64k de memória ROM e uma memória RAM de 4k. Essas
placas são
alimentadas por uma tensão de 12 VDC.
ROS (Robot Operating System)
O ROS é um sistema operativo para robôs como é descrito pelo seu
nome. Ele
possui um framework muito flexível e possui diversas
ferramentas, bibliotecas e
convenções que facilitam as tarefas na programação de um robô.
Esse sistema é baseado
em Linux Ubuntu, onde pode ser programado em C, C++ e em Python.
Ele é importante
para robôs que possuem diversos módulos como câmeras, sensores,
atuadores que
precisam se comunicar entre si. Dessa maneira, por meio do ROS,
é possível ter uma
arquitetura de processamento de dados em paralelo para controlar
o robô. Um exemplo
dessa aplicação, é caso o computador embarcado ao robô precise
fazer cálculos pesados
de processamento de imagem mas não tem configuração suficiente
para isso. Dessa
-
Departamento de Engenharia Elétrica
maneira, é possível criar um nó no ROS em um computador mais
poderoso que se
comunicará através do protocolo TCP/IP com o robô.
Em uma rede com máquinas que estão rodando o ROS, sempre
existirá uma
máquina chamada de mestre. Essa máquina deverá sempre estar
rodando o comando
ROSCORE que irá inicializar todos os serviços necessários para
que os nós do ROS
comuniquem entre si. Um nó no ROS é basicamente um executável,
portanto é possível
ter um nó executando em qualquer máquina da rede. A comunicação
entre nós, é feito
através do protocolo TCP/IP. Cada nó, pode publicar e subscrever
em tópicos. Em outras
palavras, um nó pode tanto escrever valores nessa variável ou
ler os valores dessa
variável. Dessa forma, é que diversos nós podem se comunicar um
com o outro.
Os tópicos podem ser publicados ou subscritos pelos nós. A ação
de publicar, é
similar a ação de escrita em uma variável e a ação de subscrever
é similar a ação de leitura
de uma variável. Além dos conceitos de tópicos e de nós, também
há o conceito de
mensagem no ROS. As mensagens são os próprios dados lidos e
escritos pelos nós nos
tópicos. Ao publicar ou subscrever em um tópico, é preciso
especificar qual tipo de
mensagem será utilizado, ou seja, é preciso especificar qual é o
tipo de dados que serão
escritos ou lidos.
Cinemática Direta
O objetivo da cinemática direta, é calcular a posição e a
orientação do centro de
massa do objeto em função das variáveis das juntas. Já que
inicialmente, é feito uma
simulação com manipuladores planares 3-DoF, é possível utilizar
conceitos básicos de
geometria e álgebra para o cálculo da cinemática direta.
Contudo, já que para
manipuladores mais complexos, como o PhantomX Pincher, é muito
difícil utilizar esses
conceitos, também será usado a convenção de Denavit- Hartenberg
para fazer o cálculo
da cinemática direta. Antes de fazer o cálculo da cinemática
direta, serão estabelecidas
algumas equações de restrição, que são [1]:
𝑝𝑐 = 𝑝01 + 𝑝1𝑐⏟ 𝑅𝑜𝑏ô 1
= 𝑝02 + 𝑝2𝑐⏟ 𝑅𝑜𝑏ô 2
(1)
𝜑𝑐 = 𝜑01 +𝜑1𝑐⏟ 𝑅𝑜𝑏ô 1
= 𝜑02 +𝜑2𝑐⏟ 𝑅𝑜𝑏ô 2
(2)
Sendo:
𝑝0𝑖 є 𝑅3: Vetor posição do efetuador no sistema de coordenadas
do efetuador do i-
ésimo manipulador 𝐸�̅� em relação ao sistema de coordenadas da
base 𝐸0̅̅ ̅.
𝑝𝑖𝑐 є 𝑅3: Vetor posição do objeto manipulado nas coordenadas
𝐸𝑐̅̅ ̅ em relação as
coordenadas do efetuador do i-ésimo manipulador 𝐸�̅�.
𝜑0𝑖 є 𝑅3: Orientação do efetuador no sistema de coordenadas do
efetuador do i-
ésimo manipulador 𝐸�̅� em relação ao sistema de coordenadas da
base 𝐸0̅̅ ̅.
𝜑𝑖𝑐 є 𝑅3: Orientação do objeto manipulado nas coordenadas 𝐸𝑐̅̅ ̅
em relação as
coordenadas do efetuador do i-ésimo manipulador 𝐸�̅�.
É possível ver uma ilustração de um sistema robótico cooperativo
com dois
manipuladores planares com 3-DoF a seguir:
-
Departamento de Engenharia Elétrica
Figura 2 – Sistema robótico cooperativo com robôs planares com
3DoF
Dessa maneira, tem-se que:
𝑥𝑗𝑖: Coordenada x do sistema de coordenadas do eixo da i-ésima
junta do j-ésimo
manipulador robótico.
𝑦𝑗𝑖:Coordenada y do sistema de coordenadas do eixo da i-ésima
junta do j-ésimo
manipulador robótico.
𝜃𝑗𝑖:Ângulo da i-ésima junta do j-ésimo manipulador robótico.
𝑙𝑗𝑖:Comprimento do i-ésimo elo do j-ésimo manipulador
robótico.
𝐸0:Sistema de coordenadas da base.
𝐸𝑐 :Sistema de coordenadas do objeto manipulado.
𝑣𝑖+: Velocidade do i-ésimo efetuador em relação as velocidades
das juntas.
𝑣𝑖−: Velocidade dos pontos de contato do objeto com o i-ésimo
efetuador.
Agora, será calculada a posição do centro de massa do objeto
manipulado que está
no sistema de coordenadas 𝐸𝑐 em relação ao sistemas de
coordenadas da base 𝐸0. Primeiramente, serão utilizados conceitos
de geometria e álgebra para a realização deste
cálculo. Primeiramente, será feita a cinemática direta para o
manipulador robótico 1 e
esse conceito poderá ser estendido para o manipulador robótico
2, de acordo com as
equações (1) e (2). Dessa maneira, começa-se definindo um vetor
posição entre a base e
a primeira junta:
𝑝𝑏⃗⃗⃗⃗ = −𝑙0𝑥0⃗⃗⃗⃗ (3)
Sendo l0 a distância entre a base e o manipulador robótico.
Depois calcula-se o
vetor posição da segunda junta em relação a base. Com isso,
tem-se que:
-
Departamento de Engenharia Elétrica
𝑝01⃗⃗⃗⃗ ⃗⃗ = 𝑝𝑏⃗⃗⃗⃗ + 𝑙11𝑅01𝑥 ⃗⃗⃗ (4) Onde:
𝑅𝑖−1𝑖 : É a matriz de rotação no eixo z da junta i em relação a
junta i-1. Lembrando que a matriz do rotação no eixo z é dada pela
matriz:
[𝑐𝑜𝑠𝜃 −𝑠𝑒𝑛𝜃 0𝑠𝑒𝑛𝜃 𝑐𝑜𝑠𝜃 00 0 1
] (5)
Depois, calcula-se o vetor posição da terceira junta em relação
ao eixo de
coordenadas da base. Dessa maneira, tem-se que:
𝑝02⃗⃗⃗⃗ ⃗⃗ = 𝑝01⃗⃗⃗⃗ ⃗⃗ + 𝑙12𝑅02𝑥 = 𝑝01⃗⃗⃗⃗ ⃗⃗ + 𝑙12𝑅12𝑅01𝑥 (6)
Lembrando que:
𝑅𝑖𝑗 = 𝑅𝑖𝑖+1 ∗ 𝑅𝑖+1𝑗 (7)
Após calcular o vetor posição acima, é possível calcular o vetor
da posição do
efetuador em relação elação ao eixo de coordenadas da base. Com
isso, tem-se que:
𝑝03⃗⃗⃗⃗ ⃗⃗ = 𝑝02⃗⃗⃗⃗ ⃗⃗ + 𝑙13𝑅03𝑥 = 𝑝02⃗⃗⃗⃗ ⃗⃗ + 𝑙13𝑅23𝑅12𝑅01𝑥
(8)
Dessa forma, finalmente é possível calcular o vetor posição do
centro de massa do
objeto manipulado em relação ao eixo de coordenadas da base.
Esse vetor é dado pela
seguinte equação:
𝑝0𝑐1⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ = 𝑝03⃗⃗⃗⃗ ⃗⃗ + 𝑙𝑐2𝑅0𝑐1𝑥 = 𝑝03⃗⃗⃗⃗ ⃗⃗ +
𝑙𝑐2𝑅3𝑐1𝑅23𝑅12𝑅01𝑥 (9)
Para o cálculo do vetor posição do centro de base em relação ao
eixo de coordenadas
da base para o segundo manipulador robótico, utiliza-se as
mesmas equações acima.
Contudo, há uma mudança no sentido do vetor posição da junta da
primeira junta. Esse
vetor fica da seguinte forma:
𝑝𝑏2⃗⃗ ⃗⃗⃗⃗ = 𝑙0𝑥0⃗⃗⃗⃗ (10)
Essa mudança é devido ao vetor posição estar no mesmo sentido do
eixo 𝑥 do sistemas de coordenadas da base. Dessa maneira, tem-se as
seguintes equações:
𝑝04⃗⃗⃗⃗ ⃗⃗ = 𝑝𝑏2⃗⃗ ⃗⃗⃗⃗ + 𝑙21𝑅04𝑥 (11)
𝑝05⃗⃗⃗⃗ ⃗⃗ = 𝑝04⃗⃗⃗⃗ ⃗⃗ + 𝑙22𝑅05𝑥 = 𝑝04⃗⃗⃗⃗ ⃗⃗ + 𝑙22𝑅45𝑅04𝑥
(12)
𝑝06⃗⃗⃗⃗ ⃗⃗ = 𝑝05⃗⃗⃗⃗ ⃗⃗ + 𝑙23𝑅06𝑥 = 𝑝05⃗⃗⃗⃗ ⃗⃗ + 𝑙23𝑅56𝑅45𝑅04𝑥
(13)
𝑝0𝑐2⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ = 𝑝06⃗⃗⃗⃗ ⃗⃗ + 𝑙𝑐2𝑅0𝑐2𝑥 = 𝑝06⃗⃗⃗⃗ ⃗⃗ +
𝑙𝑐2𝑅6𝑐1𝑅56𝑅45𝑅04𝑥 (14)
-
Departamento de Engenharia Elétrica
A orientação do centro de massa do objeto para os manipuladores
robóticos, pode
ser obtida da seguinte forma:
𝜃𝑐1 = 𝜃11 + 𝜃12 + 𝜃13 + 𝜃14 (15)
𝜃𝑐2 = 𝜃21 + 𝜃22 + 𝜃23 + 𝜃24 (16)
Sendo os ângulos 𝜃14 e 𝜃24 , as orientações dos efetuadores dos
manipuladores 1 e 2 respectivamente. Com isso, o vetor posição do
centro de massa do objeto em relação as
coordenadas da base, será dada pela posição absoluta. Essa
posição é dada por:
𝑝𝑎 =
[ 𝑝0𝑐1_𝑥 + 𝑝0𝑐2_𝑥
2𝑝0𝑐1_𝑦 + 𝑝0𝑐2_𝑦
2𝜃𝑐1 + 𝜃𝑐2
2 ]
(17)
Além de utilizar conceitos de álgebra e geometria, também é
possível calcular a
cinemática direta utilizando a convenção de Denavit-Hartenberg
[2]. Esse método criará
uma transformação homogênea de coordenadas entre o efetuador e a
base dos
manipuladores robóticos. A convenção de Denavit-Hartenberg
utiliza quatro parâmetros
para computar a matriz de transformação homogênea entre o
sistema de coordenadas de
uma junta e o sistema de coordenadas da junta anterior. Esses
parâmetros são: distância
entre as juntas no eixo 𝑥 (a), distância entre as juntas no eixo
𝑧 (d), ângulos de rotação das juntas em torno do eixo 𝑥 (α), e
ângulos de rotação das juntas em torno do eixo 𝑧 (θ). Dessa
maneira, é possível obter a transformação homogênea das coordenadas
do
efetuador em relação a base do robô manipulador, multiplicando
as matrizes de
transformação homogênea de todas as juntas. Essa matriz de
rotação homogênea 𝑇, é composta pela matriz de rotação 𝑅 e pelo
vetor de posição 𝑝 que descrevem respectivamente a orientação e a
posição do efetuador com respeito a base do robô.
Quando a orientação do efetuador é descrita por um vetor de
rotação 𝑞 de 3 dimensões, ao invés de da matriz de rotação 𝑅, essa
representação é denominada de mapeamento de cinemática direta. Com
isso, de acordo com Denavit-Hartenberg é possível achar uma
transformação geométrica por meio das quatro operações
elementares, que são:
Rotação 𝜃𝑖em torno do eixo da junta (𝑧𝑖−1) Translação ao longo
do eixo do elo (𝑥𝑖) do seu próprio comprimento (𝑎𝑖) Translação ao
longo do eixo da junta (𝑧𝑖) do afastamento entre juntas (𝑑𝑖)
Rotação 𝛼𝑖 do eixo da junta (𝑧𝑖) em torno do eixo longitudinal (𝑥𝑖)
do elo
Dessa maneira, tem-se que a parte rotacional pode ser decomposta
em 2 rotações
elementares ao redor do sistema de coordenadas correntes:
𝑅𝑖−1,𝑖 = 𝑅𝑧(𝜃𝑖)𝑅𝑥(𝛼𝑖) (18)
𝑅𝑖−1,𝑖 = [𝑐𝑜𝑠𝜃𝑖 −𝑠𝑒𝑛𝜃𝑖 0𝑠𝑒𝑛𝜃𝑖 𝑐𝑜𝑠𝜃𝑖 00 0 1
] [1 −0 00 𝑐𝑜𝑠𝛼𝑖 −𝑠𝑒𝑛𝛼𝑖0 𝑠𝑒𝑛𝛼𝑖 𝑐𝑜𝑠𝛼𝑖
] (19)
-
Departamento de Engenharia Elétrica
𝑅𝑖−1,𝑖 = [𝑐𝑜𝑠𝜃𝑖 −𝑠𝑒𝑛𝜃𝑖𝑐𝑜𝑠𝛼𝑖 𝑠𝑒𝑛𝜃𝑖𝑠𝑒𝑛𝛼𝑖𝑠𝑒𝑛𝜃𝑖 𝑐𝑜𝑠𝜃𝑖𝑐𝑜𝑠𝛼𝑖
−𝑐𝑜𝑠𝜃𝑖𝑠𝑒𝑛𝛼𝑖0 𝑠𝑒𝑛𝛼𝑖 𝑐𝑜𝑠𝛼𝑖
] (20)
Por outro lado, a parte translacional é dada por :
�⃗� 𝑖−1,𝑖 = 𝑑𝑖𝑧 𝑖−1 + 𝑎𝑖𝑥 𝑖 (21)
(�⃗� 𝑖−1,𝑖)𝑖−1 = 𝑑𝑖(𝑧 𝑖−1)𝑖−1 + 𝑎𝑖𝑅𝑖−1,𝑖(𝑥 𝑖)𝑖 (22)
(�⃗� 𝑖−1,𝑖)𝑖−1 = 𝑑𝑖 [001] + 𝑎𝑖𝑅𝑖−1,𝑖 [
100] (23)
(�⃗� 𝑖−1,𝑖)𝑖−1 = [𝑎𝑖𝑐𝑜𝑠𝜃𝑖𝑎𝑖𝑠𝑒𝑛𝜃𝑖𝑑𝑖
] (24)
Dessa forma, a transformação homogênea é dada por:
𝑇𝑖−1,𝑖 = [
𝑐𝑜𝑠𝜃𝑖𝑠𝑒𝑛𝜃𝑖00
−𝑠𝑒𝑛𝜃𝑖𝑐𝑜𝑠𝛼𝑖𝑐𝑜𝑠𝜃𝑖𝑐𝑜𝑠𝛼𝑖𝑠𝑒𝑛𝛼𝑖0
𝑠𝑒𝑛𝜃𝑖𝑠𝑒𝑛𝛼𝑖−𝑐𝑜𝑠𝜃𝑖𝑠𝑒𝑛𝛼𝑖
𝑐𝑜𝑠𝛼𝑖0
𝑎𝑖𝑐𝑜𝑠𝜃𝑖𝑎𝑖𝑠𝑒𝑛𝜃𝑖𝑑𝑖1
] (25)
A seguir, segue uma foto de um manipulador planar 3-DoF com os
eixos escolhidos
de acordo com a convenção de Denavit- Hartenberg:
Figura 3 – Robô planar com os eixos escolhidos seguindo a
convenção de
Denavit- Hartenberg.
-
Departamento de Engenharia Elétrica
Dessa forma, todos os eixos de revolução são paralelos. Com
isso, a escolha mais
simples para todos os eixos 𝑥 𝑖, é na direção dos elos, sendo a
direção 𝑥 0 escolhida de
forma arbitrária. É possível ver que todos os sistemas de
coordenadas �⃗� 𝑖 estão no plano
do sistema de coordenadas da base �⃗� 0. Desse jeito, todos os
parâmetros 𝑑𝑖 são nulos e os ângulos entre os eixos 𝑥 𝑖 fornecem
indiretamente os parâmetros 𝜃𝑖 . Dessa forma, temos otod os
parâmetros de Denavit- Hartenberg especificados na tabela abaixo
[2]:
Elos 𝑎𝑖 𝛼𝑖 𝑑𝑖 𝜃𝑖 1 𝑎1 0 0 𝜃1 2 𝑎2 0 0 𝜃2 3 𝑎2 0 0 𝜃3
Com isso, pode-se substituir os parâmetros acima, com os valores
que estão na
figura 1 para os dois manipuladores robóticos:
𝑇123 = [
𝑐𝑜𝑠𝜃123𝑠𝑒𝑛𝜃12300
−𝑠𝑒𝑛𝜃123𝑐𝑜𝑠𝜃12300
0 010
𝑎1𝑐𝑜𝑠𝜃1 + 𝑎2𝑐𝑜𝑠𝜃12 + 𝑎3𝑐𝑜𝑠𝜃123𝑎1𝑠𝑖𝑛𝜃1 + 𝑎2𝑠𝑖𝑛𝜃12 + 𝑎3𝑠𝑖𝑛𝜃123
01
] (26)
Sendo para o manipulador 1:
𝜃𝑖 = 𝜃1𝑖 𝑖 = 1,2,3 (27)
𝑎𝑖 = 𝑙1𝑖 𝑖 = 1,2,3 (28)
𝜃𝑖𝑗..𝑘 = 𝜃1𝑖 + 𝜃1𝑗+. . 𝜃1𝑘 (28)
Para o manipulador 2:
𝜃𝑖 = 𝜃2𝑖 𝑖 = 1,2,3 (29)
𝑎𝑖 = 𝑙2𝑖 𝑖 = 1,2,3 (30)
𝜃𝑖𝑗..𝑘 = 𝜃2𝑖 + 𝜃2𝑗+. . 𝜃2𝑘 (31)
Com isso, tem-se:
𝑇1231 : Transformação homogênea do efetuador em relação a base
do primeiro
manipulador robótico
𝑇1232 : Transformação homogênea do efetuador em relação a base
do segundo
manipulador robótico
Depois de achada a matriz 𝑇123 para ambos os manipuladores,
acha-se a transformação de coordenadas do efetuador em relação ao
sistemas de coordenadas da
-
Departamento de Engenharia Elétrica
base. Supondo que tenha-se um vetor 𝑝 que representa o vetor com
as coordenadas do efetuador em relação ao eixo de coordenadas da
junta anterior. Para representar esse vetor
no sistema de coordenadas da base, basta fazer:
Para o primeiro manipulador:
𝑝03 = 𝑇1231 𝑝23 (32)
Para o segundo manipulador:
𝑝06 = 𝑇1232 𝑝56 (33)
Contudo, o que se tem é as coordenadas do efetuador em relação a
base, e o que se
quer é a posição do centro de massa do objeto manipulado em
relação a base. Para isso,
pode-se utilizar as equações (12) e (7), ou supor que a
distância entre o centro de massa
do objeto e o efetuador é um elo. Com isso, achar os parâmetros
de Denavit-Hartenberg
deste novo elo e recalcular a matriz de transformação
homogênea.
Cinemática Diferencial
Depois de obter a posição do objeto manipulado em relação as
coordenadas da base
dos manipuladores, acha-se a velocidade do objeto. Para isso,
utiliza-se a cinemática
diferencial para obter, primeiro, a velocidade do efetuadores.
Desta forma, é preciso obter
o Jacobiano dos manipuladores robóticos. É possível obter a
matriz Jacobiana por meio
de duas abordagens, que são por meio de uma abordagem geométrica
ou analítica. Na
abordagem analítica, o Jacobiano é obtida por meio da derivada
temporal da cinemática
direta. Nesse trabalho, será utilizada a abordagem geométrica,
que depende da geometria
das juntas, para obter o Jacobiano. Já que todas as juntas dos
manipuladores são de
rotação, Os Jacobianos dos manipuladores são [1]:
𝐽1 = [𝑧 0𝑥(𝑝 03)0 𝑧 0𝑥(𝑝 13)0 𝑧 0𝑥(𝑝 23)0
𝑧 0 𝑧 0 𝑧 0] (34)
Sendo:
(𝑝 23)0 = 𝑙13𝑅03 (35)
(𝑝 13)0 = (𝑝 23)0 + 𝑙12𝑅02 (36)
(𝑝 03)0 = (𝑝 13)0 + 𝑙11𝑅01 (37)
Jacobiano do segundo manipulador
𝐽2 = [𝑧 0𝑥(𝑝 06)0 𝑧 0𝑥(𝑝 46)0 𝑧 0𝑥(𝑝 56)0
𝑧 0 𝑧 0 𝑧 0] (38)
Sendo:
(𝑝 56)0 = 𝑙23𝑅06 (38)
-
Departamento de Engenharia Elétrica
(𝑝 46)0 = (𝑝 56)0 + 𝑙22𝑅05 (39)
(𝑝 06)0 = (𝑝 46)0 + 𝑙21𝑅04 (40)
Dessa forma, as velocidades dos efetuadores podem ser escritas
como:
𝑣1+ = 𝐽1𝜃 ̇ (41)
𝑣2+ = 𝐽2�̇� (42)
Juntando as duas equações em uma só, fica-se com:
[𝑣1+𝑣2+
] = [ 𝐽1 00 𝐽2
]⏟
𝐽
�̇� (43)
Agora, depois te obter a velocidade do efetuador, é preciso
obter a velocidade do
objeto manipulado. Para isso, primeiro calcula-se a matriz de
transformação adjunta dos
manipuladores. Essa matriz relaciona a velocidade do eixo de
coordenadas do objeto
manipulado �̅�𝑐 com a velocidade do eixo de coordenadas do
efetuador �̅�𝐸 . Essa matriz adjunta é dada por:
𝐴𝑖 = [𝐼 −𝑝𝑖𝑐𝑥0 𝐼
] (44)
Sendo −𝑝𝑖𝑐𝑥 os produtos vetoriais entre a posição do centro de
massa do objeto e os vetores que representam os eixos de
coordenadas x,y,z. Dessa maneira , tem-se que
para os manipuladores 1 e 2:
𝑝𝑖𝑐𝑥1 =
[
0 0 0
0 0 −𝑙𝑐
2
0𝑙𝑐
20 ]
(45)
𝑝𝑖𝑐𝑥1 =
[
0 0 0
0 0𝑙𝑐
2
0 −𝑙𝑐
20 ]
(46)
Com isso, as matrizes de transformação adjunta para ambos
manipuladores
robóticos são:
𝐴1 = [𝐼 −𝑝𝑖𝑐𝑥
1
0 𝐼] (47)
𝐴2 = [𝐼 −𝑝𝑖𝑐𝑥
2
0 𝐼] (48)
-
Departamento de Engenharia Elétrica
A matriz de transformação adjunta total é dada por:
𝐴 = [𝐴1𝐴2] (49)
Após obter as matrizes Jacobianas e matrizes de transformação
adjunta para ambos
os manipuladores, é possível obter agora o Jacobiano de
restrição 𝐽𝑐 e o Jacobiano dos manipuladores 𝐽𝑚. Eles são dados
por:
𝐽𝑐 = �̃�[𝐽 𝐻𝑇] (50)
𝐽𝑚 = 𝐴ϯ[𝐽 𝐻𝑇] (51)
Aonde:
�̃�: É a matriz anaquiladora, tal que �̃�𝐴 = 0
𝐴ϯ: É matriz pseudo-inversa da matriz 𝐴, tal que 𝐴ϯ𝐴 = 𝐼
𝐻𝑇 : Suas coluna representam as direções para movimentos livres
nos pontos de contato do objeto e o efetuador. Será escolhida uma
matriz com dimensão 12𝑥2
Para isso, forma escolhidas as seguintes matrizes:
�̃� = [𝐴2−𝐴1
] (52)
𝐻𝑇 =
[ 0 0⋮ ⋮1⋮0
0⋮1]
(53)
𝐴ϯ é calculada por meio da equação da pseudo-inversa.
Depois de calcular esses Jacobianos, tem-se as seguintes
equações em função das
juntas passivas e ativas [1]:
𝐽𝑐 [�̇�𝑎�̇�𝑝] = 0 (54)
𝐽𝑚 [�̇�𝑎�̇�𝑝] = 𝑣𝑐 (55)
Aonde:
𝑣𝑐: Velocidade do sistemas de coordenadas do objeto
manipulado.
-
Departamento de Engenharia Elétrica
�̇�𝑎:Derivada temporal das juntas ativas.
�̇�𝑝:Derivada temporal das juntas passivas.
Fazendo algumas manipulações algébricas, é possível achar a
velocidade do eixo
de coordenadas do objeto em função da derivada das juntas
ativas. Dessa maneira, fica-
se com a seguinte equação:
𝐽�̇̅�𝑎 = 𝑣𝑐 (56)
Sendo:
𝐽 ̅ = 𝐽𝑚𝑎 − 𝐽𝑚𝑝𝐽𝑐𝑝−1𝐽𝑐𝑎 (57)
Aonde:
𝐽𝑚𝑎: Jacobiano do manipulador associado as juntas ativas.
𝐽𝑚𝑝: Jacobiano do manipulador associado as juntas passivas.
𝐽𝑐𝑎: Jacobiano de restrição associado as juntas ativas.
𝐽𝑐𝑝: Jacobiano de restrição associado as juntas passivas.
Controle Cinemático
Depois de calcular os Jacobianos dos manipuladores, é possível
projetar uma lei de
controle para os dois robôs baseada na separação do espaço das
juntas em juntas ativas
(atuadas) e passivas (não atuadas). Também é considerado nessa
lei de controle, as
restrições de velocidade na estrutura cinemática do robô. Dessa
maneira, é possível
utilizar um ganho para modificar a postura dos manipuladores
robóticos. Nessa
abordagem, o controle tem o objetivo de alterar a postura
original do objeto manipulado
𝑥𝑐 = [𝑝𝑐 𝛷𝑐] para uma postura desejada variante no tempo 𝑥𝑐𝑑(𝑡)
= [𝑝𝑐𝑑 (𝑡) 𝛷𝑐(𝑡)]. Com isso, o controle faz com que [1]:
𝑥𝑐 → 𝑥𝑐𝑑(𝑡) (58)
𝑒𝑐 = 𝑥𝑐𝑑(𝑡) − 𝑥𝑐 → 0 (59)
Onde 𝑒𝑐 é o erro de postura do objeto.
O esquema do controle projetado deve comandar a velocidade do
objeto para chegar
na postura desejada. Dessa maneira, para comandar essa
velocidade, atua-se nas
velocidades das juntas. É possível obter a relação dessas duas
velocidades por meio da
equação obtida acima. Com isso, utiliza-se uma lei de controle
proporcional com
feedfoward que pode ser expressa pela seguinte equação:
-
Departamento de Engenharia Elétrica
𝑢 = �̇�𝑎 = 𝐽(̅𝜃𝑎)𝑃ϯ [𝐾(𝑥𝑐𝑑(𝑡) − 𝑥𝑐 ) + �̇�𝑐] (60)
Onde:
𝐾: É um ganho positivo definido de controle.
𝐽�̅�ϯ: É a partição de 𝐽 ̅referente as juntas ativas 𝜃𝑎.
Simulação e discussão:
Após calcular a cinemática direta, a cinemática diferencial e
projetar uma lei de
controle cinemático, foram implementadas as equações encontradas
acima em um
ambiente de programação Matlab/Simulink para simular o sistema
robótico cooperativo.
Esse programa simula o controle de dois robôs que manipulam um
objeto. Dessa maneira,
é fornecida uma trajetória para os manipuladores seguirem e é
verificado se o robô
consegue segui-la com o objeto. São dados alguns parâmetros para
os manipuladores
robóticos afim de realizar uma simulação próxima a realidade. O
primeiro desses
parâmetros a ser discutido, são os comprimentos dos elos dos
robôs. Desse jeito, foram
estipulados os seguintes tamanhos para os elos:
𝑙1 = 𝑙4 = 0.39 ∗ 103 𝑚𝑚 𝑙2 = 𝑙5 = 0.33 ∗ 103 𝑚𝑚 𝑙3 = 𝑙6 = 0.21 ∗
103 𝑚𝑚
Sendo os elos l1,l2 e l3 pertencentes ao primeiro manipulador e
os elos l4, l5 e l6
pertencentes ao segundo manipulador. Também são definidas as
distâncias dos robôs em
relação a um referencial, que será chamado de base. Essas
distâncias são:
𝑙0 = −0.38 ∗ 103 𝑚𝑚 𝑙𝑏 = 0.38 ∗ 103𝑚𝑚
Dessa maneira, l0 é a distância da base até o primeiro
manipulador. Esse vetor
possui um valor negativo, pois o seu sentido, é oposto ao
sentido do eixo fixado na base.
Com o mesmo raciocínio, lb é a distância da base até o segundo
manipulador.
Após definir os comprimentos dos elos, são declarados os ganhos
para realização
do controle cinemático. Os ganhos são dados por:
𝐾𝑝 = 20 𝐾𝑜 = 5
Sendo Kp o ganho de posição e Ko o ganho de orientação.
Depois disso, serão definidos os ângulos iniciais das juntas
passivas e das juntas
ativas. Esses ângulos são:
-
Departamento de Engenharia Elétrica
𝜃𝑎 =
[
13𝜋
18𝑟𝑎𝑑
−𝜋
2𝑟𝑎𝑑
−5𝜋
18𝑟𝑎𝑑
5𝜋
18𝑟𝑎𝑑
𝜋
2𝑟𝑎𝑑
5𝜋
18𝑟𝑎𝑑 ]
As juntas passivas foram inicializadas como um vetor nulo. Dessa
maneira é
possível definir esse vetor da seguinte forma:
𝜃𝑝 = [0 𝑟𝑎𝑑0 𝑟𝑎𝑑
]
Com isso, é formado um vetor composto pelos dois vetores acima.
Esse vetor é da
seguinte maneira:
𝜃 = [𝜃𝑎𝜃𝑝]
Depois da inicialização dos parâmetros, o algoritmo de controle
foi executado para
verificar se o sistema robótico cooperativo consegue manipular o
objeto seguindo uma
trajetória especificada. Dada a trajetória os resultados obtidos
foram:
Figura 4 – Ângulos das juntas dos robôs em função do tempo
-
Departamento de Engenharia Elétrica
Figura 5 – Velocidades das juntas ativas dos robôs em função do
tempo
Figura 6 – Velocidades das juntas passivas dos robôs em função
do tempo e sinal
de controle cartesiano.
-
Departamento de Engenharia Elétrica
Figura 7– Posição do objeto e erro de posição e de orientação ao
longo do tempo
É possível verificar que com a abordagem de controle cinemático
utilizada, os
manipuladores robóticos conseguiram seguir a trajetória
especificada após algumas
amostragens na simulação. Também é possível verificar que o erro
de postura tende a
zero ao longo do tempo. Com isso, conclui-se, por meio da
simulação, que essa
abordagem de controle, para manipuladores simples, consegue ser
estendida para
sistemas robóticos cooperativos e fazer com que eles consigam
manipular um objeto
seguindo uma trajetória especificada. Outro resultado que
garante a eficácia dessa
abordagem de controle, é que os sinais encontrados são
limitados, como esperado, visto
que isso mostra que o algoritmo de controle faz com o que o
sistema seja estável
Após as simulações numéricas computacionais, utilizou-se o
PhantomX Pincher 4-
DoF para a implementação prática dos conceitos estudados. Dessa
maneira, utilizou-se
os conhecimentos de cinemática direta, cinemática diferencial e
de controle cinemático
aliados ao conhecimento de ROS para fazer o manipulador robótico
seguir uma trajetória.
Dessa forma, utilizou-se o conceito de subscrever em tópicos
para fazer a leitura dos
sensores e o conceito de publicar em um tópico para mandar o
sinal de entrada para os
atuadores. Com isso, através dos resultados práticos, foi
possível verificar a validade e a
eficácia da estratégia de controle cinemático proposta.
Conclusões
Nesse trabalho estudou-se metodologias de controle clássicas que
foram
desenvolvidas para manipuladores robóticos simples e as estendeu
para sistemas
robóticos cooperativos capazes de executar manipulação bi-manual
de objetos. Foi
discutido na maior parte do trabalho a implementação desses
conceitos em dois
manipuladores robóticos planares 3-DoF, devido a praticidade
desses manipuladores.
Com isso, foi projetada uma lei de controle baseada nas
restrições cinemáticas de
velocidades na estrutura cinemática dos robôs. Contudo, a
solução analisada é válida para
qualquer par de manipuladores robóticos, basta adaptar as
equações encontradas na
-
Departamento de Engenharia Elétrica
cinemática diferencial, utilizando o conceito de
Denavit-Hartenberg para o robô desejado
e em seguida calcular as equações de cinemática diferencial
também.
Com isso, por meio da utilização do PhantomX Pincher e do
ambiente de
programação Matlab/Simulink aliado com o ROS, foi possível
verificar a implementação
dos conceitos estudados na prática. Dessa maneira, em trabalhos
futuros será feita a
implementação prática da solução estudada, que é o controle
cinemático em um sistema
de manipuladores robóticos cooperativos. Assim, serão utilizados
dois robôs PhantomX
Pincher para a validação dessa solução.
Referências
1 - Caccavale F. and Uchiyama M., “Cooperative Manipulation”,
Springer
Handbook of Robotics, Ed. Siciliano, B. and Khatib, O., Pags.
989-1006, 2008.
2 - Siciliano, B., Sciavicco L., Villani, L. and Oriollo, G.,
“Robotics:
Modelling, Planning and Control ”,Springer-Verlag London Ltd.,
2009.
3 - Freitas, G. M., Leite, A. C. and Lizarralde, F.,“Kinematic
Control of
Constrained Robotic System ”, SBA Revista Controle &
Automação, Vol. 22,
No. 6, Pags. 559-572, 2011