• No se han encontrado resultados

SEKAI : sistema de navegación para transportes terrestres

N/A
N/A
Protected

Academic year: 2020

Share "SEKAI : sistema de navegación para transportes terrestres"

Copied!
48
0
0

Texto completo

(1)Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Ciudad de México División de Ingeniería y Arquitectura Ingeniería en Sistemas Electrónicos Departamento de Ingeniería Eléctrica y Electrónica. SEKAI Sistema de Navegación para Transportes Terrestres ~--.. y ITESM MIIPU8 Cl{¿_l)1u. J1i: MI.Yi ,. b/fü.lUI ti.LA. México D.F. a 26 de Abril de 2004. Autores:. Asesor:. Antonio Vargas. M. en C. Rodrigo Regalado. Joaquin Bolbrugge. Profesor Dr. Ernesto Olguín.

(2) INDICE 1. Introducción 1.1. 1.2. Área de Desarrollo 1.1.1 Sistema de Posicionamiento Global (GPS). 1. 1.1.2 Asistente Personal (PDA). 1. 1.1.3 Sistema de Navegación GPS. 2. Estado del Arte 1.2.1 Tecnología GPS. 2. 1.2.2 Navegación GPS. 3. 1.2.3 Tecnología PDA y Sistemas Embebidos. 5. 1.3. Infraestructura Necesaria. 5. 1.4. Objetivos y Metas. 5. 1.5. Alcances. 6. -. 2. Desarrollo del Proyecto 2.1. SEKAI. Etapa de Diseño. 6. 2.1.1 Pruebas del Equipo. 7. 2.1.2 Diseño del GIS. 7. 2.1.2.1. Datos Proporcionados por el GPS. 7. 2.1.2.2. Nodos, Vectores, y Puntos de Corrección. 7. 2.1.2.3. Diseño de la Base de Datos. 8.

(3) 2.1.3 Implementación del GIS. 2.2. 2.3. 8. 2.1.3.1. Comunicación Serial. 8. 2.1.3.2. Conversión NMEA. 9. 2.1.3.3. Captura de Datos para el GIS. 9. 2.1.3.4. Georeferencia de Mapas y Cuadrantes. 10. Etapa de Aplicación. 10. 2.2.1 Generación de Mapas a partir del GIS. 10. 2.2.2 Superposición de Capas. 10. 2.2.3 Ambiente Gráfico del Sistema de Navegación. 10. 2.2.4 Interacción del GIS con el Sistema de Navegación. 10. Etapa de Integración. 11. 2.3.1 Integración de PDls al GIS. 11. 2.3.2 Migración y Pruebas en Plataformas de Cliente. 11. 2.3.3 Captura de Datos Relevantes. 11. 2.3.4 Extensión a los Sistemas GIS y Navegación. 11. 2.3.5 Algoritmo de Cálculo de Trayectorias. 12. 3. Estructura y Componentes 3.1. SEKAI. Componentes de Abstracción de Datos. 12. 3.1.1 SNode. 13. 3.1.2 SVector. 13. 3.1.3 SStreet. 13. 3.1.4 SPoint. 14. 3.1.5 SCorrection. 14 II.

(4) 3.2. 3.3. 3.4. 3.1.6 SNumbers. 14. 3.1. 7 SQuadrant. 15. Componentes de Tratamiento de Datos y Comunicación. 15. 3.2.1 DBDriver. 15. Componentes Gráficos. 15. 3.3.1 Compass. 16. 3.3.2 NavBar. 16. 3.3.3 NavConsole. 16. 3.3.4 QCanvas. 16. 3.3.5 GisPainter. 17. 3.3.6 Artist. 18. Componentes de Procesamiento. 19. 3.4.1 SekaiSpherical. 19. 3.4.2 Coordinates. 19. 3.4.3 Triad. 20. 3.4.4 NavP/an. 20. 3.4.5 NavHop. 20. 3.4.6 GisEngine. 21. 3.4.7 NavEngine. 21. 4. Pruebas y Procesos. SEKAI. 4.1. Captura de Nodos, Puntos, Vectors, y PDls. 21. 4.2. Puntos de Corrección. 22. 4.3. Precisión y Funcionamiento de SekaiSpherical. 23 II I.

(5) 4.4. Retos de de Plataforma y Programación. 5. Estudio de Mercado. 23. 24. 5.1. Encuesta. 24. 5.2. Análisis del Esfuerzo. 27. 6. Conclusiones. 29. 6.1. Trabajo Futuro. 29. 6.2. Comentarios. 29. 6.3. Derechos de Autor. 30. 7. Referencias. 30. ANEXOS A1: Sentencias NMEA-0183 Utilizadas. SF:KAI. A1.1 GGA. Al. A1.2 GSA. Al. A1.3 RMC. AII. A1.4 VTG. AII. IV.

(6) A2: Estructura de la Base de Datos A2.1. Diagrama Entidad-Relación. AIII. A3: Autómatas de Captura de Datos A3.1. Nuevo Nodo, Punto o PDI. AIV. A3.2 Vector con Nodos nuevos. AV. A3.3 Vector con Nodo inicial existente y Nodo final nuevo. AV. A3.4 Vector con Nodo inicial nuevo y Nodo final existente. AVI. A3.5 Vector con Nodos existentes. AVI. A4: Cálculos de Coordenadas A4.1 Conversión de Coordenadas Esféricas a Cartesianas. AVII. A4.2 Cálculo de Distancia entre Puntos Geográficos. AVII. AS: Cálculo de Curvas Bezier A5.1 Función de Curvas Bezier de Tercer Orden. AVIII. A6: Estudio de Mercado A6.1. SEKAI. Formato de Encuesta. AIX. V.

(7) A7: Algoritmo de Cálculo de Trayectorias A7.1 Diagrama de Flujo. AX. AS: Contenido del CD AB.1 Contenido. SEKAI. AXI. VI.

(8) l.. INTRODUCCIÓN. SEKAI es un sistema de navegación para transportes terrestres utilizando GPS, para uso en plataformas portátiles y sistemas embebidos que soporten la plataforma .NET de Microsoft, manejando comunicac1on serial entre la plataforma y el dispositivo GPS. El sistema tiene como área de prueba una región de la Ciudad de México que comprende el área delimitada por las calles Calzada de Hueso al norte, Cafetales al este, Calzada Acoxpa al sur, y Canal de Miramontes al oeste, con una expansión incluyendo el ITESM-CCM. El sistema se desarrolló para ser probado en el PDA HP IPAQ 2215. El GPS utilizado fue el EMTAC CRUX 11 BTGPS. Se desarrollaron los siguientes módulos, explicados a detalle más adelante: Sistema de Información Geográfica (GIS) Sistema de Localización GPS en Mapas Sistema de Captura, Interpretación y Codificación de Datos GIS Sistema de Navegación para Transportes Terrestres. 1.1. Área de Desarrollo. El área de desarrollo describe brevemente las tecnologías utilizadas en el proyecto. Para SEKAI se utilizaron tres en especial: El Sistema de Posicionamiento Global, el Asistente Digital Personal, y los sistemas de navegación.. 1.1.1. Sistema de Posicionamiento Global (GPS). El Sistema de Posicionamiento Global es un sistema de radio navegación que consiste en 24 satélites y estaciones de control terrestre. El sistema satelital transmite continuamente se11ales que contienen la infonnación precisa del tiempo y posición de cada satélite, 24 horas al día y en cualquier condición climática. Procesando estas se11ales, un dispositivo GPS puede proveer al usuario de infonnación útil acerca de su posición, velocidad y tiempo, para cualquier propósito de navegación y de posicionamiento en cualquier pa1te del mundo, siempre y cuando cuente con línea de vista a los satélites. El proceso de posicionamiento de un dispositivo GPS involucra una primera fijación de al menos tres satélites, y a través de la se11al de éstos puede computar la posición del dispositivo. Si se utiliza una posición previamente conocida, el proceso de fijación puede realizarse más rápidamente. 1.1.2. Asistente Digital Personal (PDA). Un Asistente Digital Personal es un dispositivo portátil que combina la funcionalidad de una computadora, un teléfono/fax, Internet, y redes. A diferencia de las laptops, los PDA comenzaron como un sistema basado en reconocimiento de escritura y presión, sobre una pantalla sensible al tacto.. SEKAI.

