Está en la página 1de 111

INSTITUTO POLITÉCNICO

NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA


MECÁNICA Y ELÉCTRICA

UNIDAD ZACATENCO
ACADEMIA DE ICE

“DISEÑO DE UNA APLICACIÓN ANDROID


PARA CONTROL A DISTANCIA DE UN DRONE
DESTINADO A SEGURIDAD”

TESIS

QUE PARA OBTENER EL TITULO DE:

INGENIERO EN COMUNICACIONES Y ELECTRÓNICA

PRESEN T A N :

HÉCTOR MICHEL CAMPOS LÓPEZ


DANIELA JUÁREZ ORTIZ
AARON YAEL VIEYRA
FLORES

ASESOR TÉCNICO:
DR. LUIS ALEJANDRO ITURRI HINOJOSA

ASESOR METODOLÓGICO
M. EN C. PEDRO MARTIN MORALES BECERRA

MÉXICO D.F. DICIEMBRE 2015


Instituto Polit´ecnico
´INDIC Nacional La T´ecnica al Servicio
E de la Patria

´Indice

OBJETIVOS 4

JUSTIFICACIO´ N 5

INTRODUCCIO´ N 6

1. TECNOLOG´IA EN DRONES Y APLICACIONES MO´ VILES 7


1.1. INTRODUCCIO´ N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2. TECNOLOG´IA DE UN DRONE WIFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. APLICACIONES DE LOS DRONES EN LA INDUSTRIA . . . . . . . . . . . . . . . . . 1
6
1.4. APLICACIONES ANDROID PARA CONTROL DE DISPOSITIVOS WI-FI . . . . . . . 1
9
1.5. TIPOS DE UAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1

2. APLICACIO´ N ANDROID 2
6
2.1. INTRODUCCIO´ N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
7
2.2. Kit de Desarrollo de Software-SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0
2.3. PUNTO DE COMUNICACIO´ N SOCKET . . . . . . . . . . . . . . . . . . . . . . . . 3
. . . 1
2.4. APLICACIO´ N CLIENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1
2.5. APLICACIO´ N SERVIDOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4
2.6. IMPORTACIO´ N DEL PROYECTO A ECLIPSE . . . . . . . . . . . . . . . . . . . . . 6
. 3
2.7. HABILITACIO´ N DEL PUERTO 5500 TCP . . . . . . . . . . . . . . . . . . . . . . . . . 6
6
3. PRUEBAS DE CAMPO Y RESULTADOS 7
0
3.1. INTRODUCCIO´ N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1
3.2. COMUNICACIO´ N ENTRE CLIENTE Y SERVIDOR . . . . . . . . . . . . . . . . . . . 7
. 1
3.3. COMUNICACIO´ N ENTRE SERVIDOR Y DRONE . . . . . . . . . . . . . . . . . . . . 7
Instituto Polit´ecnico
´INDIC Nacional La T´ecnica al Servicio
E de la Patria
. 4
CONCLUSIONES 8
3
REFERENCIAS 8
6
GLOSARIO 8
7
ANEXOS I
Instituto Polit´ecnico
´INDICE DE Nacional La T´ecnica al Servicio
FIGURAS de la Patria

´Indice de figuras

1. Modelo de funcionamiento de un AR. Drone.........................................................................13


2. Figura demostrativa de los modelos de UAV considerados............................................23
3. Diagrama de flujo de la aplicaci´on cliente ..........................................................................27
4. Diagrama de flujo de la aplicaci´on servidor ........................................................................28
5. Diagrama de flujo de la aplicaci´on del Drone ....................................................................29
6. Arquitectura AR.Drone.....................................................................................................30
7. Diragrama de conexi´on entre el cliente y el servidor ........................................................32
8. Diagrama de la conexi´on entre cliente y servido a trav´es de internet. ..........................33
9. Selecci´on de la carpeta del programa del servidor .............................................................63
10. Importaci´on del programa a Eclipse ...................................................................................64
11. Selecci´on de la carpeta donde se ubica el proyecto ............................................................65
12. Arranque de la aplicaci´on .....................................................................................................65
13. Esperando habilitaci´on del cliente .......................................................................................66
14. Ingreso a la configuraci´on del modem .................................................................................67
15. Selecci´on de la pestan˜a Advanced .....................................................................................67
16. Selecci´on de la opci´on Forwarding ....................................................................................68
17. Configurando el puerto 5500 a una direcci´on IP privada. ................................................69
18. Verificaci´on de la habilitaci´on del puerto .........................................................................69
19. Esperando habilitaci´on del cliente. ......................................................................................71
20. Ventana principal de la aplicaci´on Android. .....................................................................72
21. IP y puerto TCP ingresados en la aplicaci´on cliente. ........................................................73
22. Conexion exitosa.............................................................................................................. 73
23. Mensaje de conexi´on en la l´ınea de consola del servidor. ...............................................74
24. Boton “Take off” presionado...................................................................................................74
25. Drone elev´andose. .................................................................................................................75

2
Instituto Polit´ecnico
´INDICE DE Nacional La T´ecnica al Servicio
TABLAS de la Patria

26. Boton “Up” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7


. 5
27. Drone elev´andose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. 6
28. Boton “Right” y “Left”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. 6
29. Movimientos del Drone en el aire. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. 7
30. Boton “Down” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. 7
31. Drone descendiendo con el bot´on “down”. . . . . . . . . . . . . . . . . . . . . . . 7
. 8
32. Boton “Landing” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
. 8
33. Drone aterrizando con el bot´on “Landing”. . . . . . . . . . . . . . . . . . . . . . 7
. . 9
34. Video obtenido de la c´amara posterior del AR.Drone a 1 metro de altura. . . . . 7
. . 9
35. Video obtenido de la c´amara posterior del AR.Drone a 3.5 metros de altura. . . . 8
. 0
36. Boton “CV/CH” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
. . 0
37. Vista de la c´amara inferior a una altura de 3.5 metros. . . . . . . . . . . . . . . . 8
. 1
38. Camara del Drone detenida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
. 1
39. Diagrama de flujo cliente-servidor. . . . . . . . . . . . . . . . . . . . . . . . . . 8
. . . 3
40. Diagrama de flujo de la aplicaci´on del Drone . . . . . . . . . . . . . . . . . . . . . 8
. 4
41. Ventana principal de la aplicaci´on Android. . . . . . . . . . . . . . . . . . . . . 8
. . . 5
42. Principio de la ventana aplicado a TCP . . . . . . . . . . . . . . . . . . . . . . . . I
. I
43. UDP, un demultiplexor basado en puertos . . . . . . . . . . . . . . . . . . . . . . I
. I
I
44. Formato del datagrama UDP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . I
3
Instituto Polit´ecnico
´INDICE DE Nacional La T´ecnica al Servicio
TABLAS de la Patria
. I
I

´Indice de tablas

1. Caracter´ısticas de las diferentes tecnolog´ıas inal´ambricas[1]. ...........................................12


2. Propiedades de algunas aplicaciones de seguridad...............................................................21
3. Caracter´ısticas de algunos modelos de UAV considerados..............................................24

4
Instituto Polit´ecnico
OBJETIVOS Nacional La T´ecnica al Servicio
de la Patria

OBJETIVOS

OBJETIVO GENERAL:
•Disen˜ar una aplicaci´on Android para el control a distancia de un Drone con
grabaci´on de video percibida a trav´es de su c´amara con tecnolog´ıa Wi-Fi.

OBJETIVOS ESPEC´IFICOS:
• Disen˜ar una aplicaci´on en Android para controlar un Drone desde un dispositivo m
´ovil con acceso a Internet.
•Emplear un servicio de conexi´on remota que permita observar los videos captados
por el Drone durante el vuelo.

5
Instituto Polit´ecnico
JUSTIFICACIO La T´ecnica
Nacionalal Servicio de la Patria
´N

JUSTIFICACIO´ N

En la actualidad la
seguridad es un tema
que ha adquirido una
gran importancia,
debido a que la
delincuencia ha
aumentado de manera
exponencial, por lo
tanto, el uso de
distintos sistemas de
seguridad,
principalmente sistemas
de video vigilancia se ha
vuelto la mejor opci´on.

Los Drones se han


caracterizado por sus
amplias aplicaciones
militares, civiles e incluso
de en- tretenimiento,
variando dependiendo
de las caracter´ısticas f
´ısicas que ´estos
poseen (como peso,
taman˜o, tiempo de
vuelo, accesorios como

5
Instituto Polit´ecnico
c Nacional
aci´on de sistemas per-
´ama sonales, como por
ras, ejemplo un sistema de
GPS, video vigilancia.
etc.),
y por Sin embargo, hasta el d
su ´ıa de hoy, los sistemas
ampli de video vigilancia se
o realizan utilizando
panor prin- cipalmente
ama dispositivos como lo
de son las c´amaras IP o
desar los veh´ıculos a´ereos
rollo no tripulados-UAV
a acondicionados con c
nivel ´amaras (Drone),
de teniendo como mayor
progr limitaci´on que deben
amaci encontrarse y
´on controlarse desde la
es misma ´area geogr
factib ´afica, es decir el
le sistema debe estar
utiliz conectado en la misma
arlos red LAN.
para
la Con lo antes
imple mencionado, decidimos
ment desarrollar una aplicaci

6
Instituto Polit´ecnico
´on Nacionalalejado,
mente para
que poder captar y
contr almacenar fotograf´ıas y
ole videos, tomados durante
remot una rutina de vuelo.
amen
te
desde
un
dispo
sitivo
m
´ovil,
a
trav
´es
de
Inter
net, a
un
Dron
e que
se
encue
ntre
en un
punto
geogr
´afica

7
Instituto Polit´ecnico
INTRODUCCIO La T´ecnica
Nacionalal Servicio de la Patria
´N

INTRODUCCIO´ N

Los Drones han


despertado un gran
inter´es en los u´ltimos
an˜os ya que dichos veh
´ıculos pueden ocuparse
en el ´ambito militar
como en el a´mbito
civil, con aplicaciones
desarrolladas para
tareas de bu´squeda y
rescate, vigilancia
comercial, espionaje,
filmaci´on cinematogr
´afica, entre otras.
Debido a las diversas
aplicaciones que se
pueden realizar con
Drones, presentamos en
el presente trabajo el
desarrollo de una
aplicaci´on para
dispositivos Android,
cuyo objetivo es
controlar un Drone con
tecnolog´ıa WiFi
destinado a seguridad, es

8
Instituto Polit´ecnico
decir, Nacional
enando el video en un
usam servidor.
os un
Drone En el cap´ıtulo I se
comer mencionan las
cial especificaciones t
para ´ecnicas de un Drone
con- WiFi, espec´ıficamente
trolar del Drone que hemos
una usado. Por otra parte
rutina hacemos una comparaci
de ´on entre aplicaciones
vuelo Android disponibles en
aleato Play Store, con esto
riame determinamos las
nte y ventajas y desventajas
tomar que existen entre
video nuestra aplicaci´on y
de estas las aplicaciones
amba disponibles.
s c
´amar En el cap´ıtulo II
as describimos la
(post arquitectura de las
erior librer´ıas utilizadas para
o el control del Drone, as
vertic ´ı mismo se describe el
al) procedimiento de
almac programaci´on de las

9
Instituto Polit´ecnico
aplica el Nacional
software en ´el se
ciones desarroll´o la aplicaci
disen˜ ´on. Por ultimo
adas: incluimos el
aplica procedimiento del
ci´on mapeo de puertos
servid TCP, el cual es
or y necesario para la
aplica comunicaci´on entre las
ci´on aplicaciones cliente y
client servidor.
e.
Mostr En el cap´ıtulo III se
amos realizan las pruebas de
el vuelo y captura de
proce video del AR.Drone,
dimie mostrando las
nto capacidades de nuestra
seguid aplicaci´on Android en
o una rutina de vuelo
para controlada
cargar completamente por el
un usuario.
proye 1 La T
TECNOLOG ´ecnic
´IA EN a al
cto Servici
DRONES Y o de
en APLICACIO la
NES MO Patria
Eclips ´ VILES

e,
siendo

1
0
Instituto Polit´ecnico
Nacional
N DRONES
Y
APLICACIO
NES
M
´V
E
C 1
.
A
P 1.1. INTRODUCCIO
´N
´
Los sistemas aut
I ´onomos de control de
T vuelo han despertado un
U gran inter´es en los u
L ´ltimos an˜os debido al

O gran desarrollo de
UAV(por sus siglas en
ingl´es: Unmanned
Aerial Vehicle- Veh
1. TE ´ıculo A´ ereo No
C Tripulado), as´ı como el
N logro de un control de
OL ellos m´as sencillo e
O intuitivo de los mismos.
G
´I
Este tipo de veh´ıculos
A pueden ocuparse tanto
E en el a´mbito militar
1
1
Instituto Polit´ecnico
como Nacional

en el Con respecto a las


´ambi aplicaciones de bu
to ´squeda y rescate, ha
civil, sido lanzado el
con proyecto Europeo lla-
aplica mado SHERPA (por
ciones sus siglas en ingl´es:
desarr Smart collaboration
ollada between Humans and
s ground-aErial Robots
para for imProving rescuing
tareas activities in Alpine
de bu environment-
´sque Colaboracion
da y inteligente entre
rescat humanos y robots
e, terrestres-a´ereos para
vigila mejorar las actividades
ncia de rescate en
comer ambientes alpinos) cuyo
cial, objetivo es desarrollar
espio una plataforma mixta
naje, (terrestre-a´erea) para
fil- apoyar las actividades
maci de bu´squeda y rescate
´on en escenarios reales y
cinem hostiles. Con este
atogr proyecto, se presenta

1
2
Instituto Polit´ecnico
una Nacional de
ciones estos
soluci dispositivos han
´on incrementado,
via- principalmente por las
ble caracter´ısticas similares
para a las de una aeronave,
salvar es decir, maniobras
vidas complejas en
(turist pequen˜os volu´menes,
as y siendo capaces de llevar
perso cargas significativas.
nal de
rescat En la actualidad las
e) en aplicaciones de los
estos Drones como veh´ıculos
ambie no tripulados se ubican
ntes en dos grandes
hostil ´ambitos mencionados
es anteriormente: militar y
alpino civil.
s (mu
´ltipl
es
avala
nchas
)[1].

Las
aplica

1
3
Instituto Polit´ecnico
1.2 TECNOLOG´IA DE UN DRONE Nacional La T´ecnica al Servicio
WIFI de la Patria

1.2. TECNOLOG´IA DE UN DRONE WIFI

