Quadrocopter Simulator: uma plataforma para simulação de vôo Cládio Martins Jr. e Leonardo Heidrich Universidade do Vale do Rio dos Sinos (Unisinos) Unisinos 950, São Leopoldo, RS, Brasil [email protected], [email protected] Resumo Este artigo descreve o desenvolvimento da primeira versão de uma plataforma de simulação de vôo chamada Quadrocopter Simulation. Nesse projeto o objetivo principal é prever situações críticas em que o dispositivo venha a perder o controle, tomando decisões antecipadas antes mesmo de construí-lo, com a finalidade de minimizar erros de desenvolvimento. 1. Introdução A cada dia, mais inseguras e violentas ficam as ruas das grandes e pequenas cidades. Com isso, o desenvolvimento de sistemas que possibilitem o monitoramento dessas ruas de maneira remota vem crescendo constantemente. Baseado nessa necessidade foi proposto desenvolver uma aeronave capaz de fazer a vigilância de quaisquer áreas a partir de uma câmera de vídeo embarcada no veículo. Esse monitoramento remoto é possível através do envio dessas imagens capturadas pela câmera por uma rede de internet sem fio (Wireless). A estrutura escolhida para desenvolver a aeronave foi baseada no projeto U.A.V.P. (Universal Aerial Video Platform), que é um projeto open source realizado por três universidades europeias. Essa aeronave denominada Quadrocóptero, é composta por quatro motores o que faz com que ela tenha uma boa estabilidade, permitindo assim uma boa captura das imagens. Neste primeiro ano de projeto, nos propomos a construir um simulador para a aeronave, levando em consideração poder prever como ela se comportaria, quais tipos de comandos seriam relevantes, quais problemas poderiam ocorrer e como poderiam ser solucionados. Tendo em vista que no segundo ano do curso de Engenharia da Computação da Unisinos é sugerido o desenvolvimento de um projeto, aproveitamos o espaço disponibilizado pela instituição para efetuar a realização dessa primeira etapa. Durante esse ano de 2008, foram aproveitadas atividades específicas de disciplinas distintas para o desenvolvimento do trabalho, agilizando algumas sub-etapas do projeto como programação Java para desktops e programação para microcontroladores. O projeto é composto basicamente por um software, responsável pela etapa de controle e por um hardware, que tem como função o acionamento independente de cada um dos quatro motores que compõem a aeronave. O objetivo principal que nos incentivou a desenvolver esse projeto foi a deficiência na área do monitoramento remoto, onde o controle dessa plataforma móvel pode ser feito a distância, prevendo uma não exposição à determinados riscos que esse segmento possui. 2. Desenvolvimento Neste primeiro ano de projeto, focamos o desenvolvimento na parte de simulação de vôo da aeronave. Essa simulação é composta por uma parte desenvolvida em software, outra em hardware, sendo interligada através da comunicação serial, responsável pelo envio de comandos do software para o hardware. A simulação via software se deu a partir do controle de movimentação com visualização em uma interface 3D (três dimensões) e com um gráfico, também em 3D, de rotação individual de cada motor. O controle dos movimentos é originado a partir de um joystick do tipo manche. Conforme a posição em que o joystick se encontra, determinado par de coordenadas é enviado para o software. Um novo par de coordenadas é enviado constantemente acarretando numa seqüência de comandos. Esses comandos fazem com que haja variação da movimentação na interface de visualização. Na figura 01 pode ser vista a interface de simulação: valor lido em um sinal de tensão do tipo P.W.M. (pulse width modulation) que faz o acionamento dos motores. Como esse sinal é relativamente baixo para fazer com que o motor se movimente, um circuito externo é responsável por aumentar a amplitude e a intensidade da corrente do sinal P.W.M. Com o intuito de comparar o valor de rotação dos motores no software e no hardware para podermos analisar se ambos estão sincronizados, é mostrado esse valor em um display de LCD (liquid cristal display). O microcontrolador possui um pequeno software que faz o gerenciamento desse sinal enviado e distribui ordenadamente para cada um dos motores que compõem a aeronave. Esse software foi implementado na linguagem de programação C. 3. Funcionalidades Figura 01: Interface de simulação em 3D Da mesma maneira, a seqüência de comandos faz com que o gráfico de rotação também sofra alteração proporcional ao movimento. O gráfico de rotação dos motores pode ser acompanhado na figura 02: Através dessas simulações feitas em software e hardware, pode-se analisar o comportamento de todo o conjunto. Uma das vantagens da simulação é poder prever como a aeronave se comportaria no ar, qual tipo de movimento faria, antecipando medidas para prevenção de erros. Essa análise será de grande valor no momento em que a segunda etapa do projeto estiver em andamento. Outra simulação de extrema importância é em relação à velocidade de rotação dos motores. Com a análise de desempenho individual de cada motor, pode-se coletar dados de como os motores estão se comportando, qual a intensidade de corrente está utilizando, e com isso limitar tais velocidades para que sobrecarga ou aquecimento não venham a ocorrer durante o vôo. 4. Dificuldades encontradas Figura 02: Gráfico de rotação dos motores A simulação em hardware é realizada com o envio dos comandos através da porta de comunicação serial. Os comandos gerados pelo joystick são enviados serialmente para um microcontrolador que converte o Durante essa primeira etapa de desenvolvimento, muitas dificuldades de fizeram presentes, acarretando períodos longos de desenvolvimentos em determinadas fases do projeto. Umas das primeiras dificuldades que apareceram foi em relação à leitura do joystick. Como a Sun, grupo o qual o Java faz parte, não disponibiliza nenhuma A.P.I. (application programming interface) oficial para trabalhar com controladores de jogos, utilizamos uma biblioteca alternativa para implementarmos a leitura do dispositivo. Como não possuíamos nenhuma experiência relativa a isso, passamos boa parte do ano estudando essa A.P.I. Com o desenrolar do projeto, outra dificuldade se fez presente, essa em relação ao tratamento de imagens em 3D. Apesar de que a Sun possui um A.P.I. oficial para o desenvolvimento de interfaces 3D, muitas dificuldade foram encontradas, pois da mesma forma que o joystick, também não possuíamos nenhum conhecimento em relação à essa tecnologia. Uma das fazes mais difíceis do projeto foi a implementação da comunicação serial entre o computador e o microcontrolador. Apesar de esse conteúdo ter sido trabalhado durante uma das disciplinas do curso, essa etapa foi a que nos custou maior tempo e empenho, pelo motivo que escolhemos trabalhar com um microcontrolador que não possuía comunicação serial como periférico. Toda a implementação foi feita trabalhando com um nível de abstração muito baixo, utilizando recursos complexos do microcontrolador. Uma das últimas dificuldades relevantes foi no momento de implementar o gráfico de rotação dos motores em 3D. Novamente, apesar da Sun possuir uma biblioteca oficial para trabalhar com gráficos complexos, ela se mostra bastante complicada, não sendo fácil o compreendimento em um primeiro estudo. 5. Perspectiva futura Como dito anteriormente, nesse ano foi realizada ainda a primeira etapa do desenvolvimento do protótipo. A perspectiva é que o desenvolvimento do projeto continue no próximo ano, aproveitando novamente o espaço disponibilizado pela universidade para desenvolvermos um projeto no terceiro ano do curso. Temos como principal objetivo para a próxima etapa do desenvolvimento, a construção da aeronave, bem como a estrutura, circuitos eletrônicos e o controle através da rede sem fio. 6. Referências Bibliográficas [1] Site U.A.V.P. http://uavp.ch/moin [2] A.P.I. JFreeChart http://www.jfree.org/jfreechart/api/javadoc/index.html [3] A.P.I. Java3D http://java.sun.com/javase/technologies/desktop/java3d/fo rDevelopers/J3D_1_3_API/j3dapi/index.html