(9) 1.1.3. Sistema de Navegación GPS para Transportes Te1Testres. Un sistema de navegación basado en GPS para transportes ten-estres es aquel que utiliza como entradas la infonnación de posicionamiento global e infonnación cartográfica de una zona específica, para brindar al usuario funciones de navegación como las siguientes: Despliegue de mapas centrados en la posición del usuario Localización de direcciones bien conocidas Planeación de rntas de viaje Tiempo estimado y distancia a destinos. 1.2. Estado del Arte. En esta sección se describe a detalle el estado actual de las tecnologías usadas en el proyecto, con el afán de que el lector tenga las bases para entender más fácilmente sus implicaciones dentro del proyecto. 1.2.1. Tecnología GPS. Cuando hablamos de GPS, generalmente nos referimos a un receptor GPS. El Sistema de Posicionamiento Global es en realidad una constelación de 24 satélites orbitando la tien-a (y 3 que entraría en funcionamiento en caso de que alguno de los 24 originales fallara). La milicia de EUA desan-olló esta red de satélites como un sistema de navegación militar, pero pronto se volvió tecnología del dominio público. Cada uno de estos satélites orbita la Tie1i-a a 19'300 km. de altura, realizando 2 rotaciones al planeta diarias.. Fuente: Referencia (2). El trabajo de un receptor GPS es el de localizar 3 o más de estos satélites, calcular la distancia a cada uno, y utilizar dicha infonnación para deducir su propia posición sobre la Tie1i-a. Este procedimiento se basa en una sencilla operación llamada trilateración. La trilateración en 2D es un proceso relativamente simple, en el que, a partir del conocimiento de la distancia de un punto hacia el centro de 3 diferentes círculos de los cuales conoce su ubicación, se obtiene un punto único que describe la posición actual. Para el GPS, la trilateración se realiza en 3D, pero la lógica del proceso no difiere en mucho del proceso en 2D. Se trabaja con superficies esféricas en vez de perímetros planos, y se necesita sobreponer 4 diferentes esferas, de las cuales se conoce la posición de su centro y la distancia hacia cada uno de ellos. Para esto, la esfera descrita por la Tie1Ta puede servir como referencia, de modo que únicamente necesitamos conocer la distancia del receptor GPS a 3 diferentes. SEKA I. 2.

(10) satélites. En resumen, un receptor GPS necesita conocer lo siguiente para poder computar su posición: • La ubicación de al menos 3 satélites en el rango de recepción del receptor • La distancia entre el receptor y los satélites Los receptores de GPS deducen lo anterior analizando señales de alta frecuencia y baja potencia, que provienen de los satélites GPS. Las unidades más sofisticadas poseen receptores múltiples, de modo que pueden procesar las señales de diferentes satélites simultáneamente. Para mejorar la precisión del cálculo, así como saber la altura del receptor sobre la superficie terrestre, se necesita de un cuarto satélite. Para saber la distancia hacia un satélite, el GPS calcula el tiempo que la señal tardó en viajar desde que fue lanzada por el satélite, dado que la velocidad de las ondas de radio es una variable conocida. Este proceso de cálculo es algo complejo. En cierto momento, un satélite GPS dado, comienza a transmitir una señal con un largo patrón digital, conocido como código pseudoaleatorio. Si el receptor GPS lanzara dicha generación del patrón digital exactamente al mismo tiempo, podría calcular el tiempo que una señal tarda en viajar por el espacio, dado el retraso en la señal, desde el momento en que fue lanzada hasta que es recibida. Sin embargo, para que este proceso fuera lo suficientemente preciso se necesitaría de relojes atómicos de alta precisión, cuyo precio es superior al de los $5,000USD. Para resolver este problema, los satélites son dotados de dichos relojes atómicos, mientras que el receptor tiene un reloj no tan exacto, de cuarzo. Cuando el receptor recibe las señales y calcula las diferentes esferas, no existirá un punto único de intersección entre las esferas dado que el reloj del receptor no está en sincronía con los satélites. Pero, dado que los satélites sí están en sincronía entre ellos mismos, todas las esferas tendrán un error proporcional entre ellas. Con lo anterior, el receptor GPS calcula las correcciones necesarias para lograr que las 4 esferas generen un punto único de intersección, y en base a esa corrección también pone en sincronía su propio reloj. Finalmente, para que lo anterior funcione, el receptor GPS necesita saber la posición absoluta de los satélites con respecto a la tierra, lo cual obtiene a través de un almanaque interno, del que deduce la posición exacta de los satélites, dado que sus rutas de órbita son bien conocidas. Fuerzas gravitacionales en el espacio pueden afectar ligeramente la ruta de los satélites, sin embargo el Departamento de Defensa de los EUA lleva un registro de correcciones a las rutas de los satélites causadas por dichas fuerzas. Estas correcciones son transmitidas por los mismos satélites GPS. Finalmente, la manera en que se utiliza esta infonnación tiene un gran espectro de posibilidades. Una vez que el equipo GPS calcula su posición, puede dar al usuario datos como su latitud, longitud y altitud de la posición actual. Muchas veces, esta infonnación se combina con infonnación de mapas en fonnato digital para proporcionar soluciones de navegación terrestre, para diferentes medios de transporte, especialmente marítimos. En los últimos mi.os, esta tecnología se ha ido introduciendo en la tecnología de uso común, utilizando la infonnación recopilada por dispositivos GPS en sistemas de cómputo con aplicaciones civiles diversas. 1.2.2. Navegación GPS en México y el Mundo. Cada vez más países en el mundo cuentan con sistemas de navegación, sin embargo México sólo tiene una cobertura básica. La institución encargada de la infonnación geográfica, categoría a la que pertenecen los puntos GPS, sólo hace referencia a estaciones de observación fijas y distribuidas no unifonnemente en algunos lugares de la Ciudad de México y del País. La empresa Movilsoft, empresa mexicana de desaffollo de software, trabajó con Guía Roji para desarrollar un sistema de Localización GPS en Mapas para PDA. El software consta del despliegue de mapas con un marcador donde se muestra la localización actual.. SEKAI. 3.

(11) La empresa encargada de la obtención de datos geográficos para Microsoft Maps, intentó desan-ollar el GIS para la Ciudad de México en conjunto con Guía Roji. El proyecto fue un fracaso desde el principio ya que la infonnación de los mapas de Guía Roji es imprecisa e inexacta, por lo que resultaba imposible relacionar la info1mación de posicionamiento con los mapas. La tecnología de navegación por GPS está más desaiTOllada en Estados Unidos, Canadá y Europa. Las empresas Magellan y Garmin son las que llevan la pauta en desaiTOllo de nuevas tecnologías de navegación. Entre los fcroductos más innovadores se encuentra el sistema de navegación Magellan RoadMate 700 91 , que es uno de los más avanzados en el mundo, y cuesta $1 '080 dólares. Por parte de Garmin tenemos el Garmin Street Pilot Color Map®, que cuesta cerca de los $1'000 dólai·es. Las características más relevantes del Roadmate 700 son: Pantalla a color. Interfaz gráfica que muestra las rutas en tercera dimensión. Cuenta con mensajes de voz para avisar la dirección a tomar. Alcanzan capacidades de almacenamiento de hasta 10GB pai·a guardar mapas detallados de Estados Unidos de Norte América y Canadá. Precisión de hasta 3m, usando un máximo de 12 satélites. Una base de datos extensa de Puntos de Interés (POI) incluyendo gasolineras, restaurantes, etc. 4 maneras de escoger rutas: Menor tiempo, menor distancia, y menor o mayor uso de autopistas. Libreta de Direcciones lnfonnación de localización para dirigir a servicios de emergencias. No incluyen navegación en todas las ci udades. La expansión de software para soporte de otros países, como Alemai1ia, Bélgica y Francia, se vende por separado a un precio de $169 dólai·es.. Magellan RoadMate. Garmin Street Pilot. Una de las soluciones de navegación por GPS para PDA más completa y galardonada es GPSPilot, que coll'e sobre Palm OS versión 3.5 o mayor. Tiene opción de uso de GPS Bluetooth que utilice el protocolo NMEA-018. Se vende en módulos, con un costo total de $159.75 dólares: TripPilot ($39.95 dólares): Localización actual , selección de destino, y despliegue gráfico de un a ruta designada. Cubre varias ciudades de Estados Unidos de Norte América, Canadá y Europa, y está disponible en 11 idiomas. Fly ($39.95 dólares): Planeación de vuelos con infonnación de aeropuertos, ciudades, vientos, entre otros parámetros. Es capaz de calcular del tiempo y gasolina de un viaje. Tracker: ($39.95 dólares): Explora o guarda infonnación de viajes para referencias futuras. Cuenta con exportación de bitácoras de viaje hacia la PC. Atlas ($24.95 dólai·es): Despliega mapas que pueden ser bajados de la red. Compass ($14.95 dólares): Provee de una lectura de localización actual, altitud, velocidad y dirección.. SEKAI. 4.

