• Nenhum resultado encontrado

Simulador de Dirigíveis Baseado em Java / VRML

+Superfície de

6. SIMULADORES DE DIRIGÍVEL 1 Introdução

6.6 Simulador de Dirigíveis Baseado em Java / VRML

Apesar da utilidade e validade dos ambientes de CACSD, a experiência anterior no desenvolvimento do projeto de um helicóptero autônomo (RAMOS, 1995, RAMOS 1995a) mostrou a importância de três recursos adicionais incorporados a um ambiente de simulação:

• representação e animação 3D (não disponível na versão 5 do MATLAB) do dirigível em vôo;

Estados Comandos

Comunicação via socket

• uma interface com o usuário, contemplando comandos de atuação, bem como um painel para a exibição do estado do dirigível, numa forma similar as utilizadas em aviônica;

• um painel para a configuração e controle da execução da simulação.

O advento da linguagens de programação Java (JAVA, 2001) e VRML (do Inglês

virtual reality modelling language – linguagem para modelagem de realidade virtual)

(VRML, 2001), com a promessa de uma solução multiplataforma e aberta para os vários componentes de um ambiente de simulação do dirigível, motivaram, apesar do custo adicional de ter de se realizar a migração do modelo matemático para Java, a escolha destas para comporem o ambiente, atendendo aos propósitos especificados anteriormente.

Mundo VRML Pan Tilt Vento Comandos Simulador Balonetes Flutuabilidade Vetorização Propulsores Leme de direção e profundidade Painel de Instrumentos

Figura 6.6: Interface do ambiente de simulação Java/VRML.

O ambiente de simulação resultante (RAMOS, 1999a) é ilustrado na Figura 6.6, onde a interface do simulador é composta de um Applet em Java, integrado em uma simples página HTML, que permite a um usuário, localizado em qualquer parte do mundo, acessar sua URL. A interface carrega todos os arquivos e classes necessárias para o simulador operar no computador do usuário e a simulação é inicializada. Ressalta-se que alguns componentes mostrados nesta página são utilizadas para compor a Interface Homem-Máquina do dirigível, o que é descrito no Capítulo 7.

Na Figura 6.7, que mostra a estrutura do simulador, aparecem os principais componentes responsáveis por sua operação: o Mundo Virtual VRML, e as classes escritas em Java: Simvrml, sockcomm, console, runmod e interfac, e a EAI (External Authoring

Interface) (EAI, 2001). A EAI é uma biblioteca que acompanha o plug-in VRML e permite

que programas escritos em Java e JavaScript controlem o conteúdo de um mundo VRML. Os controles disponíveis incluem: criação e remoção de objetos, operações com: rotações, translações, mudanças no ponto de vista do usuário, mudanças de propriedades, etc.

Controle do ambiente VRML

Máquina Virtual Java do Browser

Mundo Virtual VRML

Mouse/ Teclado

Eventos

(usuário) Painel de comando

e Instrumentos (Interface gráfica c/ usuário ) Atualização do Painel de Instrumentos e Interface de comandos Thread Modelo Matemático Thread Interface Classe EAI Fluxo Comandos Fluxo Dados COM COM STAT STAT CONT

CONT: variáveis de controle desimulação STAT: variaveis de Estado de Simulação COM : variaveis de comando

simvrml - interface com componentes do simulador Transformações Geométricas (Rotações, Translações) via socket Conexão Classe Simulador operado via rádio- controle SOCKET armazena estados e comandos sockcomm console runmod interfac

Figura 6.7: Estrutura e componentes principais do ambiente Java / VRML de simulação. 6.6.1 Mundo VRML

O mundo VRML é visto no canto esquerdo superior da Figura 6.6. O dirigível é modelado como um elipsóide alongado, com propulsores cilíndricos em cada lado, e possui superfícies aerodinâmicas feitas de poligonais. A vista “default” do veículo é como se ele