Anteriormente se utilizaba la t´ecnica de radiofrecuencia para poder pilotear los Drones,


debido a los estudios realizados a trav´es de los an˜os se desarroll´o el uso de la tecnolog´ıa Wi-Fi.
La ventaja del Wi-Fi es la rapidez y m´as au´n el transporte de datos que permite.

Gracias a la tecnolog´ıa Wi-Fi es posible controlar y conectar Drones a distancia mediante dis-
tintos tipos de dispositivos m´oviles que puedan soportar la aplicaci´on.

El control del Drone se refiere a la manipulaci´on del vuelo, teniendo el control de su


velocidad, la distancia y la altura a la que volara. Mientras que la conexi´on del Drone es la
que permite transmitir video y fotos en tiempo real al dispositivo.

Como mecanismo de seguridad del Drone, s´ı el sistema del Drone pierde la sen˜al del Wi-
Fi, ´este autom´aticamente permanece inm´ovil en el aire. El alcance de ´el entre los
dispositivos v´ıa Wi-Fi depender´a del rango de los dispositivos y en ocasiones de cuestiones
clim´aticas, as´ı tambi´en como obst´aculos entre el Drone y el dispositivo de control.

Debido a que los Drones requieren de una mayor distancia de control, estos cuentan con am-
plificadores y antenas de alta ganancia, con el fin de alargar el alcance y tener una buena conexi
´on. El rango de alcance generalmente es de 50 metros.

Los Drones en general usan tecnolog´ıa wifi mediante un m´odulo integrado “wifi b g n” o
“wifi b g” en modo de funcionamiento ad-hoc, el cual crea una red entre el dispositivo m´ovil y el
Drone.

A continuaci´on se mencionan las tecnolog´ıas inal´ambricas existentes que pueden ser


incorpora- das para la comunicaci´on de un Drone:

14
IEEE 802.11 (WiFi)
WiFi incluye diferentes est´andares IEEE 802.11 a/b/g/n/ac para WLAN (por sus siglas en ingl
´es Wireless Local Area Network- Redes de A´ rea Local Inal´ambricas). En particular, las
versiones “n” y “ac” son las u´ltimas versiones que proporcionan mayor rendimiento. El est
´andar IEEE 802.11 n fue lanzado en 2009 con nuevas caracter´ısticas comparadas con las
versiones anteriores, como OFDM, (por sus siglas en ingl´es Orthogonal Frecuency-Division
Multiplexing- Multiplexaje Or- togonal por Divisi´on de Frecuencia) y MIMO (por sus siglas
en ingl´es Multiple Input Multiple Output- Mu´ltiples Entradas Mu´ltiples Salidas)[1].
Estas nuevas caracter´ısticas no solo permiten mejorar el rendimiento de la red (velocidad m
´axima de datos de 150 Mbps), sino tambi´en mejora el alcance de cobertura (250m al aire
libre). Para incrementar au´n m´as el rendimiento de la red (hasta 6.77 Gbps) el est´andar
IEEE 802.11 ac es lanzado en 2013 utilizando MU-MIMO (por sus siglas en ingl´es Multi User
Multiple Input Multiple Output- Mu´ltiples Entradas Mu´ltiples Salidas Multiusuario), modulaci
´on eficiente y el incremento del ancho de banda del canal[1].

ZigBee
ZigBee a trav´es del est´andar IEEE 802.15.4 define las especificaciones para LR-WPAN (por
sus siglas en ingl´es Low-Rate Wireless Personal Area Network- Redes Inal´ambricas de A
´ rea Personal de Baja Transmision) para soportar dispositivos simples que consuman la m´ınima

energ´ıa y operen normalmente en un espacio personal. ZigBee proporciona multi-saltos y redes


confiables con una larga duraci´on de bater´ıa. Para este fin, este reduce la cantidad de datos
que se transmiten, la sobrecarga de “frames” y la frecuencia de transmisi´on e introduce
mecanismos para la gesti´on/re- ducci´on de la energ´ıa usada. Dependiendo del uso de la red,
ZigBee tiene un alcance variable de cobertura, el cual var´ıa desde 10 hasta 150m con la m
´axima velocidad de transmisi´on 250kbps. El bajo consumo de energ´ıa es la caracter´ıstica m
´as importante de ZigBee [1].
XBee
El protocolo XBee es tambi´en parte de LR-WPAN (por sus siglas en ingl´es Low-Rate
Wireless Personal Area Network- Redes Inal´ambricas de A´ rea Personal de Baja Transmisi
´on). Este logra una velocidad de transmisi´on de 250 kbps usando CSMA/CA (por sus
siglas en ingl´es Carrier Sense Multiple Access with Collision Avoidance- Acceso Mu´ltiple
con Detecci´on de Portadora y Prevensi´on de Colisiones)[1].

La topolog´ıa del protocolo XBee es t´ıpicamente malla, y gracias a sus caracter´ısticas los
nodos XBee pueden extender su cobertura (hasta 1.6 km) a trav´es del uso espec´ıfico de
estrategias de enrutamiento (multi-salto): de hecho, son capaces de establecer nuevas condiciones y
agregar nue- vos nodos para ser flexible contra alguna ruptura en el enlace[1].
Considerando esta velocidad de transmisi´on, es sencillo entender que este protocolo no puede
ser usado para una extensa transferencia de datos, como imagen y video, pero es adecuado para
trans- ferir datos a redes de sensores de monitoreo y control[1].

LTE
LTE (por sus siglas en ingl´es Long-Term Evolution- Evoluci´on a Largo Plazo) es una
tecnolog´ıa de radio plataforma que permitir´a a los operadores lograr incluso mayor rendimiento
que HSPA+ (por sus siglas en ingl´es High Speed Packet Access Plus- Acceso de Alta
Velocidad de Paquetes Plus) en un mayor espectro de ancho de banda. El objetivo general de
LTE es proporcionar un alto rendimiento de acceso de radio que ofrezca altas velocidades m
´oviles [1].

IEEE 802.16 (WiMAX)


La tecnolog´ıa WiMAX (por sus siglas en ingl´es Worldwide interoperability for Microwave
Access network ) soporta velocidades tan altas como 75 Mbps en un rango de hasta 30 km.
WiMAX permite altas velocidades de transmisi´on en largas distancias, uso eficiente del ancho de
banda, y evita las interferencias hasta lo m´ınimo posible. Las principales caracter´ısticas que
hacen que el
est´andar WiMAX sea muy competitivo son: flexibilidad, seguridad, alta eficiencia, f´acil
instala- ci´on, movilidad, bajo costo y gran cobertura. Esta tecnolog´ıa funciona en ambas
bandas (en las frecuencias de 2.5 a 5.8 GHz)[1].
En la tabla 1 se muestran las tecnolog´ıas que se acaban de mencionar.

Tabla 1: Caracter´ısticas de las diferentes tecnolog´ıas inal´ambricas[1].


Requisitos Wi Xb L ZigB WiMAX
Fi ee T ee
E
Transmisi´on de Datos mayor a Si No Si No Si
1Mbps
Distancias entre nodos mayor a No Si Si Si Si
1Km
Movilidad Si Si Si Si Si
Baja Latencia Si No Si No Si
Consumo reducido de energ´ıa Si Si Si Si Si
Operaci´on en bandas no Si Si No Si Condicionalmen
licenciadas te

Un Drone esta instrumentado para medir la orientaci´on con un aceler´ometro, un


giroscopio y una bru´jula de tres ejes cada uno; y para medir la altitud con un sonar. Adema
´s, cuenta con dos c´amaras, una frontal y una vertical.

Tiene activo un servidor telnet, que al recibir una conexi´on da acceso a una consola para
con- trolar el sistema operativo, por lo que es posible compilar c´odigo para ARM (por sus
siglas en ingl´es Advanced RISC Machine- Conjunto de instrucciones Reducidas Avanzadas de
Maquina) en una computadora y ejecutarlo en el Drone.

A este sistema embebido est´a conectada, a trav´es del puerto serial, la tarjeta de
navegaci´on que recibe la informaci´on sin procesar de los sensores, y tambi´en el circuito
encargado de controlar la velocidad de los motores a trav´es de PDM (por sus siglas en ingl
´es Pulse-Width Modulation- Modulaci´on por Ancho de Pulsos).
Usualmente la manera de usar el AR.Drone es mediante un dispositivo m´ovil que tenga la
aplica- ci´on desarrollada por el fabricante para poder controlarlo. De esta manera se usa el
controlador PID (Proporcional Integral Derivativo) interno del Drone y la interfaz gr´afica sirve
para indicarle al controlador los valores deseados en cuanto a altitud y postura. En la figura 1 se
puede observar el funcionamiento de este modelo.

Figura 1: Modelo de funcionamiento de un AR. Drone.

1.2.1. ESPECIFICACIONES TE´ CNICAS DEL AR.DRONE

El AR.Drone es un dispositivo volador de alta tecnolog´ıa. T´ecnicamente, es un cuadric


´optero con sensores y un controlador. Debido a que este dispositivo es muy ligero (su peso var´ıa de
360 a 400 gramos) es propenso a sufrir perturbaciones, por lo que es recomendable utilizarlo en
ambientes interiores; sin embargo, tambi´en puede ser utilizado en lugares al aire libre. La bater
´ıa permite un tiempo de vuelo aproximado de 13 minutos [2].
AR.Drone es controlado por un procesador de 32 bits a 468MHz ARM9 RISC con un DDR-RAM
de 128MB a 200MHz. Esta arquitectura de procesamiento controla las operaciones b´asicas
del Drone incluyendo la estabilidad[2].
Los sensores que tiene instalados consisten en un aceler´ometro de 3 ejes, un giroscopio de un eje,
un giroscopio de 2 ejes, un sensor ultras´onico, una c´amara vertical y una c´amara horizontal
[2]. El sensor ultras´onico mide la altitud del Drone que var´ıa de los 20-600cm. La c´amara
vertical tiene una resoluci´on de 176 x 144 pixeles correspondiente a una vista en a´ngulos de 45 x
35 y proporciona un video de 60 campos por segundo. Sin embargo, tiene una mayor resoluci´on
horizontal, pero no es usada durante el aterrizaje [2].
Este cuadric´optero puede ser controlado v´ıa Wi.Fi por un dispositivo externo como una
compu- tadora. Toda la comunicaci´on se realiza utilizando tres canales UDP. Un canal de
comunicaci´on permite enviar comandos al Drone. El dispositivo acepta los siguientes comandos
con una fre- cuencia de 30Hz: despegar, aterrizar, configuraci´on de l´ımites como velocidad y
altura m´axima, calibraci´on de sensores, velocidad vertical, etc. El canal NavData transmite
informaci´on acerca del estado del Drone con una frecuencia de 30Hz. La informaci´on que
proporciona es: posici´on del Drone en, altitud, nivel de bater´ıa, etc. Finalmente, el canal de
Video transmite informaci´on de las c´amaras [2].
El AR.Drone es propulsado por motores sin escobillas, con tres fases de corriente controlada por
un micro-controlador. El Drone detecta si todos los motores est´an girando o se detienen. El
Drone detecta si cualquiera de las h´elices est´a bloqueada y si una h´elice en movimiento
encuentra un obst´aculo se detienen todos los motores inmediatamente. Este sistema de protecci
´on evita choques repetidos [3].
Se utiliza una carga de 1000mAh, 11.1V de bater´ıa de LiPo para hacer volar el Drone. Cuando el
Drone detecta un voltaje de la bater´ıa bajo, primero env´ıa un mensaje de advertencia al
usuario, y luego autom´aticamente desciende. Si el voltaje alcanza un nivel cr´ıtico, todo el
sistema se apaga para evitar cualquier comportamiento inesperado [3].
Los sensores se encuentran debajo del casco central. El AR.Drone 1.0 cuenta con 6 DOF, basado
en MEMS, unidad de medici´on inercial miniaturizado. El software se proporciona con
mediciones de cabeceo, alabeo y gun˜ada. Las mediciones inerciales se utilizan para un alabeo
autom´atico, estabilizaci´on del cabeceo y la guin˜ada y la inclinaci´on asistida controlada.
Un tel´emetro de ul- trasonido proporciona con medidas de altitud la estabilizaci´on de altura
autom´atica y control de
velocidad vertical asistida. El AR.Drone 2.0 an˜ade 3 DOF a la IMU con un magnet´ometro
de 3 ejes. Tambi´en agrega un sensor de presi´on para permitir mediciones de altitud a
cualquier altura [3].
La principal diferencia entre AR.Drones 1.0 y 2.0 se encuentra en sus c´amaras. AR.Drone 2.0
uti- liza una camara HD (720p - 30fps) frontal que se puede configurar para transmitir tanto im
´agenes de 360p (640 * 360) y 720p (1280 * 720), mientras que el AR.Drone 1.0 usa una
VGA (640 * 480), que s´olo puede transmitir im´agenes QVGA (320 * 240)s. La c´amara
inferior del AR.Drone 2,0 es QVGA (320 * 240) 60fps y la del AR.Drone 1.0 utiliza una c´amara
QCIF (176 * 144) 60fps. AR.Drone 2.0 tambi´en cuenta con un puerto USB, que se utiliza
para guardar la grabaci´on del v´ıdeo [3].
El AR.Drone puede ser controlado desde cualquier dispositivo cliente con soporte WiFi. El Drone
crea una red WiFi propia. El dispositivo cliente se conecta a esta red. El control del AR.Drone se
realiza a trav´es de 3 canales principales de comunicaci´on [3].
El control y la configuraci´on del Drone se realiza mediante el env´ıo Comandos AT en el
puerto UDP 5556. La latencia de transmisi´on de los comandos de control es fundamental
para la expe- riencia del usuario. Estos comandos deben enviarse de forma peri´odica
(generalmente 30 veces por segundo). Los comandos AT son cadenas de texto codificados como
caracteres ASCII de 8 bits y son generados por las librer´ıas del AR.Drone [3].
La informaci´on sobre el Drone (su estado interno como la posici´on, velocidad, la velocidad
de rotaci´on del motor, etc.), llamado NAVDATA, se env´ıan desde el Drone a su cliente en
el puerto UDP 5554. Son enviados aproximadamente 15 veces por segundo en el modo de
demostraci´on, y 200 veces por segundo en el modo completo (depuraci´on) [3].