(12) 1.2.3. Tecnología PDA y Sistemas Embebidos. Los PDA han ganado mucha popularidad en los últimos años, ya que cada vez son menos las restricciones que su tamaño le imponen en cuanto a duración de baterías y disponibilidad de memoria interna. El mercado está segmentado en dos partes: Los PDA que soportan el sistema operativo Windows CE®, conocidos como Pocket PC (PPC), y los que usan Palm OS@, comúnmente llamados Palms.. 1.3. Infraestructura Necesaria. Como platafonna de prueba para el sistema desarrollado, se utilizarán un dispositivo de cómputo de bolsillo y uno portátil. Como dispositivo GPS, se utilizará el EMT AC CRUX 11 BTGPS. Este dispositivo nos es particulannente útil dada su comunicación basada en Bluetooth, la cual proveerá al sistema de mayor compatibilidad y versatilidad. Finalmente, dado que la infonnación necesaria para construir nuestro GIS no existe actualmente, ésta será creada con el sistema de captura que desarrollaremos como primera parte del proyecto. Sin embargo, la capa de mapas rasterizados será provista por el INEGI a través de unos mapas aéreos que pone a la venta al público a $115 pesos, con 15 días de espera.. 1.4. Objetivo y Metas. El objetivo último del proyecto constituye el desarrollo de un sistema de navegación para transportes terrestres basado en GPS que, a través de dispositivos de cómputo de bolsillo PDA, pennita al usuario realizar tareas como: • Localizar su ubicación actual en un mapa • Reconocer de dicha ubicación, la velocidad y dirección a la que se dirige • Buscar un sitio, basado en dirección • Buscar un sitio, basado en nombre • Reconocer la ruta óptima y rutas alternativas con las que cuenta para alcanzar un sitio a partir de su posición actual (basándose en parámetros como, sentidos de las calles, vueltas pennitidas en cruces, etc.) Para poder desarrollar el sistema anterior, se requirió imponer un objetivo secundario que se describe a continuación. Este se compone de un sistema que nos pennita la captura de los datos que necesita el sistema de navegación para desarrollar las funciones previamente descritas. El sistema de captura de infonnación es, por sí mismo, un proyecto de suficiente complejidad. Sin embargo, los datos obtenidos por el sistema no pueden brindar ninguna funcionalidad, sino servir de base para otros sistemas, como el que proponemos en nuestro objetivo último, de ahí a que se tuvieron ambos objetivos para el desaiTollo del proyecto. Como metas se definieron las siguientes: • Realizar la implementación del sistema de captura • Utilizando el sistema de captura, poblar la base de datos con la infonnación necesaria, de la zona geográfica previamente especificada • Realizar la implementación del sistema de navegación • En ambos sistemas, generar una interfaz gráfica intuitiva y amigable • Para ambos sistemas, generar la documentación necesaria para su uso por terceros. SEKAI. 5.

(13) 1.5. Alcances del Proyecto. SEKAI se diferencia de los productos existentes en el mercado, en que sus contenidos están creados pensando en el mercado mexicano. Dadas las condiciones viales complejas de la Ciudad de México, aunado a que no existe un GIS preciso, SEKAI incluye el módulo de creación del GIS, diseüado para futura expansión de su base de datos. SEKAI también incluye el desarrollo del ambiente gráfico de la aplicación. l. Sistema de lnfonnación Geográfica (GIS) o Diseüo • Definición de datos relevantes • Definición de estructuras de datos • Fonnato distribuible de la infonnación o Implementación • Generación de mapas a partir del GIS. II. Sistema de Localización GPS en Mapas para Palm os® y Windows CE~ o Superposición de capas de infonnación o Despliegue de imágenes superpuestas o Ajuste de tamaüo de imágenes III. Sistema de Captura, Interpretación y Codificación de Datos GIS o Creación, actualización y borrado de infonnación del GIS o Relación entre capas del GIS y mapas o Interfaz gráfica de usuario (GUI) IV. Sistema de Navegación para el Cliente GPS o Planeación de rutas con base a la infonnación del GIS y preferencias del usuano o Actualización de infonnación del GIS o Migraciones a clientes GPS • PC Portátil • Pocket PC • Sistemas Embebidos .NET. NOTA: La programación está en inglés, ya que es un idioma práctico para la definición de nombres de variables, funciones y clases, además de que es el idioma en el que están diseüados los lenguajes de programación utilizados en el proyecto.. 2.. DESARROLLO DEL PROYECTO. En este capítulo se describen los resultados obtenidos a través del tiempo en el que se desarrolló el proyecto. Están divididos en tres secciones, que corresponden a las etapas por las que pasó. 2.1. Etapa de Diseño. El diseño de un proyecto es de las etapas más importantes, ya que serán los resultados de ésta los que definan la infraestructura del proyecto.. SEKAI. 6.

(14) 2.1.1. Pruebas del Equipo. La estrategia para probar el equipo GPS y su interacción con el PDA, fue desarrollar un software que creara la conexión del PDA al dispositivo GPS Bluetooth, y leyera las cadenas de caracteres proporcionadas por el GPS.. Conexión del PDA al Dispositivo GPS Bluetooth: El software abre conexión con el dispositivo Bluetooth GPS y en un cuadro de texto muestra todas las cadenas de texto recibidas por el puerto. De esta manera pudimos verificar el buen funcionamiento del dispositivo GPS, los tipos de cadenas GPS que nos entrega, los intervalos a los que manda cada una de las cadenas y que éstas llegaran cumpliendo con el estándar NMEA. Este componente nos sirvió también para comprobar la buena funcionalidad del manejador Bluetooth del dispositivo PD.. Lectura de Cadenas de Caracteres del GPS: Se desarrolló la librería de conversión GPS (explicada más adelante), y con ella se realizaron pruebas, suministrando como entrada todas las cadenas de GPS que se habían recibido con el componente anterior.. 2.1.2. Diseño del Sistema de Información Geográfica. La etapa de diseño del GIS comprende las actividades de definición de datos relevantes, definición de estructuras de datos y consideraciones para tener un formato distribuible de la infonnación. 2.1.2.1 Datos Proporcionados por el GPS Los datos que se reciben del GPS están fonnateados de acuerdo con el estándar NMEA-0183. La NMEA, o National Marine Electronics Association, se dedica a la definición de estándares de interfaces eléctricas y protocolos de datos para comunicación entre instrumentación marítima. Se presentan a continuación las características relevantes del estándar NMEA-0183: La transmisión de datos es de 4800 baudios. Los datos se transmiten en enunciados, cada uno empezando con '$', seguido por un identificador de quien envía los datos, un identificador de enunciados, campos de datos delimitados por comas, un checksum opcional, y un retomo de carro. Un enunciados puede tener hasta 82 caracteres de tipo ASCII Para SEKAI se utilizaron cuatro tipos de sentencias, GGA, GSA, RMC y VTC. La sentencia GGA (Datos de Fijación GPS), nos proporciona datos de posicionamiento y características de la conexión (fix). La sentencia GSA (Modo de Operación y SVs GPS) provee datos sobre los satélites y su relación con el receptor GPS. La sentencia RMC (Mínimo Recomendado para Datos de Tránsito) contiene infonnación sobre velocidad terrestre en nudos y la trayectoria promedio durante las últimas mediciones (track made good). Finalmente VTG (Trayectoria y Velocidad Terrestre) repite información del RMC, pero tiene un campo de velocidad teJTestre en kilómetros por hora. (8) En el Anexo 1 se encuentran detallados los datos correspondientes a cada sentencia que fue brevemente explicada en el párrafo anterior. 2.1.2.2 Nodos, Vectores, y Puntos de Corrección Un nodo es un punto georeferenciado que detennina el comienzo o final de un vector. Un vector es una línea fonnada por un nodo de inicio y uno de tenninación. Pueden o no estar definidos. SEKAI. 7.

(15) puntos de corrección para un vector, los cuales son usados para definir la fonna del último. Un vector puede o no tener puntos con infonnación adicional sobre el comportamiento y características. 2.1.2.3 Diseño de la Base de Datos A continuación se encuentra la infonnación sintetizada de la base de datos utilizada por el GIS. El código de colores utilizado en la siguiente tabla, está de acuerdo al tipo de uso que se le da a cada tabla de la Base de Datos (BD). Tabla de la BD Función. Node. Describe un nodo de comienzo o fin de vector y el tipo. Puede ser compartido por más de un vector. Puede estar relacionado con un punto.. Vector. Describe un vector fonnado de dos nodos, y describe una calle o un tramo de la misma. Contiene la orientación y un peso fijo usados para el cálculo de rutas. Son los nodos contiguos a los dos nodos de un vector. Usado para cálculo de rutas.. Hops Corrcction. Puntos de corrección para trazado de vectores. Utilizados para la generación de curvas Bezier.. Street. lnfonnación de calles y su relación con los vectores que la fonnan.. Numbers. Lista de números de cada lado de un vector.. Point. Puntos con infonnación adicional.. Quadrant. lnfonnación sobre mapas.. gisprefs / navprcfs. Preferencias del respectivamente. l'Dz. Puntos de interés para el usuario y la navegación.. Tipo de Uso:. Navegación. usuano del GIS y del sistema de navegación. 1111. GIS. La planeación de tipos de datos usados en cada atributo de la base de datos, es de suma importancia, ya que hay que priorizar tanto la calidad como la cantidad de la infonnación. Aunado a esto, la memoria de los dispositivos PDA es limitada, por lo que hay que poner atención en la cantidad que ocupa cada tabla. La utilización de memoria está en función del tipo de dato, así como la cantidad de registros. En el anexo 2 se encuentra el diagrama EntidadRelación de la base de datos.. 2.1.3. Implementación del Sistema de Información Geográfica. Como se mencionó en los objetivos del proyecto, para poder realizar un sistema de navegación, hubo que instituir un nuevo objetivo. Éste sería la creación de la infonnación del GIS. 2.1.3.1 Comunicación serial En las platafonnas escogidas para trabajar con el dispositivo GPS (PocketPC, computadora de escritorio y portátil, sistemas embebidos) el puerto Bluetooth se maneja de manera lógica como un puerto serial virtual. Todo el trabajo del protocolo de comunicación Bluetooth es manejado por un controlador propio de la plataforma, de manera que nuestro software trabaja con el puerto serial virtual que nos proporciona el manejador.. SEKAI. 8.

