Servicio de flight tracking SACTA

Transcripción

Servicio de flight tracking SACTA
Diseño Y Aplicaciones de Sistemas Distribuidos
Servicio de flight tracking
SACTA
(Simulador Automático de
Control de Tráfico Aéreo)
Joan Vila, Enrique Hernández, José Simó
DISCA / UPV
Departament d’Informàtica de Sistemes i Computadors
Universitat Politècnica de València
SACTA
Índice
– Definición del problema
– Estructura de la aplicación
– Ampliaciones
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Introducción
2
Control de Tráfico Aéreo
Objetivo
– Asegurar el tráfico comercial y aéreo.
mantener las distancias de seguridad
guiarlos para el despegue o aterrizaje
Gestionar incidencias (mal tiempo, cierre aeropuertos, etc.)
– y todo esto sin producir retrasos…
División
– Todas este control se realiza por zonas.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Coordinar los movimientos de miles de aviones
3
Control de Tráfico Aéreo
División (ver animación aena.swf arrastrando el fichero al navegador)
– En España el tráfico se divide por zonas.
– Cada zona esta enlazada con el resto por redes informáticas.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Cada zona gestiona un área geográfica con un radar
4
Control de Tráfico Aéreo
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Centro de control de tránsito aéreo
(ACC)
– Controla el tráfico aéreo en la zona
correspondiente. Están situados en Madrid,
Barcelona, Las Palmas de Gran Canaria y
Sevilla, y el centro de control de área
terminal (TACC) de Palma de Mallorca.
– Éstos se complementan con los TACC de
Valencia y Santiago, que proporcionan
también distintos servicios de tránsito
aéreo.
– Cada uno de estos centros dispone de un
radar primario y secundario.
Primario: sólo permite determinar la
posición de la aeronave en dos
dimensiones
Secundario ; ofrece datos tales como
identificación y nivel de vuelo (altura
barométrica), utilizando un transponder.
5
Control de Tráfico Aéreo
Transponder (ver animación transponder.swf)
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Responde a la señal del radar devolviendo información de altura, etc.
6
Control de Tráfico Aéreo
Plan de vuelo.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Antes de iniciar un vuelo el piloto proporciona
al controlador de tráfico aéreo:
Nombre de la aerolínea y número de vuelo.
Tipo de avión y equipamiento.
Velocidad y altitud de vuelo prevista.
Ruta de vuelo (aeropuerto origen y destino;
centros por donde va a pasar).
– Este plan de vuelo es validado y se introduce
en el ordenador, que genera una ficha de
progreso de vuelo.
Esta ficha se pasa de controlador a
controlador cuando va pasando de zona.
Esta ficha es constantemente actualizada
con la información en tiempo real del vuelo.
7
Control de Tráfico Aéreo
Navegación aérea.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Navegación instrumental:
Se realiza con el apoyo de
instrumentos.
Tienen un plan de vuelo y sigue una
rutas establecidas.
– Cartas de navegación
Definen las “carreteras aéreas”.
Hay dos espacios aéreos:
 Inferior : < 24000 ft (7320m).
 Superior: >= 24000 ft.
– Separación de seguridad.
Altitud:
 Espacio
(305m)
 Espacio
