Anais do 12O Encontro de Iniciação Científica e Pós-Graduação do ITA – XII ENCITA / 2006
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 16 a 19, 2006
SIMULAÇÃO EM TEMPO REAL DE VEÍCULOS AÉREOS NÃO
TRIPULADOS
Emilio A. F. Albuquerque Filho1, Benedito C. O. Maciel2, Emilia Villani3, Luiz C. S. Góes3
1,3 - Instituto Tecnológico de Aeronáutica
12.228-490 São José dos Campos – SP
1- Bolsista PIBIC-CNPq
[email protected], [email protected], [email protected]
2- Flight Technologies
Incubadora Aeroespacial – CTA, Alameda Urupema, s/n, Sala 1
Pça. Mal. Eduardo Gomes, 50 – Vila das Acácias 12228-900 São José dos Campos – SP
[email protected]
Resumo. Este trabalho aborda a utilização do software MatLab para simulação em tempo-real do comportamento de
Veículos Aéreos Não Tripulados (VANT, ou UAV – Unmaned Aerial Vehicle). A simulação em tempo real tem como
objetivo auxiliar o projeto e desenvolvimento de sistemas de controle e piloto automáticos embarcados em VANTs. A
montagem consiste basicamente de um controlador (hardware), por uma aeronave em bancada e por um computador
no qual é executada a simulação em tempo-real da dinâmica de vôo. Todas as comunicações são via RS-232. Foi feito
um estudo dos recursos disponibilizados pela plataforma MatLab para que o sistema pudesse funcionar em tempo real
e o controlador pudesse ser testado em bancada, eliminando-se a necessidade de ensaio em vôo.
Palavras chave: Controle, VANT, Tempo real, Real Time Workshop, xPC Target
1. Introdução
Este trabalho aborda a utilização do software MatLab para simulação em tempo-real do comportamento de
Veículos Aéreos Não Tripulados (VANT, ou UAV – Unmaned Aerial Vehicle). A simulação em tempo real tem como
objetivo auxiliar o projeto e desenvolvimento de sistemas de controle e piloto automáticos embarcados em VANTs.
Para este propósito, utiliza-se uma bancada de testes composta pelo controlador (hardware), por uma aeronave em
bancada e por um computador no qual é executada a simulação em tempo-real da dinâmica de vôo. O controlador é
responsável tanto pela implementação da lei de controle como pelo envio dos sinais dos sensores para a simulação. Ele
recebe dos sensores o posicionamento das superfícies de controle e, da simulação, a atitude do avião e o sinal de
referência do Joystick, em um determinado instante. Aplica então uma lei de controle e envia o sinal de atuação tanto
para os atuadores no avião em bancada, como para a simulação. A simulação é responsável unicamente pela dinâmica
de vôo do avião, que está na realidade em bancada.
Para que essa bancada de testes trabalhe adequadamente, a simulação deve não somente corresponder à própria
dinâmica do avião, mas também deve realizar o processamento e responder às entradas obedecendo a restrições no
tempo do sistema. O objetivo deste trabalho é, portanto, o estudo dos recursos disponibilizados pelo MatLab para a
implementação do simulador de vôo em tempo real.
2. Equações de movimento
O entendimento da dinâmica de um avião é importante no estudo das qualidades de vôo e para o projeto de um
piloto automático. Para o trabalho desenvolvido, o conhecimento dessa dinâmica é fundamental, pois sem a qual não é
possível a obtenção do modelo e a conseqüente construção do modelo de simulação. O equacionamento aqui
apresentado é baseado em Nelson (1989).
As equações de movimento de corpo rígido são obtidas da segunda lei de Newton, que estabelece que o somatório
de todas as forças externas atuando em um corpo é igual à variação temporal da quantidade de movimento linear. Da
mesma forma, o somatório dos momentos externos atuando no corpo é igual á variação temporal da quantidade de
movimento angular. As variações temporais das quantidades de movimento são adotadas de acordo com um referencial
inercial. Em muitos problemas de dinâmica de um avião, um referencial fixo a Terra é adotado como inercial.
Escrevendo as equações da segunda lei de Newton e decompondo os vetores que nelas aparecem em suas
respectivas componentes, obtemos equações escalares excitadas pelas forças e momentos resultantes da aerodinâmica,
da propulsão e da ação da gravidade. Foi então considerado um elemento de massa em relação a um referencial inercial,
sendo δF a resultante de forças, δM a resultante de momentos e δm sua massa. Escrevendo a velocidade desse elemento
de massa em relação ao centro de massa do avião e substituindo nas equações escalares provenientes da segunda lei de
Anais do XII ENCITA 2006, ITA, Outubro, 23-26, 2006
,
Newton, tanto para o movimento linear quanto angular, e desenvolvendo, obtém-se as equações para as quantidades de
movimento linear e angular.
Pode ser mostrado que a derivada de um vetor arbitrário A, em relação a um sistema de coordenadas preso a um
corpo em rotação com velocidade angular ω, pode ser escrito da forma:
r
r
r r
dA
dA
=
+ω× A
dt I dt C
(1)
Os subscritos I e C se referem aos referenciais inercial e do corpo respectivamente, conforme apresentado na Fig. 1.
Figura 1. Referenciais fixo e do corpo.
Aplicando essa identidade às equações da quantidade de movimento linear e angular, tem-se:
r
r
r r
dvc
+ m(ω × vc )
F =m
dt C
r
r dH
r r
+ω× H
M=
dt C
(2)
Desenvolvendo-se, obtém-se as equações de força:
Fx = m(u& + qw − rv)
Fy = m(v& + ru − pw)
(3)
Fz = m( w& + pv − qu )
em que Fx, Fy e Fz são as componentes da resultante das forças F, m a massa do avião, u,v e w as componentes da
velocidade linear e p, q e r as componentes da velocidade angular do avião, todas em relação a um referencial preso no
corpo. Obtém-se também as equações de momento:
L = I x p& − I xz r& + qr ( I z − I y ) − I xz pq
M = I y q& − rp( I x − I z ) − I xz ( p 2 − r 2 )
(4)
N = − I xz p& + I z r& + pq( I y − I x ) + I xz qr
em que L, M e N são as componentes do momento resultante M e os Ix, Iy, Iz, Ixy, Ixz e Iyz são os momentos e
produtos de inércia do avião.
Anais do XII ENCITA 2006, ITA, Outubro, 23-26, 2006
,
As equações de movimento apresentadas anteriormente foram derivadas a partir de um referencial fixado no corpo.
Entretanto, o posicionamento e a orientação de um corpo não podem ser descritos por um sistema de coordenadas preso
nesse corpo, sendo estes então descritos com base em um referencial fixo, a partir do uso dos ângulos de Euler. Tendo
definido os ângulos de Euler, pode-se determinar as componentes das velocidades de vôo relativamente ao referencial
fixo. Assim, obtém-se a velocidade do avião de acordo com o referencial fixo em termos dos ângulos de Euler e das
componentes da velocidade no referencial do corpo:
⎡ dx ⎤
⎢ dt ⎥
⎢ ⎥ ⎡Cθ Cψ
⎢ dy ⎥ = ⎢C C
⎢ dt ⎥ ⎢ θ ψ
⎢ ⎥ ⎢⎣ − Sθ
⎢ dz ⎥
⎢⎣ dt ⎥⎦
SΦ Sθ Cψ − CΦ Cψ
SΦ Sθ Sψ + CΦ Cψ
SΦ Cθ
CΦ Sθ Cψ + SΦ Sψ ⎤ ⎡ u ⎤
CΦ Sθ Sψ − SΦ Cψ ⎥⎥ ⎢⎢ v ⎥⎥
⎥⎦ ⎢⎣ w⎥⎦
CΦ Cθ
(5)
onde ψ é o ângulo de guinada, θ o ângulo de arfagem e Φ o ângulo de rolamento e onde adotou-se a notação Cα =
cos(α) e Sα = sen(α). A integração dessas equações resulta na posição do avião em relação ao referencial fixo . Assim,
com certo desenvolvimento, obtém-se as velocidades angulares do corpo em termos dos ângulos de Euler e suas
derivadas temporais:
& −ψ& S
p=Φ
θ
&
q = θ CΦ + ψ& Cθ SΦ
r = ψ& C C − θ&S
θ
Φ
(6)
Φ
3.Simulação Tempo Real
Sistemas que funcionam em tempo real são ditos aqueles em que imposições de funcionamento de acordo com
restrições no tempo são obedecidas. Ou seja, o bom funcionamento do sistema não depende apenas se o seu resultado
está correto ou não, mas também do tempo em que o processamento é realizado. Uma operação realizada após os
limites de tempo, falhou ou está incorreta por definição.
Tais imposições tão restritas são requisitos de sistema para os quais se não houver uma reação em tempo hábil,
haverá uma perda de algum tipo. Essa perda pode ser a de estabilidade, como no caso do movimento de aviões. Pode
ser também resultado de riscos potenciais caso uma resposta não for dada em tempo hábil, como no caso de airbags e
sistemas de segurança de centrais de energia (hidrelétricas, usinas nucleares).
No que se refere a simulação, para as necessidades do sistema de bancada de testes do controlador, deve-se ter uma
simulação em tempo real. Esta deve, portanto, fornecer as saídas (as que são relevantes de acordo com o modelo
construído) da planta simulada dentro de uma janela de tempo suficientemente pequena para que a dinâmica da planta
real seja reproduzida e que uma certa margem de erro/atraso seja respeitada. Essa janela de tempo deve ser determinada
a partir da própria freqüência de amostragem dos inputs, coincidindo ou sendo um múltiplo inteiro da mesma.
4. Real Time Workshop e Real-Time Windows Target
Com o problema de se ter simulações funcionando em tempo real, para que assim o controle do avião possa ser
testado e aperfeiçoado, foi estudado o Real-Time Workshop (RTW) do Simulink. Esta é uma ferramenta que possibilita
a rápida criação de softwares com funcionamento em tempo real para uma variedade de sistemas. Juntamente com
outras ferramentas e componentes da MathWorks, permite a geração de código para diversas plataformas.
O Real-Time Windows Target (RTWT), por sua vez, é um ambiente para prototipagem e teste de sistemas em
tempo real. Nele, o computador é ao mesmo tempo o host e o target. Computador host é aquele no qual está instalado o
MATLAB, o Simulink, o Real time Workshop, o Real-Time Windows Target e/ou o xPC Target para executar e
visualizar uma aplicação em tempo real. Um target é aquele para o qual é montado o código no RTW e será nesse
ambiente ou sistema que se executará a aplicação em tempo real. No caso do RTWT, o computador sendo o host e o
target ao mesmo tempo, este pode ser um computador de mesa, um laptop ou um notebook.
Assim, após a criação de um modelo em Simulink, pode-se gerar um código por meio do RTW, tendo como
aplicação alvo o RTWT. Em seguida, executa-se esse código em tempo real com o Simulink em modo externo.
O modo externo do Simulink permite que dois sistemas separados, um host e um target se comuniquem. Como já
mencionado, o host é o computador em que está o MATLAB e o Simulink, o target é aquele no qual o executável
criado pelo RTW é executado. No modo externo, o host (Simulink) transmite mensagens requerendo que o target aceite
Anais do XII ENCITA 2006, ITA, Outubro, 23-26, 2006
,
mudanças ou transmita dados de sinais. O target responde executando a ordem. No menu, escolhendo Simulation, podese ativar o external mode. Então, basta conectar-se ao target para controlar e executar o programa em tempo real. No
caso do Real-Time Windows Target, o modo externo consiste de uma interface de comunicação em que parâmetros
podem ser alterados e pode haver aquisição de dados.
4.1. Resolução do problema usando o Real-Time Windows Target
Para a comunicação entre o computador em que está sendo realizada a simulação e o hardware escolheu-se que
fosse via RS-232. Portanto, para que a comunicação seja implementada, é preciso que seja criada uma S-Function. Mas
o RTW não trabalha com M-File S-Functions, ou seja, S-Functions escritas em código MATLAB. Deve-se assim ser
criada uma C Mex-File S-Function, escrita em C e atendendo a determinadas restrições de sintaxe e nome de variáveis.
Para minimizar a preocupação com restrições no formato final da S-Function, pode-se utilizar o S-Function Builder,
uma ferramenta gráfica na qual apenas se insere o código em campos próprios e se configura particulares a serem
atendidas: ele gera o código final.
Mas a construção da S-Function não termina nesse estágio. Para que o código final gerado pelo RTW atenda
requisitos de desempenho, é necessário otimizá-lo. De acordo com o nível de complexidade do modelo Simulink e da
exigência de seu desempenho quando rodando em tempo real, diferentes tipos de S-Functions para trabalharem
conjuntamente com o Simulink e o RTW devem ser desenvolvidas. Em ordem de exigência, elas podem ser classificadas
em:
1. Noninlined S-functions
2. Wrapper S-functions
3. Fully Inlined S-functions
A Noninlined S-Function é a forma menos otimizada e menos eficiente das três: todas as chamadas de rotinas
intermediárias estão presentes. A Wrapper S-Function consiste de uma implementação do código da S-Function no
código final de forma mais acoplada e cinegética, em que etapas na chamada de funções são eliminadas. A Fully Inlined
S-Function constrói seu código no Simulink e no RTW de tal forma que ele fica indistinguível de um bloco do próprio
Simulink, eliminando a chamada de funções intermediárias e tornando o processamento bem mais eficiente. Devido à
complexidade do Six-Simulator, provavelmente seria necessária a implementação de uma Wrapper ou Fully Inlined SFunction.
Tipicamente, uma Fully Inlined S-Function requer a implementação de seu algoritmo duas vezes: uma para o
Simulink e outra para o RTW (arquivo TLC), com o uso do Target Laguage Compiler (TLC). A complexidade do
arquivo TLC depende da complexidade do algoritmo a ser transformado em S-Function e do nível de eficiência
requerida para o código gerado. Para a criação de Wrapper S-Functions, também é necessário o uso do Target
Language Compiler.
O Target Language Compiler é parte integrante do RTW e permite que código gerado pelo RTW seja
customizado. Ele existe para um propósito, que é o de gerar código para um determinado target, ou alvo.
5. xPC Target
xPC Target é um ambiente para a prototipagem, teste e desenvolvimento de sistemas que funcionem em tempo
real para computadores padrões. Ele utiliza um computador target, separado do computador host, para rodar aplicações
em tempo real. Um computador target pode ser praticamente qualquer computador com um Intel 386 ou Pentium 486
ou AMD K5 ou K6/Athlon. Também deve conter um drive para disquete, uma porta serial livre ou um Ethernet adapter
card. Pode ser um computador de mesa ou um computador industrial. Maiores detalhes e especificações, procurar no
HELP do xPC Target, em Hardware Enviroment.
A partir de uma simulação criada normalmente, pode-se gerar um código executável a partir do RTW, tendo
como alvo o próprio xPC Target. O código executável é então gravado do computador host para o target executando o
xPC Target real-time kernel. Em seguida, pode-se testar a aplicação em tempo real, com possível variação de
parâmetros do modelo.
5.1. Resolução do problema usando o xPC Target
O comando xPCexplr abre o xPC Target Explorer. Trata-se de uma ferramenta gráfica de interface que facilita
o uso do xPC Target. O uso desta ferramenta foi o método escolhido para se utilizar o xPC Target. Outros meios seriam
via comandos no MATLAB e no modo externo do Simulink.
No ambiente do xPC Target Explorer, configura-se o computador host e o target para uma determinada
aplicação. Para nossa aplicação, escolheu-se que essa comunicação seria via comunicação serial, mas também pode ser
feita via rede. A partir dessa configuração é gerado o disco de boot a ser inserido no computador target, para que ele
inicialize no ambiente de simulação. Também por meio do xPC Target Explorer, grava-se o modelo para o computador
Anais do XII ENCITA 2006, ITA, Outubro, 23-26, 2006
,
target, ao mesmo tempo que é gerado o código pelo RTW, para em seguida executar a simulação. Pode-se alterar o
tempo de parada e o tempo de amostra, sem a necessidade de se gerar novo código executável e pode-se também
acessar as informações de desempenho durante ou depois da última execução da simulação. A ferramenta permite
também a alteração de parâmetros do modelo em tempo de execução e a aquisição de dados através de diferentes tipos
de blocos scope.
Como já mencionado, a partir do momento em que se configura o computador host e o target, pode-se gerar
um disco de boot para essa combinação de computadores. Faz-se então a conexão do computador target para o sistema
xPC Target do computador host. Em seguida, gerar-se o código executável via RTW com opção do mesmo ser gravado
automaticamente para o computador target, configurando-se para tanto os parâmetros da simulação. A partir desse
passo, a simulação pode ser rodada no computador target.
5.2. Comunicação serial pelo xPC Target
A sessão anterior descreve em linhas gerais os passos a serem seguidos para a geração de código com o RTW.
Ela visava o uso do xPC Target Explorer em um computador host para gerenciamento de uma simulação em tempo real
em um computador target. De acordo com o problema abordado, o computador que realiza a simulação deve estar
conectado ao hardware, que por sua vez estará trocando informações com os atuadores e sensores do avião. Essa
comunicação computador-hardware é via RS-232. Foi então estudado como o xPC Target facilita esse tipo de
comunicação.
Para ser possível a comunicação via RS-232, a biblioteca do xPC Target possui diversos blocos relacionados a
RS-232. Para os drivers convencionais, temos os seguintes blocos:
•
•
•
•
RS-232 setup: É necessário um bloco desses para cada porta serial em uso no modelo. Esse bloco não possui nem
entradas nem saídas, mas envia as mensagens de inicialização e término para cada porta.
RS-232 Send/Receive (Modo Síncrono): Esse bloco possui entradas e saídas para o modelo e espera respostas para
mensagens de enviado e recebido.
RS-232 Send (Modo Assíncrono): Esse bloco possui entradas do modelo e espera respostas para mensagens de
enviado.
RS-232 Receive (Modo Assíncrono): Esse bloco possui saídas do modelo e espera respostas para mensagens de
recebido.
A comunicação ocorre via uma série de mensagens enviadas e recebidas entre o computador alvo e o
dispositivo RS-232. Para tal, tais mensagens devem estar em formato que possa ser compreendido por ambas as partes.
Portanto, o xPC Target se utiliza de MATLAB structures para criar mensagens e mapear as portas de entrada e saída dos
blocos RS-232 para os dados escritos e lidos nos dispositivos RS-232. O bloco RS-232 setup envia as mensagens na
estrutura de inicialização após o download da aplicação. Os blocos RS-232 de Send e/ou Receive repetem o envio das
mensagens cada vez que informação é trocada durante cada intervalo. Quando a aplicação pára de rodar, o bloco RS232 setup envia uma mensagem de término.
6. Prosseguimento do trabalho
Em prosseguimento ao trabalho, é necessário dar continuidade ao estudo dos blocos do xPC Target
responsáveis pela comunicação serial com um outro hardware. Isso envolve principalmente o domínio das MATLAB
structures para a boa comunicação dos drivers. Deve-se também decidir quanto ao uso dos blocos de comunicação
síncrona ou assíncrona. De modo geral, utiliza-se o modo síncrono quando se precisa receber uma resposta antes de se
prosseguir com o processamento dos dados. Desse modo, dados são enviados para o ambiente externo e o bloco driver
espera por uma resposta, parando a aplicação target até a resposta ou até que se atinja um tempo limite. Já quanto ao
modo assíncrono, pode-se utilizá-lo quando não há necessidade de uma resposta para se prosseguir com o
processamento. Taxas de amostragem mais rápidas podem ser atingidas dessa forma, uma vez que nem os blocos de
Send nem de Receive não esperam por uma resposta. Como resultado, não há bloqueio da simulação como no modo
síncrono.
Provavelmente a decisão entre o modo síncrono e o assíncrono é realizada via testes de desempenho da
simulação. Esses testes consistiriam da comparação dos resultados depois da implementado em tempo real com os
obtidos de uma simulação trabalhando em pseudo real-time com uma dll obtida na Internet e já em funcionamento na
empresa Flight Technologies. Outra comparação importante é quanto aos resultados do síncrono e do assíncrono via
osciloscópio, por exemplo.
Aprendendo-se mais sobre o funcionamento desses drivers e escolhendo-se o tipo de comunicação, de acordo
com os conhecimentos adquiridos até agora, imagina-se que seja necessário apenas identificar e destacar do diagrama
de blocos do Six Simulator (modelo de simulação da dinâmica do avião em que se foi trabalhado na empresa Flight
Technologies) os sinais que devem ser enviados e aqueles que devem ser recebidos do hardware. Como o bloco do
Anais do XII ENCITA 2006, ITA, Outubro, 23-26, 2006
,
joystick já faz parte do Virtual Reality Toolbox do Simulink, não é preciso nenhuma manipulação para seu
funcionamento. Aplicando-se o procedimento descrito nas sessões anteriores, o controle e execução da simulação
poderão ser realizados via xPC Target Explorer. Executadas essas atividades propostas, ter-se-á o Six-Simulator com
Joystick funcionando em tempo real.
O xPC target também oferece outras possibilidades pelo xPC Target Embedded Option, com outros modos de
aplicação. O modo StandAlone, por exemplo, em que é eliminada a necessidade do computador host para a realização
de aplicações em Real time, se mostrou interessante para as necessidades da Flight Technologies. Este seria um passo
provável na sucessão das atividades.
7. Comentários e Conclusão
Entre as dificuldades encontradas, destaca-se a dificuldade de aprendizado das ferramentas de tempo real do
Simulink, tais como o Real time Workshop, o Target Language Compiler, o Real-Time Windows Target e o xPC
Target, para citar apenas as mais estudadas nesse trabalho. Estas ferramentas não são de conhecimento e uso da maioria
dos usuários do MatLab e muitas vezes apresentam documentação pouco clara. Tal limitação exigiu um trabalho de
descobertas e aprendizados, via comunidades e fóruns na Internet e pelo uso do HELP do MATLAB: esforços próprios
de um trabalho de pesquisa.
Os erros levaram a novas experimentações de outras ferramentas do Simulink, assim como a melhor
compreensão das utilizadas. À medida que foram sendo estudadas ferramentas tais como o Real time Workshop, RealTime Windows Target e do xPC Target, se obteve noção da vastidão de conhecimento e das possibilidades ainda a
serem exploradas. A criação do próprio conhecimento de acordo com esse processo foi bastante interessante e tornou
extremamente válido o trabalho desenvolvido.
8. Agradecimentos
O autor agradece o apoio financeiro do CNPq para o desenvolvimento deste trabalho. Agradece também a
estrutura e o apoio fornecido pelo IAE (Instituto de Aeronáutica e Espaço) e pela empresa Flight Technologies.
9. Referências
Nelson, Robert C., 1989, “Flight Stability and Automatic Control”, McGraw-Hill, Inc
http://www4.in.tum.de/~pretschn/teaching/testsem02-ausarb/koenig-embsys-folien.pdf. Acessado em 05/08/2006
http://en.wikipedia.org/wiki/Real_time. Acessado em 05/08/2006
Download

simulação em tempo real de veículos aéreos não tripulados