Post on 19-Jan-2017
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS
Programa de Graduação em Engenharia Mecânica (Linha de formação em
Mecatrônica)
Daniel de Castro Ribeiro Resende
Nicolas Ives Roque Pacheco
CONTROLE DE ESTABILIDADE DE AEROMODELO TIPO QUADCOPTER
AUTÔMATO POR LEI DE CONTROLE PID
Belo Horizonte
2014
Daniel de Castro Ribeiro Resende
Nicolas Ives Roque Pacheco
CONTROLE DE ESTABILIDADE DE AEROMODELO TIPO QUADCOPTER
AUTÔMATO POR LEI DE CONTROLE PID
Monografia apresentada ao curso de
Engenharia Mecânica (Linha de formação em
Mecatrônica) da Pontifícia Universidade
Católica de Minas Gerais, como requisito
parcial para obtenção do título de Bacharel em
Engenharia Mecânica (Linha de formação em
Mecatrônica)
Orientador: Pedro Américo Almeida Magalhães
Junior
Belo Horizonte
2014
Daniel de Castro Ribeiro Resende
Nicolas Ives Roque Pacheco
CONTROLE DE ESTABILIDADE DE AEROMODELO TIPO QUADCOPTER
AUTÔMATO POR LEI DE CONTROLE PID
Monografia apresentada ao curso de
Engenharia Mecânica (Linha de formação em
Mecatrônica) da Pontifícia Universidade
Católica de Minas Gerais, como requisito
parcial para obtenção do título de Bacharel em
Engenharia Mecânica (Linha de formação em
Mecatrônica)
___________________________________
Dr Pedro Américo Almeida Magalhães Junior (Orientador) - PUC Minas
___________________________________
Dr Claysson Bruno Santos Vimieiro - PUC Minas
___________________________________
Dr William de Melo Silva- PUC Minas
Belo Horizonte, de de 2014.
AGRADECIMENTOS
Agradecemos ao nosso orientador, Dr Pedro Américo Almeida Magalhães
Júnior, pela prontidão com que se disponibilizou a fazer parte deste trabalho, e, pela
relevância de seu suporte durante a jornada de sua elaboração.
Somos gratos também à Fundação de Amparo à Pesquisa do Estado de
Minas Gerais (FAPEMIG), pelo auxílio cultural e financeiro provido, à fim da
apresentação e publicação deste trabalho na forma de artigo científico no Ibero-Latin
American Congress on Computational Methods in Engineering (CILAMCE 2014).
RESUMO
Nos últimos anos, os VANTs (Veículos Aéreos Não Tripulados), do tipo quadrirotor
ou quadcopter, têm tido destaque especial nas pesquisas de sistemas robóticos,
principalmente devido a versatilidade de sua navegação poder ser tanto em
ambientes externos como internos. Para que um aeromodelo impulsionado por
quatro rotores possa se manter em equilíbrio com relativa precisão, mesmo que em
voo pairado (proposta deste trabalho), é necessário um algoritmo de controle que
estabilize o sistema dinamicamente, impedindo que ele colapse devido a uma
perturbação ou devido ao somatório de dinâmicas geradas por seu próprio peso.
Existem várias técnicas de controle para o voo dos quadcopters, para o trabalho
proposto elabora-se uma malha fechada utilizando um algoritmo equacionado pela
lei de controle PID, por tratar-se de um nível de teoria, que está ao alcance das
ementas das disciplinas do curso de graduação em engenharia mecânica linha de
formação mecatrônica. Para o feedback da planta, utiliza-se de um circuito integrado
de mensuramento inercial (IMU), composto de acelerômetro, giroscópio, barômetro e
magnetômetro.Neste monitoramento da orientação angular e translacional do
quadcopter, utiliza-se filtros digitais e fusão de sensores para otimizar essas leituras.
Para o desenvolvimento do presente trabalho realizou-se os estudos de:
equacionamento matemático da dinâmica do sistema, do circuito eletro-eletrônico,
do sensoriamento, do projeto mecânico, da simulação computacional e da
implementação do algoritmo de controle.
Palavras-chave: VANT. UAV. Quadcopter. Controle. PID. IMU. Equacionamento.
Simulação.
ABSTRACT
In recent years, UAVs (Unmanned Aerial Vehicles), type quadcopter, have had
special attention in the research of robotic systems, mainly due to the versatility of its
navigation can be either external as internal environments. For a model airplane
propelled by four rotors to can still in balance with relative accuracy, even in hovering
flight (proposal of this work), one control algorithm to stabilize the system dynamically
is necessary, preventing it from collapsing due to a disturbance or due the sum of
dynamics generated by its own weight. There are several techniques to control the
flight of quadcopters for the proposed work we undertake a closed loop using an
algorithm solved by the law of PID control, because it is a level of theory, which is
well within the menus of the disciplines contained in graduation in the degree of
mechanical engineering witch specialization in mechatronics. For feedback plant, it
uses inertial measurement integrated circuits (IMUs), composed of accelerometer,
gyroscope, magnetometer and barometer. In monitoring the angular and translational
orientation of the Quadcopter, are used digital filters, and sensor fusion to optimize
these readings. For the development of this work was carried out studies:
mathematical modeling of the system dynamics, the electro-electronic circuit, the
sensing, the mechanical design, the computer simulation and the implementation of
the control algorithm.
Keywords: VANT. UAV. Quadcopter. Control. PID. IMU. Modeling. Simulation.
LISTA DE FIGURAS
Figura 1: Teleautômaton de Tesla ............................................................................. 20
Figura 2: VANT URV das forças armadas dos EUA .................................................. 21
Figura 3: Quadcopter de DeBothezat ........................................................................ 22
Figura 4: Drone AR Parrot ......................................................................................... 23
Figura 5: Gyroplane nº1 ............................................................................................ 27
Figura 6: Draganflyer III ............................................................................................. 28
Figura 7: Modelos notáveis de quadrirotores ............................................................ 29
Figura 8: Graus de liberdade do quadcopter ............................................................. 31
Figura 9: Esquema de rotação .................................................................................. 32
Figura 10: Rolagem ou arfagem ................................................................................ 33
Figura 11: Somatório de momentos (guinada) .......................................................... 34
Figura 12: Esquema de uma malha fechada de controle .......................................... 35
Figura 13: Diagramas PID ......................................................................................... 39
Figura 14: Resultados dos controladores PI, PID e FO[PI] ....................................... 40
Figura 15: Resultados experimentais do controle hierárquico ................................... 42
Figura 16: Coordenadas de múltiplos corpos ............................................................ 43
Figura 17: Ângulos de Euler ...................................................................................... 44
Figura 18: Digrama de blocos representando o MARG de Madgwick ....................... 53
Figura 19: Especificações dos motores ..................................................................... 55
Figura 20: Estrutura de modelamento em um grau de liberdade .............................. 56
Figura 21: Curvas de entrada e saída ....................................................................... 57
Figura 22: Diagrama em um grau de liberdade no Simulink ..................................... 58
Figura 23: Leituras dos sinais do diagrama de blocos .............................................. 59
Figura 24: Diagrama de tratamento de sinal ............................................................. 61
Figura 25: Calibração do magnetômetro ................................................................... 62
Figura 26: Calibração do acelerômetro ..................................................................... 63
Figura 27: Circuito de desenvolvimento .................................................................... 64
Figura 28: Estrutura usinada de fixação do frame ..................................................... 66
Figura 29: Estrutura de vôo ....................................................................................... 66
Figura 30: Plataforma de desenvolvimento para 5 graus de liberdade .................... 67
Figura 31: Montagem executada para as coletas de dados ...................................... 68
Figura 32: Modelo do quadcopter construído no SolidWorks .................................... 72
Figura 33: Blocos do atuador .................................................................................... 74
Figura 34: Blocos do atuador .................................................................................... 75
Figura 35: Respostas para Z e rotações ................................................................... 76
Figura 36: Reposta dos motores ............................................................................... 76
LISTA DE SIGLAS
10DOF - 10 Degrees Of Freedom
CC - Corrente Contínua
cP - Coeficiente de potência
cT - Coeficiente de Thrust
cos - Cosseno
ESC - Electronic Speed Controller
FO - Fractional Order
LQ - Least Quadratic
I2C - Inter Integrated Circuits
IMU - Inertial Measurement Unit
MARG -Magnetic, Angular Rate and Gravity
MCS - Magnetic Compass Sensor
MIT - Massachusetts Institute of Technology
MEMS - Micro Electronical Mechanic System
MOSFET - Metal Oxide Semiconductor Field Effect Transistor
p - Taxa de variação angular em x
Φ - Rotação no eixo z
𝑃𝑝 - Potência de propulsão
PID - Proporcional Derivativo e Integrativo
Ψ- Rotação no eixo y
PWM - Pulse-Width Modulation
q - Taxa de variação angular em y
R - Matriz de rotação
r - Raio
r - Taxa de variação angular em z
𝜌 - Densidade do ar
sen - Seno
SFL - Static Feedback Linearization Controller
SMC - Sliding-mode Control
SMC - Surface Mounted Component
STFIS - Self Tunable Fuzzy Interference System
tag - Tangente
θ- Rotação no eixo x
T – Força de impulso
u - Velocidade do corpo em x
UAV - Unmanned Aerial Vehicle
VANT - Veículo Aéreo Não Tripulado
v - Velocidade do corpo em y
w - Velocidade angular
w - Velocidade do corpo em z
X - Eixo x
Y - Eixo y
Z - Eixo z
SUMÁRIO
1 INTRODUÇÃO ....................................................................................................... 20 1.1 Objetivo Geral .................................................................................................... 23 1.2 Objetivos específicos........................................................................................ 23 1.3 Justificativa ........................................................................................................ 24
1.4 Escopo ............................................................................................................... 25
2 REFERENCIAL TEÓRICO ..................................................................................... 27 2.1 Revisão Bibliográfica ........................................................................................ 27 2.1.1 Dinâmica do quadcopter ................................................................................ 30 2.1.2 Sensoriamento ............................................................................................... 34
2.1.3 Controle por PID ............................................................................................. 38 2.2 Estado da Arte ................................................................................................... 39
3 REVISÂO TEÓRICA .............................................................................................. 43 3.1 Equacionamento matemático ........................................................................... 43 3.2 Cinemática do quadcopter ............................................................................... 45
3.3 Dinâmica do quadcopter ................................................................................... 46 3.4 Dinâmica dos rotores ........................................................................................ 48
3.5 Algoritmo de fusão de sensores ...................................................................... 49
4 METODOLOGIA .................................................................................................... 54 4.1 Diagramação mecânica..................................................................................... 54 4.2 Implementação para um grau de liberdade ..................................................... 56
4.3 Parametrização do algoritmo de sensoriamento ............................................ 59 4.4 Circuito de desenvolvimento ........................................................................... 63
4.5 Desenvolvimento da estrutura completa ........................................................ 65 4.6 Equalização das curvas de ganhos dos motores ........................................... 67 4.7 Simulação computacional ................................................................................ 72
4.8 Controle .............................................................................................................. 76
5 RESULTADOS ....................................................................................................... 78
6 CONCLUSÃO ........................................................................................................ 80
REFERÊNCIAS ......................................................................................................... 82
ANEXOS ................................................................................................................... 88
20
1 INTRODUÇÃO
VANTs (Veículos Aéreos Não Tripulados), ou do inglês UAVs (Unmanned
Aerial Vehicles), mais conhecidos pelo termo "drone", obtiveram destaque em
operações militares durante as recentes operações de espionagem e bombardeio
dos Estados Unidos no Iraque no ano de 2013.
No Brasil o governo brasileiro vem adquirindo VANTs através da Força
Aérea Brasileira, tendo-se uma estimativa de que durante a Copa do Mundo de
2014, e nas Olimpíadas de 2016 a segurança do espaço aéreo brasileiro contará
com 6 veículos aéreos não tripulados. Estes, terão como finalidade o monitoramento
e vigilância durante as copas das confederações no período de 15 à 30 de julho de
2014 (STOCHERO, 2013).
Os dois exemplos citados anteriormente demonstram que a importância dos
VANTs no cenário mundial tem crescido, e apresenta-se como uma tecnologia que
não só possui potencial para operações militares, como também para aplicações
civis.
Embora os veículos não tripulados, aparentemente serem uma tecnologia
relativamente nova, o conceito deste tipo especial de robô, data de 1898 durante a
guerra Hispano-Americana. Época em que Nicolai Tesla apresentou na Eletrical
Exposition no Madison Square Garden, um torpedo capaz de ser controlado
remotamente por radiofrequência. Este dispositivo foi nomeado pelo seu inventor de
Teleautômaton, ilustrado na figura 1 (NEWCOME, 2004).
Figura 1: Teleautômaton de Tesla
Fonte: NEWCOME, 2004
21
Inicialmente, as pesquisas de Tesla sobre controle remoto haviam sido
consideradas, como sem aplicação prática, ou, até mesmo como, simples truques
pelo exército americano. Em 1991 a primeira aeronave não tripulada da marinha
americana (figura 2) realizou cerca de 300 missões de reconhecimento, durante as
operações militares na guerra do Golfo, na operação Desert Storm, e novamente,
em 2006 na operação Desert Shield, abrindo o caminho para o desenvolvimento e
pesquisa dos UAVs (DEMPSEY, 2010).
Figura 2: VANT URV das forças armadas dos EUA
Fonte:MCCORMICK, 1995
Embora os VANTs tenham um histórico militar de aplicação, têm-se buscado
utilizar este tipo de robô em aplicações civis, como monitoramento de colheitas,
amostragem da atmosfera e entregas de correspondências, sendo o ultimo já
implementado pela empresa Amazon de compras on-line.
Dentre os VANTs, o modelo que tem alcançado maior interesse, é o
quadcopter, não somente pela sua simplicidade de montagem, mas pelo desafio na
implementação de seu sistema de controle.
O conceito do quadcopter tem existido desde as primeiras décadas do
século XX. Um dos primeiros modelos de um veículo, que usa quatro rotores para
decolar e manter voo que se tem notícia, foi desenvolvido por George DeBothezat
em 1922, ilustrado na figura 3 (BASTA, 2012).
22
Figura 3: Quadcopter de DeBothezat
Fonte:BASTA,2012
Embora os primeiros modelos tenham sido capazes de decolar e manter
voo, sua performance podia competir com as demais aeronaves existentes na
época,perdia em quesitos de velocidade e quantidade de carga transportável.
Devido a essas limitações o modelo quadcopter permaneceu esquecido até a
década de noventa, quando a evolução dos MEMS (Micro-Electronical Mechanic
Systems) permitiram a implementação de uma plataforma de controle à bordo, feita
por um microcontrolador (JUN, 2013).
Atualmente, o nível de estabilidade e segurança alcançado para o drone, já
permite a comercialização em larga escala, de um modelo de UAV, caracterizado
como brinquedo. O AR Parrot, por exemplo, é comercializado pela Parrot, empresa
líder mundial em equipamentos sem fios para smartphones. O drone da Parrot pode
ser controlado à distância, através de um aplicativo que é instalado em um
smartphone (figura 4).
23
Figura 4: Drone AR Parrot
Fonte: ARDrone, 2014
A variedade das aplicações dos possíveis aos quadrirotores vem
aumentando ultimamente. Dentre as possíveis formas de emprego, se destacam, o
combate a incêndios, operações de busca policial, manipulação de artefatos
explosivos, planejamento de obras, cobertura jornalística à eventos, filmagens de
filmes, imagens de animais selvagens, acompanhamento de trânsito e acidentes, et
cétera.
1.1 Objetivo Geral
Este trabalho de conclusão de curso objetiva a construção completa de um
protótipo do tipo quadcopter, a implementação de seu sensoriamento e o
equacionamento de seu algoritmo de controle pela técnica PID, tornando este capaz
de manter voo razoavelmente estável, isto é, com mínima variação de seus seis
graus de liberdade.
1.2 Objetivos específicos
Os objetivos específicos deste trabalho são:
24
a) Levantamento e equacionamento dinâmico do VANT do tipo quadcopter.
b)Construção de uma malha de controle fechada utilizando lei de controle
PID.
c) Construção da estrutura do quadcopter.
d) Aquisição de dados pelos sensores utilizados
e) Simulação utilizando os parâmetros do modelo alcançado.
f) Implementação do algoritmo de controle e aplicação no protótipo
construído.
1.3 Justificativa
O enfoque especial que os quadrirotores tem ganhado em matéria de
sistemas robóticos, estendendo suas aplicações em usos militares, civis, para
observação, e até, mapeamento de ambientes desconhecidos, é claramente
justificável por sua mobilidade aérea.
Para que um robô construído no formato de um quadrirotor possa realizar
tarefas como mapeamento ou reconhecimento de ambiente torna-se então
necessário que se saiba sua posição e orientação no espaço, juntamente com a
capacidade de movimentar-se neste.
Logo, a estabilidade do voo do quadcopter é vital para que ele possa ser
utilizado, impedindo que ele colapse devido a um forte vento, ao seu próprio peso ou
devido à resposta caótica do empuxo resultante entre hélice e fluido. Para evitar tal
acontecimento é necessário que exista um sistema de controle capaz de corrigir as
variações devido às perturbações, restaurando o quadcopter à posição de equilíbrio
com a maior velocidade possível. O controle por PID (Proporcional Derivativo e
Integrativo) apresenta-se como um solução de controle linear, utilizado em várias
aplicações na indústria de automação, sendo as vantagens deste método segundo
Leong (2012), possuir estrutura simples e boa performance.
Baseando-se no que foi exposto, tem-se como justificativa deste trabalho a
verificação da possibilidade da construção de um quadrirotor com componentes
comerciais, e a implementação de um algoritmo de controle baseado na teoria de
sistemas lineares em um sistema dinâmico de estabilidade zero, como o quadrirotor.
25
1.4 Escopo
Este trabalho de conclusão de curso em engenharia mecatrônica almeja
pesquisar e apresentar respostas relevantes sobre a possibilidade de se aplicar o
nível teórico contido na ementa do curso, para o equacionamento, implementação e
construção de um quadcopter de baixo custo.
Devido à complexidade da dinâmica envolvida no somatório de fenômenos
físicos que variam ao longo do tempo, pode-se perceber que o equacionamento de
voo deste sistema, depende de um controle de múltiplos níveis e não estacionário.
Este tipo de planta, para ter sua solução ótima, demanda da linearização do sistema
e da implementação de um controle robusto.
Alguma literatura recente, cita técnicas de inteligência artificial, como
soluções que poderiam alcançar a adaptabilidade transiente necessária ao controle
de um sistema que varia parâmetros, e equações em relação ao tempo. Técnicas
que recalculam seus parâmetros e técnicas que utilizam o novo feedback como
forma de aprendizado, têm chances consideráveis de alcançar o controle ótimo de
um sistema não estacionário. Este grupo de lógicas de programação pode ser
exemplificado por redes neurais, nebulosas, grafos, genéticos e Fuzzy, como
descrito por este artigo da Universidade do Tehran:
Embora o quadrirotor tenha vantagens em uma construção mecânica fácil
contra o helicóptero tradicional, ainda há questões que impedem que ele
seja amplamente utilizado em muitos dos campos sugeridos de aplicação.
Por exemplo, o controle e orientação do quadrirotor para estabilização, é
uma tarefa difícil, devido ao comportamento dinâmico não linear. Métodos
de controle convencionais usam teoria linear que é adequado apenas para
sistemas lineares. O controle Fuzzy é não-linear, portanto, é adequado para
o controle do sistema não-linear. (ABBASI; MAHJOOB; YAZDANPANAH,
2013).
No entanto, existem formas de se manipular a estrutura PID original, de
forma que esta também possa reagir e se adaptar à mudanças em seu ambiente. A
técnica Feedforward de PID pode ser empregada com este intuito, em um sistema
que seja possível variar o sinal de controle em um tempo menor que o tempo que
um distúrbio leva para afetar a saída, mensurar os distúrbios exógenos e os efeitos
26
desses distúrbios na resposta. Assim, este trabalho objetiva trabalhar a manipulação
da lei de controle PID de forma a viabilizar o voo.
27
2 REFERENCIAL TEÓRICO
Apesar da grande quantidade de trabalhos sobre o controle do quadcopter
terem sido desenvolvidos nos últimos 30 anos, seu modelo data de 1907, havendo
uma considerável evolução científica das tecnologias empregadas com sucesso
razoável em sua causa.
2.1 Revisão Bibliográfica
O primeiro quadrirotor conhecido, desenvolvido pelos irmãos Breguet, foi
batizando de Gyroplanenº1, ilustrado na figura 5.Utilizando apenas um motor de
combustão interna com potência de 40 cavalos, e um sistema de transmissão de
correia polia, o modelo de Breguet era capaz decolar, embora conseguisse apenas
obter uma altitude 1,5 metros por um breve período, sendo o voo instável devido ao
fato de não haver controle além de uma válvula que controlava a alimentação de
combustível do motor (LEISHMAN, 2009).
Figura 5: Gyroplane nº1
Fonte: LEISHMAN, 2004
Posteriormente vários modelos de quadcopters foram desenvolvidos no
período durante o período de 1920 a 1956, sendo os de principal destaque
desenvolvido por Etienne Oemichen 1920 e 1923, George DeBothezat em 1921 e
Marc Adam Kaplan em 1956.
Comissionado pela Aeronáutica dos Estados Unidos, George DeBothezat foi
incumbido de desenvolver o projeto de um quadcopter, sendo o resultado desse,
ilustrado na figura 3. Os resultado do modelo final foi uma aeronave capaz de
28
suportar uma carga de 3 pessoas além do piloto, porém o veículo conseguiu obter a
altitude de 5 metros, muito aquém dos 100 metros calculados.
O controle dos primeiros quadcopters necessitava de rotores adicionais,
localizados na frente ou na traseira do veículo para manter a estabilidade. Em 1956
Marc Adam Kaplan desenvolveu um modelo onde o controle era estabelecido
através da variação de rotação entre os entre os rotores, sendo o primeiro a se
mover horizontalmente depois da decolagem. O modelo de Kaplan é considerado
por Basta(2012) o primeiro helicóptero quadcopter verdadeiro a voar.
Embora se tenha obtido sucesso na implementação do quadcopter, seu
modelo era obsoleto em relação as demais tipos convencionais de aeronave de sua
época, principalmente nos quesitos de velocidade, carga suportada e alcance.
As novas tecnologias obtidas no final dos anos 90, como o desenvolvimento
de sensores inerciais MEMS (Micro Electro Mechanical Systems) ou sistemas micro
eletromecânicos e o desenvolvimento de sistemas embarcados renovaram o
interesse das pessoas para o modelo do quadrirotor. Os primeiros quadrirotores a
serem fabricados foram para entusiastas de aeromodelos, sendo o Draganflyer III,
ilustrado na figura 6, considerado um modelo clássico, que devido a sua
performance extraordinária foi definido para servir de plataforma de testes em
Stanford e no MIT (Massachusetts Institute of Technology) (JIANG, 2013).
Figura 6: Draganflyer III
Fonte: TOURIER, 2006
Posteriormente, alguns grupos de pesquisadores optaram por construir seus
próprios quadrirotores, destaca Jiang (2013), os modelos X-4 Flyer da Universidade
29
Nacional Australiana, o quadcopter da Universidade do Estado da Pensilvânia, o
Mesicopter da Universidade de Stanford e o OS4 do Instituto Federal de Tecnologia
da Suíça, modelos ilustrados na figura 7.
Figura 7: Modelos notáveis de quadrirotores
Fonte: TOURIER, 2006
Os UAVs citados anteriormente utilizavam um motor CC (corrente contínua)
para movimentar os rotores. Um dos problemas dessa configuração á a necessidade
do acoplamento de um redutor no motor, sendo as engrenagens uma fonte de
vibrações que causavam erros de medição pelo acelerômetro (HOFFMAN, 2007).
Muitos dos projetos de quadrirotores atuais utilizam o motor brushless acionado por
um ESC (Electronic Speed Controller), removendo o problema do redutor.
Apesar de considerar-se a dinâmica do quadcopter linear, esta afirmação só
é verdadeira para baixas velocidades. Para Hoffman (2007) os efeitos
30
aerodinâmicos que inserem uma dinâmica não linear no sistema quando este se
move a velocidades moderadas são três. O primeiro a ser considerado é a influência
do arraste do ar no impulso total gerado pelos rotores. Os segundo fenômeno é o
bater das lâminas do rotor, que ocorre durante o movimento translacional, quando
uma pás está sobre a influência de uma velocidade efetiva do ar maior do que a
outra. O último fator aerodinâmico que ocorre é o rompimento do fluxo de ar
provocado pelo impacto dos vórtices sobre a fuselagem, implicando em uma
dificuldade maior em realizar o controle de orientação do veículo.Este problema
pode ser significativamente reduzido afastando-se os rotores do centro do
quadrirotor (HOFFMAN, 2007).
Embora, tenha se provado que a construção e implementação do modelo de
aeronave de um quadrirotor em miniatura seja viável, seu controle continua sendo
um objetivo desafiante (BOUABDALLAH, 2004).
2.1.1 Dinâmica do quadcopter
Para que se possa projetar o controle de um sistema é necessário que se
levante um modelo adequado das equações que o governam. No caso do
quadcopter essas equações são relacionadas à sua dinâmica. O quadcopter é um
sistema que apresenta seis graus de liberdade sendo capaz de realizar translação
vertical no eixo Z, horizontal lateral no eixo Y, horizontal longitudinal no eixo X, e
rotações de rolagem ou roll (θ em torno do eixo X), arfagem ou pitch (Φ em torno do
eixo Y) e guinada ou yaw (Ψ em torno do eixo Z) como ilustra a figura 8.
31
Figura 8: Graus de liberdade do quadcopter
Fonte: Elaborado pelos autores
Nos trabalhos de Bouabdallah (2004) e Jun (2011) encontram-se, em
comum, as seguintes hipóteses para a modelagem do quadcopter:
a) A estrutura do quadcopter é rígida e simétrica.
b) O centro de massa e geométrico do quadcopter coincide com a origem do
sistema de coordenadas inerciais.
c) As forças de propulsão e arraste são proporcionais ao quadrado da
velocidade dos rotores.
Para que o quadcopter possa realizar seu movimento em seus seis graus de
liberdade, ele utiliza de quatro rotores idênticos localizados no fim de cada barra,
sendo estas de comprimentos iguais. Cada um dos rotores fornece a estrutura
impulso e torque, sendo que os localizados nas laterais giram em um sentido e os da
frente e da traseira giram no sentido contrário, assim como ilustrado na figura 9. Esta
configuração causa o cancelamento das reações de torque permitindo que o
quadcopter fique estacionário no ar.
32
Figura 9: Esquema de rotação
Fonte: Elaborado pelos autores
Segundo Bresciani (2008) a estrutura do quadcopter permite que apenas
quatro dos seis graus de liberdade do quadcopter sejam diretamente controlados
através de um set-point determinado. Para variável controlável tem-se que o
deslocamento total do sistema pode ser construído a partir de quatro movimentos
básicos, sendo eles:
a) Impulso (Z): variando-se a velocidade de rotação dos rotores
simultaneamente na mesma quantidade, o quadcopter move-se na direção Z das
coordenadas.
b) Rolagem (θ): este movimento ocorre quando se aumenta ou diminui-se a
rotação do rotor da esquerda em relação ao da direita ou vice-versa, provocando um
torque na direção do eixo X da figura 10. Como consequência do movimento de
rolagem, uma componente do impulso é projetada sobre o eixo Y provocando um
movimento nesta direção.
33
Figura 10: Rolagem ou arfagem
Fonte: Elaborado pelos autores
c) Arfagem (Φ): similarmente à rolagem, a arfagem ocorre devido à diferença
de velocidades entre os rotores da frente e da traseira, provocando um torque na
direção do eixo Y da figura 10. A arfagem dera uma componente do impulso na
direção X permitindo o quadcopter a se mover nesta direção.
d) Guinada (Ψ): neste movimento o par de rotores frente e traseira tem a
mesma velocidade de rotação, porém esta é diferente do par esquerda e direita.
Esta diferença de velocidade entre os pares provoca um torque na direção Z da
figura 11, realizando o movimento de guinada. Bresciani (2008) ressalta que as
alterações nas rotações dos rotores não devem ser muito grandes, para evitar o
problema de efeitos aerodinâmicos que inserem uma dinâmica não linear ou
saturam os atuadores do quadcopter.
34
Figura 11: Somatório de momentos (guinada)
Fonte: Elaborado pelos autores
Embora esta seção esteja apresentando um esboço da cinemática do
quadcopter as suas equações cinemática e dinâmica podem ser encontradas no
capítulo 3 da Revisão Teórica.
2.1.2 Sensoriamento
Para os seis graus de liberdade de um corpo rígido, a realização do controle
de um sistema se torna relativamente simples se o modelo da planta for conhecido e
o controlador deter a capacidade de realizar o comando relativo a este modelo. No
entanto na maioria dos casos o modelo completo não está disponível e o controle de
estruturas mecânicas nunca ocorre com a devida precisão. Para resolver este
problema utiliza-se de sensores, que permitem a obtenção de informações sobre o
estado da planta e das suas vizinhanças, permitindo construir um controle capaz de
compensar estes erros, realizado um o controle por malha fechada cujo esquema
está ilustrado na figura 12.
35
Figura 12: Esquema de uma malha fechada de controle
Fonte: Elaborado pelos autores
A mensura precisa a orientação do quadcopter é de primordial importância
para o controle deste sistema, pois a dinâmica deste é controlada em maior parte
pelos parâmetros rolagem, arfagem e guinada. Portanto é necessária a elaboração
de um sistema de sensoriamento capaz de determinar estas variáveis observáveis
da malha com a maior precisão possível.
Para determinação da orientação utiliza-se de IMU que contém um circuito
integrado contendo um giroscópio e acelerômetro MEMS, que normalmente são
suficientes para a maioria das aplicações (MADGWICK, 2010), porém a adição das
medidas de um magnetômetro permite a mensura completa de todos os parâmetros
compondo um sistema AHRS (Attitude and Heading Reference Systems).
Apesar de poder-se compensar os erros provenientes da elaboração de um
modelo incompleto através de um sensor, têm-se o problema da incerteza de
medição presente no próprio processo de medida ou na leitura desta medida
fornecida pelo sensor, o que pode gerar um sinal de controle errado, levando a
planta à saturação, ou ainda, à instabilidade.
A natureza do erro medido pode ser divido em duas parcelas, a primeira é o
erro sistemático e afeta a medida de maneira constante e previsível, a segunda é o
erro aleatório que ocorre devido à variabilidade dos processos físicos envolvidos em
um sistema de medição, cujo valor é sempre imprevisível.
Tais erros são inerentes à medição e não podem ser eliminados, porém
podem ser minimizados de modo que a medida se aproxime a uma máxima possível
equivalente à do valor real. Para tal, utiliza-se uma filtragem no sinal de medição. O
filtro permite a atenuação de ruídos ou erros, até que seu valor seja desprezível.
Existem várias técnicas de filtragem de sinais, e a pesquisa às publicações atuais
36
que antecedeu este projeto, indicou que a otimização deste tratamento de sinal
vincula-se ao uso de mais de um tipo de filtro.
Existem dois tipos principais de filtros que são os filtros digitais e analógicos.
Os filtros analógicos usam circuitos analógicos, que podem ser constituídos de
componentes passivos como resistores, indutores e capacitores ou ativos.Estes
filtros, que também possuem amplificadores operacionais para produzir amplificação
de tensão, também têm como objetivo a realização da filtragem do sinal.
Na filtragem digital os processos de formação do espectro das formas de
onda ocorrem usando componentes digitais na implementação. Em seu trabalho,
Rader (1968), notou que havia uma crescente tendência no aumento da velocidade
e diminuição de custo e tamanho nos CIs digitais, tornando-os uma vertente
crescente na técnica de filtragem de sinal. Rader (1968) explicita ainda as vantagens
da filtragem digital e seu desempenho estável para uma precisão arbitrariamente
alta.A ausência do problema do casamento de impedâncias, e a flexibilidade
presente no qual se pode alterar os parâmetros do filtro para modificar sua resposta,
o que são características intrínsecas à filtragem digital.
Segundo Hernandez (2000) existe um método de cancelamento de ruído
recursivo, adaptativo é aplicado de forma a estimar os sinais elétricos provenientes
de um acelerômetro embutido em um ônibus em um teste de desempenho, por
exemplo. O ruído e/ou as interferências podem corromper o sinal obtido, e torna-se
necessário diminuir o ruído na medição com a aceleração do ônibus. O algoritmo
utilizado tem a vantagem da simplicidade computacional e é bem adequado para
representar o tempo de diferentes características em medições em tempo real da
aceleração. Como o sinal de interesse e o ruído têm muito próxima as bandas de
freqüência, é muito difícil diminuir o ruído usando simples filtros.
Este é o caso que ocorre com o acelerômetro e magnetômetro. No primeiro,
a medição da orientação de um VANT é atrapalhada pela dificuldade de separar a
gravidade e a aceleração linear. Para o segundo, a presença de metais, circuitos
elétricos e fios conduzindo corrente causam distorção magnética na medida do
campo magnético da Terra, logo o acelerômetro e o magnetômetro sozinho não são
fontes confiáveis de dados para determinar a orientação do quadcopter. Para tal
considera-se a implementação do giroscópio no sistema, porém seu bias sofre drift
devido ao movimento contínuo do sistema e às variações de temperatura
(MADGWICK, 2010).
37
Neste caso, a fusão de sensores entre acelerômetro, magnetômetro e
giroscópio é uma boa opção para leitura angular. A principal intenção, em uma fusão
de sensores, é promover a interação entre as magnitudes medidas por cada sensor
individualmente, e correlacioná-las de forma a manter uma resposta aceitável,
mesmo que ocorram erros em alguma leitura, tornando o sistema menos sensível e
mais preciso (VIEIRA, 2011).
Uma das técnicas mais populares para a realização da filtragem e fusão de
sensores na determinação da orientação de um sistema trata-se do algoritmo do
Filtro de Kalman, e derivados deste. A implementação destes algoritmos
fundamentos na técnica de Kalman comprovam a sua eficiência e precisão.
Madgwick (2010) no entanto, aponta que embora possa ser muito difundida, o Filtro
de Kalman estendido apresenta complicações em sua implementação para a
estimativa da orientação devido as iterações de regressão linear, que exigem altas
taxas de amostragem excedendo a largura de banda do sistema, e a necessidade
de vetores grandes para representar as relações entre os estados através da
cinemática rotacional em um espaço tridimensional.
Outro problema relacionado a mensura da orientação de um sistema é a
representação através das matrizes do espaço ortogonal especial com os ângulos
de Euler. Tal método revela-se muito custoso quando se analisa o poder
computacional necessário para resolver este problema através deste método, pois é
necessário resolver um sistema para nove parâmetros diferentes.
Outro ponto importante é o surgimento de singularidades na matriz calculada,
que diminuem os graus de liberdade do sistema impossibilitando a ação apropriada
do controlador em um determinado estado.
Um dos métodos mais comuns para a resolução do problema da orientação
está na utilização de quaternions, juntamente com a utilização de variações do
algoritmos do filtro de Kalman (MAGNUSSEN, 2013). A técnica da determinação dos
ângulos de guinada, rolagem e arfagem através dos quaternions é superior a dos
ângulos de Euler pelos fatores da simplificação computacional do algoritmo, que
ocorre devido a redução dos nove parâmetros a ser determinados para quatro e a
remoção das singularidades na resolução (SABATINI, 2011).
Tendo em mente as complicações das matrizes de Euler e do Filtro de
Kalman estendido, Madgwick elaborou um algoritmo de fusão de sensores MARG
que contém que tem como base o filtro de Kalman representando os estados do
38
sistema através de quaternions. A presença de um algoritmo gradiente descendente
que permite uma performance a baixas taxas de amostragem, e compensação on-
line da distorção magnética e do drift do bias do giroscópio.
Para o sistema de orientação do quadcopter escolheu-se a implementação do
algoritmo de Madgwick as suas características adaptativas.
2.1.3 Controle por PID
O controle pela lei PID é o tipo de controlador mais difundido em sistemas
robóticos, sendo os conceitos e equacionamento deste elaborados no capítulo da
revisão teórica.
Para Bresciani (2008) e Leong (2012) a popularidade deste algoritmo para
sistemas controlados deve-se principalmente a três fatores, sendo estes:
a) A estrutura simples;
b) Boa performance em variados processos;
c) A possibilidade de ajustar os parâmetros sem o modelo específico do
sistema.
Ressalta-se o último fator, pois o modelo exato do quadcopter possui um
equacionamento muito complexo para ser levantado matematicamente (LEONG,
2012).
Embora a lei de controle PID possua fácil implementação, Bresciani (2008),
ressalva que ela possui duas desvantagens. A primeira seria a parte derivativa do
controle calculada pelo erro, para alterações muito bruscas deste o valor de resposta
tenderia ao infinito, saturando os atuadores e levando o quadcopter para fora da
zona de comportamento linear. O segundo ponto de desvantagem localiza-se na
ação integrativa do controlador, quando o sinal proveniente deste, desta vez, satura
os atuadores do sistema. Este problema ocorre quando o erro apresenta variações
muito pequenas durante o tempo, provocando um aumento significativo na parcela
integradora do controlador. Quando o sinal do erro muda, demora muito tempo para
que o sistema restaure seu comportamento linear. esta desvantagem é conhecida
como wind-up.
Para diminuir os efeitos dos inconvenientes do controlador pela lei PID,
altera-se o diagrama de bloco original para um aperfeiçoado. Na parcela derivativa
utiliza-se da leitura direta do feedback ao invés do erro como no PID clássico. Essa
39
solução deve-se ao fato de que o sistema funciona como um filtro impedindo altas
variações no sinal de saída. Para o problema de wind-up utiliza-se um bloco de
saturação após o integrador que irá limitar os valores máximos e mínimos do parcela
integrativa do controlador (BRESCIANI, 2008). A comparação entre o controlador
PID clássico e o modificado pode ser visto na figura 13.
Figura 13: Diagramas PID
Fonte: Elaborado pelos autores
2.2 Estado da Arte
O principal desafio do quadcopter trata-se de construí-lo para que ele seja
dotado de agilidade e capaz de manobras agressivas em um ambiente não
controlado. Esta tendência crescente aumenta o acoplamento dinâmica e as não-
linearidades do sistema, sendo então necessário a implementação de um
controlador mais sofisticado (Mistler, 2001).
Bouabdallah (2004) compara em seu trabalho duas técnicas de controle para
o quadrirotor, a por PID e por LQ (Least Quadratic). Utilizando o modelo derivado do
equacionamento por Euler-Lagrange, nos resultados obtidos o controlador por PID
apresentou melhor performance do que o por LQ, sendo esta diferença atribuída
principalmente à imperfeição do modelo utilizado, que não levou em consideração
atuador. Bouabdallah (2004) observa que embora o controle pela lei PID tenha dado
resultados satisfatórios, a teoria de controle LQ tem potencial em obter resultados
melhores.
Nos controladores baseados nas leis clássicas Han (2013) propõe uma
comparação entre três tipos controladores, dois deles sendo de ordem integral
sendo um baseado na lei de PI (proporcional integral) cujos parâmetros são
40
calculados baseado na lei de Ziegler-Nichols, outro baseado na lei PID e um novo
tipo de controle de ordem fracionária que utiliza o PI como referência. Para testar os
controladores foi utilizado o quadrirotor Aggie Air, cuja função de transferência da
planta de arfagem foi levantada utilizando um algoritmo de sétima ordem de entrada
exógena auto-regressiva, e depois simplificada para um modelo de primeira ordem
mais atraso. Os resultados da simulação, figura 14, para um sinal de entrada do tipo
degrau indicam que controlador de ordem fracionária FO[PI] apresenta
características superiores em relação ao PID e ao PI desenvolvidos pelo autor. O
sobre-sinal e o sinal de estabilização no tempo obtidos para o controlador de ordem
fracionária, foram menores do que os outros dois, ambos, parâmetros importantes
para o sistema de controle de um quadrirotor.
Figura 14: Resultados dos controladores PI, PID e FO[PI]
Fonte: HAN, 2013
Em uma nova abordagem para desenvolver o controle para o quadrirotor
Bouabdallah (2005) utiliza as técnicas de Backstepping e SMC (Sliding-mode
Control). A implementação do controlador utilizando o primeiro algoritmo apresentou
resultados experimentais satisfatórios, sendo capaz de estabilizar o sistema para
41
condições inicias críticas com rapidez. O controle por SMC apresentou resultados
inferiores como demora e dificuldade de estabilização, devido a inserção de
vibrações de alta frequência e baixa amplitude provocando ruídos nos sensores.
Bouabdallah (2005) conclui para trabalhos futuros que pretende desenvolver um
quadrirotor completamente autônomo utilizando um controlador melhorado utilizando
Backstepping.
A crescente popularidade da lógica Fuzzy ou Nebulosa, encontrou nos
últimos anos aplicação no desenvolvimento de controladores robustos. Utilizando do
método Takagi-Sugeno de ordem zero para a otimização de um sistema nebuloso
de interferência auto-ajustável de controle ou STFIS (Self-tunable Fuzzy Interference
System), Zemalache (2009) conseguiu simular um controlador robusto. A robustez
foi testada simulando duas ocasiões especiais, a primeira considerava a falha de um
dos rotores enquanto na segunda considera-se a força de arraste produzida pelo
movimento do quadcopter modelo XSF. Os resultados obtidos quando comparados
com um controlador linearizado realimentado estático ou SFL (Static Feedback
Linearization Controller), observa-se a superioridade do controle utilizando o
algoritmo Fuzzy quando entra na dinâmica no sistema da força de arraste. Para o
sistema utilizando o controlador STFIS, observa-se que o erro consegue zerar com a
interferência do vento enquanto que no controlador SFL este cresce
proporcionalmente ao com o quadrado da velocidade do ar.
O sistema de controle hierárquico tem sido utilizado em sistemas
aeronáuticos, onde as dinâmicas de orientação e translação possuem controladores
separados desenvolvidos que levam em consideração a diferença das taxas de
mensura da translação e da orientação. Bertrand (2011) utiliza dos conceitos de
desenvolvimento de leis de controle para sistemas aeronáuticos, onde a dinâmica da
orientação (escala de tempo rápida) deve convergir mais rapidamente do que a
translacional (escala de tempo lenta), para o desenvolvimento de um controlador
hierárquico utilizando a teoria de perturbação singular. Para o controle da dinâmica
de translação, considerou-se que apenas a mensura da posição estavam
disponíveis, utilizando a estratégia de controle com realimentação parcial para lidar
com a lentidão das medições, retirando então a necessidade de um observador.
Para o controle da atitude considerou-se um controlador que fosse um candidato da
função de controle de Lyapunov, resultando em um controlador estável.
42
Na simulação, Bertrand (2011), mostra que os algoritmos de controle
utilizados para o desenvolvimento de cada controlador, validam a separação das
escalas de tempo, condição considerada para a estratégia de controle. Utilizando um
quadrirotor X4Flyer, que tem como sensores um IMU e uma câmera cujas medidas
são transmitidas através de uma comunicação analógica wireless com a estação de
controle. Embora a Bertrand (2011) considere os resultados satisfatórios observa-se
pela figura 15 a alta oscilação do quadrirotor para as posições desejadas.
Figura 15: Resultados experimentais do controle hierárquico
* Legenda: Tracejado posição desejada; linha cheia posição real.
Fonte: BERTRAND, 2011
Observa-se que os trabalhos pesquisados não indicam nenhum tipo de
controle como o melhor para o sistema do quadrirotor, encontrando-se muitas
divergências sobre o tema. Pode-se de certa forma dizer que o problema de controle
do quadrirotor atualmente encontra somente respostas de engenharia, devido ao
fato de que o modelo do sistema não é exatamente conhecido ou muito complexo
para ser utilizado para o desenvolvimento de um controlador.
43
3 REVISÂO TEÓRICA
Neste capítulo encontra-se toda a derivação matemática para a dinâmica e
cinemática do quadcopter, assim como os algoritmos de filtragem e fusão de
sensores.
3.1 Equacionamento matemático
O equacionamento da dinâmica de um corpo rígido, mesmo que em voo
pairado, envolve múltiplos níveis de interpretação. Em seus seis graus de liberdade,
um corpo rígido, pode transladar ao longo de seus eixos referenciais e rotacionar em
torno destes mesmos eixos.
Quanto à rotação, uma das formas mais simples de se descrever a posição
de um corpo, é através de três ângulos independentes que fazem referência ao
espaço Euclidiano tridimensional, estes são os ângulos de Euler.
Definindo como origem de um sistema de coordenadas fixo, também
chamado de inercial, um ponto na superfície da Terra (desconsiderando seu
movimento orbital), e, um outro sistema de coordenadas móvel (vehicle frame), que
se desloca em translação junto ao corpo rígido, pode-se obter o vetor posição do
corpo em relação ao sistema inercial. Um terceiro frame acompanha as rotações do
corpo em relação ao sistema móvel, o body frame (figura 16).
Figura 16: Coordenadas de múltiplos corpos
Fonte: Elaborado pelos autores
44
A relação, entre as coordenadas do sistema móvel e do sistema fixo, é
definida através de transformações lineares de translação e rotação. Como
parâmetros para os eixos de rotação, os ângulos são Φ (em Z), θ (em X) e Ψ(em Y)
(figura 17).
Figura 17: Ângulos de Euler
Fonte: MCCORMICK, 1995
Sendo â um ângulo qualquer dentre os três ângulos de rotação, ρ o vetor
posição e R a matriz de rotação, a equação geral de transformação das rotações é:
ρ' = R(â)ρ (3)
Assim, a e matriz de representação da rotação para Ψ(guinada) fica:
R(Ψ)= cosΨ senΨ 0
−senΨ cosΨ 00 0 1
(4)
A matriz de representação da rotação para θ (arfagem) fica:
R(θ)= cosθ 0 −senθ
0 1 0senθ 0 cosθ
(5)
A matriz de representação da rotação para Φ (rolagem) fica:
45
R(Φ)= 1 0 00 cosΦ senΦ0 −senΦ cosΦ
(6)
Finalmente, considerando os três eixos, tem-se a relação entre o frame do
corpo e o frame do veículo:
R(Φ, θ, Ψ) = R(Φ)*R(θ)*R(Ψ) (7)
Sendo a matriz de rotação
R Φ, θ, Ψ =
= 𝑐𝑜𝑠θcosΨ 𝑐𝑜𝑠θsenΨ −𝑠𝑒𝑛θ
𝑠𝑒𝑛Φ𝑠𝑒𝑛θcosΨ − cosΦsenΨ 𝑠𝑒𝑛Φ𝑠𝑒𝑛θcosΨ + cosΦsenΨ senΦsenθ𝑐𝑜𝑠Φ𝑠𝑒𝑛θcosΨ + senΦsenΨ 𝑐𝑜𝑠Φ𝑠𝑒𝑛θcosΨ − senΦsenΨ cosΦsenθ
(8)
3.2 Cinemática do quadcopter
A equação 9 descreve a relação cinemática entre os vetores velocidade nas
coordenadas do corpo rígido com 6 graus de liberdade, identificado pelo subscrito
“B”, com a velocidade nas coordenadas inerciais, indicado pelo sobrescrito “E”.
𝑣𝐸 = 𝐽𝛩𝑣𝐵 (9)
Onde:
𝑣𝐸 = 𝑃 𝐸𝛩 𝐸 = [𝑋 𝑌 𝑍 𝜙 𝜃 𝜓 ]𝑇 (10)
𝑣𝐸 = 𝑉𝐵𝜔𝐵 = [𝑢 𝑣 𝑤 𝑝 𝑞 𝑟]𝑇 (11)
𝐽𝛩 = 𝑅𝛩 03𝑥3
03𝑥3 𝑇𝛩
(12)
46
A matriz 𝐽𝛩 é chamada de Jacobiano, e é composta de 4 submatrizes sendo
elas a matriz de rotação dos eixos 𝑅𝛩 previamente discutida, a matriz de
transferência 𝑇𝛩 e duas matrizes quadradas nulas de ordem 3. Observa-se que a
submatriz (1, 2) é nula pois o centro das coordenadas do quadcopter coincide com o
das coordenadas inerciais. Caso use-se um sistema de coordenas inerciais cujo a
origem não coincidem, deve-se refazer o jacobiano para a submatriz (1, 2).
As matrizes 𝑅𝛩, 𝑇𝛩 e 03𝑥3 são definidas de acordo com as equações 13, 14 e
15 respectivamente como:
𝑅𝛩 =
𝑐𝜓𝑐𝜃 −𝑠𝜃𝑐𝜙 + 𝑐𝜓𝑠𝜃𝑠𝜙 𝑠𝜓𝑠𝜙 + 𝑐𝜓𝑠𝜃𝑐𝜙𝑠𝜓𝑐𝜓 𝑐𝜓𝑐𝜙 + 𝑠𝜓𝑠𝜃𝑠𝜙 −𝑐𝜓𝑠𝜙 + 𝑠𝜓𝑠𝜃𝑐𝜙−𝑠𝜃 𝑐𝜃𝑠𝜙 𝑐𝜃𝑐𝜙
(13)
𝑇𝛩 =
1 𝑡𝜃𝑠𝜙 𝑡𝜃𝑐𝜙0 𝑐𝜙 −𝑠𝜙
0𝑠𝜙
𝑐𝜃 𝑐𝜙
𝑐𝜃
(14)
03𝑥3 = 0 0 00 0 00 0 0
(15)
Para as equações anteriores a notação cn, sn e tn representam cos n, sen n e
tag n, respectivamente.
3.3 Dinâmica do quadcopter
Utilizando a segunda lei de Newton,encontra-se na forma matricial a relação
entre os torque 𝜏𝐵 e as forças 𝐹𝐵 com as acelerações do sistema do quadcoptero
através da equação 16:
𝑀𝐵𝑣 + 𝐶𝐵 𝑣 𝑣 = 𝛵 (16)
Onde:
a) MB é a matriz que representa a inércia do sistema explicitada na
equação 17.
47
𝑀𝐵=
𝑚 0 00 𝑚 00 0 𝑚
0 0 00 0 00 0 0
0 0 00 0 00 0 0
𝐼𝑋𝑋 0 00 𝐼𝑌𝑌 00 0 𝐼𝑍𝑍
(17)
b) 𝐶𝐵 𝑣 é matriz que depende velocidade do corpo e contém a força
centrípeta e o troque produzido pela forca de Coriolis, representada na equação 18:
𝐶𝐵 𝑣 =
03𝑥3 −𝑚 𝑉𝐵
03𝑥3 −𝐼𝑋𝑋 0 00 𝐼𝑌𝑌 00 0 𝐼𝑍𝑍
𝜔𝐵
=
0 0 00 0 00 0 0
0 𝑚 𝑤 −𝑚 𝑣−𝑚 𝑤 0 𝑚 𝑢𝑚 𝑣 −𝑚 𝑢 0
0 0 00 0 00 0 0
0 𝐼𝑍𝑍 𝑟 −𝐼𝑌𝑌 𝑞−𝐼𝑍𝑍 𝑝 0 𝐼𝑋𝑋 𝑝𝐼𝑌𝑌 𝑞 −𝐼𝑋𝑋 𝑝 0
(18)
c) 𝛵 é o vetor de força e torque resultantes representado por:
𝛵 = 𝐹𝐵
𝜏𝐵 (19)
Para o sistema do quadcopter encontram-se três parcelas que compõe o
vetor 𝛵. A primeira parcela é referente a força da gravidade nas coordenadas do
corpo rígido denominado por 𝐺𝐵.A segunda parcela, 𝑂𝑏 𝑣 , provém dos efeitos
giroscópicos produzidos pela rotação do rotor. A terceira parcela é a contribuição
das forças e torques diretamente produzidos pelo movimento do quadcopter. As três
parcelas são equacionadas respectivamente por 20, 21 e 22.
𝐺𝐵 = 𝐹𝐺
𝐵
03𝑥1 =
𝑅𝛩−1𝐹𝐺
𝐸
03𝑥1 =
𝑚 𝑔 𝑠𝜃−𝑚 𝑔 𝑐𝜃𝑠𝜙−𝑚 𝑔 𝑐𝜃𝑠𝜙
000
(20)
𝑂𝑏 𝑣 =
03𝑥1
− 𝐽𝑇𝑃 𝜔𝐵 × 001 −1 𝑘𝛺𝑘
4
𝑖=1
=
03𝑥1
𝐽𝑇𝑃 −𝑞𝑝1
𝛺
(21)
48
𝑈𝑏 𝛺 = 𝐸𝐵𝛺2 =
00
𝑏 𝛺12 + 𝛺2
2 + 𝛺32 + 𝛺4
2
𝑏 𝑙 𝛺42 − 𝛺2
2
𝑏 𝑙 𝛺32 − 𝛺1
2
𝑑 𝛺22 + 𝛺4
2 − 𝛺12 − 𝛺2
2
(22)
Onde têm-se que os valores d, b, l, 𝐽𝑇𝑃 , são constantes e representam eles, o
coeficiente de arraste da hélice, o coeficiente de empuxo, o comprimento da haste
que liga o motor ao centro do quadcopter e o momento de inércia da aeronave em
torno do eixo do rotor respectivamente.
Separando as variáveis de interesse em um sistema de equações obtem-se
23:
𝑢 = 𝑣𝑟 − 𝑤𝑞 + 𝑔 sin 𝜃
𝑣 = 𝑤𝑝 − 𝑢𝑟 − 𝑔 cos 𝜃 sin 𝜙
𝑤 = 𝑢𝑞 − 𝑣𝑝 − 𝑔cos 𝜃 sin 𝜙 +𝑏 𝛺1
2 + 𝛺22 + 𝛺3
2 + 𝛺42
𝑚
𝑝 =𝐼𝑌𝑌 − 𝐼𝑍𝑍
𝐼𝑋𝑋𝑞𝑟 −
𝐽𝑇𝑃𝐼𝑋𝑋
𝑞 −𝛺1 + 𝛺2 − 𝛺3 + 𝛺4 +𝑏 𝑙 𝛺4
2 − 𝛺22
𝐼𝑋𝑋
𝑞 =𝐼𝑍𝑍 − 𝐼𝑋𝑋
𝐼𝑌𝑌𝑝𝑟 +
𝐽𝑇𝑃𝐼𝑌𝑌
𝑝 −𝛺1 + 𝛺2 − 𝛺3 + 𝛺4 +𝑏 𝑙 𝛺4
2 − 𝛺22
𝐼𝑌𝑌
𝑟 =𝐼𝑋𝑋 − 𝐼𝑌𝑌
𝐼𝑍𝑍𝑝𝑞 +
𝑑 𝛺22 + 𝛺4
2 − 𝛺12 − 𝛺2
2
𝐼𝑍𝑍
(23)
3.4 Dinâmica dos rotores
Pré requisito ao equilíbrio do conjunto, há a capacidade de sustentabilidade
da altitude do voo. No caso do quadcopter, esta sustentação é alcançada através
das hélices. São equipamentos de propulsão acoplados aos motores que convertem
a energia da rotação em translação, empurrando o fluido à sua volta. As hélices são
formadas por conjuntos de asas, que ao serem rotacionadas geram uma diferença
de pressão entre suas superfícies superior e inferior, segundo explicitam a 3ª lei de
Newton e o princípio de Bernoulli.
O comportamento de uma hélice pode ser baseado em 3 parâmetros; o
coeficiente de Thrust cT, coeficiente de potência cP e raio da hélice r, 𝜌 a densidade
49
do ar e w a velocidade angular, que permitem calcular as seguintes equações 24 e
25 (RODRIGUES, 1964).
𝑇 =𝑐𝑇4ρ𝑟4𝜔2
𝜋2 (24)
𝑃𝑝 =𝑐𝑃4 ρ𝑟5𝜔3
𝜋3 (25)
Através destas equações é possível observar que 𝑇 (força de impulso) e 𝑃𝑝
(potência de propulsão) aumentam consideravelmente com o aumento do diâmetro,
e por consequência o consumo de energia também, diminuindo a autonomia do
sistema.
3.5 Algoritmo de fusão de sensores
O filtro de Magdwick (2010) usa o sistema de quaternions para representar a
orientação do sistema MARG, usando como base o algoritmo do filtro de Kalman. O
valor do quaternion é atualizado através da equação 26 que utiliza uma integração
para sistemas discretos.
𝑞𝑡 ,𝜔 = 𝑞 𝑒𝑠𝑡 ,𝑡−1 + (
1
2𝑞 𝑒𝑠𝑡 ,𝑡−1𝐸
𝑆𝐸𝑆
𝐸𝑆 × 𝜔𝑡)∆𝑡.
𝑆 (26)
Onde:
a) 𝑞𝑡 ,𝜔𝐸𝑆 : o quaternion que determina a orientação do sistema atualizado
através das medidas do giroscópio
b) 𝑞 𝑒𝑠𝑡 ,𝑡−1𝐸𝑆 : o quaternion estimado a posteriori do tempo t-1.
c) 𝜔𝑡.𝑆 : os valores do obtidos do giróscopio. O sobrescrito S indica que os
valores obtidos são relativos ao frame do sensor.No sistema
quaterniônico o vetor para a rotação é escrito como na equação 27.
𝜔𝑡.𝑆 = 0 𝜔𝑥𝜔𝑦𝜔𝑧 (27)
d) ∆𝑡: período de amostragem do sensor.
50
Para determinadas aplicações pode-se admitir uma solução incompleta dos
ângulos de Euler, mas uma solução por quaternion requer que todos os três ângulos
sejam computados. Isto pode ser obtido através de um problema de otimização de
função 𝑓( 𝑞 𝐸𝑆 , 𝑑 .
𝐸 , 𝑠) .𝑆 por minimização. A função descrita anteriormente é computada
por 28.
𝑓( 𝑞 𝐸𝑆 , 𝑑 .
𝐸 , 𝑠 ).𝑆 = 𝑞 ∗ ×𝐸
𝑆 𝑑 .𝐸 × 𝑞 𝐸
𝑆 − 𝑠 .𝑆 (28)
Sendo:
a) 𝑞 𝐸𝑆 : quaternion que contém a orientação do quadcopter
𝑞 ∗ = 𝑞1 𝑞2 𝑞3 𝑞4 𝐸𝑆 (29)
b) 𝑞 ∗𝐸𝑆 : é o conjugado do quaternion que contém a orientação do quadcopter:
𝑞 ∗ = 𝑞1 −𝑞2 −𝑞3 −𝑞4 𝐸𝑆 (29)
c) 𝑑 .𝐸 : quaternion que descreve a direção do campo de referência nas
coordenadas inerciais.
𝑑 .𝐸 = 0 𝑑𝑥 𝑑𝑦 𝑑𝑧 (30)
d) 𝑠 .𝑆 : quaternion que descreve a direção da orientação do sensor.
𝑠 .𝑆 = 0 𝑠𝑥 𝑠𝑦 𝑠𝑧 (31)
O algoritmo gradiente descendente apresenta a qualidade de simplicidade de
implementação e computação, logo o quaternion estimado através das variáveis
observáveis do acelerômetro e magnetômetro será dado pela equação 32.
𝑞 ∇,𝑡 = 𝑞 𝑒𝑠𝑡 ,𝑡−1 − 𝜇𝑡
∇𝑓( 𝑞 𝐸𝑆 , 𝑑 .
𝐸 , 𝑠 ).𝑆
∇𝑓( 𝑞 𝐸𝑆 , 𝑑 .
𝐸 , 𝑠 ).𝑆
𝐸𝑆
𝐸𝑆
(32)
O valor do divergente de 𝑓( 𝑞 𝐸𝑆 , 𝑑 .
𝐸 , 𝑠 ).𝑆 é determinado pelo produto de sua
função objetiva pelo seu Jacobiano. Para a gravidade temos as equações 33 e 34.
51
𝑓( 𝑞 𝐸𝑆 , 𝑎 ).
𝑆 =
2 𝑞2𝑞4 − 𝑞1𝑞3 − 𝑎𝑥
2 𝑞1𝑞2 + 𝑞3𝑞4 − 𝑎𝑥
2 1
2− 𝑞2
2 − 𝑞32 − 𝑎𝑧
(33)
𝐽 𝑞 𝐸
𝑆 =
−2𝑞3 2𝑞4 −2𝑞1
2𝑞2 2𝑞1 2𝑞4
0 −4𝑞2 −4𝑞3
2𝑞2
2𝑞3
0
(34)
Onde 𝑎 .𝑆 é o quaternion com as leituras do acelerômetro e 𝑎𝑥 , 𝑎𝑦 e 𝑎𝑧são as
componentes de seus respectivos eixos.
Para a orientação em relação ao campo magnético da Terra o Jacobiano e a
função objetiva tomam o formato das equações 35 e 36.
𝑓( 𝑞 𝐸𝑆 , 𝑏 .
𝐸 , 𝑚 ).𝑆 =
2𝑏𝑥 0.5 − 𝑞32 − 𝑞4
2 + 2𝑏𝑧 𝑞2𝑞4 − 𝑞1𝑞3 − 𝑚𝑥
2𝑏𝑥 𝑞2𝑞4 − 𝑞1𝑞3 + 2𝑏𝑧 𝑞1𝑞2 + 𝑞3𝑞5 − 𝑚𝑦
2𝑏𝑥 𝑞2𝑞4 + 𝑞1𝑞3 + 2𝑏𝑧 0.5 − 𝑞22 − 𝑞3
2 − 𝑚𝑧
(35)
𝐽 𝑞 𝐸𝑆 , 𝑏 .
𝐸 =
=
−2𝑏𝑧𝑞3 2𝑏𝑧𝑞4 −4𝑏𝑥𝑞3 − 2𝑏𝑧𝑞1
−2𝑏𝑥𝑞4 + 2𝑏𝑧𝑞2 2𝑏𝑥𝑞3 + 2𝑏𝑧𝑞1 2𝑏𝑥𝑞2 + 2𝑏𝑧𝑞4
2𝑏𝑥𝑞3 2𝑏𝑥𝑞4 − 2𝑏𝑧𝑞2 2𝑏𝑥𝑞1 − 4𝑏𝑧𝑞3
−4𝑏𝑥𝑞4 + 2𝑏𝑧𝑞2
−2𝑏𝑥𝑞1 + 2𝑏𝑧𝑞3
2𝑏𝑥𝑞2
(36)
Onde 𝑏 .𝐸 é vetor que contém o campo magnético da Terra que contém
componentes 𝑏𝑥 e 𝑏𝑧 . O vetor 𝑚 .𝑆 é o quaternion com as medidas do magnetômetro
sendo 𝑚𝑥 , 𝑚𝑦 e 𝑚𝑧 as componentes dos respectivos eixos.
Dada as equações 26 e 32 realizamos uma fusão das leituras dos sensores
através de um filtro complementar descrito na equação 37.
𝑞 𝑒𝑠𝑡 ,𝑡𝐸𝑆 = 𝛾𝑡 𝑞 ∇,𝑡𝐸
𝑆 + 1 − 𝛾𝑡 𝑞𝑡,𝜔𝐸𝑆 (37)
Onde 𝛾𝑡 é uma grandeza definida com valores entre 0 e 1. Madgwick (2010)
esclarece que esta grandeza apresenta um valor ótimo quando a taxa de
divergência de 𝑞𝑡 ,𝜔𝐸𝑆 é igualada a taxa de convergência de 𝑞 ∇,𝑡𝐸
𝑆 , determinada por 𝛽.
Sabendo-seque a taxa de convergência 𝑞 ∇,𝑡𝐸𝑆 não possui um limite superior,
ela pode ser assumida como um valor muito grande, logo portanto 𝜇𝑡 também pode
52
ser considerado como tendo um valor muito grande. Levando em consideração
estas hipóteses simplificamos a equação 37 para a 38.
𝑞 𝑒𝑠𝑡 ,𝑡𝐸
𝑆 = 𝑞 𝑒𝑠𝑡 ,𝑡−1𝐸𝑆 + 𝑞 𝜔 ,𝑡 − 𝛽
∇𝑓
∇𝑓 𝐸𝑆 ∆𝑡
(38)
Levando em conta a distorção magnética presente no sistema do quadcopter,
o filtro de Madgwick propõe uma correção do campo magnético da terra através de
uma variável 𝑡𝐸 , descrito na equação 29, que representa este campo no frame da
terra medido em um tempo t.
𝑡𝐸 = 0 𝑥 𝑦 𝑧 = 𝑞 𝑒𝑠𝑡 ,𝑡−1𝐸
𝑆 × 𝑚 𝑡𝑆 × 𝑞 𝑒𝑠𝑡 ,𝑡−1
∗𝐸𝑆 (39)
Este novo parâmetro permite que os elementos de erro presentes na mensura
do campo magnético da Terra possam ser corrigidos se 𝑡𝐸 e 𝑏 .
𝐸 forem da mesma
inclinação. Logo tem-se que:
𝑏 .
𝐸 = 0 𝑥2 + 𝑦
2 0 𝑧 (40)
Para o drift do offset do giroscópio utiliza-se um quaternion normalizado que
contém o erro estimado na taxa de variação de orientação, determinando o erro
sistemático através de:
𝜔𝜖 ,𝑡𝑆 = 2 𝑞 𝑒𝑠𝑡 ,𝑡−1
∗𝐸𝑆 × 𝑞 𝜖 ,𝑡𝐸
𝑆 (41)
O valor do offset no tempo t pode ser determinado através da integração
discreta de 𝜔𝜖 ,𝑡𝑆 , que pode ser escrita como:
𝜔𝑏 ,𝑡𝑆 = 𝜁 𝜔𝜖 ,𝑡
𝑆
𝑡
∆𝑡 (42)
Baseando-se nas equações 42, 39 e 38 constrói-se um diagrama de blocos
que indica uma malha semelhante à aquela ilustrada na figura 18.
53
Figura 18: Digrama de blocos representando o MARG de Madgwick
Fonte: Adaptado de Magdwick (2010)
54
4 METODOLOGIA
Pelo fato deste trabalho tratar de um objetivo que solicita relativa
interdisciplinaridade de conhecimentos, partimos das conceituações teórica,
matemática e computacional, como forma de nortear a sequência de opções mais
adequadas a um bom resultado. Deste ponto em diante, os esforços estão na
transposição das soluções teóricas e virtuais para o sistema real, através das
seguintes etapas:
a) Diagramação mecânica e cinemática da estrutura física do aeromodelo,
suas características sobre capacidade de sustentação e estabilidade;
b) Implementação do algoritmo de controle e sua utilização em plataforma
de um grau de liberdade.
c) Parametrização do algoritmo de interfaceamento sensores-
microcontrolador;
d) Construção do circuito de desenvolvimento agregado ao
microcontrolador, estrutura do aeromodelo com quatro rotores e seus respectivos
ESCs (Electronic Speed Controllers) e da plataforma de teste para sustentação.
e) Complementação da estrutura física para seus quatro rotores no
modelo completo do quadcopter;
f) Simulação em ambiente computacional e otimização das equações
dinâmicas e seus referentes coeficientes de ganho;
g) Simulação em ambiente computacional, otimização do controle, seus
referentes coeficientes de ganho dos controladores;
h) Implementação do algoritmo de controle na plataforma do quadcopter.
i) Análise de resultados e conclusão.
A metodologia empregada em cada etapa será descrita a seguir.
4.1 Diagramação mecânica
Baseando-se na análise feita sobre as equações 24 e 25 da seção 3.4 nota-
se que a análise da melhor configuração para as hélices deve ser baseada em
particularidades do aeromodelo, como, potência e faixa de eficiência dos motores,
tipo de bateria, tempo de resposta e peso. Abaixo, uma estimativa do peso do
conjunto na tabela 1:
55
Tabela 1: Peso estimado do protótipo
Componentes estruturais: Peso [g]: Quantidade: Conjunto[g]:
Motores 39 4 156
ESCs 34 4 136
Hélices 10 4 40
Spinners 12 4 48
Microcontrolador 35 1 35
Sensores 5 1 5
Hastes 74.3 2 148.6
Junção estrutural (frame) 58 2 116
Junções estruturais (motores) 2.6 4 10.4
Total [g]: 695
Fonte: Elaborado pelos autores
Sendo assim toda a estrutura do protótipo poderá alcançar 695 gramas,
peso adequado à capacidade dos motores CF2822 equipados com hélices de dez
polegadas de diâmetro por Cinco polegadas de passo, segundo recomendações do
fabricante, como visto na figura 19.
Figura 19: Especificações dos motores
Fonte: Yin Yan Model, 2014
56
Uma análise mais completa das condições de funcionamento do conjunto de
propulsores, tanto para modo de vôo em sustentação quanto para regime de
empuxo máximo, foi feita pelo site eCalc, com índice de incerteza de dez por
cento.Quanto à autonomia, cerca de três a oito minutos de vôo ao aeromodelo,
dependendo do tipo de voo (eCalc, 2014). Eficiência, temperatura, corrente e demais
dados constantes no anexo A.
A estrutura de um quadcopter é baseada em dois eixos cruzados contendo
um propulsor em cada extremidade. Sendo que, seu centro de massa deve estar
coincidente ao seu centro geométrico. O par de rotores de um eixo gira em sentido
contrário ao par do eixo transverso,de forma que os momentos de reação gerados
pelo giro dos motores tendem a se anular e aumentando-se a estabilidade para a
guinada.
4.2 Implementação para um grau de liberdade
Como forma de se iniciar os estudos da cinemática do sistema, uma
estrutura que modela um grau de liberdade, foi estudada de forma a propiciar a
análise das respostas do sistema contendo apenas dois propulsores (figura 20).
Figura 20: Estrutura de modelamento em um grau de liberdade
Fonte: Elaborado pelos autores
57
Como passo inicial, foi implementado através do ambiente de programação
visual Processing (Processing, 2014), em conjunto com o compilador Arduino,
disponibilizado pela Atmel, um algoritmo de controle PID clássico, à estrutura
composta por apenas dois propulsores. De forma a se obter um sistema pouco
agressivo e capaz de se estabilizar, em seu um grau de liberdade, os coeficientes de
proporcionalidade, integrativo e derivativo, foram de 0,03 (todos os três). Na figura
21, pode-se perceber o set-point de zero grau como a reta horizontal, a resposta
como inclinação variando em torno do set-point, e,a escala de saída em um dos
motores no gráfico mais abaixo.
Figura 21: Curvas de entrada e saída
Fonte: Elaborado pelos autores
Uma resposta melhor veio através da ferramenta computacional Simulink,
contida no software MatLab, após a filtragem mais sintonizada de leitura do sensor e
da equalização dos motores, feita por uma função exponencial em um dos motores,
foi possível o alcance de um sistema rápido, que nos trouxe apenas uma oscilação
após cada entrada degrau. O diagrama no Simulink pode ser visto na figura 22.
Os parâmetros encontrados para o controlador PID foram de 0,065; 0,01 e 0,016
para os ganhos proporcional, integral e derivativo respectivamente.
58
Figura 22: Diagrama em um grau de liberdade no Simulink
Fonte: Elaborado pelos autores
O que se percebeu sob a influência do ramo integrativo, foi que, mesmo atuando
sob mínimos coeficientes, este gerava um atraso na reposta do sistema.
59
Figura 23: Leituras dos sinais do diagrama de blocos
Fonte: Elaborado pelos autores
O controle gerado pelo diagrama de blocos pode ser visto nos gráficos da
figura 23. Onde praticamente inutiliza-se o fator integrativo, o que viabilizou um
sistema rápido e robusto, apesar da incerteza gerada quando a inclinação alcançava
ângulos muito próximos de 0 graus. Seu funcionamento pode ser visto através do
link: <http://youtu.be/sysebtA2ioc>.
4.3 Parametrização do algoritmo de sensoriamento
Neste projeto, se optou pelo módulo de vôo 10DOF (Tem Degrees Of
Freedom) modelo GY88, como equipamento de sensoriamento principal. O GY88 é
uma pequena placa de circuito eletrônico SMC (Surface Mounted Components), que
conta com acelerômetro e giroscópio embutidos no circuito integrado MPU6050,
magnetômetro modelo HMC5883l e o barômetro BMP085. Devido à relevante
60
quantidade de sensores acomodados em uma mesma plataforma, a comunicação
deste equipamento com o MCU (Micro Controller Unit) é feita através do protocolo
I2C (Inter Integrated Circuits). Basicamente, este código trabalha com dois tipos de
sinais entre os CIs, o sinal de clock (gerado pelo CI mestre) que sincroniza a troca
de informações, e o sinal de dados, este bidirecional.
Para estimativas de posicionamento, o sistema deve ser realimentado com
sinais de rotação e translação. Neste caso, a fusão de sensores entre acelerômetro
e giroscópio é uma boa opção para leitura angular. A principal intenção, em uma
fusão de sensores, é promover a iteração entre as magnitudes medidas por cada
sensor individualmente, e correlacioná-las de forma a manter uma resposta
aceitável, mesmo que ocorram erros em alguma leitura, tornando o sistema menos
sensível e mais preciso (VIEIRA, 2011).
Integrado ao módulo de voo há o acelerômetro digital de três eixos
ADXL345, com capacidade para perceber acelerações de -g à +g. Tomando como
premissa que o acelerômetro esteja exatamente ao centro da estrutura, pode-se
dizer que variações de ângulo em torno de seus próprios eixos não seriam
percebidas pelo mesmo. Mas devido ao alto índice de vibrações do sistema, gerado
pelos motores, há medições indesejadas sendo captadas. Considerando então, que
filtros digitais serão aplicados de forma à reduzir as leituras equivocadas, podemos
teorizar sobre um cálculo que descarta estas vibrações.
Sabendo-se que a aceleração da gravidade é de 9,81 m/s2, o somatório das
componentes trigonométricas deste vetor pode estimar a inclinação.
(ax2(t) + az2(t))1/2 = g (43)
O giroscópio (Angular Rate Sensor), modelo L3G4200D, faz medidas da
velocidade de rotação. Devido à necessidade de contínuas integrais no tempo, para
transformar a leitura da velocidade angular em deslocamento angular, pequenos
desvios são incorporados à leitura, o que torna o giroscópio pouco preciso ao longo
do tempo.
θn+1 = θn ∫ (dθ/dt) dt (44)
61
Como forma de superação de grande parte das fontes de imprecisão
características de cada sensor, a fusão sensorial pode ser entendida com um grau
mínimo de complexidade, como na figura 24:
Figura 24: Diagrama de tratamento de sinal
Fonte: Elaborado pelos autores
Auxiliando o acelerômetro e o giroscópio, temos a bussola digital MCS
(Magnetic Compass Sensor), modelo HMC5883L, pode-se obter o ângulo de
Azimute, pela sua percepção do campo magnético da Terra (equação 16).
Heading = arctag (Yh/Xh) (45)
Como feedback da altitude, pode-se ainda, com o sensor de pressão,
modelo BMP085 (Pressure sensor), estimar a altitude com relativa precisão. Tendo
como off-set a altitude a memória da pressão do ponto de decolagem, é possível
gerar um parâmetro de altitude da aeronave a cada tempo. O algoritmo de fusão de
sensores confeccionado para este projeto pode ser visto no anexo B.
Devido a natureza da fabricação dos sensores MEMS têm-se sempre uma
componente de offset, ou bias, presente que provocam erro nas leituras
provenientes destes. Para que se obtenha os dados corretos das mensuras é
necessário realizar uma calibração do sensor para o valor real medido. Para tal
utilizou-se uma coleta de dados através de uma comunicação serial entre o software
MATLAB e a plataforma de desenvolvimento do Arduino.
A calibração é realizada através da mensura e armazenamento dos dados
dos sensores em várias posições, e então utiliza-se uma biblioteca pré definida para
62
a criar uma superfície de tendência esferoidal. Os parâmetros de interesse para a
esfera calculada são as coordenadas de seu centro, que representam o offset
inerente as medidas do sensor. Para a calibração do magnetômetro e do
acelerômetro obteve-se as figuras 25 e 26.
Figura 25: Calibração do magnetômetro
Fonte: Elaborado pelos autores
63
Figura 26: Calibração do acelerômetro
Fonte: Elaborado pelos autores
4.4 Circuito de desenvolvimento
O esquema elétrico-eletrônico de um aeromodelo do tipo quadrirotor, como
na maioria dos sistemas autômatos, é construído basicamente em prol da interface
entre controlador, atuadores, sensores e bateria. O circuito de desenvolvimento
deste protótipo se assemelha a este modelo. A bateria fornece energia ao regulador
de tensão, que alimenta o microcontrolador com 5 volts, este por sua vez, energiza
os sensores. Esta mesma bateria fornece energia aos motores através dos ESCs
(figura 27):
64
Figura 27: Circuito de desenvolvimento
Fonte: Elaborado pelos autores
Os motores brushless necessitam de uma alimentação caracterizada pela
sobreposição de três ondas senoidais defasadas de 120 graus uma da outra. De
forma que, cada uma destas ondas alimente um grupo diferente de enrolamentos.
Esses motores não possuem sensores que facilitem o monitoramento de sua
posição angular ou velocidade, de forma, que seu alimentação eficiente se torna
uma tarefa bastante complexa.
Os ESCs se encarregam de alimentar os motores, conforme recebem o sinal
de controle do microcontrolador, através do fio chamado data. Este sinal é feito
através do código PWM (Pulse-Width Modulation), que ao ter seu duty-cicle variado,
varia a resposta do ESC.
Os ESCs escolhidos são chamados de Simonk, tiveram seu software
desenvolvido por Simon Kirby. Estes controladores foram otimizados para serem
65
mais rápidos que ESCs normais e se ajustarem melhor ao funcionamento de
quadcopters.
O microcontrolador usado é um Arduino Mega da Atmel, possui um
processador com interface de 8 bits por ciclo, 16MHz de clock e 256KB de memória
flash. Possui ainda, 54 pinos de comunicação com o exterior, dos quais, 15 podem
ser saídas PWM, e 16 entradas analógicas. Sua comunicação com o módulo de voo,
ou IMU, é feita través do código serial I2C, sendo realizada por apenas dois fios.
Onde, um destes é utilizado para determinação do clock de comunicação, feito pelo
dispositivo master, e o outro é utilizado para troca de comandos e dados. Assim, o
microcontrolador pode determinar os parâmetros de sensoriamento e receber as
magnitudes das leituras sensoriais.
4.5 Desenvolvimento da estrutura completa
Para o desenvolvimento deste trabalho considerou-se a montagem da
estrutura do quadcopter do zero, sendo utilizados os seguintes componentes para
sua construção:
a) 2 Hastes tubulares em alumínio com 980mm de comprimento, diâmetro
externo de 10mm e diâmetro interno de 7mm;
b) 1 Arduino Mega 2560.
c) 1 Módulo de sensoriamento de voo IMU GY88;
d) 4 Controladores eletrônico de velocidade (ESCs) Mistery Simonk de 30A;
e) 4 Motores brushless E-Max CF2822 de 1200Kv, Wmax de 203W, 39g;
f) 1 Estrutura usinada de fixação do frame, em nylon, de 70 x 70mm por
20mm.
g) 4 estruturas fixação dos motores em nylon com diâmetro de 28,5mm.
Como forma de fixação central da estrutura, foram utilizadas duas chapas de
nylon, usinadas de forma que o formato cilíndrico das hastes se encaixassem
transversalmente (figura 28). Assim, a montagem garantiu precisão e resistência
necessárias, sem prejudicar o peso total (figura 29).
66
Figura 28: Estrutura usinada de fixação do frame
Fonte: Elaborado pelos autores
Figura 29: Estrutura de vôo
Fonte: Elaborado pelos autores
67
Após o estabelecimento das fases iniciais do projeto, uma estrutura de
desenvolvimento para mais graus de liberdade foi montada. Estágio em que o
algoritmo de controle começa a integrar cálculos de resposta para diversos fatores
dinâmicos simultaneamente. Na figura 30, fios de nylon atravessam as hastes
tubulares, como forma de limitação do movimento em vôo. Como pode ser visto
através do link: <http://youtu.be/0dkFosPuuWw>.
Figura 30: Plataforma de desenvolvimento para 5 graus de liberdade
Fonte: Elaborado pelos autores
4.6 Equalização das curvas de ganhos dos motores
Diferenças físicas mínimas entres os componentes dos grupos atuadores são
resultantes dos processos de fabricação e dos materiais de sua composição. Devido
estas discrepâncias, desempenhos também discrepantes são obtidos destes
equipamentos.
Como forma de viabilizar o controle do aeromodelo, deve-se homogeneizar as
curvas de potência dos motores, de forma que não haja discrepância entre os sinais
de controles e as ações realizadas pelos atuadores.
68
Para tal realizou-se uma sequência medições das forças exercidas pelos
motores em uma balança digital para determinados valores de PWM, enviados para
o ESC do respectivo.
A realização da coleta dos valores implementou-se a montagem exibida na
figura 31, onde todos os motores permanecem desligados exceto aquele que está
oposto ao que encontra-se apoiado na balança digital, de forma a compor a
dinâmica do momento de inércia real da planta.
Figura 31: Montagem executada para as coletas de dados
Fonte: Elaborado pelos autores
Os valores coletados encontram-se dentro da faixa de PWM utilizada para o
controle do quadcopter. Na tabela 1 estão dispostos os resultados obtidos.
69
Tabela 1: Relação entre o PWM e a força
PWM Motor traseiro Motor direito Motor esquerdo Motor frontal
40 116 104 124 130 45 142 130 150 158 50 166 156 174 186 55 194 180 200 216 60 220 204 228 242 65 246 228 250 262 70 276 260 274 294 75 306 286 304 328
80 334 312 332 358 85 362 342 370 378 90 388 366 392 404 95 416 396 420 436
100 440 416 448 464 Fonte: Elaborado pelos autores
Implementando uma regressão linear para parametrização de uma função
que determina a relação entre a força de empuxo dos atuadores e o PWM obteve-se
os gráficos 1, 2, 3 e 4 para os motores traseiro, direito, esquerdo e frontal
respectivamente.
No canto inferior direito de cada gráfico encontra-se as equações obtidas e a
relação colinear. Observa-se que esta tem seu valor bem próximo de um, indicando
que a estimativa da relação entre a reta e os pontos obtidos possuem uma
aproximação numérica relevante.
70
Gráfico 1: Força x PWM para o motor traseiro
Fonte: Elaborado pelos autores
Gráfico 2: Força X PWM para o motor direito
Fonte: Elaborado pelos autores
y = 5,487x - 106,7R² = 0,999
0
50
100
150
200
250
300
350
400
450
500
0 20 40 60 80 100 120
Emp
uxo
no
mo
tor
(gf)
PWM
Motor traseiro
Motor traseiro
y = 5,276x - 109,3R² = 0,999
0
50
100
150
200
250
300
350
400
450
0 20 40 60 80 100 120
Emp
uxo
no
mo
tor
(gf)
PWM
Motor direito
Motor direito
71
Gráfico 3: Força X PWM para o motor Esquerdo
Fonte: Elaborado pelos autores
Gráfico 4: Força X PWM para o motor Esquerdo
Fonte: Elaborado pelos autores
y = 5,426x - 97,84R² = 0,998
0
50
100
150
200
250
300
350
400
450
500
0 20 40 60 80 100 120
Emp
uxo
no
mo
tor
(gf)
PWM
Motor esquerdo
Motor esquerdo
y = 5,549x - 91,84R² = 0,999
0
50
100
150
200
250
300
350
400
450
500
0 20 40 60 80 100 120
Emp
uxo
do
mo
tor
(gf)
PWM
Motor frontal
Motor frontal
72
Pela alta elação colinear, há uma linearização das curvas de ganho dos
motores realizada pelo software de controle dos ESCs. O que viabiliza uma
equalização menos complexa dos grupos atuadores.
4.7 Simulação computacional
Para a determinação dos coeficientes dos controladores PID do quadcopter
foi necessário levantar alguns parâmetros da estrutura do quadcopter. Devido a sua
geometria mais trabalhada construiu-se uma réplica da aeronave no software CAD
SolidWorks versão 2012 de 64 bits, podendo essa ser vista na figura 32. O algoritmo
do programa permite o cálculo do tensor de inércia, dado a inserção correta dos
materiais de cada componente.
Figura 32: Modelo do quadcopter construído no SolidWorks
Fonte: Elaborado pelos autores
Para a estrutura do quadcopter obteve-se o tensor em kg.m2 descrito na
matriz da equação 46.
73
𝐼𝑥𝑥 0 00 𝐼𝑦𝑦 0
0 0 𝐼𝑧𝑧
= 0,02257 0 0
0 0,02257 00 0 0,04457
(46)
Para o parâmetro 𝐽𝑇𝑃 do cálculo dos efeitos giroscópicos basta usar o teorema
dos eixos paralelos, logo têm-se que:
𝐽𝑇𝑃 = 𝐼𝑧𝑧 + 𝑚. 𝑟2 = 0,256797 𝑘𝑔. 𝑚2 (47)
Onde m é a massa do quadcopter e r é a distância do centro do eixo do motor
ao centro de gravidade do quadcopter.
Para a simulação do quadcopter utilizou-se o toolbox incluso no MATLAB, o
Simulink. Os principais setores do diagrama de blocos é discutida e explicada no
texto seguinte.
Dado o levantamento da relação entre o empuxo e a variável de PWM do
microcontrolador, torna-se desnecessário determinar o coeficiente de empuxo das
hélices, permitindo-se modelar os atuadores como descrito no diagrama de blocos
presente na figura 33.
O diagrama anterior representa uma simplificação, do atuador constituído do
ESC e do motor brushless. Dada a própria construção eletrônica do ESC, não há
como o existir valores de empuxo negativo, logo existe uma zona morta para todos
os valores da força exercida pelo motor inferior a zero. Dada as equações dos
gráficos 1, 2, 3 e 4 determinou-se quando a zona morta termina, iniciando então o
controle do quadcopter. Os ganhos presentes no diagrama de blocos são o
coeficiente linear obtidos na linha de tendência.
74
Figura 33: Blocos do atuador
Fonte: Elaborado pelos autores
Seguindo a equação 23, programou-se um bloco que representa a dinâmica
do quadcopter, que terá como entradas os parâmetros físicos discutidos no capítulo
3. Os ângulos de rolagem, arfagem, guinada, e as forças exercidas por cada motor.
As saídas são um vetor contendo as acelerações lineares e angulares nas
coordenadas do corpo e a matriz de rotação, que realiza a transformação das
coordenas do corpo para as inerciais. O código implementado para simulação pode
ser visto no Anexo D.
Para evitar que o haja translação no eixo X e Y no sistema inercial antes da
decolagem do quadrotor, aproximando-se então do sistema real,implementou-se
uma condição de que até que a aceleração de Z ultrapasse zero pela primeira vez
não haja passagem do sinal calculado das acelerações, permanecendo assim o
quadcopter, estático. Para tal, utilizou-se um detector de valor para a aceleração de
Z, um flip-flop tipo memória e um switch tal como diagramado na figura 34.
75
Figura 34: Blocos do atuador
Fonte: Elaborado pelos autores
Dado que as velocidades angulares estarão no body frame é necessário
utilizar uma transformação através da matriz T_Θ da equação 13 discutida no
capítulo 3. A integral do vetor de saída desta transformação serão os ângulos de
rolagem arfagem e guinada.
Através da ferramenta Simulink simulou-se o quadcopter calibrando
manualmente os valores dos coeficientes dos PIDs para a altitude e os ângulos de
orientação até que estes estivessem dentro de uma reposta desejada.
Finalmente, a simulação para a estrutura com quatro rotores em voo,
considerando rolagem, arfagem, guinada e altitude, demonstrou a viabilidade das
equações de modelamento e controle. Como pode ser visto nas figuras 35 e 36, o
aeromodelo apresentou guinada estável com um transitório desconsiderável (traço
praticamente reto), pequeno overshoot para altura após a decolagem (traço mais à
cima), um pequeno número de oscilações transitórias para rolagem e arfagem.
76
Figura 35: Respostas para Z e rotações
Fonte: Elaborado pelos autores
Figura 36: Reposta dos motores (em PWM)
Fonte: Elaborado pelos autores
4.8 Controle
Após estudo do equacionamento dinâmico do modelo e simulação de sua
veracidade, foram definidos os parâmetros de interesse no controle do protótipo.
Passo seguinte, visou-se alcançar razoável capacidade de leitura destas variáveis,
partindo das rotações do corpo.
Mais uma vez, iniciou-se pelo controle de um grau de liberdade, e, fazendo a
leitura da influência das forças dos empuxos sob as angulações, foi possível obter a
77
faixa ótima de atuação. Assim como do coeficiente proporcional (kp) e derivativo
(kd). Lembrando que, devido à ampla gama de velocidades de rotação dos motores,
isso só foi possível devido à linearização de suas curvas de ganho.
Implementado o código de controle em linguagem C, utilizou-se portas de
leitura e conversão analógico/digital para variar os parâmetros de controle através
de potenciômetros de alta precisão, simultaneamente ao funcionamento do
quadcopter.
Ajustados os coeficientes para equilíbrio em torno do eixo X, o mesmo foi feito
para o eixo Y. Em seguida, a aplicação do controle na rotação em Z, através da
discrepância entre a base de força dos atuadores de uma haste para os de outra.
Para o controle de altitude, foi aplicado um controle que obedeceu uma
sequência de setpoints definida. Sequência feita de forma que a posição
translacional em Z, da aeronave, fosse suficiente para manter o voo por cerca de 10
segundos e pousar de forma autômata. O código de controle pode ser visto no
anexo E deste trabalho.
78
5 RESULTADOS
À época de início deste trabalho de conclusão de curso, havia razoável
disponibilidade de trabalhos científicos publicados que abordavam o tema
pretendido. No entanto, a aplicação da Lei de Controle PID à malha de um drone
multirotor foi entendida como novidade.
A primeira considerável conquista deste trabalho foi o estabelecimento da
comunicação entre o microcontrolador e um ESC, dado que não há grande
disponibilidade de biografia sobre seus parâmetros. Construído para receber
comandos digitais do receptor de ondas de rádio, o ESC reconhece sequências
específicas de comandos, faixas de modulação de frequência e de duty-cicles.
Outro ponto relevante, foi o refino do PID em um grau de liberdade, através
do ambiente de desenvolvimento Simulink. O microcontrolador propiciou a interface
entre a gangorra e o computador. Um diagrama bem estruturado trouxe respostas
rápidas e precisas.
O firmware desenvolvido em linguagem C, de forma a manter um loop
eficiente e parâmetros de comando acertados para as faixas de atuação, trouxe o
controle PID para o microcontrolador, o que desvinculou o protótipo do ambiente
computacional.
Através da adaptação da biblioteca FreeIMU, e, da implementação do código
de fusão de sensores, foi obtida a capacidade de leitura dos sensores MEMS. O que
permitiu o sensoriamento necessário ao cálculo de posicionamento.
O êxito em calibrar os pesos de referência das leituras do magnetômetro e do
acelerômetro, foi obtido através do código elaborado em ambiente MatLab. O que
possibilitou uma leitura mais fidedigna dos fenômenos físicos.
Após a construção virtual do modelo equacionado para quatro propulsores, na
visualização do nível estabilidade do voo simulado, foi possível enxergar a atuação
dos coeficientes de controle. Além disto, cita-se a interdependência dos parâmetros
dos diferentes controles, como fator de atenção na composição integral do modelo.
O equilíbrio em voo, desconsideradas ainda as translações, veio com a
aplicação de um algoritmo de controle para três graus de liberdade. O que, devido a
interdependência de atuação existente entre os parâmetros de controle da rotação
em Z, e as rotações em X e Y, somente foi possível diante da adequada aplicação
do equacionamento.
79
Finalmente, o voo autômato foi alcançado, com uma ultima sintonia de seus
coeficientes, offsets e ganhos, e ainda, com a implementação da sequência de
variação de altitudes monitoradas pelo barômetro. Voo este, possível apenas em
ambiente livre de perturbações externas à planta, devido à sua malha de controle de
baixa robustez.
80
6 CONCLUSÃO
Este trabalho alcançou sua proposta. A aplicação da Lei de Controle Clássica
é viável para um sistema relativamente rápido e complexo.
A linearização e a variação de equações por máquina de estados, podem
permitir soluções de partes discretas para um sistema dinâmico.
Desde a pesquisa, até a aplicação, para todas as fases concretizadas neste
trabalho foram fomentadas por trabalhos acadêmicos da mais alta excelência. Seja
pelas orientações providas por nossos professores, por livros, artigos científicos,
teses de doutorado, teses de mestrado, e, até mesmo trabalhos de conclusão de
curso, o esforço da comunidade científica nos agraciou com a sustentação do bom
planejamento, no caminho escolhido para a aplicação da teoria.
Concluímos que a ao optar por um módulo de voo comercial, limitamos o
alcance do projeto às capacidades de sensoriamento deste. Por se tratar da parte
fundamental do sistema, quando tratamos de hardware. No momento, o protótipo em
fase de ajuste de coeficientes pode ser visto através do link:
<http://youtu.be/0dkFosPuuWw>. Um vídeo de seu funcionamento será publicado
em breve neste mesmo canal do site YouTube.
Pelos resultados alcançados, concluímos ainda, que a utilização da
ferramenta de controle PID é suficiente para o controle de um drone. Desde que
considerados os devidos cuidados em sua elaboração e suas limitações.
81
82
REFERÊNCIAS
ABBASI E.; MAHJOOB M. J.; YAZDANPANAH R. Controlling of Quadrirotor UAV
Using a Fuzzy System for Tuning the PID Gains in Hovering Mode. School of
Mechanical Engineering, University of Tehran, Iran, 2013.
ARDrone. Parrot AR Drone 2.0 GPS Edtion. Disponível em:
<http://ardrone2.parrot.com/>. Acesso em: 21 abr. 2014.
BADRI, Abdellatef E.; SINHA, Jyoti K.; ALBARBAR, Alhussein. A typical filter
design to improve the measured signals from MEMS accelerometer.
Measurement, United Kingdom,vol.43, p. 1425-1430, ago. 2010.
BASTA, Peter O. Quad Copter Flight. California State University, Northridge. Thesis
Eletric Engeneering, 2012, p. 60.
BEARD, R. W. Quadrirotor dynamics and control. Brigham Young University,
2008.
BRESCIANI, Tommaso. Modelling, Identification and Control of a Quadrirotor
Helicopter. Universidade de Lund, Thesis Automation Engeneering, 2008, p. 184.
BOUABDALLAH, Samir. Design and Control of Quadrirotors with Application to
Autonomous Flying. École Polytechnique Fédérale de Lausanne. Lausanne, 2007.
BOUAHBDALLAH, Samir; NOTH, André; SEIGWART, Roland. PID vs LQ Control
Techniques Applied Indoor Micro Quadrirotor. In: Proceedings of 2004 IEEE/RSJ
International Conference On Intelligent Robots and Systems. P. 2451-2456,
2004.
BOUAHBDALLAH, Samir; SIEGWART, Roland. Backstepping and Sliding-mode
Techniques Applied to an Indoor Micro Quadrirotor. In: Proceedings of the 2005
IEEE International Conference on Robotics and Automation, 2005, p. 2247-2252.
83
BROWN, Robert Grover; HWANG, Patrick Y. C. Introduction to random signals
and applied Kalman filtering. 4 ed. New York: Wiley,2012,p. 101-201.
DEMPSEY, Martin E. Eyes of the Army – U.S. Army Roadmap for Unmanned Aircraft
Systems 2010–2035, United States Army, 9 abr. 2010. Disponível em: <http://www-
rucker.army.mil/usaace/uas/US%20Army%20UAS%20
RoadMap%202010%202035.pdf>. Acesso em: 17 fev. 2014.
DORF, Richard C.; BISHOP, Robert H. Modern Control Systems. 12 ed. Upper
Saddle River, 2008, 1056 p.
eCalc. Multicopter Calculator. Disponível em:
<http://www.ecalc.ch/xcoptercalc.php?ecalc&lang=en>. Acesso em: 19 abr. 2014.
FAZARINC, Zvonko. Z-transform and its application to development of scientific
simulation algorithms. Computer applications in engineering education,
California, Wiley, v. 21, p. 75-88, mar. 2013.
Freescale Semiconductor. Data sheet MMA7360. Rev. 2, oct. 2007.Disponível em:
<http://www.freescale.com/files/sensors/doc/data_sheet/MMA7360L.pdf>. Acesso
em: 1 nov. 2013.
HERNÁNDEZ, Wilmar. Improving the response of an accelerometer by using optimal
filtering. Sensors and Actuators, Madrid, v. 88, p. 198-208, out. 2000.
HOFFMAN, Gabriel H.; et al. Quadrirotor Helicopter Flight Dynamics and Control:
Theory and Experiment. Proceedings of the AIAA Guidance, Navigation and
Control Conference. 2007. Disponível em:
<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.77.9015&rep=rep1&type=
pdf>. Acesso em: 23 de mar. 2014.
JIANG, Jun et al. Control Platform Design and Experiment of a Quadrirotor.
Proceedings of the 32nd Chinese Control Conference. 2013. p. 2974-2979.
84
KOWNACKI, Cezary. Optimization approach to adapt Kalman filters for the real-time
application of accelerometer and gyroscope signals filtering. In: Digital Signal
Processing, Orlando, v. 21, n.1, p. 131-140, jan. 2011.
LEONG, Bernard Tat Meng; LOW, Sew Ming; OOI, Melanie Po-Leen. Low-Cost
Microcontroller-based Hover Control Design of a Quadcopter. Procedia
Engineering. V. 41, p. 458-464, 2012.
LEONG, Bernard Tar Meng; LOW, Seng Ming; OOI, Melanie Po-Leen; STOCHERO,
Tahiane. G1 Brasil. Segurança da Copa 2014 terá drones da FAB e PF. São Paulo,
2013, disponível em: <http://g1.globo.com/brasil/noticia/2013/03/seguranca-da-copa-
2014-tera-drones-da-fab-e-pf-exercito-estuda-compra.html>. Acesso em: 13 de fev.
2014.
LEISHMAN, J. Gordon. The Bréguet-Richet Quad-Rotor Helicopter of 1907. 2004.
Disponível em: <http://aero.umd.edu/~leishman/Aero/Breguet.pdf>. Acesso em: 17
de mar. 2014.
MADGWICK, Sebastian O.H. An efficient orientation filter for inertial and
inertial/magnetic sensor arrays. 2010. Disponível em: <http://www.x-
io.co.uk/res/doc/madgwick_internal_report.pdf>. Acesso em: 22 de out. 2014.
MAGNUSSEN, Øyvind; OTTESTAD, Morten; HOVLAND, Geir. Experimental
Validation of a Quaternion-based Attitude Estimation
with Direct Input to a Quadcopter Control System. In: International Conference on
Unmanned Aircraft Systems (ICUAS), Atlanta, p. 480-485, maio 2013.
MCCORMICK, W. Barnes. Aeronautics and Flight Mechanics. New York, Wiley, 2
ed., 1995.
NEWCOME, Laurence R. Unmanned Aviation: A brief history of unmanned
aerial vehicles. Virginia, America Institute of Aeronautics and Astronautics, 2004.
PRISACARIU, Victor Adrian; REID, Ian. 3D hand tracking for human computer
85
interaction. Image and Vision Computing, United Kingdom, v. 30, p. 236-250, jan.
2012.
Processing. Processing 2. Disponível em: <http://www.processing.org/>. Acesso
em: 25 abr. 2014.
QISHUANG, Liu Xinbo. Applications of chirp z transform and multiple modulation
zoom spectrum to pulse phase thermography inspection. NDT and E international,
Beijing, v. 54, p. 1-8, mar. 2013.
RADER, Charles M. On Digital Filtering. IEEE Transactions on Audio and
Electroacoustics, v.16, n. 3, p. 303-314, set. 1968.
RODRIGUES, José. Aeromodelismo teórico e prático. Serviço de Publicações da
Mocidade Portuguesa, 1964.
SABATINI, Angelo Maria. Kalman-Filter-Based Orientation Determination
UsingInertial/Magnetic Sensors: Observability Analysis and
Performance Evaluation. In: Sensors, v. 11, p. 9182-9206, 2011.
SHI, Peng; KAYA, C. Yalcin. Robust Kalman filtering for continuous-time systems
with norm-bounded nonlinear uncertainties. IMA Journal of Mathematical Control
and Information, v. 17, n. 4, p. 363-373, set. 1998.
SICILIANO, Bruno; KATHIB, Oussama. Springer Handbook of Robotics. Berlin, p.
1611, 2008.
STOCHERO, Tahiane. G1 Brasil. Segurança da Copa 2014 terá drones da FAB e
PF. São Paulo, 2013. Disponível em:
<http://g1.globo.com/brasil/noticia/2013/03/seguranca-da-copa-2014-tera-drones-da-
fab-e-pf-exercito-estuda-compra.html>. Acesso em: 13 de Fev. 2014.
86
TAVAKOLI, Mahmoud; MARQUES, Lino; ALMEIDA, Aníbal T. de. 3DCLIMBER:
Climbing and manipulation over 3D structures. Mechatronics, Coimbra, vol. 21, p.
48-62, set. 2010.
YANG, Aiying; LAI, Junsen; SUN, Yu-nan. A chirp Z transform based software
synchronization method for optical performance monitoring. IEEE Photonics
technology letters, Beijing, v. 23, n. 22, p. 1739-1741, nov. 2011.
Yin Yan Model. Manual E-Max CF2822. Disponível em:
<http://www.http://www.yinyanmodel.com/en/ProductView.asp?ID=58>. Acesso em:
20 apr. 2014.
87
88
ANEXOS
ANEXO A - CARACTERÍSTICAS DOS PROPULSORES
89
90
ANEXO B - CÓDIGO DE FUSÃO DE SENSORES
//Fusão de sensores pela teoria de MADGWICK AHRS
void MadgwickAHRS(float gx, float gy, float gz, float ax, float ay, float az, float mx,
float my, float mz) {
floatrecipNorm;
float s0, s1, s2, s3;
float qDot1, qDot2, qDot3, qDot4;
floathx, hy;
float _2q0mx, _2q0my, _2q0mz, _2q1mx, _2bx, _2bz, _4bx, _4bz, _2q0, _2q1,
_2q2, _2q3, _2q0q2, _2q2q3, q0q0, q0q1, q0q2, q0q3, q1q1, q1q2, q1q3, q2q2,
q2q3, q3q3;
qDot1 = 0.5f * (-q1 * gx - q2 * gy - q3 * gz);
qDot2 = 0.5f * (q0 * gx + q2 * gz - q3 * gy);
qDot3 = 0.5f * (q0 * gy - q1 * gz + q3 * gx);
qDot4 = 0.5f * (q0 * gz + q1 * gy - q2 * gx);
if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) {
recipNorm = invSqrt(ax * ax + ay * ay + az * az);
ax *= recipNorm;
ay *= recipNorm;
az *= recipNorm;
recipNorm = invSqrt(mx * mx + my * my + mz * mz);
mx *= recipNorm;
my *= recipNorm;
mz *= recipNorm;
_2q0mx = 2.0f * q0 * mx;
_2q0my = 2.0f * q0 * my;
_2q0mz = 2.0f * q0 * mz;
_2q1mx = 2.0f * q1 * mx;
_2q0 = 2.0f * q0;
_2q1 = 2.0f * q1;
_2q2 = 2.0f * q2;
_2q3 = 2.0f * q3;
_2q0q2 = 2.0f * q0 * q2;
91
_2q2q3 = 2.0f * q2 * q3;
q0q0 = q0 * q0;
q0q1 = q0 * q1;
q0q2 = q0 * q2;
q0q3 = q0 * q3;
q1q1 = q1 * q1;
q1q2 = q1 * q2;
q1q3 = q1 * q3;
q2q2 = q2 * q2;
q2q3 = q2 * q3;
q3q3 = q3 * q3;
hx = mx * q0q0 - _2q0my * q3 + _2q0mz * q2 + mx * q1q1 + _2q1 * my * q2 +
_2q1 * mz * q3 - mx * q2q2 - mx * q3q3;
hy = _2q0mx * q3 + my * q0q0 - _2q0mz * q1 + _2q1mx * q2 - my * q1q1 + my
* q2q2 + _2q2 * mz * q3 - my * q3q3;
_2bx = sqrt(hx * hx + hy * hy);
_2bz = -_2q0mx * q2 + _2q0my * q1 + mz * q0q0 + _2q1mx * q3 - mz * q1q1 +
_2q2 * my * q3 - mz * q2q2 + mz * q3q3;
_4bx = 2.0f * _2bx;
_4bz = 2.0f * _2bz;
s0 = -_2q2 * (2.0f * q1q3 - _2q0q2 - ax) + _2q1 * (2.0f * q0q1 + _2q2q3 - ay) -
_2bz * q2 * (_2bx * (0.5f - q2q2 - q3q3) + _2bz * (q1q3 - q0q2) - mx) + (-_2bx * q3 +
_2bz * q1) * (_2bx * (q1q2 - q0q3) + _2bz * (q0q1 + q2q3) - my) + _2bx * q2 * (_2bx *
(q0q2 + q1q3) + _2bz * (0.5f - q1q1 - q2q2) - mz);
s1 = _2q3 * (2.0f * q1q3 - _2q0q2 - ax) + _2q0 * (2.0f * q0q1 + _2q2q3 - ay) -
4.0f * q1 * (1 - 2.0f * q1q1 - 2.0f * q2q2 - az) + _2bz * q3 * (_2bx * (0.5f - q2q2 - q3q3)
+ _2bz * (q1q3 - q0q2) - mx) + (_2bx * q2 + _2bz * q0) * (_2bx * (q1q2 - q0q3) + _2bz
* (q0q1 + q2q3) - my) + (_2bx * q3 - _4bz * q1) * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f
- q1q1 - q2q2) - mz);
s2 = -_2q0 * (2.0f * q1q3 - _2q0q2 - ax) + _2q3 * (2.0f * q0q1 + _2q2q3 - ay) -
4.0f * q2 * (1 - 2.0f * q1q1 - 2.0f * q2q2 - az) + (-_4bx * q2 - _2bz * q0) * (_2bx * (0.5f -
q2q2 - q3q3) + _2bz * (q1q3 - q0q2) - mx) + (_2bx * q1 + _2bz * q3) * (_2bx * (q1q2 -
q0q3) + _2bz * (q0q1 + q2q3) - my) + (_2bx * q0 - _4bz * q2) * (_2bx * (q0q2 + q1q3)
+ _2bz * (0.5f - q1q1 - q2q2) - mz);
92
s3 = _2q1 * (2.0f * q1q3 - _2q0q2 - ax) + _2q2 * (2.0f * q0q1 + _2q2q3 - ay) +
(-_4bx * q3 + _2bz * q1) * (_2bx * (0.5f - q2q2 - q3q3) + _2bz * (q1q3 - q0q2) - mx) +
(-_2bx * q0 + _2bz * q2) * (_2bx * (q1q2 - q0q3) + _2bz * (q0q1 + q2q3) - my) + _2bx
* q1 * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f - q1q1 - q2q2) - mz);
recipNorm = invSqrt(s0 * s0 + s1 * s1 + s2 * s2 + s3 * s3);
s0 *= recipNorm;
s1 *= recipNorm;
s2 *= recipNorm;
s3 *= recipNorm;
qDot1 -= beta * s0;
qDot2 -= beta * s1;
qDot3 -= beta * s2;
qDot4 -= beta * s3;
}
q0 += qDot1 * (1.0f / sampleFreq);
q1 += qDot2 * (1.0f / sampleFreq);
q2 += qDot3 * (1.0f / sampleFreq);
q3 += qDot4 * (1.0f / sampleFreq);
recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
q0 *= recipNorm;
q1 *= recipNorm;
q2 *= recipNorm;
q3 *= recipNorm;
}
//ALGORITIMO RÁPIDO DE CALCULO DO INVERSO DO MÓDULO
float invSqrt(float x) {
float halfx = 0.5f * x;
float y = x;
long i = *(long*)&y;
i = 0x5f3759df - (i>>1);
y = *(float*)&i;
y = y * (1.5f - (halfx * y * y));
return y;
}
93
94
ANEXO C - CÓDIGO DE CALIBRAÇÃO DO IMU
flag=0;
[arduino.s,flag]=serialcomm('COM6',115200)
if flag==1
statusbox=waitbar(0,'Gire o magnetometro em torno de seus
eixos','Name','Calibração');
tic;
t_stop=40;
arduino.mode='M';
i=1;
whiletoc<=t_stop
fprintf(arduino.s,arduino.mode);
magn(i,1)=fscanf(arduino.s,'%f');
magn(i,2)=fscanf(arduino.s,'%f');
magn(i,3)=fscanf(arduino.s,'%f');
accel(i,1)=fscanf(arduino.s,'%f');
accel(i,2)=fscanf(arduino.s,'%f');
accel(i,3)=fscanf(arduino.s,'%f');
subplot(1,2,1);
scatter3(magn(i,1),magn(i,2),magn(i,3));
hold on
axis equal
title('Magnetometro');
subplot(1,2,2);
title('acelerômetro');
scatter3(accel(i,1),accel(i,2),accel(i,3));
hold on
axis equal
i=i+1;
waitbar(toc/t_stop,statusbox);
end
close(statusbox);
closeSerial;
95
[MC,MR]=ellipsoid_fit([magn(:,1),magn(:,2),magn(:,3)],3);
[AC,AR]=ellipsoid_fit([accel(:,1),accel(:,2),accel(:,3)],3);
[MX,MY,MZ]=ellipsoid(MC(1),MC(2),MC(3),MR(1),MR(2),MR(3));
[AX,AY,AZ]=ellipsoid(AC(1),AC(2),AC(3),AR(1),AR(2),AR(3));
view(3)
subplot(2,2,1)
hold on
title('Magnetometro')
scatter3(magn(:,1),magn(:,2),magn(:,3))
scatter3(MC(1),MC(2),MC(3))
mesh(MX,MY,MZ)
scatter3(MC(1),MC(2),MC(3))
subplot(1,2,2)%
hold on
title('acelerômetro');
scatter3(accel(:,1),accel(:,2),accel(:,3))
mesh(AX,AY,AZ)
scatter3(AC(1),AC(2),AC(3))
end
96
ANEXO D - CÓDIGO DE SIMULAÇÃO
function [Rbe ,Vb_dot] = calcaccelaration( I,d,l,Jtp,m,U,rpy,Vb )
Vb_dot=zeros([6,1]);
OB=zeros([6,4]);
%Função de calculo das acelerações do quadcoptero no bodyframe
% Retorna as acelerações baseados nas entradas
%rpy = vetor contendo os angulos de roll pitch yaw
%vetor contendo os momentos de inércia
%d = coeficiente de arrasto
%l = comprimento da distância entre o eixo do motor ao CG do quadrotor
%Jtp = momento de inércia em relação ao eixo do motor;
%m = massa do quadcopter
%Vb = vetor com as velocidades angulares e lineares atuais do quadcopter
%U = Variavel de controle que contem as velocidades dos respectivos rotores
%. Matriz inercial do quadcopter
Mb=[m*eye(3) zeros(3);zeros(3) I];
%Matrizes de rotação que relacionam o frame inercial com o do quacopter
Rx=rotx(rpy(1)*180/pi);
Ry=roty(rpy(2)*180/pi);
Rz=rotz(rpy(3)*180/pi);
Rbe=Rz*Ry*Rx;
%.Gravidade
g= 9.80665;
Fg=[Rbe'*[0 0 -m*g]' ;0; 0; 0];
%Força de coriolis
Cv=[zeros(3) -m*skew(Vb(1:3)); zeros(3) -skew(I*Vb(4:6))];
%.Calculo da força exercida pelos rotores do quad
UB=[zeros([2,4]);1 1 1 1;0 -1 0 1;-1 0 1 0;-d d -d d]*U;
%Calcúlo dos efeitos giroscópicos
OB=Jtp*[zeros(3,4);Vb(5) -Vb(5) Vb(5) -Vb(5);-Vb(6) Vb(6) -Vb(6)
Vb(6);zeros(1,4)]*U;
%Calcula as acelerações no body frame
Vb_dot=inv(Mb)*(-Cv*Vb+Fg+UB+OB);
97
98
ANEXO E - CÓDIGO DE CONTROLE
//Pontifícia Universidade Católica de Minas Gerais
//Trabalho de Conclusão de Curso em Engenharia Mecatrônica
//Daniel de Castro Ribeiro
//Nicolas Ives Roque Pacheco
//*****************PID_QUADCOPTER********************
// Includes
#include <ADXL345.h>
#include <bma180.h>
#include <HMC58X3.h>
#include <ITG3200.h>
#include <MS561101BA.h>
#include <I2Cdev.h>
#include <MPU60X0.h>
#include <EEPROM.h>
#include <Servo.h>
#include "DebugUtils.h"
#include "CommunicationUtils.h"
#include "FreeIMU.h"
#include <Wire.h>
#include <SPI.h>
// Defines
#define BMP085_ADDRESS 0x77
// Calibration values
int ac1;
int ac2;
int ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
int b1;
int b2;
int mb;
99
int mc;
int md;
//Read variables
int raw_values[9];
float ypr[3];
// yaw = ypr[0], pitch = ypr[1], roll = ypr[2]
float val[9];
long b5;
const unsigned char OSS = 0;
//Set the FreeIMU object
FreeIMU my3IMU = FreeIMU();
//Controll variables
float SetpointR = -4;
float SetpointP = 0;
float SetpointY = 0;
float SetpointZ;
float kp = 0.30;
float kd = 2.50;
float kpY = 0;
float kdY = 0;
float GanhoR = 0.91;
float GanhoP = 0.97;
float GanhoY = 0;
float OffsetR = 5.13;
float OffsetP = 2.70;
int Base = 55;
float Yaw;
float Pitch;
float Roll;
int OutputVec[10];
int OutputRate;
100
int i, j;
unsigned long tempo;
float erroR, erroP, erroY;
float deltaErroR, deltaErroP, deltaErroY;
float erroAnteriorR, erroAnteriorP, erroAnteriorY;
float PR, IR, DR, PP, IP, DP, PY, IY, DY;
int PIDR, PIDP, PIDY;
float deltaTempo;
float tempoAnterior;
float Alight = 1.50;
float Ground;
const int P8 = A8;
const int P9 = A9;
const int P10 = A10;
const int P11 = A11;
int Potentiometer;
float Temperature, Pressure, Altitude;
Servo servoR;
Servo servoL;
Servo servoF;
Servo servoB;
//***************SETUP*****************
void setup()
{
Serial.begin(115200);
Wire.begin();
ac1 = bmp085ReadInt(0xAA);
ac2 = bmp085ReadInt(0xAC);
ac3 = bmp085ReadInt(0xAE);
ac4 = bmp085ReadInt(0xB0);
ac5 = bmp085ReadInt(0xB2);
ac6 = bmp085ReadInt(0xB4);
b1 = bmp085ReadInt(0xB6);
b2 = bmp085ReadInt(0xB8);
101
mb = bmp085ReadInt(0xBA);
mc = bmp085ReadInt(0xBC);
md = bmp085ReadInt(0xBE);
delay(5);
//Parameter enable or disable fast mode
my3IMU.init();
delay(5);
servoL.attach(47);
delay(30);
servoR.attach(53);
delay(30);
servoF.attach(51);
delay(30);
servoB.attach(49);
delay(30);
servoL.write(5);
delay(15);
servoR.write(5);
delay(15);
servoF.write(5);
delay(15);
servoB.write(5);
delay(3500);
}
void loop()
{
//Get Baro
Temperature = bmp085GetTemperature(bmp085ReadUT());
Pressure = bmp085GetPressure(bmp085ReadUP());
Altitude = calcAltitude(Pressure);
//Reset height
SetpointZ = Altitude;
Ground = Altitude;
//Get Accel + Gyro
102
my3IMU.getYawPitchRoll(ypr);
Roll = ypr[2];
Pitch = ypr[1];
Yaw = ypr[0];
//Sinc
tempo = millis();
deltaTempo = tempo - tempoAnterior;
tempoAnterior = tempo;
if (tempo < 10000){
servoL.write(40);
servoR.write(40);
servoB.write(40);
servoF.write(40);
goto end;
}
if (tempo > 10000 & tempo < 20000){
SetpointZ = 1.5;
}
if (tempo > 20000){
SetpointZ = Ground + Alight;
Alight = Alight - 0.02;
if (tempo > 40000){
servoL.write(5);
servoR.write(5);
servoB.write(5);
servoF.write(5);
goto end;
}
//*************************YAW*****************************
//_____P_____YAW
erroY = Yaw - SetpointY;
PY = erroY * kpY;
//_____D_____YAW
deltaErroY = (erroY - erroAnteriorY);
103
erroAnteriorY = erroY;
DY = deltaErroY * kdY;
//_____PID_____YAW
PIDY = PY + DY;
if (PIDY > 20){
PIDY = 20;
}
if (PIDY < -20){
PIDY = -20;
}
//*************************ROLL*****************************
//_____P_____ROLL
erroR = Roll - SetpointR;
PR = erroR * kp;
//_____D_____ROLL
deltaErroR = (erroR - erroAnteriorR);
erroAnteriorR = erroR;
DR = deltaErroR * kd;
//_____PID_____ROLL
PIDR = PR + DR;
if (PIDR > 20){
PIDR = 20;
}
if (PIDR < -20){
PIDR = -20;
}
i = (Base + PIDR);
j = (GanhoR * (Base - PIDR)) + OffsetR;
servoR.write(i - PIDY - GanhoY);
servoL.write(j - PIDY - GanhoY);
//************************PITCH***************************
//_____P_____PITCH
erroP = Pitch - SetpointP;
PP = erroP * kp;
104
//_____D_____PITCH
deltaErroP = (erroP - erroAnteriorP);
erroAnteriorP = erroP;
DP = deltaErroP * kd;
//_____PID_____PITCH
PIDP = PP + DP;
if (PIDP > 20){
PIDP = 20;
}
if (PIDP < -20){
PIDP = -20;
}
i = (Base + PIDP);
j = (GanhoP * (Base - PIDP)) + OffsetP;
servoB.write(i + PIDY + GanhoY);
servoF.write(j + PIDY + GanhoY);
end:
}
//*********************END**LOOP****************************
// Calculate temperature in deg Celsius
float bmp085GetTemperature(unsigned int ut){
long x1, x2;
x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;
x2 = ((long)mc << 11)/(x1 + md);
b5 = x1 + x2;
float temp = ((b5 + 8)>>4);
temp = temp /10;
return temp;
}
// Calculate pressure given up
long bmp085GetPressure(unsigned long up){
long x1, x2, x3, b3, b6, p;
unsigned long b4, b7;
b6 = b5 - 4000;
105
// Calculate B3
x1 = (b2 * (b6 * b6)>>12)>>11;
x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2;
// Calculate B4
x1 = (ac3 * b6)>>13;
x2 = (b1 * ((b6 * b6)>>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;
b7 = ((unsigned long)(up - b3) * (50000>>OSS));
if (b7 < 0x80000000)
p = (b7<<1)/b4;
else
p = (b7/b4)<<1;
x1 = (p>>8) * (p>>8);
x1 = (x1 * 3038)>>16;
x2 = (-7357 * p)>>16;
p += (x1 + x2 + 3791)>>4;
long temp = p;
return temp;
}
// Read 1 byte from the BMP085 at 'address'
char bmp085Read(unsigned char address)
{
unsigned char data;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
while(!Wire.available());
return Wire.read();
}
106
// Read 2 bytes from the BMP085
int bmp085ReadInt(unsigned char address)
{
unsigned char msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
while(Wire.available()<2);
msb = Wire.read();
lsb = Wire.read();
return (int) msb<<8 | lsb;
}
// Read the uncompensated temperature value
unsigned int bmp085ReadUT(){
unsigned int ut;
// Write 0x2E into Register 0xF4
// This requests a temperature reading
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
delay(5);
// Read two bytes from registers 0xF6 and 0xF7
ut = bmp085ReadInt(0xF6);
return ut;
}
// Read the uncompensated pressure value
unsigned long bmp085ReadUP(){
unsigned char msb, lsb, xlsb;
unsigned long up = 0;
// Request a pressure reading w/ oversampling setting
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
107
Wire.write(0x34 + (OSS<<6));
Wire.endTransmission();
// Wait for conversion, delay time dependent on OSS
delay(2 + (3<<OSS));
// Read register 0xF6 (MSB), 0xF7 (LSB), and 0xF8 (XLSB)
msb = bmp085Read(0xF6);
lsb = bmp085Read(0xF7);
xlsb = bmp085Read(0xF8);
up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8)
| (unsigned long) xlsb) >> (8-OSS);
return up;
}
void writeRegister(int deviceAddress, byte address, byte val) {
Wire.beginTransmission(deviceAddress); // start transmission to device
Wire.write(address); // send register address
Wire.write(val); // send value to write
Wire.endTransmission(); // end transmission
}
int readRegister(int deviceAddress, byte address){
int v;
Wire.beginTransmission(deviceAddress);
Wire.write(address); // register to read
Wire.endTransmission();
Wire.requestFrom(deviceAddress, 1); // read a byte
while(!Wire.available()) {
}
v = Wire.read();
return v;
}
float calcAltitude(float pressure){
float A = pressure/101325;
float B = 1/5.25588;
float C = pow(A,B);
C = 1 - C;
108
C = C /0.0000225577;
return C;
}