El flujo de datos del video es enviado por el AR.Drone al cliente en puerto 5555 (UDP para
AR.Drone 1.0, TCP para AR.Drone 2.0) .Las im´agenes del AR.Drone 1.0 se decodifican por
UVLC (MJPEG - similares) o P264 (H.264 similares) mientras que las im´agenes de un
AR.Drone 2.0 se decodifican por H264 (MPEG4.10 AVC) . Un cuarto canal de comunicaci
´on, llamado puerto de
Instituto Polit´ecnico
1.3 APLICACIONES DE LOS DRONES EN LA INDUSTRIA Nacional La T´ecnica al Servicio
de la Patria

control, puede ser establecido en el puerto TCP 5559 para transferir datos cr´ıticos, por oposici
´on de otros datos que se pueden perder sin efectos peligrosos. Se utiliza para recuperar los
datos de configuraci´on, y para reconocer informaci´on importante, como el env´ıo de informaci
´on de configu- raci´on [3].
El Drone cuenta con un programa ubicado en /bin/program.eif que se comporta como servidor,
al que se conecta el dispositivo con la aplicaci´on de manejo del AR.Drone. Este programa es
el que contiene los controladores PID y el que se encarga de procesar la informaci´on de la tarjeta
de nave- gaci´on y utilizarla para los controladores y enviarla al dispositivo a trav´es de la conexi
´on WiFi. La aplicaci´on en el dispositivo, es el lado cliente y no realiza ningu´n procesamiento en
cuanto al vuelo del Drone, simplemente muestra la informaci´on obtenida desde el Drone y env´ıa
instrucciones que el controlador interpreta como a´ngulos o altitudes deseadas.

1.3. APLICACIONES DE LOS DRONES EN LA INDUSTRIA

1.3.1. APLICACIONES MILITARES

Los Drones se caracterizan por ser UAV, el cual permite en versiones militares que se
incorpore la capacidad de disparo de proyectiles. As´ı mismo, se an˜aden otras posibilidades de
reconocimiento y patrulla virtual, captura de im´agenes y funciones de espionaje.

Las aplicaciones de los sistemas UAV se han ampliado en acciones militares, de vigilancia y segui-
miento de posiciones enemigas, creando enlaces de comunicaci´on entre estaciones terrestres
para el intercambio de informaci´on. Sus principales aplicaciones militares pueden dividirse en tres
cate- gor´ıas:
• Patrullaje y reconocimiento.
• Apoyo al combate.
• Combate.

23
1.3.2. APLICACIONES CIVILES

En comparaci´on con los UAV de aplicaci´on militar, los de uso civil no han tenido el mismo
desa- rrollo. Sin embargo, poseen un gran potencial, debido a su versatilidad y flexibilidad de
operaci´on. Existe un amplio nu´mero de aplicaciones civiles, especialmente en misiones con
caracter´ısticas pe- ligrosas o rutinarias. Al igual que en las aplicaciones militares, los ejemplos de
aplicaciones civiles se pueden clasificar en diferentes categor´ıas:

Investigaci´on cient´ıfica:
• Estudio de la atm´osfera, la tierra y oc´eano.
• Estudio del agua.
• Cartograf´ıa.

Apoyo a desastres:
• Detecci´on de incendios.
• Tormentas y tornados.
• Bu´squeda y rescate en situaci´on de desastre.

Vigilancia civil:
• Supervisi´on mar´ıtima
• Vigilancia urbana

1.3.3. APLICACIONES DE ENTRETENIMIENTO

AR.FreeFlight
Esta aplicaci´on proporciona la funci´on de pilotaje para AR.Drones y la capacidad de grabar v
´ıdeo y tomar fotos. Fue lanzado por primera vez en 2010 junto con el Drone original, y
proporcionaba
compatibilidad de pilotaje a trav´es de dispositivos iOS. Ahora tambi´en est´a disponible en la
tienda Play Google para Android. Se permite a los pilotos grabar v´ıdeo o capturar im
´agenes desde las c´amaras del Drone. Cuando los pilotos lanzados originalmente pod´ıan
controlar sus drones por la inclinaci´on, su dispositivo y los datos del aceler´ometro a bordo se
convirtieron en los controles de vuelo. Esto ya no est´a disponible para los usuarios de iOS. Los
controles de la pantalla proporcio- nan m´as movimiento en el control de mando, y otras
funciones que permiten a los pilotos realizar acrobacias a´ereas, jugar y actualizar el firmware
de su Drone. La aplicaci´on tambi´en se integra con AR.Drone Academia, donde los pilotos
pueden asignar y compartir detalles de vuelo con otros usuarios AR.Drone [3].

AR.Race 2
AR.Race es una aplicaci´on de juegos para pilotaje y multijugador del AR.Drone 2.0. Los
pilotos pueden definir un campo de carreras con una l´ınea de salida y meta mediante el uso de un
blanco especial incluido con el Drone. El Drone ser´a detectado cuando se cruza esta l´ınea y
registra el tiempo de vuelo entre estos 2 puntos. La aplicaci´on tambi´en se integra con
Academy AR.Drone. AR.Race 2 (as´ı como AR.Race ) es solamente disponible para dispositivos
iOS [3].

AR.Rescue
Una aplicaci´on de realidad aumentada de un solo jugador para dispositivos iOS. Se utiliza el
ob- jetivo proporcionado con el AR.Drone 2.0 para crear un entorno 3D en el que los pilotos
deben realizar tareas dadas. El objetivo del juego es construir un cohete de piezas que se
colocan en el medio f´ısico por el software del Drone. Junto con las partes, los enemigos se generan y
deben ser combatidos para completar el objetivo. El Drone registra el tiempo que se necesita para
completar esta tarea, y esto se registra en AR.Drone Academy, donde se genera una tabla de
clasificaci´on mundial , los v´ıdeos y las im´agenes pueden ser compartidos entre la comunidad
[3].
Instituto Polit´ecnico
1.4 APLICACIONES ANDROID PARA CONTROL DE DISPOSITIVOS WI-FI Nacional La T´ecnica al Servicio
de la Patria

AR.Drone Academy
Esta aplicaci´on se utiliza en conjunto con otras aplicaciones. Se realiza un seguimiento
automatico de datos de vuelo como velocidad, la altitud y la duraci´on. Proporciona un mapa con
la ubicaci´on de otros usuarios AR.Drone, y sus datos de vuelo. Tambi´en permite a sus
usuarios compartir los datos de vuelo y las im´agenes en diversas redes sociales [3].

1.4. APLICACIONES ANDROID PARA CONTROL DE DISPOSI-


TIVOS WI-FI

En los u´ltimos an˜os ha incrementado la utilizaci´on de medios tecnol´ogicos como


forma de co- municaci´on, promoci´on, comercializaci´on y distribuci´on. Los tel´efonos m´oviles
se han transformado en dispositivos multimedia que permiten no s´olo comunicarse, sino tambi
´en obtener informaci´on, entretenimiento y realizar transacciones a trav´es de ellos.
Basado en los avances tecnol´ogicos en comunicaciones m´oviles que actualmente permite la
utiliza- ci´on de aplicaciones, realizamos el disen˜o de una aplicaci´on que permita el control de
un Drone.

1.4.1. ENTORNO DE DESARROLLO ANDROID

Android es un sistema operativo disen˜ado en un principio para dispositivos m´oviles. Es


una plataforma de c´odigo abierto, es decir, que cualquier desarrollador puede crear y
desarrollar apli- caciones escritas con lenguaje C u otros lenguajes y compilarlas a c´odigo
nativo de ARM (por sus siglas en ingl´es Advanced RISC Machine- Conjunto de Instrucciones
Reducidas Avanzadas de M´aquina).
• Es capaz de controlar diferentes elementos hardware del dispositivo: Bluetooth,Wi-Fi,
C´amara, GPS, aceler´ometro, Infrarrojos, etc.
• Desarrollo de aplicaciones reutilizables y portables entre diferentes dispositivos.
• Soporta un elevado nu´mero de formatos multimedia.
• Servicio de GSM (por sus siglas en ingl´es Global System for Mobile communications-
26
Sistema Global para comunicaciones M´oviles).

Dentro de las principales ventajas del desarrollo de aplicaciones en dispositivos m´oviles


basados en Android son las siguientes:

•Amplia compatibilidad. Es decir se pueden instalar en la mayor´ıa de dispositivos m


´oviles (tel´efonos celulares, tablets), lo que permite que los principales fabricantes y
operadores consideren este sistema operativo en sus equipos.
•Sistema abierto al programador. Android tiene un sistema completamente libre para que
un desarrollador pueda modificar e incluso mejorar alguna aplicaci´on.
• Librer´ıas y componentes reutilizables para todo tipo de aplicaciones.
•Sistema operativo multitarea. Es un sistema capaz de gestionar varias aplicaciones
abier- tas simult´aneamente.

1.4.2. APLICACIONES DE SEGURIDAD EN ANDROID

En la actualidad existe un gran nu´mero de aplicaciones m´oviles que se dedican al


control de dispositivos de seguridad principalmente c´amaras IP o control de dispositivos
UAV, utilizando tecnolog´ıa Wi-Fi.
Las aplicaciones para sistemas de seguridad disponibles son: TinyCam Monitor, Blue Iris, Motion
Detector Pro, FoscamSurveillance,etc.
En la tabla 2 se muestran las principales especificaciones de algunas aplicaciones para c´amaras
de video disponibles en Google Play:
Instituto Polit´ecnico
1.5 TIPOS DE UAV Nacional La T´ecnica al Servicio
de la Patria

Tabla 2: Propiedades de algunas aplicaciones de seguridad.


Versi´on Format Protocolos
o
Aplicacio´n Valoraci´on Taman˜ Prec
General o io
Android Video Usados
TinyCam 2.3 MP4 HTTP,F 4. 9.3Mb $59.
TP 5 95
Depende
Ip WebM,MOV
del N/E 4. Depende $51.
5 99
WebCam o
dispositi MPEG4
vo
Motion
Detector 2.2+ N/E N/E 3. 766Kb Gra
9 tis
Pro
Blue Iris 2.3+ N/E N/E 4 902Kb $42.
97
Fosca
m N/E N/E 1. 2Mb $65
2.2+ 00
Pro
AR.FreeFlight 2.2+ MP4,H N/E 4. 47.9Mb Gra
D 0 tis

N/E – No Especificado
Estas aplicaciones tienen como limitante que el control de dichos sistemas Wi-Fi se realiza en una
red LAN (por sus siglas en ingl´es Local Area Network- Red de A´ rea Local) es decir que
tanto el dispositivo m´ovil como el dispositivo de seguridad controlado no est´en separados por
una distancia mayor a 200m, siendo esta la principal desventaja frente al desarrollo de la
aplicaci´on de nuestro proyecto.

1.5. TIPOS DE UAV

28
Instituto Polit´ecnico
1.5 TIPOS DE UAV Nacional La T´ecnica al Servicio
de la Patria
En la actualidad, gracias al desarrollo que se ha presentado en el disen˜o y las
aplicaciones de los veh´ıculos a´ereos no tripulados, existe una gran diversidad de modelos que
pueden encontrarse en el mercado, dichos modelos var´ıan de acuerdo a las necesidades que cada
uno, cumple.

29
La principal clasificaci´on de los veh´ıculos a´ereos no tripulados que encontramos en el mercado es
dependiendo del tipo de tecnolog´ıa con la que son controlados:

Los modelos UAV disponibles son:

• UAV con un soporte para colocarle una c´amara IP (por sus siglas en ingl´es
Internet Protocol-Protocolo de Internet) o que incluya una c´amara propia.
•UAV controlado con tecnolog´ıa Wi-Fi para que pueda transmitir el video en tiempo real
de manera remota.
•UAV con un peso especificado por la Secretar´ıa de Comunicaciones y Transporte (SCT)
y que no requiera de un permiso especial para realizar las pruebas necesarias dentro
de las instalaciones del instituto. Esto es, cumplir con los siguientes requerimientos:

o Los Drones no deben volar en ´areas clasificadas como prohibidas, restringidas


o peligrosas, y deben estar a 9.2 kil´ometros de los aeropuertos, as´ı como a
3.7 kil´o- metros de los aer´odromos no controlados, y a 900 metros de los
helipuertos.
o Aquellos que pesen menos de 2 kilogramos y se usen s´olo para fines
recreativos, no requieren la autorizaci´on de la Direcci´on general adjunta de
Transporte y Con- trol aeron´autico, pero los que superan este peso y se utilizan
con fines comerciales, s´ı necesitan el permiso de esa dependencia.

• UAV de bajo costo.

Los modelos que cumplen con las caracter´ısticas mencionadas anteriormente:


• Walkera QRY100
• A.R.Drone 2.0 Elite Edition
• Bebop Drone
En la figura 2 se muestran los modelos seleccionados.

Figura 2: Figura demostrativa de los modelos de UAV considerados.

En la tabla 3 se muestra la comparaci´on de las caracter´ısticas principales de los modelos


men- cionados.
Tabla 3: Caracter´ısticas de algunos modelos de UAV considerados.
Tecnolog Aplicaciones
´ıa Altura de Vuelo Precio
Modelo Dimensiones Extras
de Control
Con
c´amara
y
compatible
Walkera 22,2x25,2x9cm Wi-Fi a 110 metros $3000(Agotado)
con
QRY100 350gr 2.4GHz
tabletas
IOS,
Android C
´amara
frontal y
verti-
cal,GPS,
A.R.Drone 45x29 cm, Wi-Fi a compatible
250 metros $5600
2.0 366gr 2.4GHz con
tabletas
IOS,
Android y
Windows
C´amara
HD,GPS,cmpatible
Wi-Fi con
Bebop 28x32x3, con
bandas 2.4 250 metros $8600
Drone 400gr tabletas
y 5 GHz
IOS,
Android
Tomando en cuenta las caracter´ısticas b´asicas anteriores, se seleccion´o el UAV A.R. Drone
2.0 Elite Edition, considerando que tiene ventajas sobre el Drone Bebop, debido a que es m
´as econ´omico y cuenta con dos c´amaras lo que incrementa la captura de im´agenes y video
requeridos para el sistema de seguridad que se desea implementar, as´ı como la compatibilidad con
Windows, aumenta la versatilidad de nuestro proyecto, al tener una plataforma m´as de
desarrollo.
Instituto Polit´ecnico
2 APLICACIO´ N Nacional La T´ecnica al Servicio
ANDROID de la Patria

´
CAP ITULO

2. APLICACIO´ N ANDROID

34
Instituto Polit´ecnico
2.1 INTRODUCCIO Nacional La T´ecnica al Servicio
´N de la Patria

2.1. INTRODUCCIO´ N

La aplicaci´on desarrollada en plataforma Android consiste en hacer que el Drone realice


