Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
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”
T E S I S
QUE PARA OBTENER EL TITULO DE:
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
P R E S E N 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
INDICEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Indice
OBJETIVOS 4
JUSTIFICACION 5
INTRODUCCION 6
1. TECNOLOGIA EN DRONES Y APLICACIONES MOVILES 7
1.1. INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2. TECNOLOGIA DE UN DRONE WIFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. APLICACIONES DE LOS DRONES EN LA INDUSTRIA . . . . . . . . . . . . . . . . . 16
1.4. APLICACIONES ANDROID PARA CONTROL DE DISPOSITIVOS WI-FI . . . . . . . 19
1.5. TIPOS DE UAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2. APLICACION ANDROID 26
2.1. INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2. Kit de Desarrollo de Software-SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3. PUNTO DE COMUNICACION SOCKET . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4. APLICACION CLIENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5. APLICACION SERVIDOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6. IMPORTACION DEL PROYECTO A ECLIPSE . . . . . . . . . . . . . . . . . . . . . . 63
2.7. HABILITACION DEL PUERTO 5500 TCP . . . . . . . . . . . . . . . . . . . . . . . . . 66
3. PRUEBAS DE CAMPO Y RESULTADOS 70
3.1. INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.2. COMUNICACION ENTRE CLIENTE Y SERVIDOR . . . . . . . . . . . . . . . . . . . . 71
3.3. COMUNICACION ENTRE SERVIDOR Y DRONE . . . . . . . . . . . . . . . . . . . . . 74
CONCLUSIONES 83
REFERENCIAS 86
GLOSARIO 87
ANEXOS I
1
INDICE DE FIGURASInstituto Politecnico Nacional
La Tecnica al Servicio 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 aplicacion cliente . . . . . . . . . . . . . . . . . . . . . . . . 27
4. Diagrama de flujo de la aplicacion servidor . . . . . . . . . . . . . . . . . . . . . . . 28
5. Diagrama de flujo de la aplicacion del Drone . . . . . . . . . . . . . . . . . . . . . . 29
6. Arquitectura AR.Drone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7. Diragrama de conexion entre el cliente y el servidor . . . . . . . . . . . . . . . . . . 32
8. Diagrama de la conexion entre cliente y servido a traves de internet. . . . . . . . . . 33
9. Seleccion de la carpeta del programa del servidor . . . . . . . . . . . . . . . . . . . 63
10. Importacion del programa a Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
11. Seleccion de la carpeta donde se ubica el proyecto . . . . . . . . . . . . . . . . . . . 65
12. Arranque de la aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
13. Esperando habilitacion del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
14. Ingreso a la configuracion del modem . . . . . . . . . . . . . . . . . . . . . . . . . . 67
15. Seleccion de la pestana Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
16. Seleccion de la opcion Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
17. Configurando el puerto 5500 a una direccion IP privada. . . . . . . . . . . . . . . . 69
18. Verificacion de la habilitacion del puerto . . . . . . . . . . . . . . . . . . . . . . . . 69
19. Esperando habilitacion del cliente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20. Ventana principal de la aplicacion Android. . . . . . . . . . . . . . . . . . . . . . . . 72
21. IP y puerto TCP ingresados en la aplicacion cliente. . . . . . . . . . . . . . . . . . . 73
22. Conexion exitosa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
23. Mensaje de conexion en la lınea de consola del servidor. . . . . . . . . . . . . . . . . 74
24. Boton “Take off” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
25. Drone elevandose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2
INDICE DE TABLASInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
26. Boton “Up” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
27. Drone elevandose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
28. Boton “Right” y “Left”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
29. Movimientos del Drone en el aire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
30. Boton “Down” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
31. Drone descendiendo con el boton “down”. . . . . . . . . . . . . . . . . . . . . . . . 78
32. Boton “Landing” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
33. Drone aterrizando con el boton “Landing”. . . . . . . . . . . . . . . . . . . . . . . . 79
34. Video obtenido de la camara posterior del AR.Drone a 1 metro de altura. . . . . . . 79
35. Video obtenido de la camara posterior del AR.Drone a 3.5 metros de altura. . . . . 80
36. Boton “CV/CH” presionado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
37. Vista de la camara inferior a una altura de 3.5 metros. . . . . . . . . . . . . . . . . 81
38. Camara del Drone detenida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
39. Diagrama de flujo cliente-servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
40. Diagrama de flujo de la aplicacion del Drone . . . . . . . . . . . . . . . . . . . . . . 84
41. Ventana principal de la aplicacion Android. . . . . . . . . . . . . . . . . . . . . . . . 85
42. Principio de la ventana aplicado a TCP . . . . . . . . . . . . . . . . . . . . . . . . . II
43. UDP, un demultiplexor basado en puertos . . . . . . . . . . . . . . . . . . . . . . . III
44. Formato del datagrama UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
Indice de tablas
1. Caracterısticas de las diferentes tecnologıas inalambricas[1]. . . . . . . . . . . . . . . 12
2. Propiedades de algunas aplicaciones de seguridad. . . . . . . . . . . . . . . . . . . . 21
3. Caracterısticas de algunos modelos de UAV considerados. . . . . . . . . . . . . . . . 24
3
OBJETIVOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
OBJETIVOS
OBJETIVO GENERAL:
• Disenar una aplicacion Android para el control a distancia de un Drone con grabacion
de video percibida a traves de su camara con tecnologıa Wi-Fi.
OBJETIVOS ESPECIFICOS:
• Disenar una aplicacion en Android para controlar un Drone desde un dispositivo movil
con acceso a Internet.
• Emplear un servicio de conexion remota que permita observar los videos captados por
el Drone durante el vuelo.
4
JUSTIFICACIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
JUSTIFICACION
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 opcion.
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,
tamano, tiempo de vuelo, accesorios como camaras, GPS, etc.), y por su amplio panorama de
desarrollo a nivel de programacion es factible utilizarlos para la implementacion de sistemas per-
sonales, como por ejemplo un sistema de video vigilancia.
Sin embargo, hasta el dıa de hoy, los sistemas de video vigilancia se realizan utilizando prin-
cipalmente dispositivos como lo son las camaras IP o los vehıculos aereos no tripulados-UAV
acondicionados con camaras (Drone), teniendo como mayor limitacion que deben encontrarse y
controlarse desde la misma area geografica, es decir el sistema debe estar conectado en la misma
red LAN.
Con lo antes mencionado, decidimos desarrollar una aplicacion que controle remotamente desde un
dispositivo movil, a traves de Internet, a un Drone que se encuentre en un punto geograficamente
alejado, para poder captar y almacenar fotografıas y videos, tomados durante una rutina de vuelo.
5
INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
INTRODUCCION
Los Drones han despertado un gran interes en los ultimos anos ya que dichos vehıculos pueden
ocuparse en el ambito militar como en el ambito civil, con aplicaciones desarrolladas para tareas
de busqueda y rescate, vigilancia comercial, espionaje, filmacion cinematografica, entre otras.
Debido a las diversas aplicaciones que se pueden realizar con Drones, presentamos en el presente
trabajo el desarrollo de una aplicacion para dispositivos Android, cuyo objetivo es controlar un
Drone con tecnologıa WiFi destinado a seguridad, es decir, usamos un Drone comercial para con-
trolar una rutina de vuelo aleatoriamente y tomar video de ambas camaras (posterior o vertical)
almacenando el video en un servidor.
En el capıtulo I se mencionan las especificaciones tecnicas de un Drone WiFi, especıficamente
del Drone que hemos usado. Por otra parte hacemos una comparacion entre aplicaciones Android
disponibles en Play Store, con esto determinamos las ventajas y desventajas que existen entre
nuestra aplicacion y estas las aplicaciones disponibles.
En el capıtulo II describimos la arquitectura de las librerıas utilizadas para el control del Drone,
ası mismo se describe el procedimiento de programacion de las aplicaciones disenadas: aplicacion
servidor y aplicacion cliente.
Mostramos el procedimiento seguido para cargar un proyecto en Eclipse, siendo el software en el
se desarrollo la aplicacion. Por ultimo incluimos el procedimiento del mapeo de puertos TCP, el
cual es necesario para la comunicacion entre las aplicaciones cliente y servidor.
En el capıtulo III se realizan las pruebas de vuelo y captura de video del AR.Drone, mostrando
las capacidades de nuestra aplicacion Android en una rutina de vuelo controlada completamente
por el usuario.
6
1 TECNOLOGIA EN DRONES Y APLICACIONES MOVILESInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
CAPITULO
1. TECNOLOGIA EN DRONES Y APLICACIONES
MOVILES
7
1.1 INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
1.1. INTRODUCCION
Los sistemas autonomos de control de vuelo han despertado un gran interes en los ultimos anos
debido al gran desarrollo de UAV(por sus siglas en ingles: Unmanned Aerial Vehicle- Vehıculo
Aereo No Tripulado), ası como el logro de un control de ellos mas sencillo e intuitivo de los mismos.
Este tipo de vehıculos pueden ocuparse tanto en el ambito militar como en el ambito civil, con
aplicaciones desarrolladas para tareas de busqueda y rescate, vigilancia comercial, espionaje, fil-
macion cinematografica y la realizacion de diversas maniobras, entre otras.
Con respecto a las aplicaciones de busqueda y rescate, ha sido lanzado el proyecto Europeo lla-
mado SHERPA (por sus siglas en ingles: Smart collaboration between Humans and ground-aErial
Robots for imProving rescuing activities in Alpine environment- Colaboracion inteligente entre
humanos y robots terrestres-aereos para mejorar las actividades de rescate en ambientes alpinos)
cuyo objetivo es desarrollar una plataforma mixta (terrestre-aerea) para apoyar las actividades de
busqueda y rescate en escenarios reales y hostiles. Con este proyecto, se presenta una solucion via-
ble para salvar vidas (turistas y personal de rescate) en estos ambientes hostiles alpinos (multiples
avalanchas)[1].
Las aplicaciones de estos dispositivos han incrementado, principalmente por las caracterısticas
similares a las de una aeronave, es decir, maniobras complejas en pequenos volumenes, siendo
capaces de llevar cargas significativas.
En la actualidad las aplicaciones de los Drones como vehıculos no tripulados se ubican en dos
grandes ambitos mencionados anteriormente: militar y civil.
8
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
1.2. TECNOLOGIA DE UN DRONE WIFI
Anteriormente se utilizaba la tecnica de radiofrecuencia para poder pilotear los Drones, debido
a los estudios realizados a traves de los anos se desarrollo el uso de la tecnologıa Wi-Fi. La ventaja
del Wi-Fi es la rapidez y mas aun 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 moviles que puedan soportar la aplicacion.
El control del Drone se refiere a la manipulacion del vuelo, teniendo el control de su velocidad,
la distancia y la altura a la que volara. Mientras que la conexion 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 senal del Wi-Fi, este
automaticamente permanece inmovil en el aire. El alcance de el entre los dispositivos vıa Wi-Fi
dependera del rango de los dispositivos y en ocasiones de cuestiones climaticas, ası tambien como
obstaculos 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 conexion.
El rango de alcance generalmente es de 50 metros.
Los Drones en general usan tecnologıa wifi mediante un modulo integrado “wifi b g n” o “wifi
b g” en modo de funcionamiento ad-hoc, el cual crea una red entre el dispositivo movil y el Drone.
A continuacion se mencionan las tecnologıas inalambricas existentes que pueden ser incorpora-
das para la comunicacion de un Drone:
9
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
IEEE 802.11 (WiFi)
WiFi incluye diferentes estandares IEEE 802.11 a/b/g/n/ac para WLAN (por sus siglas en ingles
Wireless Local Area Network- Redes de Area Local Inalambricas). En particular, las versiones “n”
y “ac” son las ultimas versiones que proporcionan mayor rendimiento. El estandar IEEE 802.11
n fue lanzado en 2009 con nuevas caracterısticas comparadas con las versiones anteriores, como
OFDM, (por sus siglas en ingles Orthogonal Frecuency-Division Multiplexing- Multiplexaje Or-
togonal por Division de Frecuencia) y MIMO (por sus siglas en ingles Multiple Input Multiple
Output- Multiples Entradas Multiples Salidas)[1].
Estas nuevas caracterısticas no solo permiten mejorar el rendimiento de la red (velocidad maxima
de datos de 150 Mbps), sino tambien mejora el alcance de cobertura (250m al aire libre). Para
incrementar aun mas el rendimiento de la red (hasta 6.77 Gbps) el estandar IEEE 802.11 ac es
lanzado en 2013 utilizando MU-MIMO (por sus siglas en ingles Multi User Multiple Input Multiple
Output- Multiples Entradas Multiples Salidas Multiusuario), modulacion eficiente y el incremento
del ancho de banda del canal[1].
ZigBee
ZigBee a traves del estandar IEEE 802.15.4 define las especificaciones para LR-WPAN (por sus
siglas en ingles Low-Rate Wireless Personal Area Network- Redes Inalambricas de Area 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 duracion de baterıa. Para este fin, este reduce la cantidad de datos que se transmiten, la
sobrecarga de “frames” y la frecuencia de transmision e introduce mecanismos para la gestion/re-
duccion 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 maxima velocidad de transmision 250kbps. El
bajo consumo de energıa es la caracterıstica mas importante de ZigBee [1].
10
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
XBee
El protocolo XBee es tambien parte de LR-WPAN (por sus siglas en ingles Low-Rate Wireless
Personal Area Network- Redes Inalambricas de Area Personal de Baja Transmision). Este logra
una velocidad de transmision de 250 kbps usando CSMA/CA (por sus siglas en ingles Carrier
Sense Multiple Access with Collision Avoidance- Acceso Multiple con Deteccion de Portadora y
Prevension 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 traves 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 transmision, 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 ingles Long-Term Evolution- Evolucion a Largo Plazo) es una tecnologıa
de radio plataforma que permitira a los operadores lograr incluso mayor rendimiento que HSPA+
(por sus siglas en ingles 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 moviles [1].
IEEE 802.16 (WiMAX)
La tecnologıa WiMAX (por sus siglas en ingles 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 transmision 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
11
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
estandar WiMAX sea muy competitivo son: flexibilidad, seguridad, alta eficiencia, facil instala-
cion, 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 inalambricas[1].
Requisitos WiFi Xbee LTE ZigBee WiMAX
Transmision de Datos mayor a 1Mbps Si No Si No Si
Distancias entre nodos mayor a 1Km No Si Si Si Si
Movilidad Si Si Si Si Si
Baja Latencia Si No Si No Si
Consumo reducido de energıa Si Si Si Si Si
Operacion en bandas no licenciadas Si Si No Si Condicionalmente
Un Drone esta instrumentado para medir la orientacion con un acelerometro, un giroscopio y
una brujula de tres ejes cada uno; y para medir la altitud con un sonar. Ademas, cuenta con dos
camaras, una frontal y una vertical.
Tiene activo un servidor telnet, que al recibir una conexion da acceso a una consola para con-
trolar el sistema operativo, por lo que es posible compilar codigo para ARM (por sus siglas en
ingles Advanced RISC Machine- Conjunto de instrucciones Reducidas Avanzadas de Maquina) en
una computadora y ejecutarlo en el Drone.
A este sistema embebido esta conectada, a traves del puerto serial, la tarjeta de navegacion
que recibe la informacion sin procesar de los sensores, y tambien el circuito encargado de controlar
la velocidad de los motores a traves de PDM (por sus siglas en ingles Pulse-Width Modulation-
Modulacion por Ancho de Pulsos).
12
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Usualmente la manera de usar el AR.Drone es mediante un dispositivo movil que tenga la aplica-
cion desarrollada por el fabricante para poder controlarlo. De esta manera se usa el controlador
PID (Proporcional Integral Derivativo) interno del Drone y la interfaz grafica 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 TECNICAS DEL AR.DRONE
El AR.Drone es un dispositivo volador de alta tecnologıa. Tecnicamente, es un cuadricoptero
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, tambien 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 basicas del
Drone incluyendo la estabilidad[2].
Los sensores que tiene instalados consisten en un acelerometro de 3 ejes, un giroscopio de un eje,
13
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
un giroscopio de 2 ejes, un sensor ultrasonico, una camara vertical y una camara horizontal [2].
El sensor ultrasonico mide la altitud del Drone que varıa de los 20-600cm. La camara vertical tiene
una resolucion de 176 x 144 pixeles correspondiente a una vista en angulos de 45 x 35 y proporciona
un video de 60 campos por segundo. Sin embargo, tiene una mayor resolucion horizontal, pero no
es usada durante el aterrizaje [2].
Este cuadricoptero puede ser controlado vıa Wi.Fi por un dispositivo externo como una compu-
tadora. Toda la comunicacion se realiza utilizando tres canales UDP. Un canal de comunicacion
permite enviar comandos al Drone. El dispositivo acepta los siguientes comandos con una fre-
cuencia de 30Hz: despegar, aterrizar, configuracion de lımites como velocidad y altura maxima,
calibracion de sensores, velocidad vertical, etc. El canal NavData transmite informacion acerca del
estado del Drone con una frecuencia de 30Hz. La informacion que proporciona es: posicion del
Drone en, altitud, nivel de baterıa, etc. Finalmente, el canal de Video transmite informacion de
las camaras [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 estan girando o se detienen. El Drone
detecta si cualquiera de las helices esta bloqueada y si una helice en movimiento encuentra un
obstaculo se detienen todos los motores inmediatamente. Este sistema de proteccion 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 automaticamente 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 medicion inercial miniaturizado. El software se proporciona con mediciones
de cabeceo, alabeo y gunada. Las mediciones inerciales se utilizan para un alabeo automatico,
estabilizacion del cabeceo y la guinada y la inclinacion asistida controlada. Un telemetro de ul-
trasonido proporciona con medidas de altitud la estabilizacion de altura automatica y control de
14
1.2 TECNOLOGIA DE UN DRONE WIFIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
velocidad vertical asistida. El AR.Drone 2.0 anade 3 DOF a la IMU con un magnetometro de 3
ejes. Tambien agrega un sensor de presion para permitir mediciones de altitud a cualquier altura
[3].
La principal diferencia entre AR.Drones 1.0 y 2.0 se encuentra en sus camaras. AR.Drone 2.0 uti-
liza una camara HD (720p - 30fps) frontal que se puede configurar para transmitir tanto imagenes
de 360p (640 * 360) y 720p (1280 * 720), mientras que el AR.Drone 1.0 usa una VGA (640 *
480), que solo puede transmitir imagenes QVGA (320 * 240)s. La camara inferior del AR.Drone
2,0 es QVGA (320 * 240) 60fps y la del AR.Drone 1.0 utiliza una camara QCIF (176 * 144) 60fps.
AR.Drone 2.0 tambien cuenta con un puerto USB, que se utiliza para guardar la grabacion 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 traves de 3 canales principales de comunicacion [3].
El control y la configuracion del Drone se realiza mediante el envıo Comandos AT en el puerto
UDP 5556. La latencia de transmision de los comandos de control es fundamental para la expe-
riencia del usuario. Estos comandos deben enviarse de forma periodica (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 informacion sobre el Drone (su estado interno como la posicion, velocidad, la velocidad de
rotacion 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 demostracion, y
200 veces por segundo en el modo completo (depuracion) [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 imagenes del AR.Drone 1.0 se decodifican por UVLC
(MJPEG - similares) o P264 (H.264 similares) mientras que las imagenes de un AR.Drone 2.0 se
decodifican por H264 (MPEG4.10 AVC) . Un cuarto canal de comunicacion, llamado puerto de
15
1.3 APLICACIONES DE LOS DRONES EN LA INDUSTRIAInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
control, puede ser establecido en el puerto TCP 5559 para transferir datos crıticos, por oposicion
de otros datos que se pueden perder sin efectos peligrosos. Se utiliza para recuperar los datos de
configuracion, y para reconocer informacion importante, como el envıo de informacion de configu-
racion [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 aplicacion de manejo del AR.Drone. Este programa es el que
contiene los controladores PID y el que se encarga de procesar la informacion de la tarjeta de nave-
gacion y utilizarla para los controladores y enviarla al dispositivo a traves de la conexion WiFi. La
aplicacion en el dispositivo, es el lado cliente y no realiza ningun procesamiento en cuanto al vuelo
del Drone, simplemente muestra la informacion obtenida desde el Drone y envıa instrucciones que
el controlador interpreta como angulos 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 anaden otras posibilidades de reconocimiento
y patrulla virtual, captura de imagenes 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 comunicacion entre estaciones terrestres para
el intercambio de informacion. Sus principales aplicaciones militares pueden dividirse en tres cate-
gorıas:
• Patrullaje y reconocimiento.
• Apoyo al combate.
• Combate.
16
1.3 APLICACIONES DE LOS DRONES EN LA INDUSTRIAInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
1.3.2. APLICACIONES CIVILES
En comparacion con los UAV de aplicacion 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 operacion.
Existe un amplio numero 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:
Investigacion cientıfica:
• Estudio de la atmosfera, la tierra y oceano.
• Estudio del agua.
• Cartografıa.
Apoyo a desastres:
• Deteccion de incendios.
• Tormentas y tornados.
• Busqueda y rescate en situacion de desastre.
Vigilancia civil:
• Supervision marıtima
• Vigilancia urbana
1.3.3. APLICACIONES DE ENTRETENIMIENTO
AR.FreeFlight
Esta aplicacion proporciona la funcion 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
17
1.3 APLICACIONES DE LOS DRONES EN LA INDUSTRIAInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
compatibilidad de pilotaje a traves de dispositivos iOS. Ahora tambien esta disponible en la tienda
Play Google para Android. Se permite a los pilotos grabar vıdeo o capturar imagenes desde las
camaras del Drone. Cuando los pilotos lanzados originalmente podıan controlar sus drones por la
inclinacion, su dispositivo y los datos del acelerometro a bordo se convirtieron en los controles de
vuelo. Esto ya no esta disponible para los usuarios de iOS. Los controles de la pantalla proporcio-
nan mas movimiento en el control de mando, y otras funciones que permiten a los pilotos realizar
acrobacias aereas, jugar y actualizar el firmware de su Drone. La aplicacion tambien 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 aplicacion 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 sera detectado cuando se cruza esta lınea y registra el
tiempo de vuelo entre estos 2 puntos. La aplicacion tambien se integra con Academy AR.Drone.
AR.Race 2 (ası como AR.Race ) es solamente disponible para dispositivos iOS [3].
AR.Rescue
Una aplicacion 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 clasificacion
mundial , los vıdeos y las imagenes pueden ser compartidos entre la comunidad [3].
18
1.4 APLICACIONES ANDROID PARA CONTROL DE DISPOSITIVOS WI-FIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
AR.Drone Academy
Esta aplicacion se utiliza en conjunto con otras aplicaciones. Se realiza un seguimiento automatico
de datos de vuelo como velocidad, la altitud y la duracion. Proporciona un mapa con la ubicacion
de otros usuarios AR.Drone, y sus datos de vuelo. Tambien permite a sus usuarios compartir los
datos de vuelo y las imagenes en diversas redes sociales [3].
1.4. APLICACIONES ANDROID PARA CONTROL DE DISPOSI-
TIVOS WI-FI
En los ultimos anos ha incrementado la utilizacion de medios tecnologicos como forma de co-
municacion, promocion, comercializacion y distribucion. Los telefonos moviles se han transformado
en dispositivos multimedia que permiten no solo comunicarse, sino tambien obtener informacion,
entretenimiento y realizar transacciones a traves de ellos.
Basado en los avances tecnologicos en comunicaciones moviles que actualmente permite la utiliza-
cion de aplicaciones, realizamos el diseno de una aplicacion que permita el control de un Drone.
1.4.1. ENTORNO DE DESARROLLO ANDROID
Android es un sistema operativo disenado en un principio para dispositivos moviles. Es una
plataforma de codigo abierto, es decir, que cualquier desarrollador puede crear y desarrollar apli-
caciones escritas con lenguaje C u otros lenguajes y compilarlas a codigo nativo de ARM (por
sus siglas en ingles Advanced RISC Machine- Conjunto de Instrucciones Reducidas Avanzadas de
Maquina).
• Es capaz de controlar diferentes elementos hardware del dispositivo: Bluetooth,Wi-Fi,
Camara, GPS, acelerometro, Infrarrojos, etc.
• Desarrollo de aplicaciones reutilizables y portables entre diferentes dispositivos.
• Soporta un elevado numero de formatos multimedia.
• Servicio de GSM (por sus siglas en ingles Global System for Mobile communications-
19
1.4 APLICACIONES ANDROID PARA CONTROL DE DISPOSITIVOS WI-FIInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Sistema Global para comunicaciones Moviles).
Dentro de las principales ventajas del desarrollo de aplicaciones en dispositivos moviles basados
en Android son las siguientes:
• Amplia compatibilidad. Es decir se pueden instalar en la mayorıa de dispositivos moviles
(telefonos 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 aplicacion.
• Librerıas y componentes reutilizables para todo tipo de aplicaciones.
• Sistema operativo multitarea. Es un sistema capaz de gestionar varias aplicaciones abier-
tas simultaneamente.
1.4.2. APLICACIONES DE SEGURIDAD EN ANDROID
En la actualidad existe un gran numero de aplicaciones moviles que se dedican al control de
dispositivos de seguridad principalmente camaras 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 camaras de
video disponibles en Google Play:
20
1.5 TIPOS DE UAVInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Tabla 2: Propiedades de algunas aplicaciones de seguridad.
AplicacionVersion
Android
Formato
Video
Protocolos
UsadosValoracion General Tamano Precio
TinyCam 2.3 MP4 HTTP,FTP 4.5 9.3Mb $59.95
Ip
WebCam
Depende
del
dispositivo
WebM,MOV
o MPEG4N/E 4.5 Depende $51.99
Motion
Detector
Pro
2.2+ N/E N/E 3.9 766Kb Gratis
Blue Iris 2.3+ N/E N/E 4 902Kb $42.97
Foscam
Pro2.2+ N/E N/E 1.00 2Mb $65
AR.FreeFlight 2.2+ MP4,HD N/E 4.0 47.9Mb Gratis
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 ingles Local Area Network- Red de Area Local) es decir que tanto el
dispositivo movil como el dispositivo de seguridad controlado no esten separados por una distancia
mayor a 200m, siendo esta la principal desventaja frente al desarrollo de la aplicacion de nuestro
proyecto.
1.5. TIPOS DE UAV
En la actualidad, gracias al desarrollo que se ha presentado en el diseno y las aplicaciones de
los vehıculos aereos 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.
21
1.5 TIPOS DE UAVInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
La principal clasificacion de los vehıculos aereos 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 camara IP (por sus siglas en ingles Internet
Protocol-Protocolo de Internet) o que incluya una camara 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 kilometros de los aeropuertos, ası como a 3.7 kilo-
metros de los aerodromos no controlados, y a 900 metros de los helipuertos.
o Aquellos que pesen menos de 2 kilogramos y se usen solo para fines recreativos,
no requieren la autorizacion de la Direccion general adjunta de Transporte y Con-
trol aeronautico, 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
22
1.5 TIPOS DE UAVInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
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 comparacion de las caracterısticas principales de los modelos men-
cionados.
23
1.5 TIPOS DE UAVInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Tabla 3: Caracterısticas de algunos modelos de UAV considerados.
Modelo DimensionesTecnologıa
de Control
Aplicaciones
ExtrasAltura de Vuelo Precio
Walkera
QRY100
22,2x25,2x9cm
350gr
Wi-Fi a
2.4GHz
Con
camara y
compatible
con
tabletas
IOS,
Android
110 metros $3000(Agotado)
A.R.Drone
2.0
45x29 cm,
366gr
Wi-Fi a
2.4GHz
Camara
frontal y
verti-
cal,GPS,
compatible
con
tabletas
IOS,
Android y
Windows
250 metros $5600
Bebop
Drone
28x32x3,
400gr
Wi-Fi con
bandas 2.4
y 5 GHz
Camara
HD,GPS,cmpatible
con
tabletas
IOS,
Android
250 metros $8600
24
1.5 TIPOS DE UAVInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Tomando en cuenta las caracterısticas basicas anteriores, se selecciono el UAV A.R. Drone
2.0 Elite Edition, considerando que tiene ventajas sobre el Drone Bebop, debido a que es mas
economico y cuenta con dos camaras lo que incrementa la captura de imagenes 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 mas de desarrollo.
25
2 APLICACION ANDROIDInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
CAPITULO
2. APLICACION ANDROID
26
2.1 INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
2.1. INTRODUCCION
La aplicacion desarrollada en plataforma Android consiste en hacer que el Drone realice sus
funciones basicas controladas mediante un dispositivo movil ubicado en diferente area geografica.
En otras palabras, lograremos el control del dispositivo a traves de un enlace de tres aplicaciones:
• La aplicacion del dispositivo movil remoto.
• La aplicacion para pc que tendra la funcion de interfaz y servidor entre el dispositivo
movil y el JDK (por sus siglas en ingles Java Development Kit- Kit de desarrollo Java).
• La aplicacion del Drone proporcionada por el JDK.
La comunicacion de las aplicaciones se muestra en la figura 3, figura 4 y figura 5.
Figura 3: Diagrama de flujo de la aplicacion cliente
27
2.1 INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 4: Diagrama de flujo de la aplicacion servidor
28
2.1 INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 5: Diagrama de flujo de la aplicacion del Drone
29
2.2 Kit de Desarrollo de Software-SDKInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Hay que tener en cuenta que cualquier proyecto personal que pueda realizarse con el SDK
requiere de la gestion de hilos para poder enlazar la aplicacion desarrollada. Dicha gestion esta 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 refiriendonos al diagrama a bloques, se
muestran a continuacion el desarrollo de las aplicaciones cliente-servidor que permiten el control
del Drone a traves 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 ingles Application Programming Interface-Interfaz
de Programacion de Aplicaciones) necesarios para compilar los programas.
30
2.3 PUNTO DE COMUNICACION SOCKETInstituto Politecnico Nacional
La Tecnica al Servicio 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 configuracion 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 codigo especıfico del Drone
• VP SDK: Librerıas de proposito general.
Dentro de las carpetas mencionadas podemos encontrar los ficheros principales:
•Ardrone tool: Inicializa comunicacion con el Drone.
•AT: Contiene las funciones para controlar el Drone a traves de AT Commands.
•Navdata: Recibe y decodifica los datos de informacion del estado del Drone.
2.3. PUNTO DE COMUNICACION SOCKET
Un socket es un punto de comunicacion por el cual un proceso puede emitir o recibir informacion.
Los sockets son capaces de utilizar el protocolo TCP y UDP. Utilizan una serie de instrucciones
especıficas para establecer el punto de comunicacion, conectandose a una maquina remota en un
puerto asignado que este disponible.
2.4. APLICACION CLIENTE
La aplicacion cliente que hemos hecho para Android se conecta mediante un socket usando el
protocolo TCP a una aplicacion servidor. La aplicacion permite enviar datos al servidor y desde
este se puede dar uso de los datos.
31
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
El diagrama de la comunicacion entre el cliente y un servidor es mostrado en la figura 7.
Figura 7: Diragrama de conexion entre el cliente y el servidor
Establecemos la conexion, el servidor espera a que el cliente se conecte, una vez conectados, se
hace una peticion, obtiene una respuesta y la comunicacion se mantiene hasta que la sesion cierra.
En nuestro caso el cliente sera una app Android que se conectara a internet (ya sea con WiFi o
conexion de datos moviles), estableciendo la conexion con una computadora con conexion a inter-
net donde correra la aplicacion servidor, como se ilustra en la figura 8.
32
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 8: Diagrama de la conexion entre cliente y servido a traves de internet.
2.4.1. CODIGO DEL CLIENTE-INTERFAZ GRAFICA
Desarrollamos una interfaz grafica 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:
• Boton Conectar: Permite establecer la comunicacion con la aplicacion servidor.
• Boton Enviar: Permite el envıo de mensajes de texto.
• 8 Botones de comando utilizados para el movimiento del Drone en diferentes direcciones.
• Boton CV/CH: Utilizado para seleccionar la camara del Drone con la que se desea rea-
lizar la grabacion del video.
• Boton Desconectar: Permite cerrar la comunicacion con la aplicacion servidor.
A continuacion se describe el codigo para generar la interfaz.
33
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
1
2 <LinearLayout xmlns : android=” http :// 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 ap l i c a c i on nombrada por java como
4 l ayout p r i n c i p a l .
5
6 android : id=”@+id / gra layout ”
7 android : layout width=” f i l l p a r e n t ”
8 android : l a y o u t h e i g 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 rav i ty=” cente 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 |
f i l l v e r t i c a l ”
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 ayou t secundar io en donde se co loca e l l o go d e l p o l i t e c n i c o y e l
nombre de l a ap l i cac ion , a s i como e l nombre de l a e s cue l a .
15 <LinearLayout
16
17 android : layout width=” match parent ”
18 android : l a y o u t h e i g h t=” wrap content ”
19 android : backgroundTint=”#CCCCCC”
20 android : g rav i ty=” cente 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 s cue l a
23 <TextView
24 android : id=”@+id / textView2 ”
25 android : layout width=” match parent ”
26 android : l a y o u t h e i g h t=” match parent ”
27 android : background=”#CCCCCC”
28 android : backgroundTint=”#CCCCCC”
29 android : g rav i ty=” c e n t e r h o r i z o n t a l ”
30 android : t ex t=”ESIME ZACATENCO”
34
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
31 android : textAppearance=”? android : a t t r /textAppearanceMedium”
32 android : t extCo lor=”#004400” />
33 </LinearLayout>
34
35 <LinearLayout
36
37 android : l a y o u t h e i g h t=”96dp” >
38
39 <ImageView
40 android : id=”@+id /imageView1”
41 android : layout width=”70dp”
42 android : l a y o u t h e i g h t=” match parent ”
43 android : l a y o u t g r a v i t y=” cente r | c e n t e r h o r i z o n t a l ”
44 android : l ayout we ight=” 0 .03 ”
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 ap l i c a c i on ARDrone−IPN
47 <TextView
48 android : id=”@+id / textView1 ”
49 android : layout width=” wrap content ”
50 android : l a y o u t h e i g h t=” match parent ”
51 android : l ayout we ight=” 0 .06 ”
52 android : g rav i ty=” cente r ”
53 android : t ex t=”ARDrone−IPN”
54 android : t extCo lor=”#FFFFFF”
55 android : t e x t S i z e=”18 sp” />
56 </LinearLayout>
57
58 //Se crea un l ayou t secundar io en donde se co locan dos cuadros de t e x t o
ho r i z on t a l e s , uno en donde se ingre sa l a d i r e c c i on IP y e l o t ro e l puer to de
comunicacion .
59 <LinearLayout
60 android : id=”@+id / ip l ayout ”
35
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
61 android : layout width=” f i l l p a r e n t ”
62 android : l a y o u t h e i g h t=” wrap content ”
63 android : background=”#CCCCCC”
64 android : backgroundTint=”#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=”@+id / t x t i p ”
69 android : layout width=” wrap content ”
70 android : l a y o u t h e i g h t=” wrap content ”
71 android : backgroundTint=”#CCCCCC”
72 android : t ex t=”IP : ”
73 android : t extCo lor=”#000000”
74 android : t e x t S i z e=”15 pt” />
75
76 <EditText
77 android : id=”@+id / ip input ”
78 android : layout width=” f i l l p a r e n t ”
79 android : l a y o u t h e i g h t=” wrap content ” />
80 </LinearLayout>
81
82 <LinearLayout
83 android : id=”@+id / por t l ayout ”
84 android : layout width=” f i l l p a r e n t ”
85 android : l a y o u t h e i g 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=”@+id / tx tpor t ”
91 android : layout width=” wrap content ”
92 android : l a y o u t h e i g h t=” wrap content ”
36
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
93 android : t ex t=” Puerto : ”
94 android : t extCo lor=”#000000”
95 android : t e x t S i z e=”15 pt” />
96
97 <EditText
98 android : id=”@+id / port input ”
99 android : layout width=” f i l l p a r e n t ”
100 android : l a y o u t h e i g h t=” wrap content ” />
101 </LinearLayout>
102
103 //Se crea un l ayou t secundar io en donde se co locan un boton que t i e n e un mensaje
de conectar , a s como una animacion de LED’ s que cambia de co l o r ro jo a verde
segun sea e l e s tado de conexion ; es dec ir , se observara un LED ro jo cuando no
haya conexion y un LED verde cuando l a conexion sea e x i t o s a .
104
105 <LinearLayout
106 android : id=”@+id / conneyt lay ”
107 android : layout width=” f i l l p a r e n t ”
108 android : l a y o u t h e i g h t=”50dp”
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=”@+id / btcnt ”
114 android : layout width=” wrap content ”
115 android : l a y o u t h e i g h t=” f i l l p a r e n t ”
116 android : g rav i ty=” c e n t e r v e r t i c a l ”
117 android : t ex t=” Conectar ” />
118
119 //Se crea un cuadro de t e x t o que muestra un mensaje de En espera cuando se
pres iona e l boton de conectar y un mensaje de Conexion Ok cuando l a
comunicacion con e l s e r v i d o r se r e a l i z a ex i tosamente .
37
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
120 <TextView
121 android : id=”@+id / t x t s t a t u s ”
122 android : layout width=” wrap content ”
123 android : l a y o u t h e i g h t=” wrap content ”
124 android : g rav i ty=” cente r ”
125 android : t ex t=” . . En espera . . ”
126 android : t extCo lor=”#FFFFFF”
127 android : t e x t S i z e=”14 pt” />
128 //Animacion de LED’ s .
129 <ImageView
130 android : id=”@+id / l e d s ”
131 android : layout width=” f i l l p a r e n t ”
132 android : l a y o u t h e i g h t=” wrap content ”
133 android : g rav i ty=” f i l l ”
134 android : s r c=”@drawable/ o f f ” >
135 </ImageView>
136 </LinearLayout>
137
138 <LinearLayout
139
140 //Se crea o tro l ayou t secundar io que cont i ene un cuadro de t e x t o que d i ce Enviar
mensaje : , o t ro cuadro de t e x t o que por d e f a u l t t i e n e un mensaje de Hola , en
donde se puede ing r e sa r cua l q u i e r o t ro mensaje y un boton que d i ce Enviar .
141 android : id=”@+id / l a y o u t t x t ”
142 android : layout width=” f i l l p a r e n t ”
143 android : l a y o u t h e i g 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=”@+id / t x t l b l ”
149 android : layout width=” f i l l p a r e n t ”
38
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
150 android : l a y o u t h e i g h t=” wrap content ”
151 android : t ex t=” Enviar mensaje : ”
152 android : t extCo lor=”#FFFFFF”
153 android : t e x t S i z e=”12dp” />
154
155 <LinearLayout
156 android : id=”@+id / txtbox ”
157 android : layout width=” f i l l p a r e n t ”
158 android : l a y o u t h e i g h t=”41dp”
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=”@+id / i n p u t t x t ”
164 android : layout width=”228dp”
165 android : l a y o u t h e i g h t=”32dp”
166 android : t ex t=”Hola”
167 android : t e x t S i z e=”12dp” />
168
169 <Button
170 android : id=”@+id / sndtxt ”
171 android : layout width=”0dp”
172 android : l a y o u t h e i g h t=” wrap content ”
173 android : layout marginBottom=”8dp”
174 android : l ayout we ight=”1”
175 android : t ex t=” Enviar ” />
176 </LinearLayout>
177 </LinearLayout>
178 //Se crea 2 l a you t s secundar ios que cont ienen 9 botones con l o s que se tendra e l
c on t r o l d e l Drone .
179 <LinearLayout
180 android : id=”@+id / bts ”
39
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
181 android : layout width=” f i l l p a r e n t ”
182 android : l a y o u t h e i g 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 e v a a l Drone 1 metro d e l sue l o .
186 <Button
187 android : id=”@+id / bt1 ”
188 android : layout width=” wrap content ”
189 android : l a y o u t h e i g h t=” f i l l p a r e n t ”
190 android : t ex t=”Take Off ” />
191
192 //Boton 2 con l a leyenda Forward que mueve a l Drone 1 metro hacia de l an t e de l a
po s i c i on an t e r i o r .
193 <Button
194 android : id=”@+id / bt2 ”
195 android : layout width=” wrap content ”
196 android : l a y o u t h e i g h t=” f i l l p a r e n t ”
197 android : t ex t=”Forward” />
198
199 //Boton 3 con l a leyenda Backward que mueve a l Drone 1 metro hacia a t ra s de l a
po s i c i on an t e r i o r .
200 <Button
201 android : id=”@+id / bt3 ”
202 android : layout width=”0dp”
203 android : l a y o u t h e i g h t=” f i l l p a r e n t ”
204 android : l ayout we ight=”1”
205 android : t ex t=”Backward” />
206
207 //Boton 4 con l a leyenda Landing que desc i ende a l Drone a l sue l o .
208 <Button
209 android : id=”@+id / bt4 ”
210 android : layout width=”0dp”
40
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
211 android : l a y o u t h e i g h t=” f i l l p a r e n t ”
212 android : l ayout we ight=”1”
213 android : t ex t=”Landing” />
214 </LinearLayout>
215
216 <LinearLayout
217 android : layout width=” match parent ”
218 android : l a y o u t h e i g 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 <LinearLayout
222 android : layout width=” match parent ”
223 android : l a y o u t h e i g 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 <LinearLayout
227 android : layout width=” match parent ”
228 android : l a y o u t h e i g h t=” wrap content ”
229 android : l ayout we ight=” 2 .49 ” >
230
231 //Boton 5 con l a leyenda Le f t que mueve a l Drone 1 metro a l a i z q u i e r d a de su
pos i c i on o r i g i n a l .
232 <Button
233 android : id=”@+id / button1 ”
234 android : layout width=” wrap content ”
235 android : l a y o u t h e i g h t=” wrap content ”
236 android : l ayout we ight=” 0 .07 ”
237 android : t ex t=” Le f t ” />
238
239 //Boton 6 con l a leyenda Right que mueve a l Drone 1 metro a l a derecha de su
pos i c i on o r i g i n a l .
240 <Button
41
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
241 android : id=”@+id / button2 ”
242 android : layout width=” wrap content ”
243 android : l a y o u t h e i g h t=” wrap content ”
244 android : l ayout we ight=” 0 .13 ”
245 android : t ex t=” Right ” />
246
247 //Boton 7 con l a leyenda Up que e l e v a a l Drone 1 metro de su pos i c i on o r i g i n a l .
248 <Button
249 android : id=”@+id / button3 ”
250 android : layout width=” wrap content ”
251 android : l a y o u t h e i g h t=” wrap content ”
252 android : l ayout we ight=” 0 .09 ”
253 android : t ex t=”Up” />
254
255 //Boton 8 con l a leyenda Down que desc i ende a l Drone 1 metro de su pos i c i on
o r i g i n a l .
256 <Button
257 android : id=”@+id / button4 ”
258 android : layout width=” wrap content ”
259 android : l a y o u t h e i g h t=” wrap content ”
260 android : l ayout we ight=” 0 .09 ”
261 android : t ex t=”Down” />
262
263 //Boton 7 con l a leyenda CV/CH se l e c c i ona l a camara de l Drone ac t i vada
264 <Button
265 android : id=”@+id / button5 ”
266 android : layout width=” wrap content ”
267 android : l a y o u t h e i g h t=” wrap content ”
268 android : t ex t=”CV/CH” />
269 </LinearLayout>
270
271 </LinearLayout>
42
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
272
273 </LinearLayout>
274
275 <LinearLayout
276 android : layout width=” match parent ”
277 android : l a y o u t h e i g 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 u l t imo l ayou t secundar io que cont i ene un boton con l a leyenda de
Desconectar .
283 <LinearLayout
284 android : layout width=” match parent ”
285 android : l a y o u t h e i g 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=”@+id / b t d i s c ”
290 android : layout width=” f i l l p a r e n t ”
291 android : l a y o u t h e i g h t=” wrap content ”
292 android : t ex t=” Desconectar ” />
293
294 </LinearLayout>
295
296 </LinearLayout>
2.4.2. CODIGO DEL CLIENTE-COMANDOS DE LA INTERFAZ GRAFICA
Para poder usar el socket realizado en la interfaz grafica usamos la clase “Socket”, ademas la
direccion IP del server (direccion IP estatica) y el puerto TCP que se emplea para la comunicacion,
se ha definido al puerto 5500 para la conexion como se muestra en el siguiente codigo.
43
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
1 package t e s t . S o ck e t t e s t ;
2
3 /∗Se importan l a s l i b r e r i a s co r r e spond i en 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 socke t ∗/
4 import java . i o . IOException ;
5 import java . i o . ObjectInputStream ;
6 import java . i o . ObjectOutputStream ;
7 import java . i o . StreamCorruptedException ;
8 import java . net . Socket ;
9
10 import android . app . Ac t i v i ty ;
11 import android . g raph i c 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 . OnCl ickListener ;
16 import android . widget . Button ;
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 S o c k e t t e s t
22 public class So ck e t t e s t extends Act iv i ty {
23
24
25 //Dec larac ion de v a r i a b l e s u t i l i z a d a s
26 private Button btconect , b td i s conect , btsndtxt , btnizq , btnder , bt1 , bt2 , bt3 , bt4 ,
bt5 , bt6 , bt7 , bt8 , bt9 ;
27
28 private TextView t x t s t a t u s ;
29 private EditText ip input , port input , i n p u t t x t ;
30 private ImageView l e d s ;
44
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
31 Socket miCl iente ;
32
33 //Prueba de conexion con l a ap l i c a c i on s e r v i d o r
34 private boolean connected = fa l se ;
35 ObjectOutputStream oos ;
36 ObjectInputStream o i s ;
37 Mensaje data mdata ;
38
39 @Override
40 public void onCreate ( Bundle savedIns tanceState ) {
41 super . onCreate ( savedIns tanceState ) ;
42 setContentView (R. layout . main ) ;
43
44 //Se guarda l a animacion para l o s Leds y se dec laran 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 cor re spond i en t e s
45
46 l e d s = ( ImageView ) findViewById (R. id . l e d s ) ;
47
48 i p input = ( EditText ) findViewById (R. id . ip input ) ;
49 port input = ( EditText ) findViewById (R. id . port input ) ;
50 i n p u t t x t = ( EditText ) findViewById (R. id . i n p u t t x t ) ;
51
52 btconect = ( Button ) findViewById (R. id . btcnt ) ;
53 btd i s c onec t = ( Button ) findViewById (R. id . b t d i s c ) ;
54 btsndtxt = ( Button ) findViewById (R. id . sndtxt ) ;
55
56 bt1 = ( Button ) findViewById (R. id . bt1 ) ;
57 bt2 = ( Button ) findViewById (R. id . bt2 ) ;
58 bt3 = ( Button ) findViewById (R. id . bt3 ) ;
59 bt4 = ( Button ) findViewById (R. id . bt4 ) ;
60 bt5 = ( Button ) findViewById (R. id . bt5 ) ;
61 bt6 = ( Button ) findViewById (R. id . bt6 ) ;
45
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
62 bt7 = ( Button ) findViewById (R. id . bt7 ) ;
63 bt8 = ( Button ) findViewById (R. id . bt8 ) ;
64 bt9 = ( Button ) findViewById (R. id . bt9 ) ;
65
66
67 t x t s t a t u s = ( TextView ) findViewById (R. id . t x t s t a t u s ) ;
68 //Al pres ionar en conectar
69 btconect . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
70 @Override
71
72 public void onCl ick ( View v ) {
73 //Nos conectamos y obtenemos e l e s tado de l a conexion
74 boolean c one c t s t a t u s = Connect ( ) ;
75
76 // Si nos pudimos conectar aparecera e l mensaje de Conexion OK
77 i f ( c one c t s t a t u 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 {// error a l conec tar se
83 Change leds ( fa l se ) ; //camiamos img a ro jo
84 //mostramos msg de error
85 S e t t x t s t a t u s ( ” Error . . ” , 0) ;
86 }
87 }
88 }) ;
89
90 //Al pres ionar en desconec tar manda un mensaje de Desconexion e x i t o s a
91 btd i s c onec t . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
92 @Override
93 public void onCl ick ( View v ) {
46
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
94 Disconnect ( ) ;
95 }
96 }) ;
97
98 btsndtxt . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
99 @Override
100 public void onCl ick ( View v ) {
101 Snd txt Msg ( i n p u t t x t . getText ( ) . t oS t r i ng ( ) ) ;
102 }
103 }) ;
104
105
106 //Botones de Accion
107 //Por cada boton se programa para que env ie un comando a l s e r v i d o r
108
109 bt1 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
110 @Override
111 public void onCl ick ( View v ) {
112 Snd Action (1 ) ;
113 }
114 }) ;
115
116 bt2 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
117 @Override
118 public void onCl ick ( View v ) {
119 Snd Action (2 ) ;
120 }
121 }) ;
122
123 bt3 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
124 @Override
125 public void onCl ick ( View v ) {
47
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
126 Snd Action (3 ) ;
127 }
128 }) ;
129
130 bt4 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
131 @Override
132 public void onCl ick ( View v ) {
133 Snd Action (4 ) ;
134 }
135
136 bt5 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
137 @Override
138 public void onCl ick ( View v ) {
139 Snd Action (5 ) ;
140 }
141 }) ;
142
143 bt6 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
144 @Override
145 public void onCl ick ( View v ) {
146 Snd Action (6 ) ;
147 }
148 }) ;
149
150 bt7 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
151 @Override
152 public void onCl ick ( View v ) {
153 Snd Action (7 ) ;
154 }
155 }) ;
156
157 bt8 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
48
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
158 @Override
159 public void onCl ick ( View v ) {
160 Snd Action (8 ) ;
161 }
162
163 bt9 . s e tOnCl i ckL i s t ene r (new OnCl ickListener ( ) {
164 @Override
165 public void onCl ick ( View v ) {
166 Snd Action (9 ) ;
167 }
168 }) ;
169 /∗ ∗∗∗∗∗∗∗∗∗∗ ∗/
170 }
171 //cambia e l imageview segun es tado de conexion
172 public void Change leds ( boolean s t a t u s ) {
173 i f ( s t a t u s )
174 l e d s . setImageResource (R. drawable . on ) ;
175 else
176 l e d s . setImageResource (R. drawable . o f f ) ;
177 }
178
179 /∗Cambiamos t e x t o de t x t s t a t u s segun parametro f l a g s t a t u s
180 ∗ f l a g s t a t u s 0 error , 1 ok∗/
181 public void S e t t x t s t a t u s ( S t r ing txt , int f l a g s t a t u s ) {
182 // cambie l c o l o r
183 i f ( f l a g s t a t u s == 0) {
184 t x t s t a t u s . setTextColor ( Color .RED) ;
185 } else {
186 t x t s t a t u s . setTextColor ( Color .GREEN) ;
187 }
188 t x t s t a t u s . setText ( txt ) ;
189 }
49
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
190
191 //Conectamos
192 public boolean Connect ( ) {
193 //Obtengo datos ingre sados en campos
194 St r ing IP = ip input . getText ( ) . t oS t r i ng ( ) ;
195 int PORT = I n t e g e r . valueOf ( port input . getText ( ) . t oS t r i ng ( ) ) ;
196
197 try {//creamos s o c k e t s con l o s v a l o r e s an t e r i o r e s
198 miCl iente = new Socket ( IP , PORT) ;
199 // s i nos conectamos
200 i f ( miCl iente . i sConnected ( ) == true ) {
201 return true ;
202 } else {
203 return fa l se ;
204 }
205 } catch ( Exception e ) {
206 // Si hubo algun error mostrmos error
207 t x t s t a t u s . setTextColor ( Color .RED) ;
208 t x t s t a t u s . setText ( ” ! ! ! ERROR ! ! ! ” ) ;
209 Log . e ( ” Error connect ( ) ” , ”” + e ) ;
210 return fa l se ;
211 }
212 }
213
214 //Metodo de desconexion
215 public void Disconnect ( ) {
216 try {
217 //Prepramos mensaje de desconexion
218 Mensaje data msgact = new Mensaje data ( ) ;
219 msgact . t exto = ”” ;
220 msgact . Action = −1;
221 msgact . l a s t msg = true ;
50
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
222 // avisamos a l s e r v e r que c i e r r e e l cana l
223 boolean v a l a c c = Snd Msg ( msgact ) ;
224
225 i f ( ! v a l a c c ) {//hubo un error
226 S e t t x t s t a t u s ( ” Error ” , 0) ;
227 Change leds ( fa l se ) ;
228 Log . e ( ” Disconnect ( ) −> ” , ” !ERROR! ” ) ;
229
230 } else {//ok nos desconectamos
231 S e t t x t s t a t u s ( ” Desconectado ” , 0) ;
232 //camibmos l e d a ro jo
233 Change leds ( fa l se ) ;
234 Log . e ( ” Disconnect ( ) −> ” , ” ! ok ! ” ) ;
235 // cerramos sock e t
236 miCl iente . c l o s e ( ) ;
237 }
238 } catch ( IOException e ) {
239 // TODO Auto−generated catch b l o c k
240 e . pr intStackTrace ( ) ;
241 }
242
243 i f ( ! miCl iente . i sConnected ( ) )
244 Change leds ( fa l se ) ;
245 }
246
247 //Enviamos mensaje de accion segun e l boton q presionamos
248 public void Snd Action ( int bt ) {
249 Mensaje data msgact = new Mensaje data ( ) ;
250 //no hay t e x t o
251 msgact . t exto = ”” ;
252 // se t eo en e l v a l o r ac t i on e l numero de accion
253 msgact . Action = bt ;
51
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
254 //no es e l u l t imo msg
255 msgact . l a s t msg = fa l se ;
256 //mando msg
257 boolean v a l a c c = Snd Msg ( msgact ) ;
258 // error a l env iar
259 i f ( ! v a l a c c ) {
260 S e t t x t s t a t u s ( ” Error ” , 0) ;
261 Change leds ( fa l se ) ;
262 Log . e ( ” Snd Action ( ) −> ” , ” !ERROR! ” ) ;
263
264 }
265
266 i f ( ! miCl iente . i sConnected ( ) )
267 Change leds ( fa l se ) ;
268 }
269
270 //Envio mensaje de t e x t o
271 public void Snd txt Msg ( St r ing txt ) {
272
273 Mensaje data mensaje = new Mensaje data ( ) ;
274 // se t eo en t e x t o e l parametro r e c i b i d o por t x t
275 mensaje . t exto = txt ;
276 // ac t i on −1 no es mensaje de accion
277 mensaje . Action = −1;
278 //no es e l u l t imo msg
279 mensaje . l a s t msg = fa l se ;
280 //mando msg
281 boolean v a l a c c = Snd Msg ( mensaje ) ;
282 // error a l env iar
283 i f ( ! v a l a c c ) {
284 S e t t x t s t a t u s ( ” Error ” , 0) ;
285 Change leds ( fa l se ) ;
52
2.4 APLICACION CLIENTEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
286 Log . e ( ” Snd txt Msg ( ) −> ” , ” !ERROR! ” ) ;
287 }
288 i f ( ! miCl iente . i sConnected ( ) )
289 Change leds ( fa l se ) ;
290 }
291
292 /∗Metodo para env iar mensaje por socke t
293 ∗ r e c i b e como parmetro un ob j e t o Mensaje data
294 ∗ re torna boo lean 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 ( miCl iente . getOutputStream ( ) ) ;
301 // creo o b j e t o mensaje
302 Mensaje data mensaje = new Mensaje data ( ) ;
303
304 i f ( miCl iente . i sConnected ( ) ) // s i l a conexion cont inua
305 {
306 // l o asoc io a l mensaje r e c i b i d o
307 mensaje = msg ;
308 //Envio mensaje por f l u j o
309 oos . wr i teObject ( mensaje ) ;
310 // envio ok
311 return true ;
312
313 } else {//en caso de que no h a l l a conexion a l env iar e l msg
314 S e t t x t s t a t u s ( ” Error . . . ” , 0) ; // error
315 return fa l se ;
316 }
317
53
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
318 } catch ( IOException e ) {// hubo algun error
319 Log . e ( ”Snd Msg ( ) ERROR −> ” , ”” + e ) ;
320
321 return fa l se ;
322 }
323 }
324 }
2.5. APLICACION SERVIDOR
Una vez realizada la aplicacion del cliente es necesario elegir la aplicacion del servidor que
recibira los datos y proveera de conexion con el cliente a traves de Internet, utilizando un puerto
de TCP con el Drone utilizando Wi-Fi a traves 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 informacion sobre el estado del AR.Drone esta 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 imagenes que recibe el
dispositivo pueden decodificarse usando el Codec incluido en el SDK.
• Los Datos crıticos van al puerto de Control TCP 5559.
2.5.1. CODIGO DEL SERVIDOR
Como funcion principal del servidor permite la comunicacion entre la aplicacion cliente y la
aplicacion propia del Drone, en otras palabras sirve como interfaz de control; es decir, el servidor
recibe la informacion enviada a traves del cliente para traducirla en comandos de control que son
54
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
enviados al Drone.
Esto se logra con el siguiente codigo:
1 package t e s t . S o ck e t t e s t ;
2
3 //Se importan l a s l i b r e r i a s co r r e spond i en t e s para un socke t en Java
4
5 import java . i o . IOException ;
6 import java . i o . ObjectInputStream ;
7 import java . i o . ObjectOutputStream ;
8 import java . net . ServerSocket ;
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 . T u t o r i a l A t t i t u d e L i s t e 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 . Tuto r i a lV ideoL i s t ene 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 . except ion . ARDroneException ;
19 import de . yadrone . base . except ion . IExcept i onL i s t ene r ;
20
21 //Se crea l a c l a s e Serv idor
22 public class Server {
23 Socket skC l i en t e ;
24 ServerSocket skServ idor ;
25 St r ing datarece ived , subst r ing1 , subs t r i ng2 ;
26 f ina l int PUERTO = 5500 ; // Puerto que u t i l i z a r a e l s e r v i d 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 r ing I P c l i e n t ;
29 Mensaje data mdata = null ;
55
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
30 ObjectOutputStream oos = null ;
31 St r ing TimeStamp ;
32
33 //Creamos e l cons t ruc to r d e l o b j e t o Serv idor 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 Server ( ) {
35
36 try {
37 //Se a c t i v a e l puer to determinado para que e l s e r v i d o r pueda r e c i b i r informacion .
38 System . out . p r i n t l n ( ”∗∗∗∗∗∗∗∗∗∗∗∗ SERVER ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗” ) ;
39 // creamos s e r v e r socke t
40 skServ idor = new ServerSocket (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 ( ) . t oS t r i ng ( ) ;
45
46 try {
47 // Creamos sock e t para manejar conexion con c l i e n t e
48 skC l i en t e = skServ idor . accept ( ) ;
49
50
51 // Esperamos a l c l i e n t e para l a comunicacion
52 // Una vez que se conecte obtenemos l a d i r e c c i on IP
53 I P c l i e n t = skC l i en t e . get InetAddress ( ) . t oS t r i ng ( ) ;
54 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Conectado a l c l i e n t e ”
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 puer to TCP
59 ObjectInputStream o i s = new ObjectInputStream (
60 skC l i en t e . getInputStream ( ) ) ;
56
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
61
62 //Cremos un Objeto con l o r e c i b i d o d e l c l i e n t e
63 Object aux = o i s . readObject ( ) ; // leemos o b j e t o
64
65 // s i e l o b j e t o es una in s t anc i a de Mensaje data
66 i f ( aux instanceof Mensaje data ) {
67 mdata = ( Mensaje data ) aux ;
68
69 // Analizamos e l mensaje r e c i b i d o
70 // Si no es e l mensaje FINAL
71 i f ( ! mdata . l a s t msg ) {
72
73 // Es un mensaje de Accion
74 i f ( mdata . Action != −1) {
75 // exec accion
76 Exec ( mdata . Action ) ;
77 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] ”
78 + ” Ejecutar Accion ” + mdata . Action + ” [ ” + I P c l i e n t + ” ] ” ) ;
79 } else {
80
81 // No es un mensaje de accion entonces es de t e x t o y se imprime en l a l i n e a de
conso la
82
83 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] ”
+ ”Mensaje de [ ” + I P c l i e n t + ”]−−> ”
+ mdata . t exto ) ;
84 }
85 } else {// cerramos sock e t
86 skC l i en t e . 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 detec ted Conexion cerrada ,
g r a c i a s vuelva pronto ” ) ;
57
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
89 break ;
90 }
91 } else {
92 // Si no es d e l t i p o esperado , se marca error
93 System . e r r . p r i n t l n ( ”Mensaje no esperado ” ) ;
94 }
95 }
96 } catch ( Exception e ) {
97 e . pr intStackTrace ( ) ;
98 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Error ” ) ;
99 }
100 } catch ( Exception e ) {
101 e . pr intStackTrace ( ) ;
102 System . out . p r i n t l n ( ” [ ” + TimeStamp + ” ] Error ” ) ;
103 }
104 }
105 //En base a l cod igo de accion r e c i b i d o rea l i za remos una accion
106 public void Exec ( int action num ) {
107 St r ing ACTNUM = null ;
108
109
110 try {
111 switch ( action num ) {
112 case 1 : {
113 IARDrone drone = null ;
114 try
115 {
116 // Tutor i a l Sec t ion 1
117 drone = new ARDrone ( ) ;
118 drone . addExcept ionListener (new
IExcept i onL i s t ene r ( ) {
58
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
119 public void exept ionOccurred (
ARDroneException exc )
120 {
121 exc . pr intStackTrace ( ) ;
122 }
123 }) ;
124 drone . s t a r t ( ) ;
125 //VOLAR AL DRONE
126 // Tutor i a l Sec t ion 2
127 new T u t o r i a l A t t i t u d e L i s t e n e r ( drone ) ;
128
129 // Tutor i a l Sec t ion 3
130 new Tutor i a lV ideoL i s t ene r ( drone ) ;
131
132
133 CommandManager cmd = drone . getCommandManager ( ) ;
134 int speed = 30 ; // percentage o f max speed
135
136 cmd . takeOf f ( ) . doFor (3000) ;
137 cmd . hover ( ) . doFor (20000) ;
138 //cmd . land ing () ;
139
140 //FIN DE VOLAR AL DRONE
141 }
142 catch ( Exception exc )
143 {
144 exc . pr intStackTrace ( ) ;
145 }
146 f ina l ly
147 {
148 i f ( drone != null )
149 drone . stop ( ) ;
59
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
150
151 System . e x i t (0 ) ;
152 }
153
154 break ;
155 }
156 case 2 : {
157 cmd . forward ( speed ) . doFor (2000) ;
158 cmd . hover ( ) . doFor (1000) ;
159 break ;
160 }
161 case 3 : {
162 cmd . backward ( speed ) . doFor (2000) ;
163 cmd . hover ( ) . doFor (2000) ;
164 break ;
165 }
166 case 4 : {
167 cmd . land ing ( ) ;
168 IARDrone drone = null ;
169 drone = new ARDrone ( ) ;
170 drone . addExcept ionListener (new IExcept i onL i s t ene r ( )
{
171 public void exept ionOccurred (
ARDroneException exc )
172 {
173 exc . pr intStackTrace ( ) ;
174 }
175 }) ;
176 CommandManager cmd = drone . getCommandManager ( ) ;
177
178 cmd . land ing ( ) ;
179
60
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
180 break ;
181 case 5 : {
182 cmd . goLef t speed ) . doFor (2000) ;
183 cmd . hover ( ) . doFor (2000) ;
184 break ;
185 }
186
187 case 6 : {
188 cmd . goRight ( 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 :{
61
2.5 APLICACION SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
211 System . out . p r i n t l n ( ”EXEC Error i n v a l i d parameter :
” ) ;
212 ACTNUM=null ;
213
214 break ;
215 }
216 }
217 //Realizamos l a accion
218 }
219 catch ( Exception e )
220 {
221 /∗ Se lanza una excepc ion s i no se encuentra en e j e c u t a b l e o e l f i c h e r o no es
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 stat ic void main ( St r ing [ ] a rgs ) {
226 new Server ( ) ;
227 }}
62
2.6 IMPORTACION DEL PROYECTO A ECLIPSEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
2.6. IMPORTACION DEL PROYECTO A ECLIPSE
La importacion 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 aplicacion del socket se importa a eclipse, al ejecutarla el puerto habilita-
do quedara en espera de que el dispositivo cliente establezca la conexion. Para importar el proyecto:
• Abrimos eclipse y seleccionamos la carpeta donde se encuentra el proyecto, figura 9.
Figura 9: Seleccion de la carpeta del programa del servidor
• Seleccionamos “File”, luego “import” y despues como se muestra en la figura 10
“general” y enseguida “Existing projects into Workspace”.
63
2.6 IMPORTACION DEL PROYECTO A ECLIPSEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 10: Importacion del programa a Eclipse
• Posteriormente seleccionamos el directorio que contiene nuestro programa del servidor
y posteriormente “finish” como se muestra en la figura anterior, despues aparecera la
ventana que muestra la ubicacion 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 publica y acceda al dispositivo que tiene asignado el puerto,
figura 13.
64
2.6 IMPORTACION DEL PROYECTO A ECLIPSEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 11: Seleccion de la carpeta donde se ubica el proyecto
Figura 12: Arranque de la aplicacion
65
2.7 HABILITACION DEL PUERTO 5500 TCPInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 13: Esperando habilitacion del cliente
2.7. HABILITACION DEL PUERTO 5500 TCP
La habilitacion de un puerto 5500 TCP es necesaria para poder utilizar la conexion VNC (por
sus siglas en ingles Virtual Network Computing, Computacion Virtual en Red), que permite el
control de un ordenador remotamente a traves 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. Solo cuando la conexion del puerto 5500 TCP es habilitada, permitira la transmision
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 conexion de internet de un sistema pasa por un dispositivo con capacidad NAT (por
sus siglas en ingles Network Address Translation -Traduccion de direccion de redes), este es un
metodo para que un dispositivo se pueda conectar a varias maquinas externas a su red privada y
que haya conexion entre sı.
Software
Se compone de tres aplicaciones:
66
2.7 HABILITACION DEL PUERTO 5500 TCPInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
• Aplicacion cliente: Estas aplicaciones solo reciben datos y no se requiere regularmente
mapeo de puertos, unicamente requieren de un servidor.
• Aplicacion servidor: Estas aplicaciones envıan datos a los usuarios que lo soliciten, re-
quieren del mapeo de uno o varios puertos para la utilizacion de los dispositivos.
• Aplicacion cliente-servidor: Estas aplicaciones realizan la funcion de enviar y recibir da-
tos, de igual forma necesitan la habilitacion de puertos para poder realizar dicha tarea.
El puerto a mapear dependera de la aplicacion, pues esta la determinara debido a su uso.
2.7.2. HABILITACION DEL PUERTO
• Ingresamos la direccion del router en nuestro navegador. En la mayorıa de los casos por
default es “192.168.0.1” o “192.168.1.254”. Aparecera la ventana que ilustra la figura 14 en
donde se ingresa el nombre de usurio (username) “user” y la contrasena “user”.
Figura 14: Ingreso a la configuracion del modem
• Seleccionamos “Advanced” en la barra de menu, figura 15.
Figura 15: Seleccion de la pestana Advanced
67
2.7 HABILITACION DEL PUERTO 5500 TCPInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
• Seleccionamos la opcion Forwarding en el submenu, figura 16.
Figura 16: Seleccion de la opcion Forwarding
• Elegimos la opcion “Create IPv4 (Crear IPv4)”.
• Asignamos la direccion 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 aplicacion que sera “Control-Drone”, en la pestana
“Enabled”seleccionamos “On” y seleccionamos “Apply” como se muestra en la figura 17.
• Verificamos que se haya guardado la configuracion del puerto requerido y seleccionamos la
opcion “Forwarding” (Redireccionamiento), figura 18.
• Con este procedimiento la direccion IP “192.168.0.20” tiene asignado el puerto 5500 TCP,
siendo este el que se requiere para lograr la comunicacion entre el Cliente y el Servidor.
68
2.7 HABILITACION DEL PUERTO 5500 TCPInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 17: Configurando el puerto 5500 a una direccion IP privada.
Figura 18: Verificacion de la habilitacion del puerto
69
3 PRUEBAS DE CAMPO Y RESULTADOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
CAPITULO
3. PRUEBAS DE CAMPO Y RESULTADOS
70
3.1 INTRODUCCIONInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
3.1. INTRODUCCION
Describiremos la manera en que la aplicacion que se encuentra en nuestro dispositivo movil
puede ingresar al servidor para controlar el Drone. La aplicacion 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 estara el Drone, para
que no pueda provocarle danos.
Mostraremos como es posible guardar el video captado en nuestro servidor, desde la camara frontal
y vertical del dispositivo.
3.2. COMUNICACION ENTRE CLIENTE Y SERVIDOR
Con base al procedimiento del apartado 2.4 importamos el proyecto en Eclipse y ejecutamos
la aplicacion del servidor. De esta manera tenemos el servidor en espera de conexion 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
importacion cada vez que activemos la aplicacion.
Figura 19: Esperando habilitacion del cliente.
Desde el dispositivo movil ejecutamos la aplicacion cliente, donde se requiere la IP publica de
la PC y el puerto TCP de comunicacion del modem como se presenta en la figura 20.
71
3.2 COMUNICACION ENTRE CLIENTE Y SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 20: Ventana principal de la aplicacion Android.
Ingresamos la direccion IP publica (IP WAN) de la computadora o laptop en el que este co-
rriendo la aplicacion servidor, para esto, accedemos a la configuracion del modem, ingresamos la
siguiente direccion en el navegador de internet: http://192.168.0.1/. Hacemos clic izquierdo en la
pestana “Basic”, donde se muestra la informacion basica de nuestro modem. Este procedimiento
se explico a detalle en el Capitulo 2.
Ingresada la IP y el puerto TCP, establecemos la peticion a la aplicacion del servidor. Si nuestra
conexion es exitosa aparece en nuestra aplicacion cliente “Conexion OK” como se muestra en la
figura 21 y figura 22.
72
3.2 COMUNICACION ENTRE CLIENTE Y SERVIDORInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 21: IP y puerto TCP ingresados en la aplicacion cliente.
Figura 22: Conexion exitosa.
Desde el servidor se muestra el siguiente mensaje en la lınea de consola en donde se observa la
direccion IP del dispositivo que tiene instalada la aplicacion cliente, figura 23.
73
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 23: Mensaje de conexion en la lınea de consola del servidor.
3.3. COMUNICACION ENTRE SERVIDOR Y DRONE
Una vez establecida la conexion entre cliente y servidor, podemos controlar el vuelo del Drone,
ası como la captura de video de la camara frontal y vertical. Presionamos “Take off” como se
muestra en la figura 24 que inicia el vuelo del Drone (Puede ser configurable desde 1 metro hasta
una altura maxima de 250 metros) o bien, podemos ajustarlo durante el vuelo.
Figura 24: Boton “Take off” presionado.
74
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
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 elevandose.
Al iniciar el vuelo del Drone, comienza automaticamente a grabar y queda en espera de los
comandos de vuelo o cambio de camara.
Presionando el boton “Up”, figura 26, el Drone se eleva.Puede elevarse hasta donde el usuario
lo requiera como se muestra en la figura 27.
Figura 26: Boton “Up” presionado.
75
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 27: Drone elevandose.
Presionado otros botones como “Right” y “Left” mostrados en la figura 28, se pueden realizar
movimientos en el aire de izquiera y derecha,figura 29.
Figura 28: Boton “Right” y “Left”.
76
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 29: Movimientos del Drone en el aire.
El control aereo del Drone es libre, y podemos llevarlo a cualquier lugar del area que el usuario
desee.
Para acercarlo al suelo presionamos el boton “Down” como se muestra en la figura 30, ası el Drone
descendera como se observa en la figura 31.
Figura 30: Boton “Down” presionado.
77
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 31: Drone descendiendo con el boton “down”.
Una vez que el Drone esta cerca de la superficie, presionamos el boton ”Landing”, figura 32.
Figura 32: Boton “Landing” presionado.
78
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Una vez presionado el boton ”Landing”, el Drone aterriza en el suelo, figura 33.
Figura 33: Drone aterrizando con el boton “Landing”.
El video de la camara frontal del Drone comienza al momento en que la aplicacion se conecta al
servidor, figura 34.Mientras el Drone se eleva la camara frontal permanece activa como se muestra
en la figura 35.
Figura 34: Video obtenido de la camara posterior del AR.Drone a 1 metro de altura.
79
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 35: Video obtenido de la camara posterior del AR.Drone a 3.5 metros de altura.
Para seleccionar entre la camara frontal y vertical del Drone con el boton “CV/CH”, figura 36.
Figura 36: Boton “CV/CH” presionado.
80
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Aunque la camara vertical tiene menor resolucion que la camara frontal, no representa problema
alguno, ya que es posible apreciar la imagen con claridad, figura 37.
Figura 37: Vista de la camara inferior a una altura de 3.5 metros.
El video captado por la camara del Drone se detiene una vez que aterriza como se muestra en
la figura 38.
Figura 38: Camara del Drone detenida
81
3.3 COMUNICACION ENTRE SERVIDOR Y DRONEInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Se almacenara en nuestro servidor para su posterior visualizacion. La duracion del video de-
pendera de la capacidad de almacenamiento que tenga el servidor, ası como la camara seleccionada
(frontal o vertical).
Es importante conocer los comandos del Drone y practicar entes de manipularlo, ya que el dispo-
sitivo puede danarse por un mal uso y puede dejar de funcionar.
82
CONCLUSIONESInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
CONCLUSIONES
1. Con el protocolo TCP para la transferencia de datos a traves de un puerto seleccionado, se
garantizo la entrega de paquetes de datos en el mismo orden en que fueron enviados.
La aplicacion desarrollada establece la comunicacion entre el cliente y el servidor, mediante la
conexion TCP con la inicializacion del socket ingresando el puerto TCP y la IP del Host, procesando
la peticion enviada del cliente y generando respuesta para establecer el enlace como se muestra en
la figura 39.
Figura 39: Diagrama de flujo cliente-servidor.
83
CONCLUSIONESInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
2. Con Java se consiguio el control de procesos en paralelo, para establecer la conexion entre el
cliente y servidor, ası como las acciones que ejecuta el Drone a traves 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 aplicacion del Drone
84
CONCLUSIONESInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
3. La interfaz grafica de la aplicacion Android disenada contiene comandos que al accionarse
controlan los movimientos del Drone. La pantalla principal de la interfaz grafica se presenta en la
figura 41. El control esta limitado al conocimiento previo del espacio donde operara el Drone, con
el fin de que el Drone pueda tener una mejor precision en sus movimientos y no sufra choques o
danos permanentes.
Figura 41: Ventana principal de la aplicacion Android.
85
REFERENCIASInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Referencias
[1] Jakub Hvizdos, Peter Sincak 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 Bartak, 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
edicion, 2003.
[7] Diego Fernando Quisi Peralta (2012). “Diseno e implementacion de una aplicacion para dis-
positivos Android en el marco del proyecto pequenas y pequenos cientıficos de la Universidad
Politecnica Salesiana” (tesis de Ingenierıa). Universidad Politecnica 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 Vazquez, “Domotica 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, Jose Antonio, Jose A. Carballar Falcon, “Wi-Fi : lo que se necesita conocer”, RC
Libros, 2010
86
GLOSARIOInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
GLOSARIO
• ANDROID: Es un sistema operativo desarrollado principalmente para dispositivos moviles
basado en el nucleo de Linux.
• API: Interfaz de programacion 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 especificacion tecnologica que permite la transmision de datos y voz
entre dispositivos de una red de area personal de manera inalambrica.
• Cliente-servidor: Es un modelo de arquitectura de red que establece una conexion entre
equipos de una red a un equipo servidor que es mas potente y el cual
proporciona cierto servicio a los equipos cliente.
• GPS: Es un Sistema de posicionamiento global que se utiliza para detector la posicion 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 programacion orientado a objetos que trata de eliminar herra-
mientas de bajo nivel en programacion.
• JDK: Kit de desarrollo de Java, es un conjunto de herramientas que permite desarrollar
aplicaciones en lenguaje Java.
• LAN: Es una red de area local, que regularmente se utiliza para enlazar dispositivos en un
rango de 200 metros.
•Modem: Es un dispositivo que permite la conexion entre computadoras a traves de la lınea
Telefonica.
• PDM: Es una tecnica de modulacion 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.
87
GLOSARIOInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
• 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 Aereo no Tripulado o simplemente un drone, es un dispositivo aereo que
no tiene tripulacion y actualmente se utilizan para distintas aplicaciones militares,
civiles o de entretenimiento (Drone).
•WIFI: Es un mecanismo que es capaz de establecer una conexion en dispositivos electronicos
de manera inalambrica.
88
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
ANEXOS
A.1 PROTOCOLOS UTILIZADOS
A.1.1 TCP (Transmission Control Protocol –Protocolo de Control de Transmision)
El principal proposito de TCP es proporcionar una conexion logica 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 traves de un canal
• Fiabilidad
• Control de flujo
• Multiplexacion
• Conexiones logicas
• Full Duplex
El mecanismo mostrado mas arriba se utiliza en TCP, pero con unas cuantas diferencias:
Como TCP proporciona una conexion con un flujo de bytes, los numeros 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 llevaran numeros de secuencia de forma que
el tamano de la ventana se exprese con un numero de bytes, en vez del de paquetes.
El tamano de la ventana lo determina el receptor, cuando se establece la conexion, y puede
variar durante la transmision de datos. Cada ACK incluira el tamano de la ventana que
acepta el receptor en ese momento. Ahora, el flujo de datos del emisor se puede ver como:
I
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
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 ningun tipo de reconocimiento.
D: Bytes que no se pueden enviar aun.
Recordar que TCP agrupa los bytes en segmentos, y un segmento TCP solo lleva el numero de
secuencia del primer byte.
A.1.2 TCP (Transmission Control Protocol –Protocolo de Control de Transmision)
UDP es basicamente un interfaz de aplicacion. No anade fiabilidad, control de flujo o recupe-
racion 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.
II
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
Figura 43: UDP, un demultiplexor basado en puertos
Cada datagrama UDP se envıa en un solo datagrama de IP. Aunque el datagrama IP se
fragmente durante la transmision, la implementacion de IP que lo reciba lo reensamblara antes
de pasarselo a la capa de UDP. Todas las implementaciones de IP deben aceptar datagramas de
576 bytes, lo que significa que si se supone un tamano maximo de 60 bytes para la cabecera IP,
queda un tamano de 516 bytes para el datagrama UDP, aceptado por todas las implementaciones.
Muchas implementaciones aceptan datagramas mas grandes, pero no es algo que este 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.
III
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
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-Traduccion de direcciones de Red)
El proceso de la traduccion de direcciones de red (NAT, por sus siglas en ingles) se desarrollo en
respuesta a la falta de direcciones de IP con el protocolo IPv4 (el protocolo IPv6 propondra una
solucion a este problema.
En efecto: en la asignacion de direcciones IPv4, no hay suficientes direcciones IP enrutables (es de-
cir, unicas en el mundo) para permitir que todas las maquinas que necesiten conectarse a internet
puedan hacerlo.
El concepto de NAT consiste en utilizar una direccion IP enrutable (o un numero limitado de direc-
ciones IP) para conectar todas las maquinas a traves de la traduccion, en la pasarela de internet,
entre la direccion interna (no enrutable) de la maquina que se desea conectar y la direccion IP de
la pasarela.
Ademas, el proceso de traduccion de direcciones permite a las companıas asegurar la red interna
siempre y cuando oculte la asignacion de direcciones internas. Para un observador que se ubica
fuera de la red, todos los pedidos parecen provenir de la misma direccion IP.
Traduccion estatica
El concepto de NAT estatica consiste en hacer coincidir una direccion IP publica con una direc-
cion IP de red privada interna. Un router (o, mas precisamente, la pasarela) hace coincidir una
direccion IP privada (por ejemplo, 192.168.0.1) con una direccion IP publica enrutable en internet
y, en cierto sentido, realiza la traduccion mediante la modificacion de la direccion en el paquete
IP.
La traduccion de las direcciones estaticas permite conectar maquinas de red interna a internet de
IV
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
manera transparente, aunque no resuelve el problema de escasez de direcciones debido a que se
necesitan n direcciones IP enrutables para conectar n maquinas de la red interna.
Traduccion dinamica
La NAT dinamica permite compartir una direccion IP enrutable (o una cantidad reducida de di-
recciones IP enrutables) entre varias maquinas con direcciones privadas. Ası, todas las maquinas
de la red interna poseen la misma direccion IP virtual en forma externa. Por esta razon, el termino
.enmascaramiento de IP”se usa en ciertos casos para procesar la NAT dinamica.
Para poder ”multiplexar”(compartir) diferentes direcciones IP con una o mas direcciones IP en-
rutables, la NAT dinamica utiliza la traduccion de direcciones de puerto, es decir, la asignacion
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 maquinas en
internet, las cuales estan dirigidas a la direccion IP del router.
A.1.4 TELNET
Telnet es una utilidad y un protocolo estandar de Internet que se basa en la solicitud de
comentarios (RFC) 854. En esta RFC se especifica un metodo para transmitir y recibir caracteres
ASCII sin cifrar (texto simple) a traves de una red. Se puede utilizar un cliente Telnet ejecutado
en un equipo para conectarse a una sesion de lınea de comandos con el fin de ejecutar aplicaciones.
Solo se admiten las interfaces y aplicaciones basadas en caracteres. El entorno de Telnet no incluye
una capacidad para graficos.
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 ningun usuario ha iniciado sesion en el
servidor.
Cuando un cliente Telnet se conecta a un equipo que ejecuta el servidor Telnet, se solicita al
V
ANEXOSInstituto Politecnico Nacional
La Tecnica al Servicio de la Patria
usuario remoto que especifique un nombre de usuario y una contrasena. La combinacion de nombre
de usuario y contrasena debe ser valida para el servidor Telnet. El servidor Server en Windows
admite dos tipos de autenticacion: NTLM y Contrasena (o texto simple).
Una vez que el usuario ha iniciado una sesion, aparecera 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 sesion 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 grafica 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 emulacion de cuatro tipos de terminales:
ANSI, VT-100, VT-52 y VT-NT.
A.2 COMANDOS UTILIZADOS
A.2.1 Comandos AT
La comunicacion con el AR.Drone se realiza a traves de los AT Commmands, que son cadenas
de texto enviados como paquetes TCP y UDP. De esta forma, pueden enviarse ordenes para con-
trolar el dispositivo. Los strings estan codificados como caracteres ASCII de 8 bits.
La sintaxis es la siguiente:
AR.Drone 1.0: AT[nombreComando] = [numeroDecimal][, argumento1, argumento2, ...] LF AR.Drone2,0 :
AT [nombreComando] = [numeroDecimal][argumento1, argumento2, ...] < CR >
Ejemplo: AT P CMD = 21625, 1, 0, 0, 0, 0 ¡LF¿
Un unico paquete UDP puede contener por lo menos un unico AT Command o mas de uno. La
longitud maxima de estos es de 1024 caracteres y hay un retardo de 30 ms entre uno y otro.
VI