Beruflich Dokumente
Kultur Dokumente
17 de septiembre de 2008
Resumen
1.. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5.. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1. Comunicación Cliente-Servidor . . . . . . . . . . . . . . . . . . . 49
5.1.1. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1.2. Servidor web . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.3. Computación Distribuida . . . . . . . . . . . . . . . . . . 50
5.1.4. Comunicación Cliente-Servidor del proyecto . . . . . . . . 51
5.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.1. A estrella . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.2.2. Comparación entre las implementaciones de Dijkstra y A* 56
5.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3.1. Cliente para computadoras de escritorio . . . . . . . . . . 59
5.3.2. Cliente para dispositivos móviles . . . . . . . . . . . . . . 60
6.. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Apéndice 64
A..Manual de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.2. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.3. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3.1. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3.2. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.3.3. Notas generales . . . . . . . . . . . . . . . . . . . . . . . . 66
A.4. Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
A.4.1. Descripción y atajos de teclado . . . . . . . . . . . . . . . 67
A.4.2. Favoritos . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.5. Presentación de los resultados . . . . . . . . . . . . . . . . . . . . 69
B..Capturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.0.1. Capturas de Tiresias . . . . . . . . . . . . . . . . . . . . . 71
B.0.2. Capturas del cliente móvil sobre emulador java . . . . . . 77
1. Introducción
1 http://www.lighthouse-sf.org/
2 http://www.ski.org/
1. Introducción 7
merece una retribución por su trabajo, más allá de la nalidad de los pro-
ductos que desarrollen. Entonces, indefectiblemente, entra en escena el Estado.
Quizás si el Estado tuviera un rol más protagónico en esta interacción particu-
lar de empresa-cliente (como sucede en algunos países de Europa y en Estados
Unidos) se podrían alivianar los precios al consumidor nal. Incluso podría ser
que las empresas desarrolladoras de este tipo de productos fueran directamente
estatales, y no privadas.
En base a este análisis de la sociedad y apuntando a la disminución de la
brecha existente entre las posibilidades de todos sus integrantes, en este trabajo
se plantea la creación de un software que ponga a disposición de la comunidad
toda los datos cartográcos de la ciudad de Córdoba en un formato audiovi-
sual adecuado a la problemática que se remarca. Se desea brindar facilidades
tales que la interacción con una persona discapacitada visual sea lo más amena
posible. Se espera que aquella pueda entonces realizar consultas sobre el cómo
desplazarse de un punto a otro del mapa y cuáles son las relaciones espaciales de
un trayecto sugerido. Es esperable también que la utilización de este software
facilite la creación de mapas mentales tanto de trayectos a realizar como de
zonas particulares de la ciudad.
Es importante mencionar que dependiendo de las funcionalidades que se
deseen, podríamos encontrarnos con que el desarrollo planteado en este proyecto
sea un trabajo de inmensa envergadura. Para paliar este hecho se utilizarán, en
lo posible, otros desarrollos ya existentes y de libre disponibilidad. Se propone,
por supuesto, que una vez concluido, este desarrollo se ponga a disposición de
la comunidad de manera libre.
Un obstáculo que podría haber comprometido el éxito de este trabajo es
el de la obtención de las bases de datos geográcos de Córdoba. Las mismas,
por el inmenso trabajo de relevamiento que implica generarlas, tienen un costo
comercial que nos priva de su obtención a menos que logremos encontrar los
mecanismos tales que, sin comprometer la funcionalidad del sistema propuesto,
protejan la condencialidad de los datos.
En el siguiente capítulo se desarrollará una descripción más detallada del
contexto social y la problemática particular sobre los que se basa este trabajo.
A partir de este análisis se describirá una solución ideal que, sin tener en cuenta
las limitaciones de recursos y posibles dicultades, ponga de maniesto todas
las características deseables.
El capítulo 3 estará conformado por un relevamiento de material que resulte
pertinente a la hora de diseñar la aplicación. Se pretende estudiar la forma en que
la problemática ha sido tratada en oportunidades anteriores, concebir ideas para
la solución a desarrollar, y encontrar herramientas que faciliten este desarrollo.
A partir de los resultados de tal relevamiento, se propondrá una aplicación
teniendo en cuenta tanto las dicultades por sortear como las facilidades que
estén a disposición.
En el capítulo 4, se utilizarán métodos formales para detallar tanto la es-
pecicación del sistema a contruir como su diseño. La especicación estará fo-
calizada en el manejo de la representación abstracta de los datos cartográcos
y se realizará incrementalmente a los nes de facilitar su entendimiento.
El capítulo 5 abarcará todo aquello que se relacione con la implementación
del programa. Esto incluirá un análisis de las opciones que podrían adoptarse a
la hora del desarrollo, la justicación de la elección de una de ellas, y nalmente
la descripción de la forma en que se contruyó la herramienta.
1. Introducción 9
que cuando desconoce por completo cuáles serán los obstáculos que se puede
encontrar.
Alex Wade, partícipe del proyecto llevado a cabo por la empresa LightHouse
for the Blind and Visually Impaired en el que se brindan mapas en relieve a per-
2
sonas discapacitadas visuales , comenta en un reportaje realizado por la estación
3
de radio KQED que existe una parte del cerebro encargada de conservar la in-
formación visual adquirida. Esto implica que se conserva no sólo la sensación de
la imagen, sino toda la información que a través de ella se adquiere, incluyendo
todas las relaciones que una persona vidente utiliza para desplazarse a través
de su entorno. Particularmente, esta parte del cerebro es capaz de conservar la
imagen de un mapa que se haya consultado para saber como llegar a un punto
especíco de una ciudad. Se remarca en este reportaje que la discapacidad visual
está vinculada exclusivamente a una deciencia de algún tipo en el órgano visual,
pero que carece de relación alguna con las funcionalidades del cerebro (excepto
por un tipo muy particular de ceguera en la que el cerebro es el casuante de la no
visión). Luego las personas que sufren de esta discapacidad poseen aquélla parte
del cerebro totalmente funcional. Sin embargo, como cualquier parte del cuerpo
que no se está acostumbrado a utilizar, debe existir un proceso de aprendizaje
y estímulo para permitir un aprovechamiento máximo de esta facultad.
Cabe distingir en este punto entre las personas cuya discapacidad fue adquiri-
da a una edad avanzada (adolescente, adulto) y aquéllas que la poseen desde el
nacimiento o desde los primeros años de vida. La persona que adquiere la dis-
capacidad a una edad avanzada, cualquiera fuera el causal, ya está acostumbrada
a utilizar la funcionalidad mencionada de manera regular para relacionarse con
su entorno. De esta manera, tiene la capacidad de realizar analogías entre la
información que adquiere ya sea verbalmente o a través del sentido del tacto y
aquella que recibía anteriormente a través del sentido de la visión. Conoce la
diferencia entre ver y no ver, y entonces puede generar una imagen mental a
través de los datos que adquiere y conservarla para utilizarla luego como guía a
la hora de desplazarse por el entorno detallado.
La persona que posee la discapacidad desde el nacimiento o la temprana edad
puede tener mayores dicultades para lograr el mismo cometido. Sin embargo,
es totalmente posible. La contínua práctica y experimentación de relacionar lo
detallado verbalmente o diagramalmente y la actividad misma de recorrer los
espacios descriptos le permite desarrollar la habilidad de crear mapas mentales
de una forma tan útil como lo es para el resto de las personas. Alex Wade padece
ceguera desde la edad temprana de 4 años, y está seguro de que este método es
sumamente útil y enriquecedor para la persona discapacitada visual.
2 ver Introducción
3 http://www.kqed.org/quest/radio/view/747
2. Descripción del problema 13
bases de datos que se utilizan. Sería importante que el método a través del cual
se intercambien los datos sea lo más sencillo y ameno posible, por ejemplo, a
través de una opción de conguración simple que permita seleccionar alguna
de las distintas bases que ya estén cargadas en la herramienta. Otra opción de
actualización podría conectarse a un sitio de internet para buscar bases de datos
nuevas. En este sitio usuarios de todo el mundo podrían subir bases de datos
de su ciudad. Sería altamente productivo si los gobiernos pudieran colaborar en
este sentido, brindando sitios de internet con información geográca digitalizada
y actualizada que se pueda acceder a través de este mismo medio para mantener
las bases de datos de la herramienta tan al día como fuera posible.
La presentación de los datos cartográcos también incluiría conjuntos de in-
strucciones verbales para realizar un trayecto particular, con indicaciones que
permitirían al usuario sentirse lo más seguro posible acerca de cómo llegar hasta
el destino deseado. Para ser óptimos en la utilización de este recurso, la her-
ramienta debería ser capaz de guiar al usuario paso por paso, y para ello el con-
junto de instrucciones debería ser entregado de manera paulatina. Como efecto
de tener en cuenta este detalle, podría considerarse la existencia de un comando
que pause la instrucción hasta nuevo aviso. De esta forma el usuario podría
avisar cuándo se encuentre en el punto próximo y escuchar la/las instrucciones
siguientes (según él considere necesario). Como alternativa, las instrucciones po-
drían pronunciarse de a un paso por vez, teniendo el usuario que avisar cuándo
quiere que se pronuncie la siguiente. Puede pensarse en comandos similares a
disposición del usuario tales como avanzar y retroceder.
Sería útil que el usuario pueda consultar en cualquier momento en qué punto
del trayecto se encuentra y cuál es la próxima instrucción que debería realizar.
Para lograr esto la herramienta debería contar con algún tipo de sensor de
movimiento o accesorio que le permita estar al tanto de cuál fue el trayecto
recorrido real hasta ese momento. La tecnología actual que permite la adquisi-
ción de esos datos es la basada en GPS (Global Position System). Entonces,
supondremos que la herramienta cuenta con un sistema de posisicionamiento
global que le permite darse cuenta de cuál es la posición actual del individuo.
Este accesorio solucionaría la forma en que se deben ir dando las instrucciones,
ya que éstas serían brindadas sólo cuando deban ser ejecutadas y no en otro
momento. Esta capacidad también permitiría saber si el individuo se ha desvi-
ado del trayecto que deseaba realizar y avisar ante este hecho. Si el individuo
se ha desviado porque se encontró con un obstáculo insuperable (como un corte
de calle o una construcción nueva) aquél podría informarle a la herramienta
(a través de algún comando especíco) el dato de que allí hay un obstáculo y
en consecuencia la herramienta regeneraría el trayecto evitando pasar por ese
punto, de ser esto posible, o informaría que no existen caminos alternativos que
permitan llegar a destino.
De esta situación analizada se puede pensar en la posibilidad de que exista la
opción de permitir al usuario establecer que existen ciertas partes de la ciudad
por las que no se quiere transitar. Por ejemplo, un usuario podría saber que
cierta calle, a una determinada altura, carece de vereda. O bien que existen
determinados barrios que se consideran marginales y por los cuales preferiría
no tener que caminar. Sería importante que tales conocimientos puedan quedar
plasmados en los datos que maneja el programa para que este genere trayectos
que no incluyan estos puntos de conicto. Si no existiera trayecto posible la
herramienta debería avisarle al usuario que no es posible realizar el trayecto
2. Descripción del problema 16
3.1. Dispositivos
Existen algunas herramientas en el mercado cuya funcionalidad es la misma
que se busca conseguir con este proyecto:
3.1.1. Trekker
Trekker
1 es un dispositivo creado por HumanWare, que utiliza tecnología
GPS y mapas digitales para ayudar a la persona discapacitada visual a abrirse
camino tanto en zonas urbanas como rurales. Permite a los usuarios conocer
la localización en la que se encuentran (el nombre de la calle, calles cercanas),
descubrir lugares interesantes cerca de su posición (como hoteles, restaurantes,
etc.), establecer puntos de interés y notas tanto de manera escrita como oral,
conocer el cómo llegar hasta un destino especicado, y actualizar el software
del dispositivo desde internet. Ofrece la posibilidad de comprar mapas digitales
online para luego utilizarlos como base de datos para planeamiento de rutas y
reconocimiento de áreas y es completamente actualizable. Sus principales car-
acterísticas son:
1 http://www.humanware.com/en-international/products/gps/trekker
3. Relevamiento de Herramientas Existentes 18
Liviana y portable
3.1.3. Otros
Existen otros productos que ofrecen características muy similares a los an-
teriormente mencionados. Entre ellos se puede mencionar el PAC Mate GPS,
desarrollado por FreedomScientic
3 que consiste en tres productos trabajando
mancomunadamente para lograr un sistema de navegación GPS para la per-
sona discapacitada visual con las mismas funcionalidades que los anteriormente
mencionados. Esta pack precisa de:
2 http://www.senderogroup.com/shopgps.htm
3 http://www.freedomscientic.com/
3. Relevamiento de Herramientas Existentes 19
C2 Talking Compass:
C2 Talking Compass
8 se trata de una brújula de mano operada con baterías
y con salida de voz digital. Creada por Sensory Tools, contiene en su parte
superior un botón de activación y en un lateral un botón de tres posiciones que
permite cambiar el estado de apagado a encendido con alguno de los dos idiomas
disponibles (que pueden ser determinados al momento de la compra). La brújula
pronuncia cada uno de los 8 puntos cardinales determinables con una voz digital
7 http://web.aanet.com.au/tonyheyes/pa/pf blerb.html
8 http://www.sensorytools.com/c2.htm
3. Relevamiento de Herramientas Existentes 21
clara. Para las personas con baja visión se representa un código de tres luces
que puede verse a través de la carcasa semitransparente y que representa cada
una de las direcciones posibles.
Su precio varía entre 70 y 90 dólares dependiendo de si se eligen los idiomas
por defecto (inglés y español) o se requieren idiomas personalizados.
Laser Cane:
Laser Cane
9 es un bastón blanco para ciegos con el agregado tecnológico
de la electrónica. El bastón provee información avanzada sobre obstáculos en el
camino. Puede detectar objetos en tres niveles de altura y advierte al usuario
de la existencia de los mismos a través de tonos audibles o de vibraciones bajo
el dedo índice. Permite estimar distancias hacia adelante así como hacia los lat-
erales, se puede doblar en dos secciones para su almacenamiento, utiliza baterías
y puede ser utilizado en cualquier tipo de ambiente (abierto, cerrado, amplios,
pequeños, etc.)
Su precio es de 2995 dólares.
9 http://www.maxiaids.com/store/prodView.asp?idstore=1&idproduct=6247
3. Relevamiento de Herramientas Existentes 22
3.1.4. Conclusiones
Respecto de este relevamiento, pueden realizarse varias reexiones. En primer
lugar, los productos que apuntan directamente a la problemática tratada por este
proyecto poseen un precio comercial elevado (por encima de los 2000 dólares) lo
cual diculta su adquisición en países sin políticas sociales importantes (como
Argentina). Además, en general estos productos sólo cuentan con información
geográca de países muy desarrollados, dejando en segundo plano al resto y en
consecuencia limitando su utilidad.
En segundo lugar, es notable cómo se ha detenido el progreso de la mayor
parte de los productos relevados. A pesar de que las tecnologías utilizadas (el
GPS, los lectores de pantallas, etc.) se han visto en una constante evolución,
los productos (en general) no han sido modernizados con el correr de los años.
El ejemplo más contundente es el Sonic Path Finder, desarrollado alrededor de
los 80 y sobre el cuál no se halla nueva información acerca de su desarrollo. Así
como el producto Tormes, que alguna vez estuvo en desarrollo y del cual no se
conocen noticias desde su anuncio de lanzamiento (2003). Trekker parece ser el
dispositivo más actualizado y con mayor vigencia y seriedad en este sentido.
Por último, hay una amplia variedad de artefactos muy útiles y accesibles
pero que no atacan la problemática central del proyecto. Este tipo de dispositivos
resulta útil como complemento a la persona invidente o disminuida visual en su
tarea diaria de movilización (la brújula parlante, el bastón blanco con detector
de obstáculos) pero no ofrecen información alguna acerca de la cartografía del
contexto en el cual la persona se desenvuelve.
3.2. Aplicaciones
3.2.1. Mapbender
Mapbender
10 es una aplicación programada en PHP y JavaScript para la
consulta de mapas. Todos los datos son leidos directamente y de forma dinámi-
ca desde un banco de datos, de la misma manera que en un Sistema de Gestión
de Contenidos
11 . Se puede decir por tanto, que Mapbender es un CMS de datos
geográcos y por ello se suele usar a menudo como software para la creación
de portales web con información geográca. El software incluye una interface
denida que ofrece funciones de visualización, navegación y consulta de servicios
estándar OGC
12 . Mapbender se puede integrar practicamente en cualquier sis-
tema homogéneo y página de internet. El software es compatible con cualquier
servicio de mapas y datos que sea creado basado en las especicaciones OGC y
por eso puede ser usado para un amplio abanico de programas GIS y clientes
de IDEs de fabricantes diversos.
10 http://www.mapbender.org/index.php/Main Page
11 Un Sistema de gestión de contenidos (Content Management System en inglés, abrevia-
do CMS) es un programa que permite crear una estructura de soporte para la creación y
administración de contenidos por parte de los participantes principalmente en páginas web
12 Del inglés: Open Geospatial Consortium. Se trata de una organización voluntaria interna-
cional sin nes de lucro cuyo n es la denición de estándares abiertos e interoperables dentro
de los Sistemas de Información Geográca. Persigue acuerdos entre las diferentes empresas
del sector que posibiliten la interoperación de sus sistemas de geoprocesamiento y facilitar el
intercambio de la información geográca en benecio de los usuarios
3. Relevamiento de Herramientas Existentes 23
Marcadores espaciales
Etiquetado de elementos
Análisis espaciales
13 http://www.qgis.org
14 http://tcts.fpms.ac.be/synthesis/mbrola.html
15 T. DUTOIT, V. PAGEL, N. PIERRET, F. BATAILLE, O. VAN DER VREKEN, "The
MBROLA Project: Towards a Set of High-Quality Speech Synthesizers Free of Use for Non-
Commercial Purposes"Proc. ICSLP'96, Philadelphia, vol. 3, pp. 1393-1396 .
16 Relativa a la rítmica, acentuación y entonación de las palabras
17 Un difono representa el sonido que abarca desde la mitad de la realización de un fonema
hasta la mitad de la realización del fonema siguiente. El propósito de esta unidad de sonido
es incorporar a la unidad de síntesis la transición de sonido entre fonemas, detalle que había
causado dicultad en los sistemas iniciales. La síntesis consiste, entonces, en la concatenación
de segmentos de señal en el tiempo, siendo los segmentos difonos
3. Relevamiento de Herramientas Existentes 24
3.2.4. Navicore
Navicore
18 es un software de navegación por satélite para teléfonos móviles.
Entre sus características principales está la de encontrar la ruta más corta o
más rápida hasta un destino especicado, teniendo en cuenta detalles como:
congestiones en el tráco, información de cámaras de seguridad, si el recorrido
se realiza a pie, en bicicleta o en un automóvil. El programa utiliza instrucciones
precisas con voz para guiar al usuario a través del recorrido establecido y pre-
senta una pantalla con mapas en dos y tres dimensiones donde se marca la ruta
a realizar. Posee la posibilidad de recalcular rutas si el usuario determina que
hay un bloqueo en la ruta previamente calculada, así como de mencionar puntos
de interés cercanos (estaciones de servicios, farmacias, hoteles, etc.) y establecer
puntos favoritos. Es actualizable desde internet.
Es compatible con algunos modelos de celulares, no posee información car-
tográca de América Latina (sólo de Estados Unidos y algunos países de Europa
y de Asia). Su precio ronda los 150 euros y puede aumentar con las actualiza-
ciones y accesorios.
3.2.5. TomTom
El TomTom
19 es un navegador satelital para PDAs con similares característi-
cas que Navicore. Utiliza tecnología GPS como complemento a su funcionalidad,
crea rutas dinámicamente, genera un conjunto de instrucciones con voz que se
van transmitiendo al usuario a medida que recorre el camino, recalcula rutas
cuando hay bloqueos o tráco pesado, permite recibir llamadas, comprar ma-
pas de distintas regiones (Oeste de Europa, Estados Unidos, Sudáfrica, pero
carece de mapas de Sudamérica). Permite comprar voces en diferentes idiomas
a 6 libras esterlinas cada una (aproximadamente 12 dólares), establecer pun-
tos de interés, conocer el clima de los próximos 5 días en una ruta planeada,
personalizar la visualización de los mapas, etc. Su precio ronda los 150 dólares.
3.2.6. MapRed
MapRed
20 es un servicio web para conocer direcciones, establecer recorridos,
determinar rutas más cortas y puntos de interés. Su mayor ventaja es que se
focaliza en la zona de Latino América, brindando datos cartográcos de las
principales ciudades de dicha región.
18 http://www.navicoretech.com/Consumer/Product/Description/es ES/description/
19 www.tomtom.com
20 www.mapred.com
21 http://spain.scansoft.com/naturallyspeaking//
3. Relevamiento de Herramientas Existentes 25
3.2.8. Sphinx
Sphinx
22 es una aplicación, desarrollada por la Universidad Carnegie Mel-
lon, que permite crear software de reconocimiento de voz. El paquete estándar
provee un par de bases de datos con nalidad didáctica, para que el usuario
pueda entender el cómo se crean los datos necesarios y sucientes para poner
en funcionamiento un sistema completo de reconocimiento de voz. Crear un sis-
tema de este tipo necesita un conocimiento previo importante y es una tarea
complicada de llevar a cabo. Sphinx provee una serie de herramientas a los nes
de facilitar este proceso, que sin embargo, sigue siendo exclusivo para personas
con conocimientos avanzados en la materia. Entre los recursos necesarios para
contruir un sistema de reconocimiento de voz con Sphinx, encontramos:
3.2.9. Conclusiones
Existe una amplia variedad de aplicaciones disponibles que trabajan con
datos geográcos. Muchas de estas aplicaciones son de código abierto o de libre
distribución, pero su funcionalidad principal (así como el método de interacción)
es demasiado visual y consiste fundamentalmente en la manipulación de los
22 http://cmusphinx.sourceforge.net/html/system.php#data
23 Del inglés: Statistical Language Models
24 Finite State Grammar
3. Relevamiento de Herramientas Existentes 26
3.3. Librerías
3.3.1. Mascopt
Mascopt
25 es una librería Java cuyo objetivo principal es proveer un con-
junto de herramientas para mitigar la problemática de optimización de redes.
Se propone lograr tal objetivo brindando modelos de datos de redes y grafos,
métodos para la manipulación de los mismos, e implementaciones de algoritmos
lineales comunes a la problemática. También facilita herramientas grácas para
visualización de grafos.
Es una librería creada en el INRIA, actualmente en desarrollo bajo una
licencia de código abierto (LGPL).
3.3.2. GeoTools
GeoTools
26 es una librería Java de código abierto y gratuita que provee
una serie de métodos estándar para la manipulación de datos geoespaciales.
Es un proyecto joven, activo y en continuo desarrollo, con un gran número de
contribuyentes. Provee una amplia gama de funcionalidades relacionadas con la
manipulación, visualización, transformación y análisis de datos geoespaciales lo
cual resulta idóneo para la creación de sistemas de información geográca, ya
sea como aplicaciones de escritorio o servicios web. Al ser un proyecto abierto
permite ampliar y adaptar sus funcionalidades según la necesidad particular del
proyecto en que desee utilizarse.
25 http://www-sop.inria.fr/mascotte/mascopt/
26 http://geotools.codehaus.org/
3. Relevamiento de Herramientas Existentes 27
3.3.3. FreeTTS
FreeTTS
27 es un sistema de síntesis de voz escrito por Speech Integration
Group de Sun Microsystems Laboratories, enteramente en el lenguaje de pro-
gramación Java. Está basado en Flite
28 , un pequeño motor de síntesis de voz
desarrollado en la Universidad de Carnegie Mellon. Flite está derivado del sis-
tema de síntesis de voz Festival
29 desarrollado por la Universidad de Edimburgo
y el proyecto FestVox
30 también de la Universidad de Carnegie Mellon.
Sus principales características incluyen:
3.3.4. GDAL
GDAL
31 es una librería que provee funcionalidades para la lectura y escritu-
ra de datos geoespaciales en un variado número de formatos de tipo RASTER .
32
Liberada bajo una licencia de código abierto estilo X/MIT (una licencia com-
patible con GPL) por la OSGEO. Provee un modelo abstracto de datos para
todos los formatos aceptados entre ellos:
27 http://freetts.sourceforge.net/docs/index.php
28 http://www.cmuite.org/
29 http://www.cstr.ed.ac.uk/projects/festival/
30 http://festvox.org/
31 http://www.gdal.org/
32 El modelo de SIG raster divide el espacio en celdas regulares donde cada una de ellas
representa un único valor
3. Relevamiento de Herramientas Existentes 28
3.3.6. OpenLayers
OpenLayers
34 es una librería escrita en JavaScript de código abierto para
la visualización de mapas en navegadores web. Provee una API para construir
aplicaciones geográcas web similares a Google Maps y MSN Virtual Earth.
Entre las características principales encotramos:
Google Maps
OpenStreetMap
Virtual Earth
Yahoo! Maps
MapServer
GeoServer
ka-Map
Soporte GeoRSS
Marcadores
Selección de capas
33 http://fdo.osgeo.org/
34 http://www.openlayers.org/
3. Relevamiento de Herramientas Existentes 29
3.3.7. Conclusiones
Es notable la cantidad de material en desarrollo que existe en las áreas de
interés para este proyecto.
El reconocimiento de voz y la traducción de texto escrito a sonido dan cuenta
de una continua investigación y de un activo crecimiento. Sin embargo la natu-
raleza intrínsecamente humana de estos procesos conlleva un grado de compleji-
dad importante. Como consecuencia los proyectos que encaran esta problemática
se encuentran en un nivel medio a bajo de desarrollo (en el caso de las librerías
de distribución libre) y en general trabajan con un número reducido de idiomas.
En lo que respecta a la manipulación de información geográca, también
existe una variada oferta de librerías de libre distribución y en continuo de-
sarrollo. Aunque la tendencia general se inclina a herramientas que facilitan la
creación de aplicaciones web, existen algunas librerías interesantes de propósito
general (GeoTools, FDO) y de libre distribución que permiten crear sistemas de
información georeferenciada. En este sentido, la única desventaja es que si bien
la oferta es amplia, existe una profunda escasez en lo que respecta a la docu-
mentación de los proyectos y sus funcionalidades. Otro punto que vale la pena
mencionar es que, al tratarse de manipulación de información geoespacial, las
funcionalidades ofrecidas por las librerías en general apuntan a maximizar las
posilibilidades de visualización de los datos y a la modicación de sus valores,
más que a la representación abstracta de los mismos. Es claro que las funcional-
idades de índole visual tendrán un caracter secundario en el desarrollo de esta
tesis, sin embargo, una representación abstracta de los datos cartográcos que
se utilicen resultará fundamental para la programación de ciertos algoritmos
(como por ejemplo, aquéllos relacionados a la búsqueda de caminos).
Existe también una amplia variedad de librerías que trabajan con grafos que
podrían ser de utilidad para el desarrollo de este proyecto y que son de libre
disponibilidad.
3.4. Resultados
Debido a que el objetivo principal de este proyecto es generar un software (y
no un dispositivo), se ha tomado la primer parte de este relevamiento como un
ejemplo a seguir en lo que reere a la forma en que se interactúa con la persona
discapacitada visual así como a las funcionalidades de asistencia de orientación.
Un denominador común en los dispositivos relevados, es la comunicación a
través de sonidos. En el caso óptimo, el usuario puede dar instrucciones a través
de la voz o de un teclado braille, y recibir resultados a través de una voz elec-
trónica. En lo particular, todos los productos pretenden que esta comunicación
sea lo más uida posible, intentando que sea similar a la conversación humana.
En pro de la consecución de tal objetivo, se decidió incorporar como parte del
proyecto a la herramienta relevada MBROLA. Esta aplicación se presenta como
la mejor opción en lo referido a transformación de texto a sonido. No sólo proce-
sa texto en español sino también en inglés, francés, alemán y otros. Además es
de libre distribución para usos no comerciales ni militares y puede utilizarse
dentro de otros programas.
Como se mencionó anteriormente, será fundamental para el desarrollo de
este trabajo la manipulación de datos geoespaciales y la construcción de una
3. Relevamiento de Herramientas Existentes 30
Extensa documentación.
3.5. Propuesta
Como se viene tratando a lo largo de este trabajo, se plantea la contrucción
de una herramienta que ponga a diponibilidad de las personas discapacitadas
visuales, la información cartográca de la ciudad de Córdoba. Así mismo, se
propone que este producto brinde asistencia en todo aquello que reera a la
orientación dentro de la ciudad.
Especícamente, se intenta crear una aplicación tal que:
35 En un SIG, las características geográcas pueden ser representadas por vectores, expresán-
dolas con diferentes tipos de geometrías (puntos, líneas y polígonos). Se utiliza además una
base de datos para describir sus atributos.
3. Relevamiento de Herramientas Existentes 33
4.1. Especicación Z
Esta fue elaborada gradualmente; primero se realizó una especicación de
un grafo simple, que sólo contine vértices y aristas (los primeros representan
las esquinas y los últimos las cuadras en la ciudad), y se denió el concepto de
camino y operaciones para agregar y quitar componentes. En un paso posterior
se agregó costo en la aristas; luego se añadió nombres a las calles y numeraciones.
Por último, se tuvo en cuenta la georeferencia de las partes del grafo.
En cada etapa se extendieron las operaciones denidas en pasos anteriores,
para que contemplaran los cambios agregados; además se introdujeron algunos
invariantes y operaciones que surgieron por la ampliación del estado.
[ARISTA, VERTICE ]
D X == {s ∈ P X | #s = 2}
CIUDAD
cuadras : F ARISTA
esquinas : F VERTICE
vs : cuadras → D VERTICE
S
esquinas = ran vs
4. Especicación y Diseño 36
Camino Esquinas
CIUDAD
c : seq cuadras
e : seq esquinas
v , w : esquinas
e 6= hi
v = head (e ); w = last (e )
∀ i : 1 . . #c • vs (c (i )) = {e (i ), e (i + 1)}
CONEXO
CIUDAD
∀ v , w : esquinas • camino 6= ∅
AgregarVerticeOk
∆CIUDAD
v : VERTICE
a , b : ARISTA
c ? : cuadras
AgregarVerticeError
ΞCIUDAD
c ? : ARISTA
c? 6∈ cuadras ;
Para agregar un vértice no importa cuáles sean los vertices y aristas nuevos
QuitarVerticeOk
∆CIUDAD
v ? : esquinas
c , d : cuadras
a : ARISTA
#{b : cuadras | v ? ∈ vs b } = 2
vs c ∩ vs d = {v ?}
0
cuadras = (cuadras \ {c , d }) ∪ {a }
0
esquinas = esquinas \ {v ?}
0
vs = ({c , d } −
C vs ) ∪ {a 7→ (vs c ∪ vs d) \ {v ?}}
QuitarVerticeError
ΞCIUDAD
v ? : VERTICE
COSTO == N
CIUDAD C
CIUDAD
costo : cuadras → COSTO
CostoCamino
CIUDAD C
c : caminos
valor : COSTO
P#c −1
valor = i =0 costo (c (i ))
CaminoMin
CIUDAD C
v, w : esquinas
c : camino
∀ d : camino • costo camino c ≤ costo camino d
caminoMin == {CaminoMin • c }
EncontrarCaminoMinimo
CIUDAD C
v1 ?, v2 ? : esquinas
c ! : caminoMin
v1 ? = v ∧ v2 ? = w
4. Especicación y Diseño 39
AgregarVerticeOk C
∆CIUDAD C
AgregarVerticeOk
j,k :N
costo c ? =j +k
0
costo = ({c ?} −
C costo ) ∪ {(a , j ), (b , k )}
AgregarVerticeError C =
b [ΞCIUDAD C ; AgregarVerticeError ]
AgregarVertice C =
b AgregarVerticeOk C \ (a , b , v , j , k )
∨ AgregarVerticeError C
QuitarVerticeOk C
∆CIUDAD C
QuitarVerticeOk
0
costo = ({c , d } −
C costo ) ∪ {(a , costo c + costo d )}
QuitarVerticeError C =
b [ΞCIUDAD C ; QuitarVerticeError ]
QuitarVertice C =
b QuitarVerticeOk C \ (a , c , d )
∨ QuitarVerticeError C
[CALLE ]
Por lo tanto se agregará al esquema básico una función que relacione las
cuadras de nuestra ciudad con su nombre de calle correspondiente.
CIUDAD N
CIUDAD C
calle : cuadras → CALLE
Para expandir la función AgregarVertice C sólo bastará decir que las dos
nuevas aristas deberán tener el nombre de calle de la arista original.
4. Especicación y Diseño 40
AgregarVerticeOk N
∆CIUDAD N
AgregarVerticeOk C
0
calle = ({c ?} −
C calle ) ∪ {(a , calle c ?), (b , calle c ?)}
AgregarVerticeError N =
b [ΞCIUDAD N ; AgregarVerticeError C ]
AgregarVertice N =
b AgregarVerticeOk N \ (a , b , v , j , k )
∨ AgregarVerticeError N
QuitarVerticeOk N
∆CIUDAD N
QuitarVertceOk C
calle c = calle d
0
calle = ({c , d } −
C calle ) ∪ {(a , calle c )}
QuitarVerticeCalleError
ΞCIUDAD N
v ? : VERTICE
c , d : cuadras
vs c ∩ vs d = {v ?}
calle c 6= calle d
QuitarVerticeError N =
b [ΞCIUDAD N ; QuitarVerticeError C]
∨ QuitarVerticeCalleError \ (c , d )
QuitarVertice N =
b QuitarVerticeOk N \ (a , c , d )
∨ QuitarVerticeError N
CIUDAD A
CIUDAD N
dirs : CALLE × N →
7 cuadras
nuevo vértice justamente en ese lugar. También por el hecho de conocer las
numeraciones de una calle, podemos hacernos una idea más especíca de cuál
será el costo que deberán tener las cuadras nuevas. El costo de la arista a dividir
se repartirá de manera proporcional según la cantidad de direcciones que tenga
cada cuadra nueva.
AgregarVerticeOk A
∆CIUDAD A
AgregarVerticeOk N [c /c ?]
calle ?: CALLE
d? :N
A, B : P(CALLE × N × ARISTA)
AgregarVerticeError A
ΞCIUDAD A
calle ? : CALLE
d? : N
(calle ?, d ?) ∈
/ dom dirs
AgregarVertice A =
b AgregarVerticeOk A \ (a , b , j , k , A, B )
∨ AgregarVerticeError A
QuitarVerticeOk A
∆CIUDAD A
QuitarVerticeOk N
0
dirs = (dirs −
B {c , d }) ∪ {(l , n ) ∈ dom dirs | dirs (l , n ) = c
∨ dirs (l , n ) = d • (l , n ) 7→ a }
QuitarVerticeError A =
b [ΞCIUDAD A; QuitarVerticeError N ]
4. Especicación y Diseño 42
QuitarVertice A =
b QuitarVerticeOk A \ (c , d , a )
∨ QuitarVerticeError A
EncontrarCaminoMinimo A =
b
[ΞCIUDAD A; EncontrarCaminoMinimo ]
Devolver el camino
Restituir las aristas que fueron divididas cuando se agregaron los vértices
nuevos a nes de dejar el grafo de la ciudad en su estado original
CaminoOptimo =
b
( AgregarVertice A [calle1 ?/calle ?; d1 ?/d ?; v1 !/v ]
9 AgregarVertice A [calle2 ?/calle ?; d2 ?/d ?; v2 !/v ]
)
o
COORD == Q × Q
CIUDAD G
CIUDAD A
posesq : esquinas COORD
posdir : calles × N → COORD
2. Que si una coordenada (x,y) está asociada a una dirección de una de-
terminada cuadra, entonces ésta se encuentra situada sobre el segmento
determinado por las esquinas de la cuadra recién referenciada
Queda parte del invariante implícita en el hecho de que la función posesq sea una
función total e inyectiva. Esto nos dice que no puede suceder que dos esquinas
tengan la misma coordenada asociada.
EnMedio
(x , y ), (x1 , y1 ), (x2 , y2 ) : COORD
((x1 ≤ x ≤ x2 ) ∨ (x2 ≤ x ≤ x1 ))
((y1 ≤ y ≤ y2 ) ∨ (y2 ≤ y ≤ y1 ))
y −y1 y1 −y2
x −x1 = x1 −x2
Posiciones Correctas
CIUDAD G
AgregarVerticeOk G
∆CIUDAD G
AgregarVerticeOk A
0
posesq = posesq ∪ {v 7→ posdir (calle ?, d ?)}
0
posdir = posdir
4. Especicación y Diseño 44
AgregarVerticeError G =
b [ΞCIUDAD G ; AgregarVerticeError A]
AgregarVertice G =
b AgregarVerticeOk G \ (a , b , j , k , A, B )
∨ AgregarVerticeError G
QuitarVerticeOk G
∆CIUDAD G
QuitarVerticeOk A
QuitarVerticeErrorSegmento G
∆CIUDAD G
v ? : esquinas
QuitarVerticeError G =
b [ΞCIUDAD G ; QuitarVerticeError A]
QuitarVertice G =
b QuitarVerticeOk G \ (c , d , a )
∨ QuitarVerticeError G
∨ QuitarVerticeErrorSegmento G
deseados. El cliente por otra parte, es el encargado de interactuar con los usuar-
ios, es la interfaz que permite a los mismos realizar las consultas y conocer los
resultados.
El servidor está constituido básicamente de tres partes; La encargada de
matener el grafo de la ciudad y proveer las operaciones de consulta (Nomen-
clador), la que manteniene las conexiones, interactua con los clientes y admin-
istra la cola de sus peticiones (Conexiones)y por último la que genera los resul-
tados en los formatos deseados (Resultados).
El cliente está formado por dos partes, la que intractua con el servidor,
realizando peticiones y recibiendo los resultados correspondientes; y la interfaz
que interactua con el usuario, que se encarga de permitir al mismo ingresar sus
consultas y conocer las respuestas.
module Ciudad
uses ArmaGrafo
exports method Ciudad(dirArchivo: in String)
raises ArmaGrafoFalloException;
Arma el grafo que representa a la ciudad a partir del
archivo apuntado por dirArchivo.
method existeDiereccion(nom calle: in String,
num: in int): LinkedList;
Consulta en el grafo por la existencia de una
dirección.
method CaminoMinimo(IDArista1: in int,
num1: in int,
IDArista2: in int,
num2: in int): Path
raise Exception;
Consulta en el grafo el camino mínimo entre
las direcciones dadas por IDArista1,num1 y
IDArista2,num2 y devuelve el camino.
implementation ArmaGrafoFalloException es lanzada ante
cualquier inconveniente al tratar de armar
el grafo.
end Ciudad
module ArmaGrafo
exports method ArmaGrafo(dirArchivo: in String): Graph
raises Exception;
Arma un grafo a partir del archivo apuntado por
dirArchivo, este debe ser un tipo de archivo aceptado.
end ArmaGrafo
Resultados
Este paquete tiene los módulos que son utilizados para generar los resultados
que se envían a los clientes. Estos son texto, archivo de sonido e imagen.
module PathATexto
exports method PathATexto (camino: in Path);
method ultimasInstrucciones(): String;
Devuelve las últimas instrucciones generadas.
method setPath(p : in Path);
method getPath():Path;
method darInstrucciones(): String;
Crea y devuelve instrucciones asociadas al camino.
end PathATexto
module ShapeAPng
exports method ShapeAPng (s : in ShapeleDataStore)
raise IOException;
Crea a partir de un ShapeFileDataStore un Png.
end ShapeAPng
4. Especicación y Diseño 47
module TextoASonido
exports method TextoASonido();
method asignarTexto(texto: in String);
method ASonido(): File raise IOException;
Devuelve un archivo de sonido creado a partir del texto
ingresado en el método asignarTexto.
method borrarArchivos();
Borra los archivos temporales creados durante la
traducción a sonido.
end TextoASonido
module PathAShape
exports method PathAShape(p: in Path);
method PathAShape();
Constructores de la clase.
method setPath(p: in Path);
method getPath(): Path;
method getShape(): ShapeFileDataStore;
Devuelve el ShapeFileDataStore que contiene el path
ingresado en el método setPath o seteado en el
constructor.
end PathAShape
Conexiones
Los siguientes modulos administran las conexiones de los clientes y maneja
los pedidos de los mismos.
module ConexionClientePc
extends Java.Thread
exports method ConexionClientePc(conexion: in Socket,
colap: in ColaPeticiones)
raise IOException;
Constructor de la clase.
method run();
Método para poner a correr el hilo.
end ConexionClientePc
El modulo ConexionClienteMovil, tiene los mismos dos métodos que el ante-
rior, es el encargado de mantener la conexión de clientes de dispositivos moviles.
Estos se diferencian internamente en los servicios prestados y en la forma de
mantener la comunicación. Los dispositivos moviles, por ejemplo, no reciben la
imagen de los resultados, además la forma de intercambio de datos varia míni-
mamente, por lo que en algunos casos la comuniocación es ligeramente distinta
a la de clientes Pc.
4. Especicación y Diseño 48
module ColaPeticiones
uses Peticion
exports method ColaPeticiones();
Constructor de la clase.
method encolarPeticion(p: in Peticion);
Este método se encarga de encolar la petición p.
method obtenerPrimera(): Peticion;
Devuelve la primer petición de la cola.
method peticionesEncoladas(): Boolean;
Devuelve verdadero si hay peticiones encoladas.
end ColaPeticiones
module AdministradorPeticiones
uses ColaPeticiones, Ciudad
extends Java.Thread
exports method AdministradorPeticiones(c: in Ciudad,
cp: in ColaPeticiones);
Constructor de la clase.
method run();
Método que pone a corre el hilo.
implementation Mientras haya peticiones encoladas, se toma
la primera y se la atiende en la ciudad, luego
se informa que la petición fue atendida.
end AdministradorPeticiones
5. Implementación
Servidor web
Computación Distribuida
5.1.1. Sockets
Un socket es un punto de comunicación entre procesos (posiblemente cor-
riendo en diferentes máquinas), compuesto de un protocolo, una dirección IP y
un número de puerto. Los protocolos más usados en la comunicación de socket
son TCP y UDP. La diferencia entre ambos, es que los que usan TCP (también
conocidos como sockets de ujo), mantienen una conexión, garantizan que el
envío de datos sea libre de pérdida de información y errores de transmisión y
que se respete el orden en el cual fueron mandados los mismos; mientras que los
que usan UDP (conocidos como sockets de datagrama), no mantienen conexión
5. Implementación 50
Java provee por medio de la clase java.net los dos tipos de sockets:
struir interfaces web, ya sea, ampliando el servidor, para que interprete HTTP
o construyendo una aplicación que conecte un servidor web con el servidor de
datos geográcos.
5.2. Servidor
El servidor fue programado en el lenguaje Java, se utilizarón las librerías
estandar del lenguaje y la librería GeoTools, para el manejo de la información
geográca. Además se utilizó un scrip en Perl y el sintetizador de voz MBROLA.
La funcionalidad principal del Servidor, es la de recibir conexiones de clientes
remotos y contestar sus consultas de camino mínimo e información de dirección.
En la inicialización, el servidor genera, utilizando la librería GeoTools, una
estructura con los datos de la ciudad de Córdoba, más precisamente un grafo.
Éste se encuentra ubicado en un módulo que posee métodos para trabajar con
el, como son agregar y quitar vértices, buscar aristas que satisfagan ciertas car-
acterísticas y las que realizan las consultas de búsqueda de camino y existencia
de dirección. También es inicializada una cola donde se irán almacenando las
peticiones de los clientes, junto a ésta, se crea un hilo (Thread), que a lo largo
de la ejecución, se encarga de controlar la cola. Al momento que es encolada
una solicitud, este hilo es el encargado de atenderla, para ello realiza la consulta
correspondiente al grafo y luego devuelve el resultado. Como se puede apreciar,
la política aplicada a la hora de atender las peticiones es FIFO, esto se pen-
só así, por el hecho de que la consulta de camino mínimo modica el grafo, y
tal modicación debe existir sólo para esa consulta, por lo tanto, mientras este
método es accedido, las demás consultas debes esperar que la que está en curso
nalice. Con FIFO se asegura que no se produzca inanición, es decir, todas las
consultas serán atendidas en algún momento.
Una vez inicializado, el servidor queda escuchando un socket de tipo Server-
Socket (de la clase java.net) esperando clientes, cuando un cliente realiza un
pedido de conexión y éste es aceptado, se crea un socket (de tipo socket, tam-
bién de la clase java.net) y un hilo encargado de manejar la conexión con el
cliente. Este hilo se comunica a través del socket, creado cuando se aceptó la
conexión, más precisamente, a través de los streams asociados a ese socket (uno
para entrada y otro para salida). El hilo también tiene como tarea encolar los
pedidos de los clientes, esperar a que sean atendidos y generar los resultados
que se enviarán.
Para generar los resultados, el servidor cuenta con un módulo que está com-
puesto de varias clases encargadas de generar los distintos tipos de presenta-
ciones de resultados. Entre las presentaciones disponibles, se tiene la que rep-
resenta un camino como un conjunto de instrucciones en forma de texto, de
manera similar a la forma que una persona daría tales instrucciones. Éstas son
armadas utilizando un modulo programado para interpretar la geografía del
camino, es decir, un modulo que provee funcionalidad para obtener longitudes
de cuadras, nombres de calles, sentido de giro y amplitud de los mismos, entre
otras. Este modulo fue programado utilizando herramientas de GeoTools. Otra
forma de presentación, es un archivo de sonido con las instrucciones del camino
traducidas a voz. La traducción es realizada utilizando la librería MBROLA [15]
y un script perl programado por Alistair Conkie (adc@cstr.ed.ac.uk). MBROLA
es un sintetizador de voz, que junto al sript perl forman un sistema conocido
como TTS (del ingles Text To Speach). Hay que señalar que antes de pasar a voz
las instrucciones generadas como se describió anteriormente, se debe realizar un
5. Implementación 54
pequeño formateo al texto, para que tanto el script, como MBROLA, puedan
realizar la traducción correctamente. Por último, se tiene la representación del
camino como una imagen, estas también son armadas con herramientas provis-
tas en la librería GeoTools.
Se debe mencionar que para este proyecto se programó el algoritmo de
búsqueda de caminos mínimos A estrella, y que dicho algoritmo fue aceptado
por la comunidad de desarrolladores de GeoTools y formara parte de la librería.
La misma sólo contaba con el algoritmo de Dijkstra.
5.2.1. A estrella
Como se mencionó anteriormente, la librería GeoTools cuenta, en la exten-
sión de grafos, con el algoritmo de búsqueda de caminos de Dijkstra. El mismo
no está destinado a resolver el problema que en este trabajo se intenta solu-
cionar, pues para un nodo origen, encuentra el menor camino entre él y cada
uno de los nodos del grafo. Mientras que la solución deseada es el camino mínimo
entre dos vértices determinados. Por ello, se empleó el algoritmo de grafos A*
(A estrella), que encuentra el menor camino entre un nodo origen y uno destino;
siendo esto, precisamente, el problema que se intenta resolver. Es claro que con
Dijsktra puede obtenerse el camino que se desea, pero al ser A* especico para
tal n, es conveniente su utilización, que puede resultar más eciente.
Donde,
n es el nodo actual.
g(n) es el costo real del camino recorrido hasta n (es decir, el costo desde
el nodo origen hasta el nodo actual).
Complejidad
La complejidad computacional del algoritmo está íntimamente relacionada
con la calidad de la heurística que se utiliza en el problema. En el peor caso (con
una mala heurística) la complejidad será la del algoritmo de Dijkstra mejorado,
2
n + e, donde n es el número de vértices y e el de aristas. Si la heuristica es
buena (como usualmente lo es cuando se dispone de la ubicación geográca de
los nodos y el costo es la distancia que se recorre) el algoritmo resulta del orden
de la cantidad de aristas del camino óptimo.
Implementación de A estrella
Dada la intención de contribuir con la librería GeoTools, la implementación
de A*, se vio fuertemente condicionada a la manera de implementar algoritmos
similares en dicha librería. La misma, implementa este tipo de algoritmos como
el trabajo conjunto de tres clases. En el caso de A* estas son:
AStarShortestPathFinder
AStarIterator
5.3. Cliente
Para este proyecto se realizaron dos tipos de clientes, uno que se ejecuta en
computadoras de escritorio y otro en dispositivos móviles. La programación de
los mismos fue realizada en java, el cliente de dispositivos móviles se codicó
con j2me, mientras que el cliente pc fue realizado en Java se.
La funcionalidad principal de los clientes es la de proveer una interfaz para
que los usuarios puedan realizar las consultas y ver sus resultados. Además
maneja el protocolo de comunicación con el servidor.
un punto favorito el usuario relaciona un nombre con una dirección (calle y al-
tura). Además se provee la posibilidad de aumentar el tamaño de los textos y
componentes, para facilitar la visualización a personas con disminución visual.
Otra característica del cliente, es que pueden agregarse módulos para visulizar
la interfaz en distintos idiomas, esto se realizó, utilizando las funcionalidad de
internacionalización, conocida com I18N, del lenguaje Java.
El cliente cuenta un módulo para comunicarse con el servidor, en éste se
encuentra programado el protocolo mencionado anteriormente. Además tiene
módulos encargados de manejar la interfaz gráca y módulos que manejan los
archivos de conguración, tanto los de parámetros de conexión, como los de
conguración de idioma y tamaño de visualización.
A.1. Introducción
Tiresias es un programa que intentará asistir a la persona discapacitada
visual en la tarea frecuente de movilizarse en un entorno urbano. Se trata de
una aplicación que brinda información cartográca de una ciudad particular en
tres formatos, a saber:
Sonoro: los resultados de las consultas son presentados de manera oral por
el programa. Se crea un archivo .wav que puede ser guardado en un medio
móvil como un reproductor de mp3 o un celular.
2. Consultar cuál es el camino más corto para realizar a pie entre dos direc-
ciones cualesquiera de la ciudad. Se genera un conjunto de instrucciones
que le dirán cómo desplazarse a través de camino sugerido.
A.2. Requerimientos
Procesador: Equivalente Pentium 3 o superior.
Memoria: mayor o igual a 256 RAM.
A. Manual de Usuario 66
A.3. Instalación
A.3.1. Windows
La instalación bajo windows se realiza de forma totalmente automática. No
es necesario tener la máquina virtual de Java previamente instalada. En caso de
que ésta no se encuentre en su sistema, el instalador le ofrecerá la posibilidad de
instalarla. El instalador también ofrecerá la posibilidad de instalar AccessBridge
para lograr la mejor interacción posible entre la PC y el software.
Para instalar Tiresias ejecute el archivo instalar.exe. Se ejecutará un asistente
de instalación que lo guiará a través del resto del proceso.
Tiresias se distribuye con una licencia GPL(GNU General Public License ó
Licencia Pública General) que se detalla durante el proceso de instalación, y
que deberá ser leída y acordada para poder proseguir con tal procedimiento.
Una vez instalado podrá ejecutar el programa entrando al menú de inicio,
programas, y seleccionando la carpeta correspondiente a Tiresias. Aquí también
encontrará una opción para desinstalar el programa.
A.3.2. Linux
Para instalar Tiresias bajo Linux se deberá descomprimir el archivo insta-
lar.tar.gz. Una vez realizada esta acción tendrá la posibilidad de instalar la
máquina virtual de java accediendo a la carpeta adicionales y utilizando el
método que mejor se adapte a su versión de este sistema operativo.
Tiresias se distribuye con una licencia GPL(GNU General Public License ó
Licencia Pública General) que se detalla en el archivo licencia.rtf. Si el usuario
realiza las acciones de instalación y utiliza Tiresias, se asumirá que ha leído y
acordado tal contrato.
Una vez que tenga todas las dependencias necesarias, podrá correr su cliente
ejecutando el comando java -jar ClientePC.jar.
A.4. Interfaz
Cuando ejecute Tiresias se desplegará la ventana principal del programa,
que cuenta con los siguientes elementos:
ALT+C Conguración
ALT+R Ampliar/Reducir
ALT+U Ayuda
ALT+N Acerca de
Archivo (ALT+A): Este menú sólo muestra la opción de salir del programa.
Para salir del programa sin necesidad de acceder a este menú también puede
utilizar el atajo de teclado ALT+Q.
Preferencias (ALT+P): Este menú sólo muestra la opción congurar. Para
acceder directamente a esta opción puede presionar el atajo de teclado ALT+C.
Esta opción desplegará una nueva ventana en la que podrá congurarse la di-
rección del servidor de Tiresias, el puerto de comunicación con el mismo, y el
idioma en el que está escrita la interfaz. La tecla TAB permite desplazarse entre
A. Manual de Usuario 68
los elementos de la ventana. Utilice ALT+G para guardar los cambios realiza-
dos y cerrar la ventana o bien ALT+S para salir de la ventana sin guardar los
cambios.
Herramientas (ALT+H): Este menú es otra forma de obtener acceso a los
botones principales de la aplicación. En él encontrará acceso a las funcional-
idades principales (Camino Mínimo, Consulta Dirección, Ampliar) así como
también acceso a la funcionalidad de Favoritos.
A.4.2. Favoritos
Al presionar la combinación de teclas ALT+F desde la ventana principal
de emphTiresias, se abrirá la ventana de edición de puntos favoritos. El cursor
estará situado sobre algún punto favorito que se haya almacenado. En esta
ventana se detallan todos los puntos favoritos existentes. A través de las echas
arriba y abajo puede ir desplazándose entre los favoritos guardados para luego
modicarlos (ALT+M) o borrarlos (ALT+B). Para agregar un nuevo favorito
deberá desplazar el cursor hasta el botón Agregar, o bien presionar el atajo
de teclado ALT+A. Tanto al modicar como al agregar un punto favorito, se
despliega un nuevo cuadro de diálogo que tiene dos campos de texto: El primero
para el nombre de la calle del favorito, y el segundo para la numeración. En el
caso de agregar habrá un campo adicional que le permitirá escoger un nombre
para su nuevo favorito. Si presiona borrar (o si se ejecuta su atajo), se abrirá
un cuadro de diálogo que preguntará si está seguro de que desea ejecutar dicha
acción. Todos los menúes tienen un botón salir que se accede a través del atajo
de teclado ALT+S.
Para acceder a la lista de puntos favoritos en las consultas de camino mín-
imo, podremos presionar el atajo de teclado ALT+F dentro de la ventana de
consulta. Esta lista tiene un conjunto de direcciones de uso frecuente. Cada
punto favorito tiene un número de ubicación en esta lista de direcciones que
nos permite identicarlo. Ingresando el número del punto favorito deseado y
presionando el botón Aceptar (ALT+A) habremos rellenado automáticamente
los campos de dirección en el que el cursor haya estado situado. Para cancelar
esta operación es posible apretar el botón Salir con la barra espaciadora o bien
utilizar el atajo de teclado ALT+S. Si se presiona Aceptar y no se ha escrito
ningún número de opción o se ha escrito un número de opción erróneo (inexis-
tente, por ejemplo) se oirá el sonido de advertencia y se mostrará una ventana
de información. Para salir de tal ventana presione ENTER, barra espaciadora
o ESCAPE. Volverá a estar en la ventana de Favoritos.
Una sección de sonido: en esta sección hay tres botones que permiten re-
producir, pausar, continuar, y detener el audio de las indicaciones acerca
del cómo ir desde el punto de origen hasta el punto de llegada. El botón
Reproducir (ALT+R) dará comienzo a este sonido, y se convertirá inmedi-
atamente en el botón Pausa (ALT+P). El botón Detener (ALT+D) de-
tendrá la ejecución del sonido y lo rebobinará hasta su comienzo. Además
de estas funcionalidades, existe un botón Guardar Sonido (ALT+G), que
abre un diálogo para seleccionar una ubicación para guardar el archivo de
sonido de las instrucciones en formato WAV. Esto puede resultar útil si se
utiliza con un reproductor de mp3 tradicional.
[3] Programa de acción mundial para las personas con discapacidad. Res-
olución 37/52 de 3 de diciembre de 1982, de la Asamblea General de las
Naciones Unidas.
[5] Libro
[9] USING Z Specifcation, Refnement, and Proof. Jim Woodcock, Jim Davies.
1995.
[14] http://es.wikipedia.org/wiki/CORBA