sus funciones b´asicas controladas mediante un dispositivo m´ovil ubicado en diferente ´area
geogr´afica. En otras palabras, lograremos el control del dispositivo a trav´es de un enlace de tres
aplicaciones:
• La aplicaci´on del dispositivo m´ovil remoto.
• La aplicacion para pc que tendr´a la funci´on de interfaz y servidor entre el
dispositivo m´ovil y el JDK (por sus siglas en ingl´es Java Development Kit- Kit de
desarrollo Java).
• La aplicaci´on del Drone proporcionada por el JDK.

La comunicaci´on de las aplicaciones se muestra en la figura 3, figura 4 y figura 5.

Figura 3: Diagrama de flujo de la aplicaci´on cliente


35
Figura 4: Diagrama de flujo de la aplicaci´on servidor
Figura 5: Diagrama de flujo de la aplicaci´on del Drone
Instituto Polit´ecnico
2.2 Kit de Desarrollo de Software-SDK Nacional La T´ecnica al Servicio
de la Patria

Hay que tener en cuenta que cualquier proyecto personal que pueda realizarse con el SDK
requiere de la gesti´on de hilos para poder enlazar la aplicaci´on desarrollada. Dicha gesti´on est´a
dada por los niveles que se comunican con el control del motor de AR.Drone, como lo muestra la
figura 6.

Figura 6: Arquitectura AR.Drone

Con el conocimiento del SDK y el modo en el que opera refiri´endonos al diagrama a bloques,
se muestran a continuaci´on el desarrollo de las aplicaciones cliente-servidor que permiten el
control del Drone a trav´es de la SDK.

2.2. Kit de Desarrollo de Software-SDK

El Kit de Desarrollo de Software del AR.Drone permite a los desarrolladores realizar aplicacio-
nes y proporciona los APIs (por sus siglas en ingl´es Application Programming Interface-
Interfaz de Programaci´on de Aplicaciones) necesarios para compilar los programas.

38
Instituto Polit´ecnico
2.3 PUNTO DE COMUNICACIO´ N Nacional La T´ecnica al Servicio
SOCKET de la Patria

Estructura principal
El SDK comprende varias carpetas, sin embargo, nos centramos en las que se encuentran los co-
mandos de control y configuraci´on del Drone:
• ARDroneLib: Contiene el API para configurar el AR.Drone
• Examples: Contiene ejemplos compilados.

La carpeta ARDrone Lib, queda estructurada de la siguiente forma:


• FFMPEG: Librer´ıa de codigo abierto que permite grabar, convertir y procesar audio
y video, en otras palabras es la encargada de procesar el video del AR.Drone.
• Soft: Contiene el c´odigo espec´ıfico del Drone
• VP SDK: Librer´ıas de prop´osito general.
Dentro de las carpetas mencionadas podemos encontrar los ficheros principales:
• Ardrone tool: Inicializa comunicaci´on con el Drone.
• AT: Contiene las funciones para controlar el Drone a trav´es de AT Commands.
• Navdata: Recibe y decodifica los datos de informaci´on del estado del Drone.

2.3. PUNTO DE COMUNICACIO´ N SOCKET

Un socket es un punto de comunicaci´on por el cual un proceso puede emitir o recibir informaci
´on. Los sockets son capaces de utilizar el protocolo TCP y UDP. Utilizan una serie de
instrucciones espec´ıficas para establecer el punto de comunicaci´on, conect´andose a una
maquina remota en un puerto asignado que est´e disponible.

2.4. APLICACIO´ N CLIENTE

La aplicaci´on cliente que hemos hecho para Android se conecta mediante un socket
usando el protocolo TCP a una aplicaci´on servidor. La aplicacion permite enviar datos al
servidor y desde este se puede dar uso de los datos.

39
Instituto Polit´ecnico
2.4 APLICACIO´ N Nacional La T´ecnica al Servicio
CLIENTE de la Patria

El diagrama de la comunicaci´on entre el cliente y un servidor es mostrado en la figura 7.

Figura 7: Diragrama de conexi´on entre el cliente y el servidor

Establecemos la conexi´on, el servidor espera a que el cliente se conecte, una vez conectados,
se hace una petici´on, obtiene una respuesta y la comunicaci´on se mantiene hasta que la sesion
cierra. En nuestro caso el cliente ser´a una app Android que se conectar´a a internet (ya sea
con WiFi o conexi´on de datos m´oviles), estableciendo la conexi´on con una computadora con
conexi´on a inter- net donde correr´a la aplicaci´on servidor, como se ilustra en la figura 8.

40
Figura 8: Diagrama de la conexi´on entre cliente y servido a trav´es de internet.

2.4.1. CO´ DIGO DEL CLIENTE-INTERFAZ GRA´ FICA

Desarrollamos una interfaz gr´afica que permite al usurio un ambiente visual para tener el
con- trol del Drone. La interfaz cuenta con 12 botones distribuidos de la siguiente manera:

• Bot´on Conectar: Permite establecer la comunicaci´on con la aplicaci´on servidor.


• Bot´on Enviar: Permite el env´ıo de mensajes de texto.
• 8 Botones de comando utilizados para el movimiento del Drone en diferentes direcciones.
•Bot´on CV/CH: Utilizado para seleccionar la c´amara del Drone con la que se desea
rea- lizar la grabaci´on del video.
• Bot´on Desconectar: Permite cerrar la comunicaci´on con la aplicaci´on servidor.

A continuaci´on se describe el c´odigo para generar la interfaz.


1

2 <Linear Layout xmlns : android=” htt p : // schemas . android . com/ apk/ r e s / android ”
3 // Se genera l a ventana p r i n c i p a l de l a a p l i ca c io n nombrada por java como
4 lay out principal .
5

6 android : id=”@+i d / g r a lay o ut ”


7 android : la y out width=” f i l l p a r e n t ”
8 android : la yo u t h e ig h t=” f i l l p a r e n t ”
9 android : l a y o u t g r a v i t y=” c e n t e r h o r i z o n t a l ”
10 android : background=”#660033 ”
11 android : g ra vity=” c e n te r | c e n t e r h o r i z o n t a l | c e n t e r v e r t i c a l | c l i p h o r i z o n t a l |
fill vertical”
12 android : o r i e n t a t i o n=” v e r t i c a l ” >
13

14 // Se crea un l ay ou t se c undari o en donde se c oloc a e l l ogo de l p o l i t e c n i c o y e l


nombre de l a a p l i c a c i o n , a s i como e l nombre de l a e s c u e l a .
15 <Linear Layout
16

17 android : lay out width=” match parent ”


18 android : la yo u t h e ig h t=” wrap content ”
19 android : background Tint=”#CCCCCC”
20 android : g ra vity=” c e n te r ”
21 android : o r i e n t a t i o n=” v e r t i c a l ” >
22 // Cuadro de t e x t o que muestra e l nombre de l a e sc u e l a
23 <TextView
24 android : id=”@+i d / textView 2 ”
25 android : la y out width=” match parent ”
26 android : la yo u t h e ig h t=” match parent ”
27 android : background=”#CCCCCC”
28 android : background Tint=”#CCCCCC”
29 android : g ra vity=” c e n t e r h o r i z o n t a l ”
30 android : te xt=”ESIME ZACATENCO”
31 android : text Appearance=”? android : a t t r / textAppearanceMedium”
32 android : te xt Co lo r=”#004400 ” />
33 </LinearLayout>
34

35 <Linear Layout
36

37 android : la yo u t h e ig h t=” 96 dp” >


38

39 <ImageView
40 android : id=”@+i d / imageView1 ”
41 android : lay out width=” 70 dp”
42 android : la yo u t h e ig h t=” match parent ”
43 android : l a y o u t g r a v i t y=” c e n te r | c e n t e r h o r i z o n t a l ”
44 android : lay o ut w e ight=” 0 . 0 3 ”
45 android : s r c=”@drawable/ i c l a u n c h e r ” />
46 // Cuadro de t e x t o que muestra e l nombre de l a a p l i ca c io n ARDrone−IPN
47 <TextView
48 android : id=”@+i d / textView 1 ”
49 android : lay out width=” wrap content ”
50 android : la yo u t h e ig h t=” match parent ”
51 android : lay o ut w e ight=” 0 . 0 6 ”
52 android : g ra vity=” c e n te r ”
53 android : te xt=”ARDrone−IPN”
54 android : te xt Co lo r=”#FFFFFF”
55 android : t e xt S iz e=” 18 sp ” />
56 </LinearLayout>
57

58 // Se crea un l a y ou t se cu n da r io en donde se c oloc an dos cuadros de t e x t o


h o r i z o n t a l e s , uno en donde se i n g r e s a l a d i r e c c i o n IP y e l otro e l puerto de
comunicacion .
59 <Linear Layout
60 android : id=”@+i d / ip la yo u t ”
61 android : l ay out width=” f i l l p a r e n t ”
62 android : la yo u t h e ig h t=” wrap content ”
63 android : background=”#CCCCCC”
64 android : background Tint=”#CCCCCC”
65 android : o r i e n t a t i o n=” h o r i z o n t a l ” >
66

67 <TextView
68 android : id=”@+i d / t xt ip ”
69 android : lay out width=” wrap content ”
70 android : la yo u t h e ig h t=” wrap content ”
71 android : background Tint=”#CCCCCC”
72 android : te xt=” IP : ”
73 android : te xt Co lo r=”#000000 ”
74 android : t e xt S iz e=” 15 pt” />
75

76 <EditText
77 android : id=”@+i d / i p i np u t ”
78 android : lay out width=” f i l l p a r e n t ”
79 android : la yo u t h e ig h t=” wrap content ” />
80 </LinearLayout>
81

82 <Linear Layout
83 android : id=”@+i d / po r t la yo ut ”
84 android : l ay out width=” f i l l p a r e n t ”
85 android : la yo u t h e ig h t=” wrap content ”
86 android : background=”#CCCCCC”
87 android : o r i e n t a t i o n=” h o r i z o n t a l ” >
88

89 <TextView
90 android : id=”@+i d / tx tp o rt ”
91 android : lay out width=” wrap content ”
92 android : la yo u t h e ig h t=” wrap content ”
93 android : te xt=” Puerto : ”
94 android : te xt Co lo r=”#000000 ”
95 android : t e xt S iz e=” 15 pt” />
96

97 <EditText
98 android : id=”@+i d / p o rti n pu t ”
99 android : lay out width=” f i l l p a r e n t ”
100 android : la yo u t h e ig h t=” wrap content ” />
101 </LinearLayout>
102

103 // Se crea un l a y o ut se c undario en donde se colocan un boton que t i e ne un mensaje


de conectar , a s como una animacion de LED’ s que cambia de co l o r roj o a verde
segun sea e l es tado de conexion ; es decir , se o b s e rv ar a un LED r ojo cuando no
haya conexion y un LED verde cuando l a conexion sea e x i t o s a .
104

105 <Linear Layout


106 android : id=”@+i d / conn eytlay ”
107 android : l ay out width=” f i l l p a r e n t ”
108 android : la yo u t h e ig h t=” 50 dp”
109 android : background=”#4E514F”
110 android : o r i e n t a t i o n=” h o r i z o n t a l ” >
111

112 <Button
113 android : id=”@+i d / btcnt ”
114 android : la y out width=” wrap content ”
115 android : la yo u t h e ig h t=” f i l l p a r e n t ”
116 android : g ra vity=” c e n t e r v e r t i c a l ”
117 android : te xt=” Conectar ” />
118

119 // Se crea un cuadro de t e x t o que muestra un mensaje de En espe ra cuando se


p re si on a e l boton de c one c tar y un mensaje de Conexion Ok cuando l a
comunicacion con e l s e rv id o r se r e a l i z a e x it o sa m e n t e .
120 <TextView
121 android : id=”@+i d / t xt s t a t u s ”
122 android : lay out width=” wrap content ”
123 android : la yo u t h e ig h t=” wrap content ”
124 android : g ra vity=” c e n te r ”
125 android : te xt=” . . En esper a ..”
126 android : te xt Co lo r=”#FFFFFF”
127 android : t e xt S iz e=” 14 pt” />
128 // Animacion de LED’ s .
129 <ImageView
130 android : id=”@+i d / l e d s ”
131 android : lay out width=” f i l l p a r e n t ”
132 android : la yo u t h e ig h t=” wrap content ”
133 android : g ra vity=” f i l l ”
134 android : s r c=”@drawable/ o f f ” >
135 </ImageView>
136 </LinearLayout>
137

138 <Linear Layout


139

140 // Se crea otro l ay o u t s ecundar io que co n ti en e un cuadro de t e x t o que d ice Enviar


mensaje : , otro cuadro de t e x t o que por d e f a u l t t i e ne un mensaje de Hola , en
donde se puede i n g r e s a r c ua l q u i e r otro mensaje y un boton que d ice Enviar .
141 android : id=”@+i d / l a yo u t t xt ”
142 android : l ay out width=” f i l l p a r e n t ”
143 android : la yo u t h e ig h t=” wrap content ”
144 android : background=”#660033 ”
145 android : o r i e n t a t i o n=” v e r t i c a l ” >
146

147 <TextView
148 android : id=”@+i d / t x t l b l ”
149 android : lay out width=” f i l l p a r e n t ”
150 android : la yo u t h e ig h t=” wrap content ”
151 android : te xt=” Enviar mensaje : ”
152 android : te xt Co lo r=”#FFFFFF”
153 android : t e xt S iz e=” 12 dp” />
154

155 <Linear Layout


156 android : id=”@+i d / txtbox ”
157 android : lay out width=” f i l l p a r e n t ”
158 android : la yo u t h e ig h t=” 41 dp”
159 android : background=”#660033 ”
160 android : o r i e n t a t i o n=” h o r i z o n t a l ” >
161

162 <EditText
163 android : id=”@+i d / in p u t txt ”
164 android : lay out width=” 228 dp”
165 android : la yo u t h e ig h t=” 32 dp”
166 android : te xt=” Hola”
167 android : t e xt Si z e=” 12 dp” />
168

169 <Button
170 android : id=”@+i d / sndtxt ”
171 android : lay out width=”0dp”
172 android : la yo u t h e ig h t=” wrap content ”
173 android : layout margin Bott om=”8dp”
174 android : layo ut w e ight=”1 ”
175 android : te xt=” Enviar ” />
176 </LinearLayout>
177 </LinearLayout>
178 // Se crea 2 l a yo u t s s e c u n d a r i o s que c onti e ne n 9 botones con l o s que se tendra el
co ntr o l d e l Drone .
179 <Linear Layout
180 android : id=”@+i d / bts ”
181 android : l ay out width=” f i l l p a r e n t ”
182 android : la yo u t h e ig h t=” wrap content ”
183 android : o r i e n t a t i o n=” h o r i z o n t a l ” >
184

