Вы находитесь на странице: 1из 9

The MathWorks - MATLAB Digest setembro de 2002

 
Setembro de 2002
Volume 10, número 5
 
Criando um modelo de plataforma Stewart usando o SimMechanics
 
por Natalie Smith e Jeff Wendlandt
 
Resumo
 
O SimMechanics, em conjunto com o Simulink e o MATLAB, permite que os engenheiros
modelem sistemas mecânicos complicados, simulem e analisem os modelos e desenvolvam
controladores para o sistema mecânico. Neste exemplo técnico, examinamos como usar o
SimMechanics para modelar componentes físicos, sintetizar controladores e simular o
desempenho do circuito fechado de uma plataforma Stewart, um sistema de posicionamento
de seis graus de liberdade. As plataformas Stewart são
usado em muitos aplicativos para posicionar objetos. 
 
Vários pedidos da Plataforma Stewart
 
A plataforma Stewart foi originalmente projetada em 1965 como um simulador de voo e ainda
é comumente usada para esse fim. Desde então, uma grande variedade de aplicações se
beneficiou desse design. Algumas das indústrias que usam o design da plataforma Stewart
incluem tecnologia aeroespacial e de defesa, automotiva, transporte e máquinas-ferramenta,
que usam a plataforma para executar simulação de voo, lidar com manutenção de veículos e
projetar mecanismos de guindaste. O projeto da plataforma Stewart também é usado para o
posicionamento de antenas e telescópios de comunicação via satélite e em aplicações como
construção naval, construção de pontes, transporte e plataforma de perfuração no Lunar
Rover.

 
Especificações da Plataforma Stewart
 
A plataforma Stewart é um exemplo clássico de um projeto mecânico usado para controle de
posição. É um mecanismo paralelo que consiste em uma placa superior do corpo rígido, ou
placa móvel, conectada a uma placa de base fixa e é definida por pelo menos três pontos
estacionários na base aterrada conectada a seis pernas cinemáticas independentes.
Normalmente, as seis pernas são conectadas à placa base e à placa superior por juntas
universais em paralelo localizadas nas duas extremidades de cada perna. As pernas são
projetadas com uma parte superior do corpo e uma parte inferior do corpo que podem ser
ajustadas, permitindo que cada perna tenha comprimento variado. Veja a imagem à direita

A posição e a orientação da plataforma móvel variam dependendo dos comprimentos aos


quais as seis pernas são ajustadas. A plataforma Stewart pode ser usada para posicionar a
plataforma em seis graus de liberdade (três graus de liberdade rotacionais e três graus de
liberdade translacionais). Em geral, a placa superior tem um formato triangular e é girada 60
graus a partir da placa inferior, permitindo que todas as pernas sejam equidistantes uma da
outra e cada perna se mova independentemente das outras. 
Vantagens da Plataforma Stewart
 
Engenheiros e pesquisadores examinaram muitas variantes da plataforma Stewart. A maioria
das variantes possui seis pernas de ação linear com combinações variadas de conexões de
plataforma de perna. Dos muitos tipos de plataformas de controle de movimento, a
Plataforma Stewart é útil para estudar, pois é um projeto amplamente aceito para um
dispositivo de controle de movimento. Isso ocorre principalmente devido à ampla gama de
movimentos do sistema e à capacidade de posicionamento preciso. Ele fornece uma grande
quantidade de rigidez ou rigidez para uma determinada massa estrutural, permitindo que o
sistema Stewart Platform forneça uma fonte significativa de certeza posicional.

O design da plataforma Stewart suporta uma alta capacidade de carga. Por causa do projeto,
as pernas transportam forças de compressão e tensão e não sucumbem à força de flexão
indesejável encontrada em outros projetos. As seis pernas estão espaçadas ao redor da placa
superior e compartilham a carga na placa superior. Isso difere dos projetos em série, como
braços de robô, onde a carga é suportada por um longo momento.

 
Definindo um problema de controle para a plataforma Stewart
 