(16) Una vez abierto por software el enlace al dispositivo Bluetooth a través del puerto serial, la aplicación funciona como "lector" del puerto, dado que es abierto en modo de sólo lectura (no hay ninguna utilidad en escribir al puerto, dado que el dispositivo GPS no es programable). En este momento la aplicación comienza a recibir una cadena constante de caracteres a diferentes intervalos. La librería de comunicación con puerto serial reconoce el inicio de una cadena GPS (comienza con "$GP") y el final de la misma (tennina con "\n\r") y a base de eventos infonna a la aplicación que se ha recibido una nueva cadena GPS válida. Cualquier módulo que desee leer e interpretar las cadenas GPS deberá añadirse al conjunto de eventos de la librería serial, y recibirá como parámetro de cada evento la cadena de caracteres capturada.. 2.1.3.2 Conversión NMEA Para la conversión de las cadenas GPS se utiliza un analizador de texto que separa los fragmentos de una cadena, detennina el tipo dado el encabezado de la cadena (ej, $GPGGA para una cadena GGA), verifica que el número de fragmentos obtenidos corresponda al número especificado por el estándar para ese tipo de cadena, y finalmente valida el tipo de dato de cada fragmento (texto, numérico, un carácter, etc.) Una vez que se ha dado como válida la cadena, se construye un objeto a partir de ella, de la cual cada fragmento tiene un atributo definido en el objeto. Todos los atributos de los objetos GPS son de sólo lectura, de modo que pueden ser construidos únicamente con una cadena GPS válida. El intérprete recibe cualquier tipo de cadena GPS, y a su salida, se debe verificar de qué tipo es el objeto recibido, que cambiará dependiendo del tipo de cadena que se dio a la entrada.. 2.1.3.3 Captura de Datos para el GIS Para la captura de infonnación en el sistema GIS se utiliza una aplicación gráfica en el dispositivo portátil PDA o Laptop. El objetivo final del software de captura es poblar la base de datos con toda la infonnación necesaria para desarrollar el software de navegación. La captura se realiza en conjunto con el dispositivo GPS y posiciona los nodos, puntos de interés, puntos, vectores, cuadrantes, etc., con referencias geográficas en la base de datos, mientras que el usuario proporciona la demás infonnación (ej. nombre de calle, tipo de nodo, etc.) Para la captura de puntos y nodos, el usuario debe estar físicamente posicionado en los mismos, a la hora de la captura, para obtener del dispositivo GPS la referencia geográfica que será almacenada en la base de datos. Para la captura de vectores, el usuario tiene 3 opciones de captura: 1. Podrá crear el vector, creando al mismo tiempo los nodos que lo delimitan, así como los puntos de corrección 2. Podrá crear el vector a pa1tir de un nodo existente, y creando el nodo de cierre 3. Podrá crear el vector a partir de dos nodos existentes, para lo cual no deberá estar físicamente posicionado en el lugar al momento de la captura Una vez capturado un vector, se podrán agregar más datos al mismo como los puntos de corrección, vueltas pennitidas, sentido de la circulación en el vector, etc. Los cuadrantes están definidos en la base de datos como cuadros de idéntico tamaüo, que ha sido definido por nosotros como de un minuto de arco cuadrado, que equivale a un cuadrado de aproximadamente 1.852km de lado. El GIS SEKAl define cuadrantes para la organización de. SEKAI. 9.

(17) las imágenes que se muestran de fondo en cada uno de ellos, así como para mayor eficiencia en los algoritmos de búsqueda en los puntos y vectores contenidos por cada cuadrante. Los cuadrantes no se crean manualmente por el usuario, sino que son "activados" ( es decir, almacenados en la base de datos) cuando se captura el primer valor que cae dentro de un cuadrante que no existía antes. De esta manera solo existen los cuadrantes necesarios para contener todos los valores existentes de nodos, puntos y vectores. 2. l .3.4 Georeferencia de Mapas y Cuadrantes Los mapas aéreos proporcionados por el INEGI no están diseñados para embonar perfectamente, ni delimitan un área de arco detenninada. Por esta razón es necesario el compilar los mapas de tal manera que correspondan a la estructura de datos que definimos como cuadrante. Para solucionar este problema se utiliza el georeferenciado de los mapas y una compilación en porciones manejables de los mismos. El procedimiento comienza con el desplegado de la imagen del mapa en una superficie gráfica. La referencia de coordenadas geográficas que provee el GPS y las coordenadas cartesianas del mapa, se hace por medio de una Triada. La triada es una tercia de equivalencias entre ambos tipos de coordenadas. Al comenzar el proceso de compilación de mapas, se sobreponen los puntos comunes y se recortan de tal manera que equivalgan a un cuadrante (ver definición). Esta etapa no ha sido tenninada por completo.. 2.2. Etapa de Aplicación. Como dice su nombre, ésta etapa hizo énfasis en la aplicación de la infraestructura creada durante la etapa anterior, para generar herramientas de mayor nivel. 2.2. l. Generación de Mapas a partir del GIS. La generación de mapas a partir del GIS se refiere a las capas designadas para uso por el GIS. Éstas son tres: La primera corresponde a aspectos de vialidad (nodos, puntos y vectores), mientras que la segunda es la de PDI. La última muestra un mapa georeferenciado de fondo. 2.2.2. Superposición de Capas. Las tres capas lógicas mencionadas, deben ser desplegadas en la pantalla del dispositivo como una sola. Dentro de la memoria del dispositivo portátil, las imágenes son manejadas como mapas de bits, requiriendo mucha memoria. Por esta razón, el algoritmo de despliegue debe ser muy eficiente, para que no se sature la memoria y no haya mucho retardo de despliegue. 2.2.3. Ambiente Gráfico del Sistema de Navegación. Se desairnlló un sistema modular utilizable tanto para el GIS como para el sistema de navegación. De esta manera, las tareas de procesamiento comunes como son el despliegue de capas y la generación de mapas a partir del GIS, son extendidas por las características específicas de cada sistema. 2.2.4. Interacción del GIS con el Sistema de Navegación. La interacción del GIS con el sistema de navegación corresponde al manejo de infonnación capturada estática o dinámicamente (de prueba o relevantes). La infonnación es unificada en objetos representativos de la base de datos, y extendida para manejo de los motores de los sistemas.. SEKAI. 10.

(18) 2.3. Etapa de Integración. Una vez que se cuenta con la infraestructura tanto de bajo como de alto nivel, es posible desarrollar y expandirla, para cumplir los demás objetivos y alcances. 2.3.1. Integración de PDis al GIS. Un PDI representa un punto en el mapa, en el que se encuentra un lugar de interés que responde a necesidades específicas. Por mencionar algunos ejemplos, un banco, un cine o una gasolinera representan 3 puntos de interés de rubros distintos. La integración de PDis al sistema SEKAI se hace con la finalidad de proporcionar al usuario la posibilidad de buscar direcciones de lugares bien específicos que cubran sus necesidades inmediatas mientras se desplazan por la ciudad. Por ejemplo, se puede necesitar conocer cómo llegar al cajero más cercano, la gasolinera más cercana, etc., sin conocer el área en la que nos encontramos. Para eso basta con hacer una búsqueda por cercanía a los PDis de interés necesitados. Ésta y otras situaciones que nos indicaron la necesidad de integrar PDis a la base de datos fueron las razones de que se llevara a cabo esta extensión al sistema SEKAI. Los PDis se dejaron fuera del desarrollo del resto del sistema SEKAI hasta este punto. Para integrarlos al resto de la solución, fue necesario expandir la base de datos, para poder almacenarlos de manera pennanente. Se extendió el GIS para realizar su captura por medio del mismo sistema de captura GIS. Finalmente se extendieron algunos algoritmos de navegación, para poder buscar PDis por cercanía, por nombre y para pintarlos sobre el QCanvas. 2.3.2. Migración y Pruebas en Platafonnas de Cliente. La platafonna fue desarrollada inicialmente para PocketPC®, ya que ésta constituía nuestra principal platafonna de pruebas, al ser la única que reconocía nuestro cliente GPS. Al no tener un dispositivo de Bluetooth serial para la computadora, no se pudieron realizar pruebas inicialmente con otras platafonnas. Una vez tenninado el sistema de captura, se realizó la migración de algunas fonnas a la platafonna .NET para escritorio. Los cambios fueron realizados casi sin esfuerzo dada la compatibilidad entre la platafonna Compact .NET y la platafonna .NET de escritorio. Sólo algunas pa1ies del sistema necesitaron ser escritas de nuevo, dadas las diferencias tan significativas entre ambas platafonnas, como fueron, los manejadores de las bases de datos y el cliente gráfico del GIS. Una vez migrada tanto a plataformas Compact .NET como .NET de escritorio, el sistema SEKAI es prácticamente utilizable en cualquier sistema embebido que soporte .NET, ya sea con sistemas operativos como Windows CE® o Windows XP Embedded@ 2.3.3. Captura de Datos Relevantes. Para realizar la captura, se realizó una expedición por la zona designada como de prueba, de manera que la inserción de datos fuera hecha en campo y con datos reales. Esto fue hecho en un solo día, y apoyándonos del sistema gráfico de captura. Ésta actividad fue desplazada a fechas posteriores de las que se tenían planeadas dado el retraso que se tuvo en la finalización de dicho cliente gráfico. Sin embargo, con la captura se ha probado la eficiencia del programa de captura, así como la exactitud del cliente GPS. 2.3.4. Extensión a los Sistemas GIS y Navegación. Se había planeado en un inicio extender el GIS y el sistema de navegación, dada la op01iunidad y dado que tennináramos el desarrollo del proyecto con tiempo de sobra. Sin embargo, por las dificultades de desarrollo que se presentaron, sólo fue posible la implementación de una extensión al GIS, la cual fue la integración de PDis, ya descrita anterionnente. Fuera de esa extensión, ningún trabajo extra fue realizado sobre los componentes ya existentes.. SEKAI. 11.