185 // Boton 1 con l a leyenda Take Off que e l eva a l Drone 1 metro d e l s u el o .
186 <Button
187 android : id=”@+i d / bt1 ”
188 android : la y out width=” wrap content ”
189 android : la yo u t h e ig h t=” f i l l p a r e n t ”
190 android : te xt=”Take Off ” />
191

192 // Boton 2 con l a leye nda Forward que mueve a l Drone 1 metro hacia delante de l a
posicion anterior .
193 <Button
194 android : id=”@+i d / bt2 ”
195 android : la y out width=” wrap content ”
196 android : la yo u t h e ig h t=” f i l l p a r e n t ”
197 android : te xt=” Forward” />
198

199 // Boton 3 con l a leye nda Backward que mueve a l Drone 1 metro hacia a t ras de l a
posicion anterior .
200 <Button
201 android : id=”@+i d / bt3 ”
202 android : l ay out width=”0dp”
203 android : la yo u t h e ig h t=” f i l l p a r e n t ”
204 android : layo ut w e ight=”1 ”
205 android : te xt=”Backward” />
206

207 // Boton 4 con l a leyenda Landing que d e s c i e n d e a l Drone a l s ue l o .


208 <Button
209 android : id=”@+i d / bt4 ”
210 android : l ay out width=”0dp”
211 android : la yo u t h e ig h t=” f i l l p a r e n t ”
212 android : layo ut w e ight=”1 ”
21 androi te xt=” Landing” />
3
d:
21 </LinearLayout
4
>
21
5

217
<Linear Layout
android : lay out width=” match parent ”
218 android : la yo u t h e ig h t=” wrap content ”
219 android : o r i e n t a t i o n=” v e r t i c a l ” >
220

221 <Linear Layout


222 android : la y out width=” match parent ”
223 android : la yo u t h e ig h t=” wrap content ”
224 android : o r i e n t a t i o n=” v e r t i c a l ” >
225

226 <Linear Layout


227 android : l ay out width=” match parent ”
228 android : la yo u t h e ig h t=” wrap content ”
229 android : layo ut w e ight=” 2 . 49 ” >
230

231 // Boton 5 con l a leye nda Left que mueve a l Drone 1 metro a l a i z q u i e rd a de su
posicion o r i g i n a l .
232 <Button
233 android : id=”@+i d / butt on 1 ”
234 android : lay out width=” wrap content ”
235 android : la yo u t h e ig h t=” wrap content ”
236 android : layo ut w e ight=” 0 . 0 7 ”
237 android : te xt=” Le f t ” />
238

239 // Boton 6 con l a leye nda Right que mueve a l Drone 1 metro a l a derecha de su
posicion o r i g i n a l .
240 <Button
241 android : id=”@+i d / butt on 2 ”
242 android : lay out width=” wrap content ”
243 android : la yo u t h e ig h t=” wrap content ”
244 android : layo ut w e ight=” 0 . 1 3 ”
245 android : te xt=” Right” />
246

247 // Boton 7 con l a leyenda Up que e l eva a l Drone 1 metro de su p o s i c i o n original .


248 <Button
249 android : id=”@+i d / butt on 3 ”
250 android : lay out width=” wrap content ”
251 android : la yo u t h e ig h t=” wrap content ”
252 android : layo ut w e ight=” 0 . 0 9 ”
253 android : te xt=”Up” />
254

255 // Boton 8 con l a leye nda Down que d e s c i e n d e a l Drone 1 metro de su p o s i c i o n


original.
256 <Button
257 android : id=”@+i d / butt on 4 ”
258 android : lay out width=” wrap content ”
259 android : la yo u t h e ig h t=” wrap content ”
260 android : layo ut w e ight=” 0 . 0 9 ”
261 android : te xt=”Down” />
262

263 // Boton 7 con l a leyenda CV/CH s e l e c ci o na l a camara de l Drone ac ti v a da


264 <Button
265 android : id=”@+i d / butt on 5 ”
266 android : lay out width=” wrap content ”
267 android : la yo u t h e ig h t=” wrap content ”
268 android : te xt=”CV/CH” />
269 </LinearLayout>
270

271 </LinearLayout>
272

273 </LinearLayout>
274

275 <Linear Layout


276 android : lay out width=” match parent ”
277 android : la yo u t h e ig h t=” wrap content ”
278 android : o r i e n t a t i o n=” v e r t i c a l ” >
279

280 </LinearLayout>
281

282 // Se crea e l ulti mo l ay ou t se c undario que c on ti e n e un boton con l a leye nda de


Desconectar .
283 <Linear Layout
284 android : lay out width=” match parent ”
285 android : la yo u t h e ig h t=” wrap content ”
286 android : o r i e n t a t i o n=” v e r t i c a l ” >
287

288 <Button
289 android : id=”@+i d / b td i s c ”
290 android : lay out width=” f i l l p a r e n t ”
291 android : la yo u t h e ig h t=” wrap content ”
292 android : te xt=” Des conectar ” />
293

294 </LinearLayout>
295

296 </LinearLayout >

2.4.2. CO´ DIGO DEL CLIENTE-COMANDOS DE LA INTERFAZ GRA´ FICA

Para poder usar el socket realizado en la interfaz gr´afica usamos la clase “Socket”, adem
´as la direcci´on IP del server (direcci´on IP est´atica) y el puerto TCP que se emplea para la
comunicaci´on, se ha definido al puerto 5500 para la conexi´on como se muestra en el siguiente c
´odigo.
1 package t e s t . So c ke t te s t ;
2

3 /∗ Se importan l a s l i b r e r i a s c o r r e s p o n d i e n t e s que u t i l i z a Java para l a r e a l i z a c i


o n de un s o c k e t ∗/
4 import java . io . IOExcepti on ;
5 import java . io . ObjectInputStream ;
6 import java . io . ObjectOutputStream ;
7 import java . io . Stream Corrupted Excepti on ;
8 import java . net . Socket ;
9

10 import android . app . Ac t iv it y ;


11 import android . gra p h ic s . Color ;
12 import android . os . Bundle ;
13 import android . u t i l . Log ;
14 import android . view . View ;
15 import android . view . View . On Click List e n e r ;
16 import android . widget . Butt on ;
17 import android . widget . EditText ;
18 import android . widget . ImageView ;
19 import android . widget . TextView ;
20