O problema abordado neste exemplo é encontrar um método para acionar as forças das seis
pernas para posicionar corretamente a placa móvel da plataforma Stewart, de acordo com a
trajetória desejada. Para este problema em particular, recebemos uma posição e orientação
desejadas da placa móvel em relação à placa de base fixa. Esses valores desejados podem
mudar com o tempo. Desejamos controlar o modelo de planta não linear da Plataforma
Stewart e ter entradas e saídas para fazer isso. As forças das seis pernas são as entradas na
planta, enquanto as saídas são os comprimentos e as velocidades das seis pernas. Nossa tarefa
é criar uma estratégia de controle e design que faça com que a placa superior siga a trajetória
desejada. Precisamos fazer isso atuando as seis forças das pernas, sentindo os comprimentos e
as velocidades das pernas e lendo a trajetória desejada.

Tradicionalmente, um método comum para projetar o controlador da Plataforma Stewart


exigia a manipulação de equações complicadas que modelavam os componentes físicos usados
para resolver as equações mecânicas. Em seguida, o engenheiro teve que resolver essas
equações usando técnicas complexas de integração numérica. Com o advento de ferramentas
computacionais, como software de simulação dinâmica, agora é possível modelar e simular
facilmente a mecânica da plataforma Stewart, juntamente com o sistema de controle.

 
Construindo um modelo de plataforma Stewart usando o SimMechanics
 
Neste artigo, demonstraremos como o SimMechanics, Simulink e MATLAB podem ser usados
para modelar e simular o comportamento da plataforma Stewart. O SimMechanics será usado
para modelar os componentes mecânicos do sistema, e o Simulink será usado para modelar o
controlador. Usando as bibliotecas predefinidas do SimMechanics, poderemos modelar a
Stewart Platform sem precisar derivar explicitamente as equações de movimento, que podem
ser um processo tedioso e propenso a erros.

 
Modelando os componentes físicos com o SimMechanics
 
Primeiro, construiremos o modelo da planta usando o SimMechanics. Os componentes
mecânicos da plataforma Stewart consistem em uma placa superior, uma placa inferior e seis
pernas conectando a placa superior à placa inferior. O sistema geral tem seis graus de
liberdade. Cada subsistema de pernas contém dois corpos conectados em conjunto com uma
junta cilíndrica. A parte superior do corpo se conecta à placa móvel superior usando uma junta
universal, e a parte inferior do corpo se conecta à placa base usando uma segunda junta
universal.

Usando os blocos SimMechanics Body, modelamos os corpos rígidos da placa base, placa
superior e pernas superior e inferior. Em seguida, conectamos os corpos usando os blocos
SimMechanics Joint.

Ao começar a construir o modelo físico da Stewart Platform, primeiro precisamos definir


pontos de conexão em relação a um quadro inercial (ou mundo). Definimos isso usando um
bloco de massa da Biblioteca de corpos no SimMechanics. O bloco de aterramento atua como
um ponto fixo para conectar os componentes do sistema.
 
Agora vamos construir as pernas da plataforma Stewart conectando o bloco de aterramento
ao bloco de junta universal e conectando-o a um bloco de corpo para criar a perna. Em
seguida, adicionamos outro bloco do corpo para representar a parte superior da perna. Em
seguida, usamos um bloco de junta cilíndrica para conectar
a perna para a perna, permitindo que toda a perna ajuste seu comprimento, movendo-se em
um grau de liberdade de translação e de rotação. Em seguida, simplesmente adicionamos
outro bloco da junta universal conectado ao bloco do corpo da parte superior da perna, que
será anexado à placa superior. 

A atuação linear da plataforma Stewart é realizada variando os comprimentos das pernas. Para
mover as pernas, usamos um bloco de atuador conjunto da Biblioteca de sensores e atuadores
no SimMechanics. Este atuador de junta é usado para controlar o grau de liberdade de
translação da junta cilíndrica. (O grau de liberdade rotacional é irrestrito.) Um sinal de força
será criado e usado para atuação, em vez de usar o deslocamento. Isso nos permite criar um
modelo mais realista da plataforma Stewart, onde atuadores hidráulicos podem ser usados
para aplicar força entre as pernas superior e inferior. Também estamos detectando o
comprimento da perna com um bloco de sensor comum da Biblioteca de Sensores e Atuadores
para extrair a posição e a velocidade, que serão usadas pelo controlador.

Ao criar um subsistema de biblioteca do componente leg, podemos facilmente criar seis