fosse visto do chão; o usuário, entretanto, pode embarcar em um vôo virtual do dirigível clicando no botão “inside” embaixo dos comandos do pan-tilt e passando a observar o mundo do ponto de vista do piloto. O mundo VRML também mostra o solo feito de plano tecelado, e o céu, nublado para mais realismo. O dirigível é mostrado ao longo do tempo de simulação nas posições e orientações providas pela integração do modelo dinâmico, segundo o referencial inercial SCI. O mundo VRML pode ser também representado em 3 dimensões a partir por exemplo de um mapa topográfico da região a ser sobrevoada pelo dirigível; isso permite um “vôo virtual” anterior à missão.

6.6.2 Classe que Contém os Estados e Comandos do Simulador – classe interfac

A classe "interfac" é o repositório das informações do simulador, contendo variáveis estáticas de controle da simulação tais como: o modo de operação do simulador (por exemplo contínuo ou passo a passo), o estado da aquisição de dados (ligado/desligado), bem como variáveis dinâmicas congregando os comandos e estados do dirigível, cujos valores passados são armazenados em um buffer. O uso de instâncias desta classe permite a troca de várias informações entre os demais componentes do simulador. 6.6.3 Classe de Controle do Dirigível – classe simvrml

Simvrml é a classe principal e a primeira a ser chamada pelo navegador quando a

página do simulador é acessada. Ela é responsável pela inicialização de todas as outras classes e pela conexão do mundo VRML ao Applet Java, começando a simulação.

Este componente inclui os métodos responsáveis pela atualização da posição e orientação (dentro do mundo virtual) e pela definição do ponto de vista do usuário, a cada passo de simulação. Isto permite ao usuário a visualização dos movimentos que estão sendo executados pelo dirigível.

6.6.4 Console do Dirigível – classe console

Console é a classe Java da interface homem-máquina do dirigível. Ela inclui os

comandos do simulador, os comandos do dirigível, os instrumentos do simulador, os comandos de controle dos balonetes e de variação da flutuabilidade e, também, os comandos de aquisição de dados.

Os comandos do simulador vistos no canto inferior esquerdo da Figura 6.6, permitem ao usuário executar a simulação passo a passo ou continuamente, adquirir dados para posterior visualização gráfica e reinicializar a simulação. É também possível mudar o ponto de vista da representação VRML de uma visão a partir do solo para o ponto de vista de uma câmera virtual embarcada no dirigível (botão inside), cuja orientação pode ser comandada mediante os botões denotados por pan-tilt logo acima. Adicionalmente, o usuário recebe informações do ciclo atual de simulação (em ms/ciclo), tempo global de simulação e o número de quadros do mundo VRML que estão sendo mostrados por segundo.

Os comandos do dirigível vistos no canto inferior direito da Figura 6.6 permitem ao usuário:

• Fazer com que o dirigível execute movimentos de arfagem (para baixo ou para cima) ou de guinada (para a esquerda ou para a direita) segurando o cursor na região circular da janela.

• Ajustar a velocidade dos motores mantendo o botão esquerdo do cursor pressionado, movimentando-o para cima e para baixo na região mais a direita na figura.

• Vetorizar os motores para cima e para baixo pressionando o cursor no topo desta região.

Em qualquer caso, as coordenadas do cursor são transformadas nos comandos correspondentes e enviadas como entradas para o cálculo do modelo dinâmico.

Balonetes e flutuabilidade são comandados durante a simulação mediante as duas réguas mostradas no lado inferior esquerdo da Figura 6.6. A régua superior permite mudanças na divisão percentual do volume entre os balonetes dianteiros e traseiros, nota-se que no AS800, há um só balonete, de tal forma que este comando não se aplica. Estes valores afetam o equilíbrio do dirigível. A régua inferior é usada para definir a flutuabilidade do dirigível, o que corresponde a diferença entre a força aerostática e o peso do dirigível. Na figura o dirigível está voando com flutuabilidade neutra (“H=0” na figura) e os balonetes têm metade do volume total em cada um deles.

O painel do simulador inclui, ainda, métodos para mostrar os instrumentos de vôo do dirigível na forma de um painel comumente encontrado em aviônica, emulando altímetro, bússola, horizonte artificial, etc., permitindo assim acompanhar seu comportamento durante um vôo.