21 // Se crea l a c l a s e So ck e t t e s t
22 public class So c ke t te s t extends Ac t iv it y {
23

24

25 // Dec lar acio n de v a r i a b l e s u t i l i z a d a s


26 private Butt on btconect , btdis co ne ct , btsndtxt , btnizq , btnder , bt1 , bt2 , bt3 , bt4 ,
bt5 , bt6 , bt7 , bt8 , bt9 ;
27

28 private TextView t xt s t a t u s ;
29 private EditText ipinp ut , p or ti np ut , in p u t txt ;
30 private ImageView l e d s ;
31 Socket mi Cl iente ;
32

33 // Prueba de conexion con l a a p l i ca c io n s e rv id o r


34 private boolean connected = fals e ;
35 ObjectOutputStream oos ;
36 ObjectInputStream ois ;
37 Mensaje data mdata ;
38

39 @Override
40 public void on Create ( Bundle s a ve d Ins ta nce Stat e ) {
41 super . on Create ( s ave d Ins tanc e State ) ;
42 setContentView (R. l ay out . main ) ;
43

44 // Se guarda l a animacion para l o s Leds y se d e c l ar an l a s v a r i a b l e s de entrada o


s a l i d a de t e x t o c o r r e s p o n d i e n t e s
45

46 l e d s = ( ImageView ) fi ndView ById (R. id . l e d s ) ;


47

48 i pi n p ut = ( EditText ) fi ndView ById (R. id . i pi np u t ) ;


49 p o rti n pu t = ( EditText ) fi ndView ById (R. id . p o r ti n p u t ) ;
50 in p u t txt = ( EditText ) fi ndView ById (R. id . in p u t txt ) ;
51

52 b tco n e ct = ( Butt on ) f indView ById (R. id . btcnt ) ;


53 b td i s c o n e c t = ( Butt on ) fi ndView ById (R. id . b td i s c ) ;
54 bt sn dt xt = ( Butt on ) fi ndView ById (R. id . sndtxt ) ;
55

56 bt1 = ( Butt on ) fi ndView ById (R. id . bt1 ) ;


57 bt2 = ( Butt on ) fi ndView ById (R. id . bt2 ) ;
58 bt3 = ( Butt on ) fi ndView ById (R. id . bt3 ) ;
59 bt4 = ( Butt on ) fi ndView ById (R. id . bt4 ) ;
60 bt5 = ( Butt on ) fi ndView ById (R. id . bt5 ) ;
61 bt6 = ( Butt on ) fi ndView ById (R. id . bt6 ) ;
62 bt7 = ( Butt on ) fi ndView ById (R. id . bt7 ) ;
63 bt8 = ( Butt on ) fi ndView ById (R. id . bt8 ) ;
64 bt9 = ( Butt on ) fi ndView ById (R. id . bt9 ) ;
65

66

67 t xt s t a t u s = ( TextView ) fi ndView ById (R. id . t xt s t a t u s ) ;


68 // Al p r e s i o n a r en co nec tar
69 b tco n e ct . s e t On C lic k Lis te ne r (new On Click Lis te ne r () {
70 @Override
71

72 public void on Click ( View v) {


73 //Nos conectamos y obtenemos e l e stado de l a conexion
74 boolean c o n e c t s ta tu s = Connect () ;
75

76 // Si nos pudimos co nectar apar ec er a e l mensaje de Conexion OK


77 i f ( c o n e c t s ta tu s ) { // mostramos mensaje
78 S e t t x t s t a t u s ( ” Conexion OK ” , 1 ) ;
79 Change leds ( true ) ; // camiamos img a verde
80

81 // Si no se r e a l i z a l a conexion aparecera e l mensaje de Error


82 } else { // e rr or a l c o n e c t ar s e
83 Change leds ( fa l se ) ; // camiamos img a ro jo
84 // mostramos msg de e rr o r
85 S e t t x t s t a t u s ( ” Error . . ” , 0 ) ;
86 }
87 }
88 }) ;
89

90 // Al pr e s i o n a r en d e s c o n e c ta r manda un mensaje de Desconexion e x i t o s a


91 b td i s c o n e c t . s e t On Clic k Lis te ne r (new On Click Lis te n e r () {
92 @Override
93 public void on Click ( View v) {
94 D isc onn ect
() ;
95 }
96 }) ;
97

98 bt sn dt xt . s e t On C lic k Lis te ne r (new On Click List e ne r () {


99 @Override
100 public void on Click ( View v) {
101 Snd txt Msg ( in p u t txt . getText () . to S t r i n g () ) ;
102 }
103 }) ;
104

105

106 // Botones de Accion


107 // Por cada boton se programa para que envie un comando a l s e rv id o r
108

109 bt1 . s e t On C lic k Lis te ne r (new On Click {


List e ne r ()
110 @Override
111 public void on Click ( View v) {
112 Snd Acti on ( 1 ) ;
113 }
114 }) ;
115

116 bt2 . s e t On C lic k Lis te ne r (new On Click {


List e ne r ()
117 @Override
118 public void on Click ( View v) {
119 Snd Acti on ( 2 ) ;
120 }
121 }) ;
122

123 bt3 . s e t On C lic k Lis te ne r (new On Click {


List e ne r ()
124 @Override
125 public void on Click ( View v) {
126 Snd Acti on ( 3 ) ;
127 }
128 }) ;
129

130 bt4 . s e t On C lick Lis te ne r (new On Click List e ne r () {


131 @Override
132 public void on Click ( View v) {
133 Snd Acti on ( 4 ) ;
134 }
135

136 bt5 . s e t On C lick Lis te ne r (new On Click List e ne r () {


137 @Override
138 public void on Click ( View v) {
139 Snd Acti on ( 5 ) ;
140 }
141 }) ;
142

143 bt6 . s e t On C lick Lis te ne r (new On Click List e ne r () {


144 @Override
145 public void on Click ( View v) {
146 Snd Acti on ( 6 ) ;
147 }
148 }) ;
149

150 bt7 . s e t On C lick Lis te ne r (new On Click List e ne r () {


151 @Override
152 public void on Click ( View v) {
153 Snd Acti on ( 7 ) ;
154 }
155 }) ;
156

157 bt8 . s e t On C lick Lis te ne r (new On Click List e ne r () {


158 @Override
159 public void on Clic k ( View v)
{
160 Snd Acti on ( 8 ) ;
161 }
162

163 bt9 . s e t On C lick Lis te ne r (new On Click List e ne r () {


164 @Override
165 public void on Click ( View v)
{
166 Snd Acti on ( 9 ) ;
167 }
168 }
)
;
169 /∗ ∗∗∗∗ ∗∗∗∗∗∗ ∗/
170 }
171 // cambia e l imageview segun estad o de
conexion
172 public void Change leds ( boolean s ta tu s ) {
173 i f ( s ta tu s )
174 l e d s . set Image Resource (R. drawable . on ) ;
175 else
176 l e d s . set Image Resource (R. drawable . o f f ) ;
177 }
178

179 /∗ Cambiamos t e x t o de t x t s t a t u s seg un parametro f l a g s t a t u s


180 ∗ f l a g s t a t u s 0 e r r o r , 1 ok ∗/
181 public void S e t t x t s t a t u s ( S t rin g txt , int flag status) {
182 // ca mbie l c o l o r
183 i f ( f l a g s t a t u s == 0 ) {
184 t xt s t a t u s . set Text Color ( Color .RED) ;
185 } else {
186 t xt s t xt
a tColor ( Color
u s . set Te .GREEN) ;
187 }
188 t xt s t a t u s . set Text ( txt ) ;
189 }
190

191 // Conectamos
192 public boolean Connect () {
193 // Obtengo datos ingresados en campos
194 S t rin g IP = ip in p u t . getText () . to St ri n g () ;
195 int PORT = In te g e r . value Of ( p o rti n pu t . getText () . to S t r i n g
() ) ;
196

197 try { // creamos so ck e t s con l o s va l o re s a nt e r


io re s
198 mi Cliente = new Socket ( IP , PORT) ;
199 // s i nos conectamos
200 i f ( mi Cliente . is Co nnec te d () == true ) {
201 return true ;
202 } else {
203 return f al s e ;
204 }
205 } catch ( Excepti on e ) {
206 // Si hubo algun er ro r mostrmos e rr o r
207 t xt s t a t u s . set Text Color ( Color .RED) ;
208 t xt s t a t u s . set Text ( ” ! ! ! ERROR ! ! ! ”
);
209 Log . e ( ” Error connect () ” , ”” + e ) ;
210 return fals e ;
211 }
212 }
213

214 // Metodo de de sc one xion


215 public void Disconn ec t () {
216 try {
217 // Prepramos mensaje de des co ne xio n
218 Mensaje data msgact = new Mensaje data () ;
219 msgact . te xto = ”” ;
220 msgact . Acti on = −1;
221 msgact . las t ms g = true ;
222 // avisamos a l s e r v e r que c i e r r e e l canal
223 boolean va l a c c = Snd Msg ( msgact ) ;
224

225 i f ( ! va l a c c ) { // hubo un er ror


226 S e t t x t s t a t u s ( ” Error ” , 0 ) ;
227 Change leds ( f als e ) ;
228 Log . e ( ” Disconnect () −> ” , ” !ERROR! ” ) ;
229

230 } els e { // ok nos desconectamos


231 S e t t x t s t a t u s ( ” Desconectado ” , 0
);
232 // camibmos l ed a r ojo
233 Change leds ( f al s e ) ;
234 Log . e ( ” Di sc onne ct () −> ” , ” ! ok ! ”
);
235 // cerramos s o c k e t
236 mi C liente . c l o s e () ;
237 }
238 } catch ( IOExcepti on e ) {
239 // TODO Auto−generated catch b l ock
240 e . print Stack Trace () ;
241 }
242

243 i f ( ! mi Cl iente . is C onnected () )


244 Change leds ( f als e ) ;
245 }
246

247 // Enviamos mensaje de accion segun el boton q presionamos


248 public void Snd Acti on ( int bt ) {
249 Mensaje data msgact = new Mensaje data () ;
250 //no hay t e x t o
251 msgact . te xto = ”” ;
252 // se te o en e l v al o r ac ti o n e l numero de accion
253 msgact . Acti on = bt ;
254 //no es e l ulti mo msg
255 msgact . las t ms g = f a ls e ;
256 //mando msg
257 boolean va l a c c = Snd Msg ( msgact ) ;
258 // er ror a l en v iar
259 i f ( ! va l a c c ) {
260 S e t t x t s t a t u s ( ” Error ” , 0 ) ;
261 Change leds ( f al s e ) ;
262 Log . e ( ” Snd Acti on () −> ” , ” !ERROR! ” ) ;
263

264 }
265

266 if ( ! mi C liente . is C onnected () )


267 Change leds ( f al s e ) ;
268 }
269

270 // Envio mensaje de t e x t o


271 public void Snd txt Msg ( S tr in g txt ) {
272

273 Mensaje data mensaje = new Mensaje data () ;


274 // se te o en t e x t o e l parametro re c i b id o por t x t
275 mensaje . te xto = txt ;
276 // acti o n −1 no es mensaje de accion
277 mensaje . Acti on = −1;
278 //no es e l ulti mo msg
279 mensaje . las t ms g = fa lse ;
280 //mando msg
281 boolean va l a c c = Snd Msg ( mensaje ) ;
282 // er ror a l en v iar
283 i f ( ! va l a c c ) {
284 S e t t x t s t a t u s ( ” Error ” , 0 ) ;
285 Change leds ( f al s e ) ;
286 Log . e ( ” Snd txt Msg () −> ” , ” !ERROR! ” ) ;
287 }
288 if ( ! mi C liente . is C onnected () )
289 Change leds ( f al s e ) ;
290 }
291

292 /∗ Metodo para e n v i a r mensaje por s o c k e t


293 ∗ re c i b e como parmetro un o b j e t o Mensaje data
294 ∗ re torna boolean segun s i se pudo e s t a b l e c e r o no l a conexion
295 ∗/
296 public boolean Snd Msg ( Mensaje data msg) {
297

298 try {
299 // Accedo a f l u j o de s a l i d a
300 oos = new ObjectOutputStream ( mi Clie nte . getOutputStream () ) ;
301 // creo o b j e t o mensaje
302 Mensaje data mensaje = new Mensaje data () ;
303

304 if ( mi Cl iente . is C onnected () ) // s i l a conexion co nti nua


305 {
306 // l o aso c io a l mensaje re c i b i d o
307 mensaje = msg ;
308 // Envio mensaje por flujo
309 oos . wr ite Ob je ct ( mensaje ) ;
310 // envio ok
311 return true ;
312

313 } e { // en caso de que no h a l l a conexion l e nviar e l msg


els a
314 S e t t x t s t a t u s ( ” Error . . . ” , 0 ) ; // e rr or
315 return fa lse ;
316 }
317
Instituto Polit´ecnico
2.5 APLICACIO´ N Nacional La T´ecnica al Servicio
SERVIDOR de la Patria

318 } catch ( IOExcepti on e ) { // hubo algun e rr or


319 Log . e ( ”Snd ERROR ” , ”” + e
Msg () −> );
320

321 return fals e ;


322 }
323 }
324 }

2.5. APLICACIO´ N SERVIDOR

Una vez realizada la aplicaci´on del cliente es necesario elegir la aplicaci´on del servidor
que recibir´a los datos y proveer´a de conexi´on con el cliente a trav´es de Internet,
utilizando un puerto de TCP con el Drone utilizando Wi-Fi a trav´es de cuatro v´ıas principales:

• Para controlar y configurar el AR.Drone se utilizan los AT Commands (Comandos


de CMD),
que se transfieren por el puerto UDP 5556 con una frecuencia de 30 veces por segundo.
•La informaci´on sobre el estado del AR.Drone est´a contenido en los NavData, bajo
puerto UDP 5554 y en dos frecuencias: 15 veces por segundo en modo Demo y 200
veces por segundo en modo Debug.
•El Video Stream se mueve bajo TCP en el puerto 5555. Las im´agenes que recibe
el dispositivo pueden decodificarse usando el C´odec incluido en el SDK.
• Los Datos cr´ıticos van al puerto de Control TCP 5559.

2.5.1. CO´ DIGO DEL SERVIDOR

Como funci´on principal del servidor permite la comunicaci´on entre la aplicaci´on cliente
y la aplicaci´on propia del Drone, en otras palabras sirve como interfaz de control; es decir, el
servidor recibe la informaci´on enviada a trav´es del cliente para traducirla en comandos de

63
Instituto Polit´ecnico
2.5 APLICACIO´ N Nacional La T´ecnica al Servicio
SERVIDOR de la Patria
control que son

64
enviados al Drone.
Esto se logra con el siguiente c´odigo:

1 package t e s t . So c ke t te s t ;
2

3 // Se importan l a s l i b r e r i a s c o r r e s p o n d i e n t e s para un s o c k e t en Java


4

5 import java . io . IOExcepti on ;


6 import java . io . ObjectInputStream ;
7 import java . io . ObjectOutputStream ;
8 import java . net . S erv er S oc ket ;
9 import java . net . Socket ;
10

11 import de . yadrone . apps . c o n t r o l c e n t e r . CCFrame ;


12 import de . yadrone . apps . t u t o r i a l . Tu to r ia l A tti t u d e Lis te n e r ;
13 import de . yadrone . apps . t u t o r i a l . TutorialCommander ;
14 import de . yadrone . apps . t u t o r i a l . Tu to r ia l Vid e o Lis te n e r ;
15 import de . yadrone . base . ARDrone ;
16 import de . yadrone . base . IARDrone ;
17 import de . yadrone . base . command . CommandManager ;
18 import de . yadrone . base . e xce pti o n . ARDroneExcepti on ;
19 import de . yadrone . base . e xce pti o n . I Exc e p t io n Lis te n e r ;
20

21 // Se crea l a c l a s e S er vi do r
22 public class Serve r {
23 Socket s k C li e n te ;
24 S erv er S ocket s k Se r vi do r ;
25 S tri n g d a t a r e c e i v e d , s u bs tr in g 1 , s u b s tri n g 2 ;
26 f inal int PUERTO = 5500 ; // Puerto que u t i l i z a r a e l s e rv id o r u t i l i z a r e s t e
27 // mismo en e l c l i e n t e
28 St rin g I P c l i e n t ;
29 Mensaje data mdata = null ;
30 ObjectOutputStream oos = null ;
31 St rin g TimeStamp ;
32

33 // Creamos e l c o n s t r u c t o r d e l o b j e t o Se rv id o r con e l que se r e a l i z a l a conexion


con e l c l i e n t e
34 Serv er () {
35

36 try {
37 // Se a c t i va e l puerto determinado para que e l s e rv id o r pueda r e c i b i r info rmac io n .
38 System . out . p r i n t l n ( ” ∗∗∗∗∗∗∗∗∗∗∗∗ SERVER ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ” ) ;
39 // creamos s e r v e r s o c k e t
40 s k Se rvido r = new Server Socket (PUERTO) ;
41 System . out . p r i n t l n ( ” Escuchando e l puerto ” + PUERTO) ;
42 System . out . p r i n t l n ( ”En Espera........” ) ;
43

44 TimeStamp = new java . u t i l . Date () . to S tr in g () ;


45

46 try {
47 // Creamos s o c k e t para manejar conexion con c l i e n t e
48 s k C l ie n te = s k Se r vido r . ac cept () ;
49

50

51 // Esperamos a l c l i e n t e para l a comunicacion


52 // Una vez que se co necte obtenemos l a d i r e c c i o n IP
53 I P c l i e n t = s k C lie n te . get Inet A d d re ss () . to S t r i n g () ;
54 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Conectado al cliente ”
55 + ” IP : ” + I P c l i e n t ) ;
56 while ( true ) {
57

58 // Manejamos f l u j o de Entrada de l o s datos l e i d o s en e l puerto TCP


59 ObjectInputStream o i s = new ObjectInputStream (
60 s k Cl ie n te . get Input Stream () ) ;
61

62 //Cremos un Objeto con l o re c i b id o d e l c l i e n t e


63 Object aux = o i s . read Object () ; // leemos objeto
64

65 // s i e l o b j e t o es una i ns t a nc ia de Mensaje data


66 i f ( aux instanceof Mensaje data ) {
67 mdata = ( Mensaje data ) aux ;
68

69 // Analizamos e l mensaje re c i b i d o
70 // Si no es e l mensaje FINAL
71 if ( ! mdata . las t ms g ) {
72

73 // Es un mensaje de Accion
74 i f ( mdata . Acti on != −1) {
75 // exec accion
76 Exec ( mdata . Acti on ) ;
77 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] ”
78 + ” E j e c u ta r Accion ” + mdata . Acti on + ” [” + IP client + ”]”);
79 } else {
80

81 // No es un mensaje de accion ento nc es es de t e x t o y se imprime en l a l i ne a de


co ns o la
82

83 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] ”


+ ” Mensaje de [ ” + I P c l i e n t + ”]−−>

+ mdata . te xto ) ;

84 }
85 } else { // cerramos s o c k e t
86 s k C li e n te . c l o s e () ;
87 o i s . c l o s e () ;
88 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Last msg de te cte d Conexion cerrada ,
g r a c i a s vuelva pronto ” ) ;
89 break ;
90 }
91 } else {
92 // Si no es de l t ip o esperado , se marca er r o r
93 System . e r r . p r i n t l n ( ” Mensaje no esper ado ” ) ;
94 }
95 }
96 } catch ( Excepti on e ) {
97 e . print Stack Trace () ;
98 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Error ” ) ;
99 }
100 } catch ( Excepti on e ) {
101 e . print Stack T race () ;
102 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Error ” ) ;
103 }
104 }
105 //En base a l co digo de accion re c i b id o r e a l i z a r e m o s una accion
106 public void Exec ( int acti on num ) {
107 Strin g ACTNUM = null ;
108

109

110 try {
111 switch ( acti on num ) {
112 case 1 : {
113 IARDrone drone = null ;
114 t
r
y
115 {
116 // T u t o r i a l S e c ti on
1
117 drone = new ARDrone
() ;
118 drone . add Exce pti on Li stener (new
IE xc e p t io n Lis te n e r () {
119 public void exe pti o n Occu rr ed (
ARDroneExcepti on exc )
120 {
121 exc . print Stack Trace () ;
122 }
123 }) ;
124 drone . s t a r t () ;
125 //VOLAR AL DRONE
126 // T u t o r i a l Se c ti on 2
127 new Tu to r ia l A tti tu d e Lis te n e r ( drone ) ;
128

129 // T u t o r i a l Se c ti on 3
130 new Tu to r ia l Vid e o Lis te n e r ( drone ) ;
131

132

133 CommandManager cmd = drone . getCommandManager () ;


134 int speed = 3 0 ; // pe rc en ta ge o f max speed
135

136 cmd . take Off () . doFor ( 3000 ) ;


137 cmd . hover () . doFor ( 20000 ) ;
138 //cmd . l a n d i n g () ;
139

140 //FIN DE VOLAR AL DRONE


141 }
142 catch ( Exce pti on exc )
143 {
144 exc . print Stack Trace () ;
145 }
146 f i n a ll y
147 {
148 i f ( drone != null )
149 drone . stop () ;
150

151 System . e x i t ( 0 ) ;
152 }
153

154 break
;
155 }
156 ca 2 {
se
:
157 cmd . forward ( speed ) . doFor ( 2000
);
158 cmd . hover () . doFor ( 1000 ) ;
159 break
;
160 }
161 ca 3 {
se
:
162 cmd . backward ( speed ) . doFor (
2000 ) ;
163 cmd . hover () . doFor ( 2000 ) ;
164 break
;
165 }
166 case 4 : {
167 cmd . landi ng () ;
168 IARDrone drone = null ;
169 drone = new ARDrone () ;
170 drone . add Exc epti on Li stener (new IExc e p t io n Lis te n e r ()
{
171 public void exe pti o n Occu rred (
ARDroneExcepti on exc )
172 {
173 exc . print Stack T race () ;
174 }
175 }) ;
176 CommandManager cmd = drone . getCommandManager () ;
177

178 cmd . landi ng () ;


179
180 brea
k;
181 case 5 : {
182 cmd . go L eft speed ) . doFor ( 2000 )
;
183 cmd . hover () . doFor ( 2000 ) ;
184 break ;
185 }
186

187 case 6 : {
188 cmd . go Right ( speed ) . doFor ( 2000
);
189 cmd . hover () . doFor ( 2000 ) ;
190 break ;
191 }
192

193 case 7 : {
194 cmd . goUp( speed ) . doFor ( 2000 ) ;
195 cmd . hover () . doFor ( 2000 ) ;
196 break ;
197 }
198

199 case 8 : {
200 cmd . goDown( speed ) . doFor ( 2000
);
201 cmd . hover () . doFor ( 2000 ) ;
202 break ;
203 }
204

205 case 8 : {
206 cmd . SwitchCam () ;
207 break ;
208 }
209 }
210 default : {
211 System . out . p r i n t l n ( Err inva paramete
”EXEC or lid r:
”);
212 ACTNUM=null ;
213

214 break ;
215 }
216 }
217 // Realizamos la accion
218 }
219 catch ( Excepti on e)
220 {
221 /∗ Se l a n z a una e x c e p c i o n s i no s e e n c u e n t r a en e j e c u t a b l e o e l f i c h e r o no
e s e j e c u t a b l e . ∗/
222 System . out . p r i n t l n ( ”EXEC Error ”+e ) ;
223 }
224 }
225 public s t ati c void main ( St r in g [ ] args ) {
226 new Server () ;
227 }}
Instituto Polit´ecnico
2.6 IMPORTACIO´ N DEL PROYECTO A Nacional La T´ecnica al Servicio
ECLIPSE de la Patria

