Академический Документы
Профессиональный Документы
Культура Документы
EXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA
INSTITUTO MILITAR DE ENGENHARIA
SEÇAO DE ENGENHARIA DE COMPUTAÇÃO
Rio de Janeiro
2017
Conteúdo
1 Introdução 6
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Objetivos e contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Estrutura da dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Revisão bibliográfica 8
2.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 Protocolo MAVLink . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2 Software in the loop - SITL . . . . . . . . . . . . . . . . . . . . . . 11
2.1.3 QEMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.4 DroneKit-Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Estrutura de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Resultados e discussões 19
3.1 Teste de comunicação sem hardware . . . . . . . . . . . . . . . . . . . . . 19
3.2 Teste de comunicação com hardware . . . . . . . . . . . . . . . . . . . . . 21
3.3 Simulação com QEMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Dificuldades encontradas 25
5 Conclusão 26
2
Lista de Figuras
1 Protocolo MAVLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Estrutura do protocolo MAVLink . . . . . . . . . . . . . . . . . . . . . . . 9
3 Exemplo de mensagem MAVLink . . . . . . . . . . . . . . . . . . . . . . . 10
4 Arquitetura SITL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5 Trajetória Rn do enésimo VANT . . . . . . . . . . . . . . . . . . . . . . . . 13
6 Raspberry Pi emulado versão gráfica . . . . . . . . . . . . . . . . . . . . . 13
7 Raspberry Pi emulado versão console . . . . . . . . . . . . . . . . . . . . . 14
8 Raspberry Pi 2 Modelo B . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9 Navio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
10 MAVProxy com visão da aeronave simulada . . . . . . . . . . . . . . . . . 20
11 APM Planner em conjunto com MAVProxy . . . . . . . . . . . . . . . . . 20
12 Terminal do MAVProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
13 Raspberry Pi e Navio2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
14 Instalação de firmware utilizando APMPlanner . . . . . . . . . . . . . . . . 22
15 Instalação completa do firmware no APMPlanner . . . . . . . . . . . . . . 23
16 Seleção de porta para conexão no APMPlanner . . . . . . . . . . . . . . . 23
17 Máquinas virtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3
Lista de siglas
ADC Analogic to Digital Converter
API Application Programming Interface
BA Bundle Adjustment
CKA Checksum A
CKB Checksum B
ECS Estação de Controle em Solo
EEPROM Electrically Erasable Programmable Read-Only Memory
GPIO General Purpose Input/Output
GPS Global Positioning System
HDMI High Definition Multimedia Interface
HP Hewlett-Packard
IMU Inertial Measurement Unit
INS Inertial Navigation System
IP Internet Protocol
LTE Long Term Evolution
LTS Long Term Support
LGPL Licença Pública Geral Menor
PPM Pulse Position Modulation
PWM Pulse Width Modulation
SD Secure Digital Card
SITL Software in the Loop
SLAM Simultaneous localization and mapping
UART Universal Asychrounous Receiver Transmiter
UDP User Datagram Protocol
USB Universal Serial Bus
VANT Veículo Aéreo Não Tripulado
XML Extensible Markup Language
4
Resumo
Veículos aéreos não tripulados tem sido o principal foco de estudo em algumas empresas
civis e militares, as quais buscam otimizar suas aeronaves no quesito computacional e
financeiro. O trabalho propõe a troca de informação entre três VANTs a fim de, em
trabalhos futuros, os localizar por trilateração.
A pesquisa se divide em duas partes: na escolha de hardwares de baixo custo compa-
tíveis com protocolo MAVLink; e na elaboração de um script responsável por comandar as
aeronaves através de rotas pré-definidas. No intuito de evitar que se danifique os hardwares
do experimento, pesquisou-se também simuladores. Priorizou-se elementos com funcio-
nalidade modo plane(VANT asa fixa) e que possuem código aberto. Além disso, foram
utilizados diferentes simuladores para uma diferente quantidade de aeronaves visando
maior compatibilidade do software.
Com o intuito de corroborar com a teoria apresentada, são propostos três testes.
Utilizando apenas uma aeronave, faz-se a constatação da comunicação entre VANT e
ECS através de simuladores. Além disso, propõe a montagem da parte física e verifica o
recebimento de mensagens MAVLink na ECS. Por fim, é atestado a troca de informação
entre três aeronaves simuladas.
5
1 Introdução
1.1 Motivação
O sensoriamento remoto em locais de difícil acesso, inclusive com fins de segurança, pode
ser solucionado através de VANTs. Por consequência, é uma área da engenharia na qual há
espaço para desenvolvimento otimizando estas aeronaves para suas respectivas finalidades.
DE CARVALHO RODRIGUES (2015) busca desenvolver um sistema robótico aéreo com
baixo custo e tamanho reduzido visando de trabalhar com simultaneous localization and
mapping (SLAM), bundle adjustment (BA) e navegação. DA SILVA et al. (2014) visa
desenvolver um hardware para um controle autônomo embarcado de um quadricóptero.
LEITE (2015) se compromete em solucionar o problema de controlar múltiplos VANTs
simultaneamente. MEIER et al. (2012) tem por objetivo realizar um voo controlado
baseado em visão computacional e detecção de obstáculos por visão computacional estéreo
simultaneamente em um sistema embarcado.
6
1.3 Estrutura da dissertação
Na revisão bibliográfica é feita uma análise do motivo de escolha dos sistemas utilizados
- protocolo, piloto automático e estação de controle em solo - assim como são apresentados
os hardwares compatíveis. Preferiu-se a programas que possuem código aberto a fim de
promover a pesquisa e o desenvolvimento pela comunidade científica.
Nos resultados e discussões são apresentados os testes de comunicação realizados no
Laboratório de Robótica do Instituto Militar de Engenharia assim como o desenvolvimento
do código responsável pelo trajeto e teste da localização do VANT por trilateração. E,
por fim, são relatadas as dificuldades encontradas no experimento.
7
2 Revisão bibliográfica
2.1 Software
8
- como especificado em MEIER et al. (2012).
Por fim, os campos SYS, COMP e MSG são responsáveis pela identificação do emissor,
9
remetente e da mensagem respectivamente. A identificação da mensagem é importante
pois existem dezoito tipos de mensagens além de noventa e uma pré definidas, responsáveis
pela arquitetura, configurações, comandos etc (MARTY, 2013). Portanto, está localizado
no primeiro campo da mensagem com o intuito de que os dados obtidos possam ser decodi-
ficados corretamente. Somente são processados os conteúdos MAVLink cujo identificador
destino único estiver endereçado.
Caso algumas dessas mensagens não cumpram o objetivo desejado, pode-se acrescen-
tar outras seguindo o padrão descrito na figura 3 através de um arquivo XML. As novas
definições devem ser realizadas no intervalo de 150-240 bytes, estando o restante já re-
servado para as pré-definidas (LEITE, 2015). A mais comum é o heartbeat (message ID
= 0) responsável por verificar a conexão entre a ECS e a aeronave. As demais mensa-
gens podem ser encontradas na documentação MAVLink presente no GitHub (GITHUB,
2016).
10
ter alcançado certa altitude. Contudo, apenas um comando NAV e DO ou CONDITION
podem ser executados ao mesmo tempo, sendo que estes devem ser executados antes do
NAV (ARDUPLANE, 2016).
A fim de se executar as instruções de navegação, é necessário a definição de um sistema
de referência para a localização do VANT. Este pode ser o sistema de coordendas WGS84,
no qual define a latitude-longitude como as coordendas globais e a altitude relativa ao nível
do mar; ou a altitude pode ser definida a partir do ponto ajustado como home position.
O tipo Plane também pode definir a altitude a partir da altura do solo (ARDUPLANE,
2016).
11
Para simulação e testes é preciso implementar uma arquitetura de Software In The
Loop (SITL), capaz de executar o projeto sem hardware, um benefício visto que não
há necessidade de realizar um vôo apenas para verificar as comunicações. Consiste em
um executável de um compilador de C++. Compõe-se de um simulador MAVProxy em
python e no FlightGear, responsável por exibir a simulação.
MAVProxy é um aplicativo baseado em console de linhas de comando, cujo objetivo
consiste em servir como estação de controle em solo bem simples a qual suporta o protocolo
MAVLink. Compatível com os sistemas operacionais mais comuns, é também capaz de
ter uma interface gráfica básica através de certos plugins, além de permitir conexão com
outros computadores. FlightGear é um software de código aberto que conta com um
banco de dados online, além de um modelo de céu preciso e detalhado. As dinâmicas de
voo serão gerenciadas pelo JSBSim, conforme a figura 4.
2.1.3 QEMU
12
Figura 5: Trajetória Rn do enésimo VANT
2.1.4 DroneKit-Python
13
Figura 7: Raspberry Pi emulado versão console
VLink. Contudo, há de ressaltar que o protocolo não é sem perdas. Comandos podem não
chegar ao destino. Por outro lado, podem ser ignorados silenciosamente caso não estejam
aptos a serem executados (DRONEKIT, 2017). Medidas responsáveis por prevenir estes
casos são adotadas durante o código, tais como uso de clear e vehicle.is_armable.
Código 1: rota1.py
from d r o n e k i t import c o n n e c t , VehicleMode , Command , L o c a t i o n G l o b a l ,
LocationGlobalRelative
import time
from pymavlink import m a v u t i l
v e h i c l e = c o n n e c t ( ’ 1 2 7 . 0 . 0 . 1 : 1 4 5 5 0 ’ , wait_ready=True )
except s o c k e t . e r r o r :
print ’ S e r v i d o r nã o e x i s t e ! ’
except e x c e p t i o n s . OSError a s e :
print ’ S e r i a l nã o e x i s t e ! ’
except d r o n e k i t . APIException :
print ’ Tempo e s g o t a d o ! ’
except :
print ’ Erro ! ’
14
cmds=v e h i c l e . commands
print ( " L i b e r a n d o comandos e x i s t e n t e s . " )
cmds . c l e a r ( )
cmds . u pl oa d ( )
cmds . wait_ready ( )
while not v e h i c l e . i s _ a r m a b l e :
print ( " Aguardando i n i c i a l i z a ç ã o do ve í c u l o . " )
time . s l e e p ( 1 )
cmds . download ( )
cmds . wait_ready ( )
print ( " L o c a l i z a ç ã o do ponto i n i c i a l {} " . format ( v e h i c l e . home_location ) )
while True :
print ( " A l t i t u d e : {} " . format ( v e h i c l e . l o c a t i o n . g l o b a l _ r e l a t i v e _ f r a m e . a l t ) )
i f v e h i c l e . l o c a t i o n . g l o b a l _ r e l a t i v e _ f r a m e . a l t >=40∗0.95: #T r i g g e r j u s t b e l o w
target alt .
print " A l t i t u d e a l c a n ç ada . "
break
time . s l e e p ( 1 )
while True :
n e x t w a y p o i n t=v e h i c l e . commands . next
#p r i n t ’ D i s t â n c i a para w a y p o i n t (%s ) : %s ’ % ( n e x t w a y p o i n t ,
15
distance_to_current_waypoint () )
print ( " A l t i t u d e {} " . format ( v e h i c l e . l o c a t i o n . g l o b a l _ r e l a t i v e _ f r a m e ) )
i f n e x t w a y p o i n t ==4:
print " Sa in do da m i s s ã o quando a t i n g i d o ponto f i n a l . "
break ;
time . s l e e p ( 1 )
16
Figura 8: Raspberry Pi 2 Modelo B
analisa-se o Navio2. Este opera em diferentes modos de voo, como manual, estável,
automático e “siga-me”, além de contar com transmissão e recepção assíncrona universal
(UART), circuito inter integrado (I2C) e conversor analógico para digital (ADC). Por
outro lado, tem dois IMUs, com acelerômetro, giroscópio e magnetômetro nos três eixos,
barômetro, GPS, modulação de largura de pulso (PWM – Pulse Width Modulation) e
modulação de posição de pulso (PPM – Pulse Position Modulation). Tem por vantagem
o fato de poder monitorar e executar comandos e scripts ainda em vôo. A telemetria é
transmitida através de Wi-Fi, LTE, Bluetooth ou qualquer outro modem. Além do que,
é compatível com diversas estações de controle e suporta MAVLink, mecanismo pelo qual
os dados serão transmitidos após sua previsão (EMLID, 2016).
Figura 9: Navio 2
17
Por fim, acopla-se o Navio2 ao Raspberry juntamente com componentes importantes
tais como antenas para recepção do sinal GPS, rádios para telemetria do dispositivo e
baterias que alimentam toda a estrutura embarcada. A fim de controlar manualmente
o aeromodelo, é necessário também um rádio do tipo FlySky. Do hardware necessário
para funcionamento da aeronave em si, temos o motor Brushless e seu controlador de
velocidade. Este tipo de motor é vantajoso em relação aos demais pois possui maior
vida útil, maior torque, alta eficiência e menor peso (DA SILVA, 2014). O controlador de
velocidade (ESC – Eletronic Speed Control ) ajusta a velocidade de giro do motor variando
a frequência das correntes entre suas fases.
18
3 Resultados e discussões
19
Software in the Loop proposto.
20
Figura 12: Terminal do MAVProxy
alterar a rota da aeronave. Desta forma, na figura 12, confirma-se a transmissão de dados
utilizando o protocolo.
21
Figura 13: Raspberry Pi e Navio2
22
Figura 15: Instalação completa do firmware no APMPlanner
Testar algoritmos em tempo real não é viável uma vez que há o risco de danificar o
material. Desta forma, a fim de se concretizar a ideia inicial do trabalho de se traba-
23
lhar com três equipamentos, é necessário tratar primeiro com simulações. O QEMU é o
software responsável por criar uma máquina virtual na qual rodará o Raspbian, sistema
operacional embarcado no VANT.
Propõe-se uma tarefa simples de início a fim de verificar a viabilidade das simulações
- emular dois equipamentos e realizar uma simples troca de informação entre eles. Para
isso, foi desenvolvido códigos que permitem uma conexão UDP. Sendo um destinado ao
cliente, e outro, ao servidor.
Por outro lado, para que as máquinas possam se comunicar, é primordial a existência
de uma rede. Em razão do sistema ser virtual, não há placa de rede física, sendo, portanto,
necessário sua simulação. Contudo, ao utilizar adaptadores TAP, a rede não foi capaz de
realizar o ping do IP das máquinas. Acredita-se que o problema venha da composição do
QEMU em si.
Como solução, será prosseguido o teste utilizando máquinas virtuais com o sistema
operacional Ubuntu. Na figura 17, comprova-se uma simples troca de mensagem "Hello
World"entre as máquinas virtuais. Os códigos foram desenvolvidos em python - estão em
anexo - utilizando socket (Python Wiki, 2017).
24
4 Dificuldades encontradas
25
5 Conclusão
26
o uso do rádio 3DR. Foi proposto, então, o teste de simulação utilizando o MAVProxy.
Neste, foi possível avaliar o recebimento das instruções MAVLink assim como testar um
plano de voo já pré-definido pelo piloto automático. Ainda em andamento, está a troca
de informações entre duas placas de Raspberry Pi emuladas através do QEMU.
27
Referências
[5] MARTY, Joseph A. Vulnerability Analysis of the MAVLink Protocol for Command
and Control of Unmanned Aircraft. Air Force Institute of technology Wright-Patterson
AFB OH Graduate School of Engineering and Management. (2013).
[6] DA SILVA, Kleber Lima. MORAIS, Aniel Silva. Hardware para controle avançado de
veículo aéreo não tripulado do tipo quadricóptero. (2014)
[10] LEITE, Carlos Eduardo Tussi. Plataforma de controle para Múltiplos Veículos Aéreos
Não Tripulados (VANTs).(2015)
[12] MEIER, Lorenz. TANSKANEN, Petri. HENG, Lionel. LEE, Gim Hee. FRAUNDOR-
FER, Friedrich. POLLEFEYS, Marc. PIXHAWK: A micro aerial vehicle design for au-
28
tonomous flight using onboard computer vision. In Auton Robot (2012) 33:21-39. doi:
10.1007/s10514-012-9281-4.
[14] LAKHANI, Aamir. MUNIZ, Joseph. Penetration testing with Raspberry Pi. Packt
Publishing. Birmingham: 2015.
29
Anexos
export PATH=$PATH:$HOME/jsbsim/src
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
sim vehicle.py -w
wp load ../Tools/autotest/ArduPlane-Missions/CMAC-toff-loop.txt
arm throttle
mode auto
Código 2: Enviando.py
import s o c k e t
UDP_IP=" 1 9 2 . 1 6 8 . 5 6 . 1 0 2 "
UDP_PORT=5005
MESSAGE= " H e l l o , World ! "
Código 3: Recebendo.py
import s o c k e t
UDP_IP=" 1 9 2 . 1 6 8 . 5 6 . 1 0 2 "
30
UDP_PORT=5005
31