(610m)
aéreo
Inferior
1000ft
aéreo
Superior
2000ft
Misma altitud: 5 millas (8km).
8
Control de Tráfico Aéreo
Curiosidades I…
SAGE: Precursor de los Sistemas de control de tráfico aéreo
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Whirlwind (1951). Primer ordenador para aplicaciones en tiempo real con una
interfaz gráfica.
9
Control de Tráfico Aéreo
Curiosidades II…
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– SAGE 1955: Evolución de la terminal gráfica.
10
Coordenadas geográficas
Cualquier lugar de la Tierra se determina con dos números, su latitud
y su longitud.
– La longitud mide el ángulo a lo largo del ecuador desde cualquier punto de la
Tierra. Se acepta que Greenwich en Londres es la longitud 0.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– La latitud mide el ángulo entre cualquier punto y el ecuador.
11
Coordenadas geográficas
Notación utilizada:
– Hay varias notaciones para representar las coordenadas; nosotros vamos a utilizar número reales con
signo.
Madrid
(-3,41 40,24)
O:Oeste
Palma de Mallorca
(2,39 39,35)
Longitud -
Longitud +
E:Este
Latitud `-
DYA
N:Norte
Latitud +
Diseño Y Aplicaciones de
Sistemas Distribuidos
– 1º es aproximadamente 110km. (pero varia dependiendo la latitud y la longitud)
Santiago de Chile
(-70,11 -20,32)
S:Sur
Sydney
(151,18 -33,90)
12
SACTA
Índice
– Definición del problema
– Estructura de la aplicación
– Ampliaciones
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Introducción
13
Definición del problema
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
El sistema físico
– Se dispone de un radar que proporciona información de las señales emitidas por los
transponders de los aviones en un radio de 150 millas náuticas alrededor de Manises (0.28, 39.29) y se desea realizar una aplicación distribuida en Java que permita visualizar
gráficamente la pantalla del radar en cualquier computador conectado a la red.
Servicio CORBA de monitorización de vuelos (flight tracking)
– La aplicación se estructura como un servicio CORBA con una entrada en un Servicio de
Nombres que se denominará “SACTA”.
– La aplicación consta de dos tipos de componentes (objetos distribuidos):
radar: existe una única instancia instancia en ejecución en el sistema.
 Toma los datos del radar y los redistribuye a los objetos de tipo monitor vía alguno de los siguientes
protocolos: difusión IP, TCP/IP, CORBA (activa y reactiva).
 El radar actúa como gestor de grupo por suscripción de los objetos de tipo monitor.
monitor: se pueden crear tantas instancias como se deseen en diferentes máquinas.
Constituyen un grupo dinámico donde el objeto radar actúa de gestor de grupo.
 Visualizan de forma gráfica la información que suministra el objeto radar.
 Las cámaras han de suscribirse previamente en el radar para tener acceso a la información. Esta
suscripción requerirá algún tipo de autentificación como, por ejemplo, usuario y contraseña.
14
Definición del problema
Monitorización de vuelos (flight tracking)
monitor
radar
monitor
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
monitor
15
La interfaz IDL
module corba {
module monitor{
struct aeroNau {
struct instantania {
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
double lon;
double lat;
sequence<aeroNau> avions;
};
double alt;
double vel;
boolean ident;
unsigned long estat;
unsigned long color;
string nom;
string desti;
interface monitorInt{
inst);
void notificarInstantania(in instantania
boolean funciona();
};
};
long long timestamp;
};
16
La interfaz IDL
module radar {
struct subscripcioInfo {
string ip;
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
unsigned long port;
};
struct llistaSubscripcio {
sequence<string> IORmonitors;
};
enum modeCom {difusio, callback, tcpip, cap};
interface radarInt {
subscripcioInfo subscriure(in string ior, in modeCom m);
llistaSubscripcio obtenirLlista();
void baixa(in string ior);
boolean funciona();
corba::monitor::instantania obtenirInstantania();
};
};
};
17
Definición del problema
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Comunicación
– La comunicación entre los objetos radar y monitor se realizará,
fundamentalmente, vía invocaciones CORBA, excepto la notificación de la
información del radar que deberá poder adoptar las siguientes formas:
Difusión: se establecerá una dirección IP y un port para el canal de difusión.
Estos parámetros podrán especificarse como argumentos de ejecución del radar
y serán comunicados al cliente al suscribirse.
TCP/IP: el radar establecerá una conexión TCP con cada cliente para
suministrarle los datos. El port para solicitar la conexión podrá especificarse
como argumento de ejecución del radar y será comunicado al cliente al
suscribirse.
CORBA reactiva (callback): el monitor indicará esta forma de comunicación al
suscribirse y el radar invocará un método del cliente (notificarInstantania) cada
vez que deba actualizar la información del radar.
CORBA activa: el monitor indicará esta forma de comunicación al suscribirse y
será su responsabilidad invocar un método del radar (obtenirInstantania) cada
vez que quiera obtener información del radar.
18
Definición del problema
Estructura de datos con la información del radar
corba::monitor::instantania
– Esta estructura de datos es una secuencia de datos cuya estructura responde a
los datos de una aeronave, definidos como:
corba::monitor::aeroNau
– Cuando se utiliza comunicación CORBA, bien sea activa o reactiva, esta
estructura de datos se especifica como parámetro de los métodos
correspondientes.
– Cuando se utiliza comunicación por difusión o TCP/IP, esta estructura de datos
debe serializarse y enviarse por el canal de comunicación correspondiente.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– La estructura de datos para el intercambio de la información que proporciona el
radar se especifica en IDL:
19
Definición del problema
Estructura de datos con la información del radar
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Las bibliotecas de acceso a la antena física (sacta_radar.jar) contienen métodos que
devuelven estructuras de datos de tipo corba::monitor::aeroNau o arrays de estas
estructuras.
corba.monitor.aeroNau[] getAeronaus();
corba.monitor.aeroNau getAeronau(String nom);
– Estas bibliotecas rellenan algunos campos de la estructura aeroNau:
double lon: longitud geográfica en grados
double lat: longitud geográfica en grados
double alt: altitud en pies
double vel: velocidad en mph
string nom: código de transponder. Es un identificador único de cada aeronave.
long long timestamp: Valor del tiempo del sistema (según System.currentTimeMillis).Útil
para decidir cuando una aeronave ha quedado fuera del alcance.
– El resto de campos los deja en blanco y pueden establecidos libremente por el monitor
para establecer algunos atributos de visualización.
20
Definición del problema
Seguridad
– El método de autentificación puede ser el básico de usuario/contraseña o de
certificados digitales y se realizará al realizar una suscripción.
– El servidor de radar no admitirá la suscripción, ni proporcionará ninguna
información a través de métodos CORBA, ni establecerá conexiones TCP/IP
con ningún cliente que no se encuentre autentificado.
Agujero permitido: la difusión si podrá se escuchada por clientes no suscritos ni
autentificados que hayan conseguido averiguar el canal de difusión.
– Los requerimientos de seguridad podrán ser motivo de modificar la
especificación IDL del sistema, previa aprobación por el profesor.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Se habilitará un gestor de seguridad Java que permita la autentificación de un
cliente monitor ante un servidor de radar.
21
SACTA
Índice
– Definición del problema
– Estructura de la aplicación
– Ampliaciones
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Introducción
22
Estructura de la aplicación
Objetos remotos
– La aplicación consta de dos objetos remotos cuya especificación IDL se ha proporcionado
y cuya funcionalidad es la siguiente:
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
radar
 Actuar como gestor de un grupo dinámico de monitores que funciona por suscripción
 Obtener la información de la antena del radar
 Distribuir la información del radar a todos los monitores del grupo suscritos
monitor
 Gestionar alta y baja en un grupo dinámico por suscripción
 Visualizar de forma gráfica la información que suministra el objeto radar.
– Cada objeto remoto se estructurará como un proyecto diferente y cada proyecto debe dar
lugar a un fichero JAR ejecutable desde fuera del entorno de desarrollo.
Bibliotecas proporcionadas
– sacta_monitor.jar: biblioteca que facilita la representación gráfica de aviones.
– sacta_radar.jar: biblioteca que facilita el acceso a la antena física del radar.
– sacta_emulador_radar.jar: biblioteca que simula una antena de radar para poder realizar
pruebas cuando no se tiene acceso a la antena real
23
Estructura de la aplicación
monitor
Gestor
grupo
sacta_radar.jar
Biblioteca de
acceso a la antena
Fuente
datos
Obtención
datos
sacta_monitor.jar
Biblioteca de
acceso a los gráficos
Actualizar
monitor
sacta_emulador_radar.jar
Biblioteca de
simulación del radar
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
radar
24
El objeto radar
Interfaz IDL
– Los métodos que exporta este objeto se encuentran en la interface CORBA-IDL:
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
corba::radar::radarInt
– Define los métodos clásicos de un gestor de grupos dinámicos:
subscripcioInfo subscriure(in string ior, in modeCom m)
 Suscribe un objeto CORBA cuyo IOR se proporciona. También se indica el método modecom
deseado para obtener la información del radar: difusio, callback, tcpip o cap.
 Retorna una estructura con los datos de la suscripción: canal de difusión o port TCP/IP para
establecer conexiones.
llistaSubscripcio obtenirLlista();
 Retorna la lista de IORs con los monitores suscritos.
void baixa(in string ior);
 Da de baja una suscripción.
– Y algún método adicional:
boolean funciona();
 Heartbeat para saber si se encuentar vivo.
corba::monitor::instantania obtenirInstantania();
 Método para obtener una instantánea. Útil cuando se especifica como modo de comunicación “cap”.
25
El objeto radar
Biblioteca sacta_radar.jar
– Contiene la Clase radar.ComunicacioRadar
– Constructor:
ComunicacioRadar(radar.Radar_Int clase_callback);
– Métodos de la clase: interfaz radar.ComunicacioRadar_Int
void arranca(String host, int port);
void para();
corba.monitor.aeroNau[] getAeronaus();
corba.monitor.aeroNau getAeronau(String nom);
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Facilita obtener información desde la antena física del radar
26
El objeto radar
Biblioteca sacta_radar.jar
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Callbacks: cada vez que existe información nueva procedente de la antena se
invoca el método:
void informa_canvi(String nom)
con el nom de la aeronave que ha cambiado de posición.
– Este método ha de estar incluido en la clase declarada como clase_callback en
el constructor de ComunicacioRadar y ha de implementar la siguiente interfaz:
package radar;
public interface Radar_Int {
public void informa_canvi(String nom);
}
27
El objeto radar
Estructura de un servidor simple
package radar;
public class Radar extends java.lang.Thread implements Radar_Int{
/* Creacio dels canals de comunicacio */
Diseño Y Aplicaciones de
Sistemas Distribuidos
private comunicacio_radar.ComunicacioRadar antena = null;
private String host_radar = "localhost"; /*”servantena.etsid.upv.es”*/
private int port_radar = 30003;
public Radar(){
super();
/*TODO: Si no te interficie grafica, s’hauran de posar en marxa aci els sistemes
* de comunicacio: (antena, tcp, difussio, corba, rmi, etc...)
* this.antena = new comunicacio_radar.ComunicacioRadar(this.host_radar,
*
this.port_radar, this);*/
}
/* Metode que es invocat quan hi ha algun canvi en les aeronaus a l'alcanç. */
public void informa_canvi(String nom){
DYA
/* Avisar als canals de comunicacio que ha canviat l'objecte a enviar */
}
public static void main(String[] args){
Radar r = new Radar();
}
}
28
El objeto radar
El problema de los aviones que quedan fuera del alcance
– Cuando un avión queda fuera del alcance hay que eliminarlo de la instantánea.
long long timestamp: Valor del tiempo del sistema
 según System.currentTimeMillis
Biblioteca sacta_emulador_radar.jar
– Ejecutando la clase principal de este fichero se obtiene por el port 30003 de
localhost una fuente de datos semejante a la antena del radar.
– De hecho reproduce una traza contenida en un fichero.
– En fase de mejora…
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Se puede utilizar un timeout y el siguiente campo de la estructura aeroNau:
29
El objeto monitor
Interfaz gráfica
– Presenta la información del tráfico aéreo.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Información estática
Malla: latitud y longitudes de referencia.
Mapa : mapa vectorial de la zona.
Rutas : rutas de vuelo
– Información dinámica
Posición del haz (ángulo)
Tiempo.
Objetos.
Presenta
la
información:
siguiente
 Nombre, destino
 Longitud, Latitud
 Altitud (ft), Velocidad (NM/h).
– Se puede presentar
información.
u
ocultar
esta
– Ventana con la información de los aviones
30
El objeto monitor
Interfaz IDL
– Los métodos que exporta este objeto se encuentran en la interface CORBA-IDL:
– Define los métodos:
void notificarInstantania(in instantania inst);
 Método callback utilizado por el objeto CORBA radar para comunicar la instantánea
cuando se utiliza el método de comunicación CORBA reactivo.
boolean funciona();
 Heartbeat para saber si se encuentar vivo.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
corba::monitor::monitorInt
31
El objeto monitor
Biblioteca sacta_monitor.jar
– Contiene la Clase monitor.VisualitzadorGrafic
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Permite la visualización gráfica de la información proveniente del radar
– Constructor
VisualitzadorGrafic()
– Métodos de clase: interfaz monitor.Monitor_Int
Integer afegirAeronau(corba.monitor.aeroNau avio);
void esborrarAeronau(Integer clau);
void netejarPantalla();
– Descripción:
En el momento en que se añade un avión con afegirAeronau este aparece en la pantalla.
El valor retornado es un código hash que luego se utiliza para borrarlo.
Si se añade un avión ya insertado (con el mismo nombre), este se actualizará en vez de
representarse dos veces.
El método netejarPantalla borra todas las aeronaves representadas. Útil para no tener que
borrar cada aeronave cuando se recibe una nueva instantánea.
32
El objeto monitor
Demo de las bibliotecas sacta_radar.jar y sacta_monitor.com (i)
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
public class demo extends java.lang.Thread implements radar.Radar_Int{
/* Creacio dels canals de comunicacio */
private comunicacio_radar.ComunicacioRadar_Int antena = null;
private monitor.Monitor_Int monitor = null;
private String host_radar = "localhost";
private int port_radar = 30003;
/**************************************************
* Constructor:
* 1er Creem el visualitzador
* 2om Arranquem la comunicacio amb l'antena
**************************************************/
public demo(){
super();
this.monitor = new monitor.VisualitzadorGrafic();
this.antena = new comunicacio_radar.ComunicacioRadar(this);
this.antena.arranca(this.host_radar, this.port_radar);
}
33
El objeto monitor
Demo de las bibliotecas sacta_radar.jar y sacta_monitor.com (ii)
/**************************************************
* Metode que es invocat quan hi ha algun canvi en
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
* les aeronaus a l'alcanç.
* Informa als distints servidors que ha hagut canvis
* en l'objecte que han de servir.
**************************************************/
public void informa_canvi(String nom){
/* Avisar als canals de comunicacio que ha canviat l'objecte a enviar */
corba.monitor.aeroNau nau = antena.getAeronau(nom);
this.monitor.afegirAeronau(nau);
}
public static void main(String[] args){
demo d = new demo();
}
}
34
SACTA
Índice
– Definición del problema
– Estructura de la aplicación
– Ampliaciones
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Introducción
35
Ampliaciones
– Realizar una interfaz gráfica (GUI) para el servidor de radar, realizando un
diseño que separe claramente, el código de aplicación del código CORBA y el
código de la interfaz gráfica.
– El diseño gráfico del servidor será completamente libre.
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
Interfaz gráfica para el servidor de radar
36
Ampliaciones
Tolerancia a fallos
DYA
Diseño Y Aplicaciones de
Sistemas Distribuidos
– Realizar un radar de repuesto en caliente que pase a estado activo
automáticamente cuando falle el servidor primario.
– Al entrar en servicio un radar de repuesto, automáticamente se pondrá en
ejecución un nuevo radar de repuesto.
– Al entrar en servicio un radar de repuesto lo hará “en caliente”: con toda la
información de estado que mantenía el servidor primario y, en particular, las
suscripciones.
Servicios web
– Utilizar un servicio web de un registro de aviación civil que proporcione
información adicional sobre una aeronave, como por ejemplo el número de
vuelo, a partir de su número de transponder.
– Caso de no encontrar dicho servicio web, realice un servicio web emulado que
proporcione dicha información.
37

Documentos relacionados