2.6. IMPORTACIO´ N DEL PROYECTO A ECLIPSE

La importaci´on de un proyecto permite trabajar distintas aplicaciones en el entorno eclipse


de JAVA sin cambiar la estructura del proyecto ni del trabajo. Nos permite editar, crear, depurar y
ejecutar el proyecto. La aplicaci´on del socket se importa a eclipse, al ejecutarla el puerto
habilita- do quedara´ en espera de que el dispositivo cliente establezca la conexi´on. Para importar
el proyecto:

• Abrimos eclipse y seleccionamos la carpeta donde se encuentra el proyecto, figura 9.

Figura 9: Selecci´on de la carpeta del programa del servidor

• Seleccionamos “File”, luego “import” y despu´es como se muestra en la figura


10 “general” y enseguida “Existing projects into Workspace”.

74
Figura 10: Importaci´on del programa a Eclipse

•Posteriormente seleccionamos el directorio que contiene nuestro programa del


servidor y posteriormente “finish” como se muestra en la figura anterior, despu´es
aparecera la ventana que muestra la ubicaci´on del proyecto, figura 11.
• Damos clic derecho en nuestro programa importado y seleccionamos “Run As”,
enseguida “Java Application” como se muestra en la figura 12.
• Una vez corriendo el programa, el puerto habilitado queda en espera, para que el
cliente introduzca la IP pu´blica y acceda al dispositivo que tiene asignado el
puerto,
figura 13.
Figura 11: Selecci´on de la carpeta donde se ubica el proyecto

Figura 12: Arranque de la aplicaci´on


Instituto Polit´ecnico
2.7 HABILITACIO´ N DEL PUERTO 5500 Nacional La T´ecnica al Servicio
TCP de la Patria

Figura 13: Esperando habilitaci´on del cliente

2.7. HABILITACIO´ N DEL PUERTO 5500 TCP

La habilitaci´on de un puerto 5500 TCP es necesaria para poder utilizar la conexi´on VNC
(por sus siglas en ingl´es Virtual Network Computing, Computaci´on Virtual en Red), que
permite el control de un ordenador remotamente a trav´es de un ordenador cliente por su
estructura basada en cliente-servidor. El puerto 5500 garantiza la entrega de paquetes en el
orden en que fueron mandados. S´olo cuando la conexi´on del puerto 5500 TCP es
habilitada, permitir´a la transmisi´on de datos de manera bidireccional.

2.7.1. MAPEO DE PUERTOS

Para poder utilizar algunas aplicaciones se requieren mapear determinados puertos de nuestro
router que requieren ciertas aplicaciones, debido a su software y al hardware que requiere el sistema.

Hardware
Cuando la conexi´on de internet de un sistema pasa por un dispositivo con capacidad NAT
(por sus siglas en ingl´es Network Address Translation -Traducci´on de direcci´on de redes),
este es un m´etodo para que un dispositivo se pueda conectar a varias m´aquinas externas a
su red privada y que haya conexi´on entre s´ı.

Software
Se compone de tres aplicaciones:

77
•Aplicacio´n cliente: Estas aplicaciones s´olo reciben datos y no se requiere
regularmente mapeo de puertos, u´nicamente requieren de un servidor.
•Aplicacio´n servidor: Estas aplicaciones env´ıan datos a los usuarios que lo soliciten,
re- quieren del mapeo de uno o varios puertos para la utilizaci´on de los dispositivos.
•Aplicacio´n cliente-servidor: Estas aplicaciones realizan la funci´on de enviar y recibir
da- tos, de igual forma necesitan la habilitaci´on de puertos para poder realizar dicha
tarea.

El puerto a mapear depender´a de la aplicaci´on, pues esta la determinar´a debido a su uso.

2.7.2. HABILITACIO´ N DEL PUERTO

•Ingresamos la direcci´on del router en nuestro navegador. En la mayor´ıa de los casos


por default es “192.168.0.1” o “192.168.1.254”. Aparecer´a la ventana que ilustra la
figura 14 en donde se ingresa el nombre de usurio (username) “user” y la contrasen˜a
“user”.

Figura 14: Ingreso a la configuraci´on del modem

• Seleccionamos “Advanced” en la barra de menu´, figura 15.

Figura 15: Selecci´on de la pestan˜a Advanced


• Seleccionamos la opci´on Forwarding en el submenu´, figura 16.

Figura 16: Selecci´on de la opci´on Forwarding

• Elegimos la opcion “Create IPv4 (Crear IPv4)”.


•Asignamos la direcci´on IP (privada) de la PC o de la laptop en el campo “Local IP”
siendo la siguiente: 192.168.0.20. el puerto que usaremos es el 5500 de TCP por lo que lo
asigna-
mos al campo “Local Start Port” y ”Local End Port”, y especificamos el protocolo TCP.
Por ultimo asignamos un nombre a la aplicaci´on que ser´a “Control-Drone”, en la
pestan˜a “Enabled”seleccionamos “On” y seleccionamos “Apply” como se muestra en la
figura 17.

•Verificamos que se haya guardado la configuraci´on del puerto requerido y seleccionamos


la opci´on “Forwarding” (Redireccionamiento), figura 18.

•Con este procedimiento la direcci´on IP “192.168.0.20” tiene asignado el puerto 5500


TCP, siendo este el que se requiere para lograr la comunicaci´on entre el Cliente y el
Servidor.
Figura 17: Configurando el puerto 5500 a una direcci´on IP privada.

Figura 18: Verificaci´on de la habilitaci´on del puerto


Instituto Polit´ecnico
3 PRUEBAS DE CAMPO Y RESULTADOS Nacional La T´ecnica al Servicio
de la Patria

´
CAP ITULO

3. PRUEBAS DE CAMPO Y RESULTADOS

81
Instituto Polit´ecnico
3.1 INTRODUCCIO Nacional La T´ecnica al Servicio
´N de la Patria

3.1. INTRODUCCIO´ N

Describiremos la manera en que la aplicaci´on que se encuentra en nuestro dispositivo m


´ovil puede ingresar al servidor para controlar el Drone. La aplicaci´on puede controlar el
vuelo del Drone con cualquier maniobra que este pueda realizar, siempre y cuando se conozca
el espacio donde va a operar nuestro dispositivo. Es importante conocer el ´area donde estar´a el
Drone, para que no pueda provocarle dan˜os.
Mostraremos c´omo es posible guardar el video captado en nuestro servidor, desde la c´amara
frontal y vertical del dispositivo.

3.2. COMUNICACIO´ N ENTRE CLIENTE Y SERVIDOR

Con base al procedimiento del apartado 2.4 importamos el proyecto en Eclipse y ejecutamos
la aplicaci´on del servidor. De esta manera tenemos el servidor en espera de conexi´on del
cliente como se muestra en la figura 19. El servidor puede quedar activo, de manera que el cliente
pueda ingresar y controlar al Drone cuando lo requiera, y no se tenga que realizar el procedimiento
de importaci´on cada vez que activemos la aplicaci´on.

Figura 19: Esperando habilitaci´on del cliente.

Desde el dispositivo m´ovil ejecutamos la aplicacion cliente, donde se requiere la IP pu´blica


de la PC y el puerto TCP de comunicaci´on del modem como se presenta en la figura 20.

82
Instituto Polit´ecnico
3.2 COMUNICACIO´ N ENTRE CLIENTE Y Nacional La T´ecnica al Servicio
SERVIDOR de la Patria

Figura 20: Ventana principal de la aplicaci´on Android.

Ingresamos la direcci´on IP pu´blica (IP WAN) de la computadora o laptop en el que


este co- rriendo la aplicaci´on servidor, para esto, accedemos a la configuraci´on del modem,
ingresamos la siguiente direcci´on en el navegador de internet: http://192.168.0.1/. Hacemos
clic izquierdo en la pestan˜a “Basic”, donde se muestra la informaci´on b´asica de nuestro
modem. Este procedimiento se explic´o a detalle en el Capitulo 2.

Ingresada la IP y el puerto TCP, establecemos la petici´on a la aplicaci´on del servidor. Si


nuestra conexi´on es exitosa aparece en nuestra aplicaci´on cliente “Conexi´on OK” como se
muestra en la figura 21 y figura 22.

83
Figura 21: IP y puerto TCP ingresados en la aplicaci´on cliente.

Figura 22: Conexi´on exitosa.

Desde el servidor se muestra el siguiente mensaje en la l´ınea de consola en donde se observa la


direcci´on IP del dispositivo que tiene instalada la aplicaci´on cliente, figura 23.
Instituto Polit´ecnico
3.3 COMUNICACIO´ N ENTRE SERVIDOR Y Nacional La T´ecnica al Servicio
DRONE de la Patria

Figura 23: Mensaje de conexi´on en la l´ınea de consola del servidor.

3.3. COMUNICACIO´ N ENTRE SERVIDOR Y DRONE

Una vez establecida la conexi´on entre cliente y servidor, podemos controlar el vuelo del
Drone, as´ı como la captura de video de la c´amara frontal y vertical. Presionamos “Take
off” como se muestra en la figura 2 4 que inicia el vuelo del Drone (Puede ser configurable desde
1 metro hasta una altura m´axima de 250 metros) o bien, podemos ajustarlo durante el vuelo.

Figura 24: Bot´on “Take off” presionado.

85
En la figura 25 observamos la distancia a la que se eleva el Drone, la cual esta configurada
previamente a 1m del suelo.

Figura 25: Drone elev´andose.

Al iniciar el vuelo del Drone, comienza autom´aticamente a grabar y queda en espera de los
comandos de vuelo o cambio de c´amara.
Presionando el bot´on “Up”, figura 26, el Drone se eleva.Puede elevarse hasta donde el
usuario lo requiera como se muestra en la figura 27.

Figura 26: Bot´on “Up” presionado.


Figura 27: Drone elev´andose.

Presionado otros botones como “Right” y “Left” mostrados en la figura 2 8 , se pueden realizar
movimientos en el aire de izquiera y derecha,figura 29.

Figura 28: Bot´on “Right” y “Left”.


Figura 29: Movimientos del Drone en el aire.

El control a´ereo del Drone es libre, y podemos llevarlo a cualquier lugar del a´rea que el
usuario desee.
Para acercarlo al suelo presionamos el bot´on “Down” como se muestra en la figura 30, as´ı el Drone
descender´a como se observa en la figura 31.

Figura 30: Bot´on “Down” presionado.


Figura 31: Drone descendiendo con el bot´on “down”.

Una vez que el Drone est´a cerca de la superficie, presionamos el bot´on ”Landing”, figura 32.

Figura 32: Bot´on “Landing” presionado.


Una vez presionado el bot´on ”Landing”, el Drone aterriza en el suelo, figura 33.

Figura 33: Drone aterrizando con el bot´on “Landing”.

El video de la c´amara frontal del Drone comienza al momento en que la aplicaci´on se conecta
al servidor, figura 34.Mientras el Drone se eleva la c´amara frontal permanece activa como se
muestra en la figura 35.

Figura 34: Video obtenido de la c´amara posterior del AR.Drone a 1 metro de altura.
Figura 35: Video obtenido de la c´amara posterior del AR.Drone a 3.5 metros de altura.

Para seleccionar entre la c´amara frontal y vertical del Drone con el bot´on “CV/CH”, figura 36.

Figura 36: Bot´on “CV/CH” presionado.


Aunque la c´amara vertical tiene menor resoluci´on que la c´amara frontal, no representa
problema alguno, ya que es posible apreciar la imagen con claridad, figura 37.

Figura 37: Vista de la c´amara inferior a una altura de 3.5 metros.

El video captado por la c´amara del Drone se detiene una vez que aterriza como se muestra
en la figura 38.

Figura 38: C´amara del Drone detenida


Se almacenar´a en nuestro servidor para su posterior visualizaci´on. La duraci´on del
video de- pender´a de la capacidad de almacenamiento que tenga el servidor, as´ı como la c´amara
seleccionada (frontal o vertical).
Es importante conocer los comandos del Drone y practicar entes de manipularlo, ya que el dispo-
sitivo puede dan˜arse por un mal uso y puede dejar de funcionar.
Instituto Polit´ecnico
CONCLUSIONE Nacional La T´ecnica al Servicio
S de la Patria

CONCLUSIONES

1. Con el protocolo TCP para la transferencia de datos a trav´es de un puerto seleccionado,


se garantiz´o la entrega de paquetes de datos en el mismo orden en que fueron enviados.
La aplicaci´on desarrollada establece la comunicaci´on entre el cliente y el servidor, mediante
la conexi´on TCP con la inicializaci´on del socket ingresando el puerto TCP y la IP del Host,
procesando la petici´on enviada del cliente y generando respuesta para establecer el enlace como
se muestra en la figura 39.

Figura 39: Diagrama de flujo cliente-servidor.

94
2. Con Java se consigui´o el control de procesos en paralelo, para establecer la conexi´on entre
el cliente y servidor, as´ı como las acciones que ejecuta el Drone a trav´es de la SDK que
proporciona el fabricante. Las acciones que podemos realizar se muestran en la figura 40.

Figura 40: Diagrama de flujo de la aplicaci´on del Drone


3. La interfaz gr´afica de la aplicacion Android disen˜ada contiene comandos que al
accionarse controlan los movimientos del Drone. La pantalla principal de la interfaz gr´afica se
presenta en la figura 41. El control est´a limitado al conocimiento previo del espacio donde
operar´a el Drone, con el fin de que el Drone pueda tener una mejor precisi´on en sus
movimientos y no sufra choques o dan˜os permanentes.

