Desenvolvimento de um ambiente para visualização de manobras

Propaganda
Anais do 14O Encontro de Iniciação Científica e Pós-Graduação do ITA – XIV ENCITA / 2008
Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 20 a 23, 2008.
Desenvolvimento de um ambiente para visualização de manobras realizadas
durante ensaios com um mini-helicóptero
Pedro Meira de Vasconcellos Bezerra
Instituto Tecnológico de Aeronáutica (ITA) - Praça Marechal Eduardo Gomes, 50 - Vila das Acácias
Bolsista PIBIC-CNPq
[email protected]
Roberto Kawakami Harrop Galvão
Instituto Tecnológico de Aeronáutica (ITA) - Praça Marechal Eduardo Gomes, 50 - Vila das Acácias
[email protected]
Resumo. O presente trabalho teve por objetivo principal o desenvolvimento, utilizando a API JAVA 3D, de um
ambiente virtual onde pudessem ser visualizadas as manobras realizadas em laboratório com o Helicóptero Quanser
3DOF do Laboratório de Controle da divisão de Engenharia Eletrônica do ITA. A visualização dos ângulos descritos
pelo mini-helicóptero também deveria ser possível através de gráficos auxiliares ângulo versus tempo.
Palavras chave: programação 3D, controle, ambiente virtual, JAVA 3D, palavra chave 5.(até 5)
1. Introdução
Quando uma experiência é realizada em laboratório, o resultado desta é armazenado em várias formas: desde
tabelas, registros escritos até filmagens. Com o Helicóptero Quanser 3DOF, utilizado na Divisão de Engenharia
Eletrônica do ITA, não é diferente. Uma vez que filmá-lo não é uma maneira prática de guardar os resultados das
práticas, e que uma mera tabela de ângulos fornecida pelos encoders muitas vezes não transparece o resultado, surgiu a
necessidade de um ambiente virtual de visualização dos movimentos descritos pelo mesmo.
2. Descrição do Problema
Este problema está relacionada com o projeto “Identificação e Controle de Sistemas Aeroespaciais”, que foi
realizado na Divisão de Engenharia Eletrônica do ITA de outubro de 2004 a setembro de 2006 com apoio da FAPESP.
Dentro do primeiro projeto acima mencionado, foi adquirido um mini-helicóptero fabricado pela empresa Quanser
Consulting, que se encontra instalado no Laboratório de Controle por Computador do Departamento de Sistemas e
Controle (Fig. 1). Esse sistema possui três graus de liberdade mecânicos, associados aos ângulos de deslocamento
(travel, T), atitude (pitch, P) e elevação (elevation, E). O movimento de deslocamento consiste em uma rotação de todo
o sistema em torno do eixo vertical (Fig. 2). O ângulo de atitude está associado a movimentos do corpo principal do
helicóptero no plano normal ao braço de sustentação (Fig. 3). A elevação é definida como o movimento vertical do
corpo do helicóptero (Fig. 2). Os três movimentos são controlados através da tensão de armadura dos motores DC
conectados às hélices. Os ângulos T, P e E são medidos por encoders de 8192, 4096 e 4096 pulsos por rotação,
respectivamente.
Figura 1. Helicóptero Quanser de três graus de liberdade.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
,
Figura 2. Representação esquemática do helicóptero.
A linha tracejada a 27o da horizontal corresponde à posição do braço de sustentação quando o helicóptero está pousado
sobre a mesa.
Figura 3. Vista do corpo principal do helicóptero no plano ortogonal ao braço de sustentação. FMF e FMB representam as
forças geradas pelos motores dianteiro e traseiro, respectivamente.
Neste trabalho, que dá continuidade às atividades de iniciação científica de um outro aluno (Luiz Fernando
Dalcico, Pibic, 2006-2007) foi desenvolvido um ambiente gráfico que permite visualizar o movimento tridimensional
realizado pelo helicóptero, após a realização de um ensaio, com base nos sinais adquiridos pelos encoders. São também
apresentados gráficos dos sinais dos encoders, permitindo relacioná-los, de forma visual, com a manobra efetuada.
Tal ambiente facilitará a análise do desempenho da lei de controle empregada e também favorecerá a
apresentação de resultados em seminários e conferências. Adicionalmente, o ambiente poderá ser usado em aulas de
graduação e pós-graduação para ilustrar conceitos de Engenharia de Controle.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
,
3. Resultados Obtidos
Como já foi explicado no relatório parcial, o primeiro semestre do projeto constituiu a etapa dedicada ao
acúmulo de conhecimentos necessários para a implementação do programa. Ainda assim, ao longo do segundo
semestre, surgiram novos pontos que necessitaram uma nova pesquisa por classes e métodos adequados. A API
utilizada (JAVA 3D) se mostrou realmente eficiente e versátil, tendo sido uma ótima escolha para o projeto. Entretanto,
surgiu a necessidade de se estudar o JAVA 2D, que inicialmente não estava previsto no cronograma.
Os conceitos envolvidos na programação em JAVA 3D têm sua base na orientação a objetos, que representa o
paradigma da plataforma Java. Tais informações podem ser encontradas em vários livros, como o citado na
bibliografia., que foi utilizado em conjunto com tutoriais e outras obras auxiliares para a compreensão de tais conceitos.
Já a API JAVA 3D foi estudada com base no conjunto de tutoriais da própria Sun
http://java.sun.com/developer/onlineTraining/java3d/. A estrutura de um programa de JAVA 3D pode ser mostrada
através de um grafo envolvendo nós e folhas, que mostram a relação entre as diversas partes componentes do
helicóptero e alguns objetos criados obrigatoriamente, devido a própria estrutura de um programa em JAVA 3D. Por
exemplo, é criado um objeto universo o qual recebe todas as partes que serão animadas na tela, e este universo por sua
vez é inserido em outro, chamado de Canvas3D, que representa basicamente uma tela onde será projetada a animação.
Os inúmeros detalhes envolvidos na programação em JAVA 3D podem ser omitidos, pois sua explanação resultaria em
um mini tutorial, e o foco do projeto é em resultados. Entretanto, o código estará sempre com comentários que
objetivam facilitar o trabalho de outros programadores que por ventura necessitem alterar ou compreender melhor
alguma parte específica do mesmo.
Durante a parte teórica do projeto, inúmeros testes foram realizados, visando sempre uma maior compreensão
das funcionalidades envolvidas. Desde programas simples, como figuras geométricas 3D em movimento, até alterações
na própria estrutura do nosso programa principal foram alvo de estudo.
Ao término do trabalho, o helicóptero ganhou uma nova aparência, que pode ser vista na Fig. 5, comparada
com a antiga, mostrada na Fig. 4.
Figura 4. Modelo antigo para o helicóptero
Figura 5. Novo modelo do helicóptero
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
,
A aplicação de texturas ao helicóptero, antes cogitada, foi considerada desnecessária a fim de permitir mais
tempo dedicado a outros aspectos mais importantes.
Em seguida, o desafio foi plotar gráficos 2D, que permitissem a visualização dos ângulos em função do tempo.
Para isto, mostrou-se necessário o estudo da API JAVA 2D, como já foi citado. Com auxílio de rotinas encontradas na
internet, foi possível acelerar o entendimento de algumas funcionalidades do JAVA 2D e adaptação das mesmas a fim
de realizar a plotagem de uma série de dados gravada em um vetor. Utilizando a rotina já desenvolvida anteriormente
de leitura de dados contidos num .txt e gravação dos mesmos em uma classe denominada ValoresAngulos, foi possível
plotar cada um dos ângulos (Travel, Pitch e Elevation) em um gráfico simples ângulo versus tempo.
Em seguida, já com a animação do helicóptero e com o gráfico dos ângulos (ainda estático), buscou-se uma
maneira de conseguir mostrar as 4 telas (simulação e cada um dos gráficos) em uma mesma tela. Para isto foi
indispensável a ajuda do doutorando Anderson Soares, que com seu conhecimento em JAVA tornou possível esta tarefa
em pouco tempo. Uma vez dividida a tela em mais de uma, pude explorar os atributos e métodos das classes envolvidas
a fim de organizar a disposição das mesmas na tela principal. Ao término desta tarefa, o programa ficou já na sua
aparência final, faltando apenas conseguir plotar os ângulos de maneira concomitante com a execução dos movimentos
por parte do helicóptero.
Tal objetivo foi alcançado através da utilização de uma “thread” inserida dentro de um loop for que plotava o
gráfico até o i-ésimo elemento de um vetor. Assim pode-se ir plotando os gráficos para 0, 1, 2, ..., i, i+1, ..., n
elementos, um por cima do outro, dando a sensação de animação na tela. O resultado ficou bastante interessante, mas
ainda não está perfeito. Um tema interessante de estudo é a tentativa de sincronização entre esta thread e o behavior
utilizado para animar o mini-helicóptero, de modo que as animações andem exatamente juntas (no presente trabalho
precisei usar uma estimativa da diferença entre os tempos levados entre os frames para minimizar a diferença entre as
animações no tempo).
Ainda foi incluido um botão de reinicialização para o programa, de forma a poder repetir a simulação sem
precisar voltar na tela do compilador. Este botão, entretanto, só reinicia o movimento do helicóptero. Este é outro ponto
que pode ser explorado visando a melhoria do software.
Uma sugestão para futuras implementações neste programa pode ser sintetizada nos seguintes tópicos:
• Sincronização: entre a plotagem das animações 2D, 3D e a leitura dos arquivos no .txt, já que está é feita antes,
armazenando-se tudo em um vetor, o que pode estourar o limite permitido de memória.
• Implementação de botões que dinamizem a interface usuário-programa: desde uma seleção para o tempo em
milissegundos entre os frames até um espaço destinado a mudar o endereço do arquivo texto sem precisar
alterar-se o código (atualmente o programa só lê o arquivo angulos.txt presente no disco rígido c: .
Estes são alguns dos problemas que ficam em aberto. Outros, porém, surgiram e, mesmo não estando incluídos
nas previsões de trabalho, já foram solucionados, facilitando o uso do programa. Como já foi citado, arquivos muito
grandes podem estourar a memória total permitida. A solução para mesmo assim poder visualizar tais conjuntos de
dados foi uma rotina em MATLAB para realizar uma amostragem de pontos, diminuindo a qualidade do movimento,
porém tornando viável sua simulação. A rotina pede apenas o vetor TPE (vetor de três colunas onde cada uma traz os
valores dos ângulos Travel, Pitch e Elevation, respectivamente, fornecido pelo MATLAB após simulação com o
Helicóptero Quanser 3DOF do Laboratório de Controle do IEE) e um número de amostras desejado. A rotina procura
então amostras espaçadas igualmente no vetor de modo a não perder nenhuma parte do movimento, e as grava em um
novo vetor (que recebe a sáida da função).
Uma vez diminuído o vetor, ele ainda não está pronto para utilização. Um problema de compatibilidade surge
entre os valores gerados pelo MATLAB e os lidos pelo JAVA 3D. A parte decimal está separada por pontos, ao invés
de vírgulas. Além disso, o JAVA 3D pede um .txt e não um .mat . Logo, uma nova rotina em MATLAB foi concebida,
visando trocar pontos por vírgula (sem precisar continuar usando a função Find/Replace do Notepad). Esta rotina
também já cria o arquivo .txt a partir do vetor carregado diretamente do arquivo .mat, obitdo no MATLAB. Isso agiliza
o processo de conversão, permitindo uma utilização eficiente do programa.
Ou seja, desde que o usuário tenha os ângulos no MATLAB, através de 2 rotinas ele pode preparar os dados, e
com um comando para executar o programa, ver o helicóptero 3D executar as manobras descritas pelos ângulos
carregados.
A aparência final do programa é mostrada a seguir, na Figura 6.
Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008
,
Figura 6. Aspecto final do programa
O estudo das matrizes de transformação previsto no cronograma não se mostrou útil para as aplicações
desejada, não sendo portanto explicitados neste artigo.
4. Conclusões
Após um longo percurso, o projeto chega em sua fase final completando todos os objetivos descritos na
proposta de trabalho apresentada inicalmente, além de outras funcionalidades adicionais, algumas incompletas, que
ficam como sugestão.
Há sempre uma série de implementações que podem ser realizadas, nenhum programa pode ser considerado
completo, até devido às novas classes que surgem, permitindo uma maior eficiência no desempenho do software.
Alguns dos pontos principais que podem ser trabalhados já foram descritos no item anterior, mas certamente outros
programadores terão novas idéias a acrescentar.
Que este trabalho possa vir a ser útil para aqueles que operam com o Helicóptero Quanser 3DOF e com outros
equipamentos similares. É importante salientar que o JAVA 3D e o JAVA de maneira geral permitem uma rápida
alteração das características do programa de forma a adaptá-lo. Com um bom conhecimento das classes utilizadas no
programa e de seus métodos principais pode-se realizar alterações visando a adaptação do programa para visualizar
outros equipamentos, mantendo inclusive as mini-telas que plotam algum dado de interesse concomitantemente com a
animação.
5. Agradecimentos
Ao professor Kawakami, pela paciência dedicada. Ao doutorando Anderson Soares, que foi de grande ajuda na
fase final do projeto. Ao amigo Felipe Ebert, graduando em Computação pela UFPE, que ajudou com sua experiência
na escolha das classes ideais. Ao CNPq, pela oportunidade conferida a nós, iniciantes na ciência, de dedicar tempo à
atividades acadêmicas. E aos companheiros de apartamento no ITA, que me apoiaram sempre.
6. Lista de referências
DEITEL, H. M.; DEITEL, P.J. Java Como Programar: 6 ed. São Paulo: Bookman, 2005. 1110 p.
Download