(19) 2.3.5. Algoritmo de Cálculo de Trayectorias. Para el algoritmo de navegación de SEKAI, se ha implementado el proyecto SekaiNav, el cual contiene el conjunto de objetos y métodos necesarios para detenninar rutas de viaje. Actualmente, una ruta puede ser calculada de un nodo a otro de la base de datos, dado que existen vectores que comuniquen a ambos nodos. El algoritmo es de búsqueda extensiva, por tanto, la misma no se realiza sobre el conjunto completo de nodos y vectores de la base de datos, sino que es limitado en el número de nodos que entran dentro de cada corrida del algoritmo. Éste conjunto de nodos deberá ser proporcionado por el cliente del algoritmo. Dicho usuario deberá detenninar cuál es la cobertura geográfica ideal, alrededor de los nodos inicio y destino, para limitar el espacio de búsqueda del algoritmo. Dicha limitación dependerá principalmente de la capacidad de procesamiento del dispositivo. Hablando particulannente de la PDA, una buena limitación es integrar a la búsqueda, únicamente los cuadrantes que afectan a los nodos de inicio, fin, y aquellos que se encuentran en el rectángulo fonnado por estos dos cuadrantes. Esto se ejemplifica en la figura siguiente:. 1 cuadrante = 1' X 1'. Á1e,l de lnis11ued.i. ~-N-odo_::~'T_io- j- ~ - ~ / El algoritmo utilizado es el de Dijkstra, adaptando su funcionamiento para trabajar con los tipos de datos de SekaiData. Para más detalle del algoritmo, ver el diagrama en el anexo 7. Para más detalle de los objetos existentes en el proyecto de navegación, ver la siguiente sección. Una vez concluido el algoritmo de navegación, cada paso es examinado para detenninar la dirección que el cliente debe tomar al final de cada vector. Ésta dirección es detenninada, dependiendo del ángulo fonnado por los vectores de 2 pasos contiguos, como izquierda, derecha, o de frente. Dicho cálculo es realizado únicamente cuando los 2 pasos contienen vectores que pertenecen a calles diferentes. En caso de que entre ambos pasos, el procedimiento sea cambiar de vectores, pero pennaneciendo en la misma calle, no se señala ningún cambio de orientación.. 3.. ESTRUCTURA Y COMPONENTES. Este capítulo trata de la abstracción de datos, para ser utilizables dentro del ambiente programático del sistema que se está diseñando e implementando. 3.1. Componentes de Abstracción de Datos. Las estructuras de datos son tipos de datos abstractos. Esto significa que representan las propiedades de un concepto fuera del mundo computacional. Además de incluir métodos para acceder y modificar a la infonnación contenida, éstos objetos contienen métodos y propiedades lógicas que representan acciones que pueden realizar.. SEKAI. 12.

(20) 3.1.1. SNode. Este tipo de dato guarda la infonnación relacionada con la descripción de un nodo, tal como lo describe el GIS de SEKAI. Los parámetros de SNode siguen la definición hecha en el GIS de la infonnación de nodo, que son: • ID. Corresponde a la llave primaria del registro node en la base de datos. • Type. Define el tipo de nodo al que pertenece • Lat, Lon: Latitud y longitud del nodo en fonnatojlotante compluesto. • Altitude: Altitud del nodo, sobre el nivel del mar • Comments: Comentarios asociados al nodo. Por otro lado, tiene otro atributo de coordenadas de tipo SekaiSpherical.Coordinates, el cual se compone a partir de los datos contenidos en Lat, Lon y Altitude. Y sus métodos de Equals() y ToString() han sido sobrescritos con comportamientos más adecuados al sistema de SEKAI. Equals() compara 2 objetos de tipo SNode dado su ID. ToString() imprime infonnación que es utilizada en representaciones gráficas del objeto. Éstos 2 métodos también han sido sobrescritos con la misma lógica en el resto de los objetos de SekaiData. 3.1.2. SVector. Este tipo de dato representa los datos relacionados con un vector, su almacenamiento en la base de datos y su comportamiento dentro del sistema SEKAI. Los parámetros de SVector que almacenan infonnación de la base de datos son: • ID: Corresponde a la llave primaria del registro vector en la base de datos. • Type: Define el tipo de vector al que pertenece • IDNodel, IDNode2: Relaciona basado en IDs de nodo al vector con los nodos que lo definen • Distance: La distancia del vector entre ambos nodos. Es calculada en su creación y edición • Orientation: El sentido en que corre la circulación dentro del vector, del nodo 1 al nodo 2 (O), del nodo 2 al nodo 1 ( 1), o en ambos sentidos (2). • Lanes: El número de carriles por sentido que tiene el vector • Weight: La definición de los diferentes pesos que afectan al vector, en fonnato string como un conjunto de números separados por espacios. • Street: El ID de la calle a la que pertenece el vector. Como ya habíamos mencionado antes, una calle se fonna por varios vectores. • Comments: Comentarios asociados al vector Adicional a los parámetros especificados por la base de datos, SVector contiene atributos que se utilizan en diferentes secciones del sistema SEKAI. Entre ellos: • M, 8: Son las literales que fonnan la ecuación de la recta para el vector en el QCan\'Cls (v = mx+b). •. 3.1.3. x 1, x2, yl, y2: Son las últimas coordenadas en que fue pintado el vector en QCan\'Cls. El objetivo de conservar estos valores es pennitir que el vector sea repintado en circunstancias en que el origen de QCanvas no ha sido alterado, y evitar de esta fonna, cálculos innecesarios. SStreet. Este tipo de dato representa los datos relacionados con una calle, su almacenamiento en la base de datos y su comportamiento dentro del sistema SEKAI. Como ya se había mencionado con anterioridad, la calle se compone por diversos vectores. El objetivo de tener objetos de este tipo es, pennitir la agrupación de varios vectores que fonnan una vía conocida con cierto nombre,. SEKAI. 13.

(21) evitando repetir esa información en cada uno de dichos vectores. Los parámetros de SStreet que definen su infonnación almacenada en la base de datos son: • ID: Corresponde a la llave primaria del registro street en la base de datos. • Name: El nombre de la calle • Area: La colonia. • ZIP: El código postal al que corresponde la calle • Type: El tipo de calle almacenado Este tipo de dato, a diferencia de los anteriores, no requiere de infonnación o procesamiento adicionales a los almacenados en la base de datos. 3.1.4. SPoint. Este tipo de dato representa a un punto en el sistema SEKAI. Un punto es una manera de guardar infonnación específica acerca de una coordenada geográfica, como podría ser la existencia de un semáforo, de un paso a desnivel, de entradas y salidas a vías rápidas, etc. Los atributos de este objeto que son persistentes en la base de datos son: • ID: Corresponde a la llave primaria del registro point en la base de datos. • IDVector: ID del vector al que se relaciona este punto (si es que lo hay) • Orientation: Orientación sobre el vector en la que se localiza este punto, si es que está relacionado a un vector • Type: Tipo de punto • SubType: Subtipo del punto, su significado depende del tipo de punto • Lat, Lon: Las coordenadas de latitud y longitud en formato de punto flotante compuesto • Altitude: Altitud del punto sobre el nivel del mar Sólo un atributo extra contiene este tipo de objeto, relacionado con el sistema SEKAI, que corresponde al objeto de tipo SekaiSpherical.Coordinates, construido con los datos Lat, Lon y Altitud del punto. 3.1.5. SCorrection. Este objeto equivale a un punto de cotTección para el trazado de un vector. Los atributos que se hacen pennanentes por medio de la base de datos, son los siguientes: • ID: Corresponde a la llave primaria del registro correction en la base de datos. • IDVector: ID del vector al que corresponde este punto de corrección • Lat, Lon, Altitude: Los componentes de las coordenadas esféricas del punto de corrección, en fonnato de punto flotante compuesto. Sólo un atributo extra contiene este tipo de objeto, relacionado con el sistema SEKAI, que corresponde al objeto de tipo SekaiSpherical.Coordinates, construido con los datos Lat, Lon y Altitude del punto. 3.1.6. SNumbers. Este objeto representa una secuencia de numeración sobre un vector, para pennitir la búsqueda de direcciones por número en el sistema SEKAI. Sus atributos que se hacen pennanentes en la base de datos son los siguientes: • ID: Corresponde a la llave primaria del registro "numbers" en la base de datos. • IDVector: ID del vector en el que está la secuencia de numeración actual • Orientation: Orientación sobre el vector en el que se encuentra esta numeración • Base: Base en la que comienza la numeración • Delta: Cantidad de números que comprende la numeración. SEKAI. 14.