instâncias das pernas do nosso modelo da plataforma Stewart. Agora podemos conectar cada
uma das juntas conectadas à parte superior de cada uma das nossas seis pernas a um bloco do
corpo que será nossa placa superior. Isso representa a parte da planta do nosso modelo da
plataforma Stewart, que aceita entradas de atuação da placa superior, bem como os sinais de
força, posição e velocidade.

 
Criando um modelo de plataforma Stewart usando o SimMechanics ( continuação )
 
Definindo a geometria Usando um script de arquivo M O uso de scripts de arquivo M e blocos
de biblioteca personalizados é uma técnica poderosa no SimMechanics que permite criar
modelos mecânicos complicados. Nós demonstramos essa técnica neste exemplo.
Depois de criar os componentes físicos do modelo da plataforma Stewart com o
SimMechanics, precisamos definir a geometria específica em sua configuração inicial e os
parâmetros dinâmicos da plataforma Stewart. Essas definições de variáveis serão escritas em
um script básico do MATLAB e referenciado nas caixas de diálogo dos blocos que usamos para
construir o modelo SimMechanics.

Primeiro, definimos conversões e eixos angulares básicos de unidade. 

deg2rad = pi / 180;


x_axis = [1 0 0];
y_axis = [0 1 0];
z_axis = [0 0 1];
 
Agora, definimos os pontos de conexão na base e na placa superior em relação ao quadro de
referência mundial no centro da placa base. As definições abaixo representam o ângulo de
deslocamento de 60 graus entre a placa base e a placa superior, os raios da placa base e da
placa superior e a altura da posição inicial do sistema.
 
pos_base = [];
pos_top = [];
alfa_b = 2,5 * deg2rad;
alfa_t = 10 * deg2rad;
altura = 2,0;
radius_b = 3,0;
radius_t = 1,0;
 
para i = 1: 3,
% de pontos base
angle_m_b = (2 * pi / 3) * (i-1) - alpha_b ;
angle_p_b = (2 * pi / 3) * (i-1) + alpha_b ;
pos_ base ( 2 * i-1, :) = raio_b * [cos ( ângulo_m_b ), sin ( ângulo_m_b ), 0,0];
pos_ base ( 2 * i, :) = radius_b * [cos ( angle_p_b ), sin ( angle_p_b ), 0,0];
% de pontos principais ( com um deslocamento de 60 graus )
angulo_m_t = (2 * pi / 3) * (i-1) - alfa_t + 2 * pi / 6;
ângulo_p_t = (2 * pi / 3) * (i-1) + alfa_t + 2 * pi / 6;
pos_ top ( 2 * i-1, :) = raio_t * [cos ( ângulo_m_t ), sin ( ângulo_m_t ), altura ];
pos_ top ( 2 * i, :) = raio_t * [cos ( ângulo_p_t ), sin ( ângulo_p_t ), altura ];
 
fim
 

A seguir, permuta a matriz dos pontos superiores, para que o índice nos pontos superiores e
inferiores se refira aos pontos de conexão de uma única perna. Os pontos no sistema de
coordenadas da placa superior também são definidos. Os vetores de perna e vetores de perna
unitários são calculados. 

pos_top = [ pos_ top ( 6, :); pos_top (1: 5, :)];


body_pts = pos_top '- altura * [zeros (2,6 ); uns (1,6)]; legs = pos_top -
pos_base ;
comprimento da perna = [] ;
leg_vectors = [] ;
para i = 1: 6,
leg_length (i) = norma ( pernas (i, :));
vetores leg_ ( i, :) = pernas (i, :) / comprimento_leg (i);
fim
 
Abaixo está um loop que calcula os eixos de rotação e cilíndricos que serão inseridos nos
blocos de junta no modelo físico da planta. Existem duas revoluções para o bloco da Junta
Universal conectadas à placa superior, uma cilíndrica e uma para o movimento linear do bloco
da Junta Cilíndrica e duas revoluções para o bloco da Junta Universal que está conectado à
placa de base.
 
para i = 1: 6,
 
rev1 ( i, :) = cruz ( leg_vectors (i, :), z_axis );
rev1 ( i, :) = rev1 (i, :) / norma (rev1 (i, :));
rev2 ( i, :) = - cruz (rev1 (i, :), leg_vectors (i, :));
rev2 ( i, :) = rev2 (i, :) / norma (rev2 (i, :));
cyl1 ( i, :) = leg_vectors (i, :);
rev3 ( i, :) = rev1 (i, :);
rev4 ( i, :) = rev2 (i, :);
fim
 