Uma janela de aquisição de dados (que não está presente na Figura 6.6) permite a apresentação gráfica das variáveis armazenadas durante a simulação. A implementação atual permite mostrar os gráficos das posições (cartesiana e atitude), velocidades e acelerações do dirigível.

A classe Console é a responsável pela interpretação dos eventos de cursor e teclado gerados pelo usuário e capturados pelo browser. Estes eventos são transformados nos comandos de simulador descritos acima. Esta classe é também responsável pela atualização do painel de instrumentos, usando dados de simulação.

O painel de instrumentos do simulador é apresentado no contexto gráfico criado por

simvrml, mas sua atualização é feita pela classe console. Uma figura que contém todos os

desenhos do painel é carregada quando o simulador está sendo inicializado. Com o objetivo de ganhar em desempenho, somente são atualizadas as regiões que são efetivamente alteradas no painel de instrumentos (dados numéricos e mostradores dos instrumentos de vôo).

6.6.5 Execução do Modelo Matemático – classe runmod

Runmod é a classe responsável pela execução do modelo dinâmico do dirigível. É

uma thread Java responsável pela execução de um passo de simulação do modelo matemático, dando como resultado os novos estados do dirigível. A execução pode ser contínua ou passo a passo, dependendo da configuração escolhida pelo usuário. Esta classe também é responsável pelo comando de atualização do mundo virtual.

O modelo matemático é um objeto em Java que a todo ciclo recebe como entradas os comandos de arfagem e guinada, rotação e ângulo de vetorização dos motores, a percentagem de ocupação dos balonetes e flutuabilidade, e a direção e intensidade do vento, e provê como saída a posição e orientação do dirigível. A saída do modelo dinâmico é usada para atualizar o mundo VRML.

6.6.6 Componentes Adicionais

A classe de plotagem fornece recursos para a apresentação gráfica de variáveis tais como velocidades, acelerações, orientação, posição e altitude, etc. O usuário pode também definir a direção e velocidade em relação à terra do vento que age sobre o dirigível.

6.6.7 O Simulador como uma Ferramenta de Treinamento

Seja durante toda a fase de desenvolvimento do dirigível robótico, seja em situações de emergência durante a sua operação, é necessária a existência de uma unidade de comando remoto (RCU do Inglês remote control unity)) que permita a operação manual do veículo, conforme descrito na Seção 2.2.3.

A forma mais segura e barata de treinar pilotagem via RCU é o uso de simuladores de vôo. Em simuladores de vôo, conectando-se a RCU a um computador, como acontece em aeromodelismo (SIMUL, 2001), o usuário pode familiarizar-se com a interface de rádio controle e com o comportamento do veículo. Assim decidiu-se desenvolver os componentes de hardware e software adicionais para tornar o simulador uma ferramenta de treinamento de pilotagem do dirigível. A Figura 6.8 apresenta o esquema desenvolvido.

Rádio Controle Micro-controlador

(Mede sinais PWM que são enviados pela linha

serial)

Sinais PWM

Serial

PC - Windows

Serial

Cabo Serial – Dados em ASCII

RadCon

(Programa C++) lê linha serial e envia dados via

sockets Comandos de rádio Sockets 8 canais Cabo - Sinal PWM

Browser com plug in

VRML executando o simulador de

dirigiveis

Figura 6.8: Componentes acionais de software e hardware para treinamento de pilotagem. A RCU envia comandos em PWM (modulação por largura de pulso) para o micro- controlador, que os converte em dados ASCII, e os envia a qualquer computador externo através de interface serial. No computador, um programa escrito em C++ lê os dados da

porta serial, e os envia via socket para o simulador baseado em Java/VRML. Esta implementação foi escolhida devido a características de segurança da máquina virtual Java executando num browser, o qual não permite uma comunicação direta com a porta serial a menos que o desenvolvedor esteja bastante familiarizado com os mecanismos de segurança dos browsers e seja capaz de superá-los.

Atualmente a ferramenta de treinamento de pilotos permite, a qualquer integrante do projeto, pilotar um dirigível simulado, de uma forma bastante próxima do dirigível real, e usando exatamente a mesma RCU que ele utiliza para controlar remotamente o dirigível quando de vôos reais.