(22) La numeración funciona de la siguiente manera: si el número en Base es impar, la numeración comprende únicamente números impares (o viceversa) y el Base+Delta es el último valor que alcanza la numeración.. 3.1. 7. SQuadrant. Este objeto representa un cuadrante en la base de datos. Un cuadrante está definido como el espacio comprendido por 1 minuto cuadrado. Sus atributos son los siguientes: • ID: Corresponde a la llave primaria del registro numbers en la base de datos. • Lat, Lon: Los componentes de las coordenadas esféricas del punto de corrección, en fonnato de punto flotante compuesto. • Project: El nombre del proyecto al que corresponde este cuadrante. 3.2. Componentes de Tratamiento de Datos y Comunicación. El tratamiento de datos corresponde a tareas de obtención y guardado de información en bases de datos, de manera programática. 3.2.1. DBDriver. Este objeto se encarga de realizar la abstracción de la base de datos, pennitiendo a las capas superiores de la aplicación, realizar preguntas significativas, como "obtener todos los nodos en cierto cuadrante", "obtener todos los vectores relacionados con ciertos nodos", etc. La existencia de este man~jador abstracto nos facilita más tarde integrar nuevas bases de datos a la platafonna sin necesidad alguna de alterar el código, más que de manera mínima para especificar que se debe cargar un manejador distinto. Esto es porque el objeto DBDriver en sí, no contendrá ninguna implementación específica de sus métodos, sino que servirá de interfaz, para que los verdaderos manejadores de las bases de datos puedan ser cargados y ser proporcionados transparentemente al resto de la aplicación. La funcionalidad que define DBDriver está dividida en siete: • Operaciones sobre nodos. • Operaciones sobre numeración. • Operaciones sobre vectores. • Operaciones sobre puntos. • Operaciones sobre cuadrantes. • Operaciones sobre preferencias. • Operaciones sobre calles. Esta funcionalidad ya ha sido implementada por 2 objetos que cumplen con la interfaz del DBDriver. El primero de estos objetos es el OdbcDril·er, que implementa la funcionalidad descrita anterionnente para la bases de datos de que tengan una conexión ODBC, como por ejemplo MsAccess y MySql. Por otro lado, el objeto Sq/CeDriver ha sido implementado también, lo cual nos pennite comunicamos con la base de datos en la aplicación que se ejecuta en el PDA. En ambas implementaciones se manejan las conexiones a las bases de datos internamente, presentando un buen nivel de transparencia al programador.. 3.3. Componentes Gráficos. Los componentes gráficos son la abstracción de las herramientas para crear una interfase gráfica para el usuario. Se buscó cubrir las necesidades básicas de los desarrolladores que quisieran expandir el proyecto.. SEKAI. 15.

(23) 3.3.1. Compass. Este objeto tiene como propósito mostrar una brújula que indique la orientación que lleva el cliente con respecto al mapa mostrado en pantalla. Se decidió programar este objeto auxiliar dado que, en un desconocimiento total del área en que se encuentra una persona, es imposible determinar la orientación de la misma dentro del mapa, si ésta conoce únicamente la calle sobre la que está. Por tanto, por la ayuda visual extra que representa para los usuarios del sistema, se decidió incluirlo en la distribución a entregar del proyecto. Para su funcionamiento correcto únicamente se necesita inicializarla con una referencia al objeto SekaiGPS.GPSClient. Este componente funciona solo cuando el usuario está en movimiento. 3.3.2. NavBar. Esta barra de navegación proporciona la funcionalidad de un medidor de progreso para un viaje. Dependiendo del progreso que lleve el cliente con respecto a un viaje programado, esta barra indica el porcentaje de viaje que ha sido realizado e indica la posición del cliente con respecto a la finalización del mismo. Cuando le es proporcionada una referencia al SekaiControls.QCavas, puede escuchar también acciones del ratón sobre la barra, y mostrar el punto en el mapa que equivale al porcentaje del viaje seleccionado en la barra. Para la inicialización de este objeto, únicamente se necesita la referencia al actual SekaiNav.NavP/an, del cual se obtiene la posición actual del cliente con respecto al viaje, y del cual se refresca la información en los intervalos seleccionados por el cliente. 3.3.3. NavConsole. Este objeto presenta un listado de todos los pasos que debe seguir el conductor para llegar a su destino final. Las calles que se deben seguir, las vueltas que se deben tomar, etc., son presentadas de manera textual. Así mismo, con la correcta referencia a la base de datos y el mapa, puede posicionar la vista de manera que se muestren los vectores y nodos afectados por un paso específico. 3.3.4. QCanms. Este objeto es el encargado de desplegar la infonnación gráfica en la pantalla del dispositivo (ya sea PDA o PC) Este objeto contiene únicamente una imagen de fondo, la cual construye con ayuda del GISPainter, y se encarga de las tareas que no involucran conocimiento de los objetos que son desplegados sobre la imagen (como los cuadrantes, vectores, nodos, etc.). Es decir, maneja acciones como, el escalamiento de la imagen, traducir un "clic" sobre pantalla a una coordenada GPS, poder centrar la infonnación desplegada sobre una coordenada GPS, realizar acercamientos y alejamientos basados en unidades pixels por minuto. Finalmente, la última función que nos proporciona QCanvas es la de dibujar íconos especiales en regiones de interés, como el último clic en pantalla, la posición del cliente GPS en pantalla, y también nos pennite reconocer y realizar los desplazamientos de la imagen con funcionalidad "pan". A continuación se presentan un par de imágenes que muestran parte de la funcionalidad de Canms. J · ;r ' _. . 1 ~:. Opciones de Despliegue de Datos. SEKAI. Opciones de Zoom. 16.

(24) El objeto QCanvas presenta las siguientes propiedades: la imagen de fondo (a pintar en el dispositivo), el tamaño de despliegue, el origen en coordenadas esféricas del punto (0,0), los habilitadores de señalización de coordenadas de Mouse y cliente GPS, y zoom ajustable. Las funciones que ofrece a otros componentes son: obtener el equivalente en GPS de una coordenada en píxeles y viceversa y centrar la vista del cliente en una coordenada GPS. Por otra parte, las funciones internas al componente son: funciones relacionadas con manejo de las acciones del Mouse (onMouseDown, onMouseUp), la construcción de la imagen interna, y el despliegue de esa imagen en pantalla. Una función especial del QCanvas es calcular las funciones de la curva de corrección de tipo Bezier de los vectores que se envían al GISPainter, y posterionnente al Artist para ser postprocesada. La creación de la curva Bezier utilizada en SEKAI está descrita en el anexo 5.. GISPainter. 3.3.5. El objeto GJSPainter es un objeto auxiliar del QCanvas. Este objeto es el que contiene infonnación acerca del manejo de los objetos de la base de datos, para que éstos puedan ser desplegados en pantalla. Este objeto deberá recibir colecciones de nodos, vectores y cuadrantes, y regresar una imagen ya procesada, que después será únicamente escalada y postprocesada por el QCanvas, para su presentación en pantalla. A continuación se encuentran dos imágenes de ejemplo del procesamiento de GJSPainter.. Cuadrantes, nodos y vectores. Nodos y vectores. Entre otras ventajas, la implementación de un objeto separado al QCanvas para realizar esta tarea, es que nos facilita la creación de "temas" en el proyecto. NOTA: Dicho objetivo no está contemplado en la entrega final, sin embargo, nos parece particulannente útil que un usuario pueda seleccionar diferentes fonnas en que desee que el sistema interprete la infonnación del GIS, como mostrar de diferente color las calles y las intersecciones, o mostrarlas de diferente tamaño (ejemplo, un módulo de ayuda a las personas con dificultades visuales) o incluso mostrar infonnación construida sobre la infonnación que recibe.. Los algoritmos de despliegue utilizados por este componente no son complejos. Para el despliegue de nodos, se piden a la base de datos todos aquellos nodos que entren dentro de las coordenadas desplegables por el QCanrns, posterionnente, sus coordenadas GPS son. SEKAI. 17.