Agora vamos calcular a inércia e a massa da placa superior, da placa inferior e das pernas. A
densidade do aço foi usada para este cálculo:
 
lower_leg = struct ( ' origem ', [0 0 0], ' rotação ', olho (3), 'ponto final ', [0
0 0]);
upper_leg = struct ( ' origem ', [0 0 0], ' rotação ', olho (3), 'ponto final ', [0
0 0]);
 
para i = 1: 6,
 
perna inferior (i ). origem = pos_base (i, :) + (3/8) * pernas (i, :);
perna inferior (i ). acabar _point = pos_base (i, :) + (3/4) * pernas (i, :);
perna inferior (i ). rotação = [rev1 (i, :) ', rev2 (i, :)', cyl1 (i, :) '];
perna superior (i ). origem = pos_base (i, :) + (1-3 / 8) * pernas (i, :);
perna superior (i ). acabar _point = pos_base (i, :) + (1/4) * pernas (i, :);
perna superior (i ). rotação = [rev1 (i, :) ', rev2 (i, :)', cyl1 (i, :) '];
fim
 
Agora nós irá calcular a inércia e massa para o topo da placa , parte inferior da
placa , e as pernas . A densidade de aço tem sido usada para este cálculo :
 
espessura máxima = 0,05;
espessura_ base = 0,05;
raio_ interno = 0,03;
raio_ externo = 0,05;
densidade = 76e3 / 9,81; % Kg / m ^ 3
 
A inércia e a massa da perna são calculadas aqui em uma função chamada inertiaCylinder, que
calcula a massa e a inércia de um cilindro, dada a densidade, o comprimento e o raio interno e
externo do cilindro:
 
[ lower_leg_mass , lower_leg_inertia ] = inérciaCilindro ( densidade , ...
  0,75 * comprimento da perna ( 1), raio_ externo , raio interno );
[ upper_leg_mass , upper_leg_inertia ] = inérciaCilindro ( densidade , ...
  0,75 * comprimento da perna ( 1), raio_ interno , 0);
 
A inércia e a massa da placa superior e base são calculadas aqui usando o mesmo
função como nós utilizados para as pernas , aceitar entradas de densidade , placa
espessura , e placa de raio :
 
[ top_mass , top_inertia ] = inérciaCilindro ( densidade , ...
espessura máxima , raio_t , 0);
[ base_mass , base_inertia ] = inérciaCilindro ( densidade , ...
espessura da base_ , raio _b , 0);
 
Estratégia do Controlador
 
Em aplicações típicas de robôs seriais, o problema de cinemática direta é fácil, enquanto o
problema de cinemática inversa é mais difícil. O problema de cinemática direta calcula a
posição e a orientação do efetor final do robô, considerando os ângulos da articulação,
enquanto o problema de cinemática inversa calcula os ângulos da articulação (múltiplos), dada
a posição e a orientação do efetor final. Na plataforma Stewart, é fácil calcular os ângulos das
juntas (comprimentos das pernas), dada a posição e a orientação do efetor final (placa
superior).

O objetivo básico deste controlador é especificar a trajetória desejada da placa superior na


posição e na orientação. Em seguida, mapeamos essa trajetória desejada para a trajetória
correspondente nas pernas usando cinemática inversa. Finalmente, usamos um controlador de
nível inferior para cada perna para comandar a perna a seguir a trajetória desejada. Dessa
forma, evitamos resolver o difícil problema de cinemática avançada da plataforma Stewart.

O controlador consiste em duas seções: a trajetória da perna e o controlador. A trajetória da


perna gera os comprimentos desejados para cada etapa do tempo. Começa com a rotação e
posição desejadas da placa superior e calcula os comprimentos de perna desejados para
conseguir isso. A equação a seguir calcula os comprimentos das pernas para cada perna:

onde R é a matriz de rotação que relaciona a orientação da placa superior em relação à placa
inferior, Pt, i é o ponto de fixação da perna i na placa superior em relação ao sistema de
coordenadas da placa superior, P é a posição da placa superior com em relação à placa
inferior, Pb, i é o ponto de fixação da perna i na placa inferior em relação ao sistema de
coordenadas da placa inferior e ln, i é o comprimento nominal da perna i. O subsistema de
trajetória da perna e todos os outros blocos desse subsistema implementam essa equação
para cada uma das seis pernas.

Controlador simples de baixo nível PID


 
Primeiro, implementamos um controlador simples de baixo nível baseado no design clássico
do PID. A entrada para este controlador é a posição e velocidade reais da perna e a posição
desejada da perna. O subsistema de trajetória das pernas não gera velocidades das pernas,
embora um mais complicado possa. Em seguida, formamos um erro na posição e criamos uma
força com base no ganho e na integral do erro. Também fornecemos um termo de feedback de
velocidade.

Podemos desenvolver controladores de baixo nível mais sofisticados, mas primeiro precisamos
linearizar sobre um ponto de equilíbrio.
 
 
Criando um modelo de plataforma Stewart usando o SimMechanics ( continuação )
 

Linearizando o modelo
 
Agora, extraímos um modelo linear da Stewart Platform para que possamos usar técnicas mais
poderosas de projeto de controle linear, como as encontradas na Caixa de ferramentas de
análise e síntese µ.

Primeiro, precisamos encontrar o ponto de equilíbrio para o nosso modelo não linear. Fazemos
isso extraindo as forças de equilíbrio de cada perna que mantém a plataforma Stewart
estacionária. Essas são as forças que estão sendo aplicadas quando o sistema está no estado
de repouso inicial. Para fazer isso, primeiro extraímos o modelo da planta em um novo modelo
do Simulink e, em seguida, definimos a propriedade do bloco do atuador como movimento e
definimos a posição, a velocidade e a aceleração para zero. Também definimos o bloco Sensor
para cada perna para extrair a força computada. Para encontrar o ponto de equilíbrio em que
a força líquida que atua no modelo é zero, precisamos alterar o parâmetro Analysis Mode.

No modelo Simulink, selecionamos as Configurações do ambiente mecânico no menu


Simulação. Isso exibirá os parâmetros mecânicos que definimos para o nosso modelo. Ao
alterar o Modo de análise, o SimMechanics pode calcular o movimento resultante da aplicação
de forças em um sistema mecânico ou as forças necessárias para produzir um movimento
especificado em um sistema mecânico.
Aqui, o Modo de Análise Cinemática é selecionado porque a Plataforma Stewart é um sistema
de circuito fechado e queremos calcular as forças aplicadas sem que o sistema se mova. Uma
vez selecionado, simulamos o modelo e usamos a saída dos blocos do sensor para obter a
força que será aplicada aos blocos do atuador para cada uma das pernas quando a plataforma
estiver em repouso.
Para fazer isso no prompt de comando do MATLAB, podemos usar:

 
sim (' StewartPlatformEquilibrium '); u = forças ';
 
Agora, estamos prontos para extrair modelos lineares. Para linearizar o modelo próximo ao
ponto de equilíbrio, podemos usar o comando linmod apenas no modelo da planta:
 
[ A, B , C, D] = linmod (' StewartPlatformPlant ', [], u);
 
Isso gerará um modelo de espaço de estado LTI a partir de um modelo SimMechanics para ser
usado como entrada na Control Systems Toolbox e nos comandos µ-Analysis and Synthesis
Toolbox que geram modelos de controlador.
 
O comando de linearização retorna um sistema LTI com o mesmo número de estados que o
número de estados na árvore do sistema mecânico (52 neste caso). Como esse modelo é
fechado, o número de estados independentes é menor (12 neste caso). Usamos a função
minreal para obter a realização mínima da planta com 12 estados:
 
[ A, B , C, D] = minreal (A, B, C, D);
 
Essas são as matrizes de espaço de estado que usaremos para projetar o controlador para o
modelo da Stewart Platform.

 
Projetando o controlador multivariável
 
Agora usamos o Control System Toolbox e o µ-Analysis and Synthesis Toolbox para sintetizar
um controlador robusto e multivariável para a Plataforma Stewart. Os detalhes do design, que
não incluímos aqui, podem ser encontrados no arquivo StewartMVController.m. Você pode
simular a Stewart Platform com o controlador multivariável alterando o subsistema
configurável do controlador para usar o controlador H_inf.

 
Simular e visualizar o modelo
 
Agora que modelamos nosso sistema com Simulink e SimMechanics, podemos validar o design
simulando o sistema. Iniciamos a simulação selecionando Simulink e Iniciar na barra de menus
da janela do modelo. Durante a simulação, podemos visualizar sinais com o bloco Scope. O
primeiro gráfico em nosso escopo mostra os valores x, ye z da posição do bloco Body
representando a placa superior se movendo ao longo do tempo à medida que o modelo
simula. O segundo gráfico mostra a diferença entre o valor desejado dos comprimentos das
pernas calculado no subsistema Trajetória das pernas e o valor real dos comprimentos das
pernas mudando ao longo do tempo. O terceiro gráfico mostra a força em cada perna durante
a simulação.

As opções de gráficos Virtual Reality Toolbox ou MATLAB podem ser usadas para criar
animações tridimensionais para sistemas projetados no SimMechanics. Qualquer uma das
ferramentas pode ser usada para analisar os resultados numéricos que quantificam o
movimento do seu sistema mecânico. Vamos ver a animação básica fornecida pelos gráficos do
MATLAB. A guia Visualização nas Configurações do ambiente mecânico fornece duas opções
para representar as formas de cada
corpo: elipsóides equivalentes e cascos convexos. Elipsóides equivalentes são a forma do
corpo com base em suas propriedades de massa e posição de inércia, e cascos convexos são a
forma do corpo com base em seus sistemas de coordenadas.
 
Depois de selecionar as formas que queremos representar os corpos, solicitamos que o
SimMechanics desenhe a representação animada durante a simulação. Agora podemos
simular o modelo. A visualização de nosso modelo durante a simulação facilita a visualização
de que nosso modelo simula mais rapidamente do que a hora do relógio em um PC padrão.

Uma maneira mais realista de visualizar o modelo pode ser feita usando a Caixa de
ferramentas de realidade virtual. A Caixa de ferramentas de realidade virtual usa a VRML
(Virtual Reality Modeling Language) para criar e preencher mundos virtuais com corpos
definidos pelo usuário. A maneira mais simples de usar a Caixa de ferramentas de realidade
virtual com o SimMechanics é selecionando Caixa de ferramentas de realidade virtual em vez
de gráficos MATLAB na guia Visualização das configurações do ambiente mecânico. Isso
fornecerá as mesmas opções para formas de corpo disponíveis para gráficos do MATLAB. Com
a Caixa de ferramentas de realidade virtual selecionada, seu visualizador VRML padrão será
aberto, mostrando uma representação para a posição inicial do modelo.

Também é possível criar ou importar uma cena VRML da plataforma Stewart e conectá-la ao
nosso modelo Simulink e SimMechanics usando os blocos da Caixa de ferramentas de
realidade virtual.

 
Direções futuras
 
Este artigo investigou a Stewart Platform e como criar um modelo do controlador e dos
componentes mecânicos usando o SimMechanics. O SimMechanics facilitou a construção de
um modelo hierárquico da planta mecânica e a modificação das configurações do modelo. O
modelo foi aparado e linearizado usando a funcionalidade de linha de comando,
demonstrando que é fácil vincular o modelo aos produtos de design de controle avançado
MATLAB. Mais importante, este exemplo demonstrou como a modelagem da planta, a síntese
do controlador e a simulação em malha fechada podem ser executadas em um ambiente.

Existem outros componentes da plataforma Stewart não explorados neste exemplo, como
motores lineares, chaves fim de curso e lógica crítica de segurança. Essas tarefas podem ser
facilmente executadas usando Simulink, Stateflow, SimMechanics e SimPowerSystems.

Os arquivos necessários para executar esta demonstração podem ser baixados em:
 
www.mathworks.com/matlabcentral/fileexchange/Files.jsp?fileId=2334
 
Para encontrar mais sobre os produtos mencionados no presente artigo , visita :
 
MATLAB
Simulink
SimMechanics
SimPowerSystems
Caixa de ferramentas de realidade virtual
 
The MathWorks , Inc.    Marcas comerciais Política de privacidade  
 
 
 

Вам также может понравиться