Figura 41: Ventana principal de la aplicaci´on Android.


Instituto Polit´ecnico
REFERENCIAS Nacional La T´ecnica al Servicio
de la Patria

Referencias
[1] Jakub Hvizdoˇs, Peter Sinˇc´ak CSc., Control Library for AR.Drone 2.0, Pags. 1-2, 2015.

[2] Arafatur Rahman, Enabling Drone Communication with WiMAX tegnology, Pags. 1-4, 2014.

[3] Roman Bart´ak, Andrej Hrasko, A Controller for Autonomous Landing of AR.Drone,
Charles University in Prague Pags. 329-330, 2014.

[4] Parrot SA www.parrot.com

[5] DroneShop www.droneshop.mx/producto/qr-y100/¸c

[6] Marcelo de Lellis Costa de Oliveira, “Aircraft Control and Simulation. John Wiley Sons”, 2da
edici´on, 2003.

[7] Diego Fernando Quisi Peralta (2012). “Disen˜o e implementaci´on de una aplicacion para
dis- positivos Android en el marco del proyecto pequen˜as y pequen˜os cient´ıficos de la
Universidad Polit´ecnica Salesiana” (tesis de Ingenier´ıa). Universidad Polit´ecnica Salesiana,
Ecuador.

[8] http://compnetworking.about.com/od/wirelessfaqs/f/adhoclimitation.htm

[9] http://facultad.bayamon.inter.edu/cgonzalezr/elen4618/adhoc.pdf

[10] Stefan Junestrand, Xavier Passaret, Daniel Va´zquez, “Dom´otica y hogar digital”,
Editorial Paraninfo, 2005

[11] http://www.pulsarec.es/ar-drone-de-parrot-blog-de-la-productor-audiovisual-en-madrid-
pulsa-rec/

[12] Carballar, Jos´e Antonio, Jos´e A. Carballar Falc´on, “Wi-Fi : lo que se necesita
conocer”, RC Libros, 2010

97
Instituto Polit´ecnico
GLOSARIO Nacional La T´ecnica al Servicio
de la Patria

GLOSARIO

• ANDROID: Es un sistema operativo desarrollado principalmente para dispositivos m


´oviles basado en el nu´cleo de Linux.
• API: Interfaz de programaci´on de aplicaciones, es un conjunto de procediminetos o
funciones que proporciona el programador al Sistema Operativo.
• ARM: Conjunto de instrucciones Reducidas Avanzadas de Maquina.
• Bluetooth: Es una especificaci´on tecnol´ogica que permite la transmisi´on de datos y
voz entre dispositivos de una red de a´rea personal de manera inal´ambrica.
• Cliente-servidor: Es un modelo de arquitectura de red que establece una conexi´on
entre equipos de una red a un equipo servidor que es m´as potente y
el cual
proporciona cierto servicio a los equipos cliente.
• GPS: Es un Sistema de posicionamiento global que se utiliza para detector la posici´on
de un objeto en todo el mundo.
• IOS: Es un sistema operativo desarrollado para sistemas de la compan˜´ıa Apple.
• JAVA: Es un lenguaje de programaci´on orientado a objetos que trata de eliminar
herra- mientas de bajo nivel en programaci´on.
• JDK: Kit de desarrollo de Java, es un conjunto de herramientas que permite desarrollar
aplicaciones en lenguaje Java.
• LAN: Es una red de a´rea local, que regularmente se utiliza para enlazar dispositivos en
un rango de 200 metros.
• Modem: Es un dispositivo que permite la conexi´on entre computadoras a trav´es de la l
´ınea Telef´onica.
• PDM: Es una t´ecnica de modulaci´on que va variando el ancho de los pulsos para regular
la energ´ıa que se env´ıa a una carga.
• PID: Es un mecanismo de control para calcular el error entre un valor medido y el valor que
deseamos obtener.

98
• Puerto Es una interfaz por la cual se pueden enviar y recibir datos de distintos tipos.
• RISC: Conjunto de Instrucciones Reducidas de Computadora.
• SDK: Kit de desarrollo de Software, es un conjunto de herramientas que permite crear
aplicaciones para determinados softwares, sistemas operativos o plataformas.
• Socket: Es un manejador de fichero que se utiliza para solicitar servicios de una red a un
Sistema Operativo.
• UAV: Veh´ıculo A´ereo no Tripulado o simplemente un drone, es un dispositivo a´ereo que
no tiene tripulaci´on y actualmente se utilizan para distintas aplicaciones
militares, civiles o de entretenimiento (Drone).
• WIFI: Es un mecanismo que es capaz de establecer una conexi´on en dispositivos electr´onicos
de manera inal´ambrica.
Instituto Polit´ecnico
ANEXOS Nacional La T´ecnica al Servicio
de la Patria

ANEXOS

A.1 PROTOCOLOS UTILIZADOS

A.1.1 TCP (Transmission Control Protocol –Protocolo de Control de Transmisi´on)

El principal prop´osito de TCP es proporcionar una conexi´on l´ogica fiable entre parejas
procesos. No asume la fiabilidad de los protocolos de niveles inferiores (como IP) por lo que debe
ocuparse de garantizarla.
TCP se puede caracterizar por los siguientes servicios que suministra a las aplicaciones que lo usan:
• Transferencia de datos a trav´es de un canal
• Fiabilidad
• Control de flujo
• Multiplexaci´on
• Conexiones l´ogicas
• Full Duplex
El mecanismo mostrado m´as arriba se utiliza en TCP, pero con unas cuantas diferencias:
Como TCP proporciona una conexi´on con un flujo de bytes, los nu´meros de
secuencia se asignan a cada byte del canal. TCP divide el flujo de bytes en segmentos.
El prin- cipio de la ventana se aplica a nivel de bytes; es decir, los segmentos enviados y
los ACKs (acuses de recibo o asentimiento) recibidos llevar´an nu´meros de secuencia
de forma que el taman˜o de la ventana se exprese con un nu´mero de bytes, en vez del
de paquetes.
El taman˜o de la ventana lo determina el receptor, cuando se establece la conexi´on, y
puede variar durante la transmisi´on de datos. Cada ACK incluir´a el taman˜o de la
ventana que acepta el receptor en ese momento. Ahora, el flujo de datos del emisor se
puede ver como:

I
Figura 42: Principio de la ventana aplicado a TCP

Donde:
A: Bytes transmitidos que han sido reconocidos.
B: Bytes enviados pero no reconocidos.
C: Bytes que se pueden enviar sin esperar ningu´n tipo de
reconocimiento. D: Bytes que no se pueden enviar au´n.
Recordar que TCP agrupa los bytes en segmentos, y un segmento TCP s´olo lleva el nu´mero de
secuencia del primer byte.

A.1.2 TCP (Transmission Control Protocol –Protocolo de Control de Transmisi´on)

UDP es b´asicamente un interfaz de aplicaci´on. No an˜ade fiabilidad, control de flujo o


recupe- raci´on de errores a IP. Simplemente sirve como ”multiplexor/ demultiplexor”para enviar
y recibir datagramas, usando los puertos para dirigir los datagramas como se muestra en la
figura.
Figura 43: UDP, un demultiplexor basado en puertos

Cada datagrama UDP se env´ıa en un s´olo datagrama de IP. Aunque el datagrama IP


se fragmente durante la transmisi´on, la implementaci´on de IP que lo reciba lo reensamblar
´a antes de pas´arselo a la capa de UDP. Todas las implementaciones de IP deben aceptar
datagramas de 576 bytes, lo que significa que si se supone un taman˜o m´aximo de 60 bytes
para la cabecera IP, queda un taman˜o de 516 bytes para el datagrama UDP, aceptado por todas
las implementaciones. Muchas implementaciones aceptan datagramas m´as grandes, pero no es
algo que est´e garantizado. El datagrama UDP tiene una cabecera de 16 bytes que se describe

en la siguiente figura.

Figura 44: Formato del datagrama UDP

Donde:
Puerto origen:Indica el puerto del proceso que env´ıa el datagrama. Es el puerto al que se deber
´ıan dirigir las respuestas.
Puerto destino:Especifica el puerto destino en el host de destino. Longitud:Es la longitud(en bytes)
del mismo datagrama de usuario, incluyendo la cabecera.
Checksum:Es un campo opcional consistente en el complemento a uno de 16 bits de la suma en
complemento a uno de una pseudocabecera IP, la cabecera UDP.

A.1.3 NAT (Network Address Translation-Traducci´on de direcciones de Red)

El proceso de la traducci´on de direcciones de red (NAT, por sus siglas en ingl´es) se desarroll´o
en respuesta a la falta de direcciones de IP con el protocolo IPv4 (el protocolo IPv6
propondr´a una soluci´on a este problema.
En efecto: en la asignaci´on de direcciones IPv4, no hay suficientes direcciones IP enrutables (es
de- cir, u´nicas en el mundo) para permitir que todas las m´aquinas que necesiten conectarse a
internet puedan hacerlo.
El concepto de NAT consiste en utilizar una direcci´on IP enrutable (o un nu´mero limitado de
direc- ciones IP) para conectar todas las m´aquinas a trav´es de la traducci´on, en la pasarela de
internet, entre la direcci´on interna (no enrutable) de la m´aquina que se desea conectar y la
direcci´on IP de la pasarela.
Adema´s, el proceso de traducci´on de direcciones permite a las compan˜´ıas asegurar la red
interna siempre y cuando oculte la asignaci´on de direcciones internas. Para un observador
que se ubica fuera de la red, todos los pedidos parecen provenir de la misma direcci´on IP.

Traducci´on est´atica
El concepto de NAT est´atica consiste en hacer coincidir una direcci´on IP pu´blica con una
direc- ci´on IP de red privada interna. Un router (o, m´as precisamente, la pasarela) hace
coincidir una direcci´on IP privada (por ejemplo, 192.168.0.1) con una direcci´on IP pu´blica
enrutable en internet y, en cierto sentido, realiza la traducci´on mediante la modificaci´on de
la direcci´on en el paquete IP.
La traducci´on de las direcciones est´aticas permite conectar m´aquinas de red interna a internet de
manera transparente, aunque no resuelve el problema de escasez de direcciones debido a que se
necesitan n direcciones IP enrutables para conectar n m´aquinas de la red interna.

Traducci´on din´amica
La NAT din´amica permite compartir una direcci´on IP enrutable (o una cantidad reducida
de di- recciones IP enrutables) entre varias m´aquinas con direcciones privadas. As´ı, todas
las m´aquinas de la red interna poseen la misma direcci´on IP virtual en forma externa. Por esta
raz´on, el t´ermino
.enmascaramiento de IP”se usa en ciertos casos para procesar la NAT din´amica.
Para poder ”multiplexar”(compartir) diferentes direcciones IP con una o m´as direcciones IP
en- rutables, la NAT din´amica utiliza la traducci´on de direcciones de puerto, es decir, la
asignaci´on de un puerto de origen diferente para cada solicitud, de modo que se pueda
mantener una corres- pondencia entre los pedidos que provienen de la red interna y las
respuestas de las m´aquinas en internet, las cuales est´an dirigidas a la direcci´on IP del router.

A.1.4 TELNET

Telnet es una utilidad y un protocolo est´andar de Internet que se basa en la solicitud


de comentarios (RFC) 854. En esta RFC se especifica un m´etodo para transmitir y recibir
caracteres ASCII sin cifrar (texto simple) a trav´es de una red. Se puede utilizar un cliente
Telnet ejecutado en un equipo para conectarse a una sesi´on de l´ınea de comandos con el fin de
ejecutar aplicaciones. S´olo se admiten las interfaces y aplicaciones basadas en caracteres. El
entorno de Telnet no incluye una capacidad para gr´aficos.
El servidor Telnet hospeda las sesiones remotas de los clientes Telnet. Cuando se ejecuta el servidor
Telnet en un equipo, los usuarios pueden conectarse al servidor con un cliente Telnet desde un
equipo remoto. El servidor Telnet se implementa en Windows como un servicio que se puede
configurar para que se ejecute siempre, incluso cuando ningu´n usuario ha iniciado sesi´on en
el servidor.
Cuando un cliente Telnet se conecta a un equipo que ejecuta el servidor Telnet, se solicita al
usuario remoto que especifique un nombre de usuario y una contrasen˜a. La combinaci´on de
nombre de usuario y contrasen˜a debe ser valida para el servidor Telnet. El servidor Server
en Windows admite dos tipos de autenticacion: NTLM y Contrasen˜a (o texto simple).
Una vez que el usuario ha iniciado una sesi´on, aparecer´a el s´ımbolo del sistema, que se puede
utilizar como si se hubiera iniciado localmente en la consola del servidor. Los comandos que se
escriben en el s´ımbolo del sistema del cliente Telnet se env´ıan al servidor Telnet y se ejecutan
all´ı, como si se hubiera iniciado una sesi´on localmente en el s´ımbolo del sistema del servidor.
Los resultados de los comandos ejecutados se devuelven al cliente Telnet, donde se muestran al
usuario.
Telnet no admite las aplicaciones que requieren una interfaz gr´afica de usuario. Sin
embargo, el servidor Telnet y el cliente Telnet pueden interpretar secuencias de caracteres
especiales que proporcionan un cierto nivel de formato y posicionamiento de cursor en la
ventana del cliente Telnet. El servidor Telnet y el cliente Telnet admiten la emulaci´on de
cuatro tipos de terminales: ANSI, VT-100, VT-52 y VT-NT.

A.2 COMANDOS UTILIZADOS

A.2.1 Comandos AT

La comunicaci´on con el AR.Drone se realiza a trav´es de los AT Commmands, que son


cadenas de texto enviados como paquetes TCP y UDP. De esta forma, pueden enviarse o´rdenes
para con- trolar el dispositivo. Los strings est´an codificados como caracteres ASCII de 8 bits.
La sintaxis es la siguiente:
AR.Drone 1.0: AT[nombreComando] = [nu´meroDecimal][, argumento1, argumento2, ...] LF AR.Drone2,0 :
AT [nombreComando] = [nu´meroDecimal][argumento1, argumento2, ...] < CR >

Ejemplo: AT P CMD = 21625, 1, 0, 0, 0, 0 ¡LF¿

Un u´nico paquete UDP puede contener por lo menos un u´nico AT Command o m´as de uno.
La longitud m´axima de ´estos es de 1024 caracteres y hay un retardo de 30 ms entre uno y otro.

También podría gustarte