(25) convertidas a coordenadas en píxeles, por medio de los métodos proporcionados por QCanvas, y finalmente, el nodo es pintado de diferente color, dependiendo del tipo de nodo. Por su parte, el algoritmo de despliegue de vectores, toma los nodos que fueron obtenidos en el paso anterior, y de la base de datos obtiene los vectores relacionados con dichos nodos, posterionnente para cada vector obtiene su ecuación de la recta, basada en coordenadas de píxeles (y=mx+b ), y pinta al vector, utilizando la ecuación de la recta para ubicar los extremos que salen del alcance de la pantalla del cliente, finalmente, el color y ancho del vector pintado son seleccionados dependiendo del tipo de vector. Para el despliegue de cuadrantes, la base de datos no es utilizada. En vez de eso, se utiliza un sistema de almacenamiento en archivos. Todas las imágenes de los cuadrantes son almacenadas en la ruta Maps\[Lat]\[Lon]\GGGMMSS.jpg, donde [Lat] puede ser No S (Norte o Sur), [Lon] puede ser E o W (Este u Oeste) y GGGMMSS corresponde a los dígitos de grados, minutos y segundos respectivamente. Con esta estructura definida, el GJSPainter obtiene del QCanvas, cuales son sus coordenadas superior izquierda e inferior derecha. Posterionnente calcula qué cuadrantes aparecen en dicho QCanvas, y obtiene las imágenes de la estructura de archivos. Este proceso crea un buffer de imágenes para no perder la referencia a las mismas, y en la siguiente llamada al método de pintado de cuadrantes de dicho buffer, elimina los cuadrantes que han salido de alcance. Finalmente, almacena los nuevos nodos que han entrado en el QCanvas.. 3.3.6. Artist. El objeto Artist es uno de soporte al GISPainter. Éste está encargado de procesamiento y acondicionamiento básicos y avanzados para datos de despliegue. Las dos funciones principales de Artist son el acondicionamiento de datos de despliegue de trabajo, despliegue por tipo, y despliegue de correcciones. Despliegue de correcciones:. Los puntos de corrección de la curva Bezier calculados en QCanms , requieren un procesamiento distinto al nonnal para se desplegados en pantalla. Esto es porque los puntos describen segmentos de la curva total entre dos nodos. , ----~-.. l. •. il'. \.. ... .-~-. !. //. i. •.. .... •. -----. Despliegue de corrección desactivado. Despliegue de corrección activado. Despliegue de datos de trabajo, y por tipo:. Dependiendo del tipo de vector que se haya capturado, Artist está encargado de crear los objetos gráficos correspondientes. Su funcionalidad consta en hacer líneas de distinto grosor y hacer los cambios de color en segmentos. En caso de estar operando en modo de trabajo, las líneas son dibujadas con propiedades que las hacen más manejables, como por ejemplo un grosor predetenninado y un color no llamativo.. SEKAI. 18.

(26) Despliegue de tipo de vectores. 3.4. Componentes de Procesamiento. Los componentes procesamiento son los encargados de interpretar la infonnación básica obtenida del GIS, y acondicionarla de de tal manera que pueda ser utilizable de manera directa por parte de otros componentes.. 3.4. l. SekaiSpherical. Uno de los objetos más utilizados es SekaiSpherical. Coordinares. Éste contiene todos los métodos de conversión entre fonnatos de coordenadas esféricas. Dentro del espacio de nombres de SekaiSpherical también existe un objeto que pennite calcular la distancia entre dos puntos. Estos puntos están representados por objetos propietarios de SEKAI llamados Coordinares.. 3.4.2. SekaiSpherical. Coordinates. Este objeto pennite la representación de coordenadas esféricas, definidas por una latitud, una longitud y una altura sobre el nivel del mar. Su construcción debe ser hecha con los datos obtenidos por el cliente GPS. El fomrnto que nos da el cliente GPS es de números de punto flotante compuestos. Sin embargo, para el buen funcionamiento del sistema SEKAI, es necesario utilizar dicha infonnación en otros fonnatos. Los fonnatos adicionales más utilizados son, como enteros separados para grados, minutos y segundos, tanto de latitud como longitud. Esto es porque, en ciertas ocasiones, utilizar lógica de enteros nos da resultados más precisos. En otras ocasiones necesitamos utilizar un fonnato de punto flotante simple. En algunas otras ocasiones necesitamos convertir la información en una cadena de caracteres para poder representarla de manera visual. Para lo anterior, el objeto S<!kaiSpherical.Coordinates puede ser inicializado con uno de los fonnatos soportados, y le pueden ser solicitados los datos en cualquiera de los otros fonnatos. Cada objeto SekaiSpherical.Coordinatl!s conserva un identificador acerca del tipo de dato que fue utilizado por su inicialización. Esto es para utilizar siempre el dato original que fue suministrado para el resto de las conversiones, en vez de utilizar datos ya convertidos para realizar conversiones posteriores. Esto con el objetivo de conservar la mayor precisión posible en los datos. Para lo anterior, fueron creadas rutinas internas al objeto que convierten de todos los tipos de datos hacia todos los tipos de datos. La construcción de un objeto de este tipo, no toma ningún parámetro. Al ser creado, el objeto contiene valores inválidos en sus atributos. Debe ser inicializado por medio de uno de los siguientes métodos:. SEKAI. 19.

(27) •. •. •. •. setAbsolutes(int ilatAbs, int ilonAbs, int iA!titude) Recibe los valores absolutos para la inicialización del objeto. Los valores absolutos son, las coordenadas de latitud y longitud convertidas al número total de segundos equivalentes. setlnt(int ilatDeg, int ilatMin, int ilatSec, int ilonDeg, int ilonMin, int ilonSec, int iAltitude) Recibe los valores de grados, minutos y segundos separados para los valores de latitud y longitud. setFloatSingle(double jLatitudeS, double JLongitudeS, double fAltitude) Recibe los valores de latitud y longitud como valores de punto flotante en fonnato simple. Este fonnato consiste en un número que contiene en su parte entera la cantidad de grados, y en su parte fracciona! contiene los minutos y segundos expresados como fracción de grados. setF!oatCompound(double .fLatitudeC, double fLongitudeC, double fAltitude) Recibe los valores de latitud y longitud como valores de punto flotante en fonnato compuesto. Este fonnato es el utilizado por nuestro cliente GPS y por las cadenas de caracteres NMEA. Consiste en un entero que corresponde al número de grados multiplicados por 100 más el número de minutos, y una parte fracciona! que contiene el número de segundos como fracción de minutos.. El objeto contiene propiedades que entregan los valores en cada uno de los fonnatos deseados, por mencionar los más importantes: • LatitudeSingle, LongitudeSingle Entregan los valores de latitud y longitud en fonnato de punto flotante simple • LatitudeCompound, LongitudeCompund Entregan los valores de latitud y longitud en fonnato de punto flotante compuesto • LatitudeDegrees, LatitudeMinutes, LatitudeSeconds, LongitudeDegrees, LongitudeMinutes, LongitudeSeconds Entregan los valores de latitud y longitud en fonnato entero • LatitudeAbsolute, LongitudeAbsolute Entregan los valores de latitud y longitud en fo1111ato de números absolutos 3.4.3. SekaiData. Triad. Este objeto se utiliza para la georeferencia de los mapas utilizados como fondo de la capa de cuadrantes en el sistema SEKAI. La georeferencia de los mapas es necesaria para poder dibujar con-ectamente sobre ellos los nodos y vectores, dadas sus coordenadas esféricas. Para realizar dicha georeferencia, explicada previamente en este documento, se utiliza el objeto de tipo SekaiData. Triad. Su única función es almacenar tres puntos cardinales y relacionarlos con tres coordenadas esféricas. El objeto no realiza ningún procesamiento adicional. 3.4.4. SekaiNav.NaiP!an. Define una secuencia de NavHops a través de los cuales se puede llegar desde el nodo de inicio al nodo destino. SekaiNm·.NmPlan puede ser manejado como un aneglo (por medio del operador []) para obtener los pasos del plan de navegación, ya que extiende de System. Col lections.Arraylist. 4.4.5. SekaiNav.NavHop. Define la manera de llegar a un nodo. Sólo representa un nodo destino y un vector por el cuál se llegó a dicho nodo. Además, guarda el estado acumulado de pesos, distancia y número de saltos que se han dado para llegar hasta el nodo en cuestión, desde el nodo de inicio.. SEKAI. 20.

(28) 3.4.6. GJSEngine. Este componente se encarga de la administración de ventanas y entradas para realizar las actividades relacionadas con la captura de la infonnación por el cliente para poblar el GIS. Este componente está más relacionado con la interacción con cliente y base de datos, que con algoritmos complejos. Para el despliegue gráfico utiliza la funcionalidad del QCanvas. Para el almacenamiento en la base de datos, utiliza la funcionalidad del DBDriver. Como puede verse, la complejidad programática de este componente será baja, mientras que su nivel de integración de los componentes existentes será alto. 3.4.7. NavEngine. Este componente es la integración de funcionalidades y despliegues que el software para el usuario del sistema SEKAI podrá utilizar para su funcionamiento. Entre otras, sus funciones principales serán la de despliegue de instrucciones de manejo para una ruta en particular, la instrucción auditiva de trayectorias, el despliegue de las trayectorias seleccionadas con una diferente tonalidad para resaltar en la pantalla del dispositivo, ajustar la ubicación del cliente en una de las posibles ubicaciones del GIS (sobre un vector, para ser más específicos).. 4.. PRUEBAS Y PROCESOS. Las pruebas se realizaron para probar la funcionalidad de las librerías que se generaron durante el proyecto. A pesar de que el software desarrollado para este propósito no es parte de nuestros objetivos, se puso empeüo en que exploraran la funcionalidad de nuestras librerías lo más exhaustivamente posible. 4.1. Captura de Nodos, Puntos, Vectores, y PDis. A pesar de la aparente trivialidad del llenado de una base de datos, aunque sea tan compleja como la utilizada para guardar los datos del GIS, la secuencia de captura se estudiado cuidadosamente. La razón principal es la eficiencia de tiempo de captura, pero otro factor a considerar es lo amistoso que sea el sistema al realizar operaciones que involucran mucha información. Los algoritmos de captura se hicieron en forma de autómatas finitos. Se encuentran gráficamente en el anexo 1. Para mejorar el entendimiento de las máquinas de estados presentados en dicho anexo, se presenta como ejemplo la creación de un nuevo vector a partir de dos nodos nuevos.La creación de un nodo, un punto, o un POI puede ser de dos tipos. En el primero se utiliza la coordenada actual como punto de inicio. El segundo hace posible la selección de una coordenada arbitraria en el despliegue actual.. VecLt1 ";t.«! l ..... ¡. ~. ( t."T·ff. . !lj. i:. ~¡..,-~h-,.ox~,--3~.. .'2.. Onr<lr.i.t1. tt.tA. T,r,r,. ~. lf.oO!)ll~ll(m.l. j. -·"••"u""'J. ~. ~]. J __ ,;1.:_J. ,,.,,', __J ~ ~ t S e .i! l'l)ll:Se_,-_.,. ISI V'>!IIN)P,.n.-idt=~r. GU del sistrma de captura del GIS. SEKAI. Sistema de captura del GIS: Nuevo ,·cclor. 21.

(29) En la creación de un nuevo vector a partir de dos nodos nuevos comienza con la selección del nuevo nodo. Durante el tiempo de espera por el segundo nodo, pueden capturarse puntos relacionados con el vector. Estos puntos pueden ser de ajuste, o de especificación de características, como lo son las entradas y salidas al vector. Una vez seleccionado el segundo nodo, se crea el vector con estas características y otras adicionales. En el caso en el cual el nodo nuevo quede cerca de uno ya existente, puede cambiar la modalidad de captura a la de nodos existentes, para no tener infonnación imprecisa o redundante.. 4.2. Puntos de Corrección. Al probar las alternativas para incorporar puntos de coITecc10n, nos topamos con dos alternativas. La primera constaba en dibujar líneas que conectaran los puntos de co1Tección. El procesamiento requerido es poco, ya que solo tiene que ver con despliegue de figuras . El segundo constaba en crear una curva que se aproxima a los puntos de coITección. Como fue discutido en el componente QCanvas, hay que hacer un cálculo para obtener la ecuación que describe la curva. Según las pruebas de rapidez de cambio entre pantallas al desplazar la pantalla de un lado a otro, este último método es aproximadamente 3 veces más pesado para el procesador que el primero. A pesar de la desventaja de procesamiento, la implementación del sistema requiere ajuste de objetos a las curvas que representan los vectores. Por lo tanto el método de líneas de conexión fue descartado, ya que el cálculo de ecuaciones para cada línea cargaría mucho el procesador. La curva Bezier ya cuenta con una ecuación. Además se descubrió que entre más pequefia la distancia entre los puntos, la curva Bezier se aproxima más a la que pasa por los puntos de corrección. Esta propiedad resulta conveniente, ya que las distancias que describen los vectores en SEKAI son pequefias.. ·•. •. \. •. \. \,. Distancia pequeña. Distancia grande. Como se exp li ca en el anexo 5, la curva Bezier se describe por un conjunto de puntos. La cantidad de puntos denota la suavidad de la curva:. •. •. •. •. --------~- ....... ... ~. •. • 4 valores ele iteración. SEKAI. 16 valores ele iteración. 22.

(30) Se implementó un programa en PC para observar el comportamiento de las curvas. Las imágenes anteriores provienen de ese programa. Según las pruebas, el número más pequeño de iteraciones, para que la curva se vea bien, es de 1O. El número óptimo para la curva Bezier utilizada es de alrededor de 50. Sin embargo, la PocketPC se alenta si se utiliza el óptimo. Tras pruebas de desempeño de cambio entre pantallas tras un desplazamiento, el número de iteraciones se fijó a 16. La diferencia entre 16 y 19 eran casi nulas, pero la diferencia está en el tamaño de paso, que en 16 corresponde a incrementos de 0.0625.. 4.3. Precisión y Funcionamiento de SekaiSpherical. Para probar la precisión y funcionamiento de SekaiSpherical, se compararon los resultados del cálculo de distancia del programa y la real, entre dos puntos en la Tierra. El paso del sistema es de I segundo de arco, que corresponde a 30.89m. Esto equivale a un error de exactitud menor al 0.097%. El cálculo de distancia, se probó utilizando dos puntos con diferencia de 1 segundo de arco. La manera de hacer los cálculos se encuentra en el anexo 2.. Ejemplo: Esta es una prueba de la librería SekaiSpherical:. <«DI STAHCE> » Point1 = 000°00'00''H 000º00'00''E Point2 = 000°00'01''8 000º00'00''E Distance = 30.896?395649228. <<<COORDIHATES>>> St1•ing:. Lat itude =019 °1 ?' 48' 'H. Longitude=099º06'53' 'E. Conpouml:. Latitude=191?.8. Long itmle =9906. 88. Single:. Latitude=19.2966666666667. Longitude=99.1.147222222222. Intege1•:. l,atDeg=19. LatMin=.1?. LatSec=48. LonDeg=99. LonMin=6. LonSec=53. 4.4. Retos de Plataforma y Programación. Durante la segunda etapa de desarrollo nos encontramos con algunas dificultades que retrasaron el progreso que se tenía planeado. Estos retos a resolver podemos dividirlos básicamente en 2 tipos, retos de platafonna, en lo cuales nos vimos afectados por la inexperiencia en el trabajo con las herramientas de programación para PDA. Y un segundo tipo que podemos llamar, de programación, en el cual se involucra lo relacionado con algoritmos e implementación de nuestro diseño de sistema. Dentro de los problemas de platafonna que se nos presentaron durante este periodo, el más significativo fue el de la inclusión de módulos o librerías, externas a nuestro proyecto, a la platafonna a programar. Concretamente, lo que más dificultades nos presentó este parcial fue la inclusión de la librería de imágenes con la que teníamos planeado trabajar, la cual se encargaría de realizar las operaciones necesarias sobre los gráficos del sistema para lograr efectos como, la superposición, el escalamiento, las transparencias, etc. Este problema no fue posible de resolver, dado que la librería de manipulación de imágenes contaba con referencias explícitas a librerías del sistema Operativo para computadora de escritorio, con las que nuestro sistema PDA no cuenta. Dichas librerías fonnan parte del llamado Platfonn SDK de Windowsíl{', las cuales nos dan soporte para manejo de archivos, flujos de bits, etc; herramientas básicas en las cuales nuestra librería de imágenes se apoyaba. Este problema se atacó de la siguiente manera: las. SEKAI. 23.

Figure

Tabla de la  BD  Función

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

diabetes, chronic respiratory disease and cancer) targeted in the Global Action Plan on NCDs as well as other noncommunicable conditions of particular concern in the European

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

En este sentido, puede defenderse que, si la Administración está habilitada normativamente para actuar en una determinada materia mediante actuaciones formales, ejerciendo

Convocatoria de las bases reguladoras para la concesión de ayudas del Ayuntamiento de Benacazón destinadas a emprendedores/as para la creación de empresas de trabajo autónomo en

Título Convocatoria que tiene por objeto promover la participación en el programa plan internacional de promoción, cofinanciado en un 50% por el Fondo Europeo de Desarrollo

The aim is to build a system that will measure the performance parameters of throughput, packet losses, jitter and one-way delay using the technique of the packet time-stamping..