Más

¿Cómo crear un gráfico de enrutamiento de peatones desde OSM?

¿Cómo crear un gráfico de enrutamiento de peatones desde OSM?


Estoy interesado en obtener las trayectorias a pie de los datos de OSM. Específicamente considero el área dentro de los límites de la ciudad de Berlín. Descargué el archivo OSM correspondiente de Geofabrik y tengo la intención de usarósmosispara filtrar los datos. Como primer paso, me gustaría conocer los caminos que pueden utilizar los peatones. Empecé con esto:

osmosis --read-xml file = berlin-latest.osm.bz2 --tag-filter accept -ways highway = footway --used-node --write-xml file = "berlin-foot.osm"

Sin embargo, no estoy seguro de cuándo las etiquetas acera y peatón. Básicamente, quiero terminar con un gráfico para poder realizar tareas de enrutamiento. ¿Necesitaré ambas relaciones en este caso? Además, al menos las carreteras peatonales parecen contener a veces etiquetas "area = yes". ¿Puedo filtrar también por el tipo de camino?

Editar: Me gustaría todas las formas que pueden usar los peatones, no quiero restringirme a las formas solo para peatones. Mi versión actual es esta:

INPUT = "berlin-latest" ósmosis --read-xml file = "$ {INPUT} .osm.bz2"  --tag-filter accept -ways highway = acera, peatón, camino, pista  --tag-filter rechazar -relations --used-node --write-xml file = "$ {INPUT} -foot.osm.bz2" osmosis --read-xml file = "$ {INPUT} .osm.bz2"  --tag-filter accept -ways highway = *  --tag-filter accept -ways sidewalk = both, left, right, yes  --tag-filter rechazo-relaciones --used-node --write-xml file = "$ {INPUT} -sidewalk.osm.bz2 "osmosis --read-xml file =" $ {INPUT} .osm.bz2 " --tag-filter accept -ways highway = residencial, sin clasificar, living_street  --tag-filter rechazo-relaciones --used-node --write-xml file = "$ {INPUT} -residential.osm.bz2" osmosis --read-xml file = "$ {INPUT} -sidewalk.osm.bz2"  --read-xml file = "$ {INPUT} -foot.osm.bz2"  --read-xml file = "$ {INPUT} -residential.osm.bz2"  --merge --merge --write-xml file = "$ {ENTRADA} -pedestrian.osm.bz2 "

Esto parece razonable, aunque todavía no estoy seguro con respecto a las etiquetas de área. También podría quitar elacceso = privadoformas. Otro problema es que a algunas carreteras les faltanaceraetiquetas, por lo que habría que hacer más mapas ...


autopista = acera se utiliza para caminos entre carreteras o parques. highway = path se usa de manera similar (con cierto debate) para caminos más pequeños que no están pavimentados pero que se han desgastado en la hierba.

autopista = peatón se utiliza para carreteras anchas que han sido "peatonales", por lo que los vehículos no pueden circular por ellas (excepto tal vez para entregas). También se utilizan para áreas como plazas, con la adición de una etiqueta area = yes. Un ejemplo es Bradenburger Tor. http://www.openstreetmap.org/way/38210407#map=18/52.51628/13.37865

El enrutamiento sobre áreas peatonales es un caso diferente, puede esperar que alguien también haya mapeado las aceras / ciclovías en el área, como lo han hecho aquí. De lo contrario, es posible que desee realizar un trabajo adicional en su sistema de enrutamiento para decir que puede navegar desde cualquier punto del borde, en línea recta, hasta cualquier otro punto del borde. Un ejemplo es si va hacia el oeste por la puerta / tor, no tiene que seguir el carril bici hasta la carretera, puede girar inmediatamente a la derecha y dirigirse hacia el norte por la plaza para tomar un atajo que une Erbertstrasse y llegar a Dorotheenstrasse.

Para obtener todas las formas aceptables para peatones Comenzaría con todos los valores de las carreteras (¡los peatones son tan versátiles!) Y luego ajustaría sus reglas para incluir excepciones. autopista! = autopista Y autopista! = autopista_enlace podría ser suficiente por lo que puedo pensar en este momento. Como mencionó, también agregue una cláusula para las restricciones de acceso adecuadas. http://wiki.openstreetmap.org/wiki/Key:access

OpenStreetMap es excelente por su riqueza de datos creados por la comunidad, pero esto significa muchas etiquetas a considerar. Recuerde escanear sus datos o un lugar que conozca bien. Si hay algo que consideras incorrecto, mira cómo está m


No pude averiguar qué tipo de estructura debería dar.

El uso de plot_graph_route y la estructura de sus argumentos se describen completamente en la documentación de OSMnx. La técnica para trazar rutas entre puntos lat-lng se documenta en los ejemplos de OSMnx, de la siguiente manera:

Tanto la documentación como los ejemplos describen de manera similar la función plot_graph_folium.

OSMnx puede trazar la ruta en un mapa si la ruta se compone de nodos OSM con ID de OSM.

Lo que tiene actualmente son puntos GPS sin procesar que comprenden una serie de puntos (lat, long). El primer paso debe ser la correspondencia de mapas, un procedimiento para asignar los puntos de datos GPS al nodo OSM más cercano / más apropiado. Si puede hacer eso para todos sus puntos de datos GPS, tendrá el nodo / punto OSM más apropiado en la red de carreteras de OSM (dependiendo de qué tan sofisticado sea su algoritmo de correspondencia de mapas) para cada uno de sus puntos de datos GPS.

OSMnx tiene una representación de correspondencia de mapas muy aproximada en términos de obtener el nodo más cercano para un determinado (lat, long) en forma de

como lo menciona Geoff en su respuesta. Puede optar por hacer esto para todos sus puntos de datos GPS en lugar de solo los puntos finales y recuperar la ruta más corta. Pero, de nuevo, esto es una coincidencia de mapas muy burda, dependiendo de la precisión deseada.


Diseño

El núcleo de OpenTripPlanner consta de tres componentes de software básicos: un generador de gráficos, un motor de enrutamiento y una interfaz de usuario. Mientras que la interfaz de usuario principal (es decir, el mapa y la representación visual de la ruta) está escrita en JavaScript, los otros componentes están escritos en el lenguaje de programación Java en la plataforma Java Enterprise Edition (Java EE). El motor de enrutamiento de OpenTripPlanner está integrado en una API de servicio web RESTful que se puede utilizar con otras aplicaciones cliente personalizadas.

El progreso más reciente en el proyecto OpenTripPlanner se puede encontrar en las listas de correo OpenTripPlanner Developers Group [10], OpenTripPlanner Users Group [11] y Transit Developers Group [12], así como en el sitio web principal de OpenTripPlanner [13].

El código fuente de OpenTripPlanner tiene la licencia GNU Lesser General Public License (LGPL) [14] y está disponible públicamente en el sitio web OpenTripPlanner.org.


Herramientas de planificación de servicios de ruta abierta:

Cliente de mapas clásicos

Nuestra herramienta clásica de planificación de rutas le permite utilizar la mayor parte de la API de openrouteservice con solo unos pocos clics en un mapa. Elija entre una variedad de perfiles y configure hasta 50 puntos de referencia para planificar su ruta. Personalícelo evitando áreas, tipos de calles específicos o países enteros. Consulte PDI a lo largo de su ruta, realice análisis de accesibilidad para múltiples puntos o simplemente inspeccione ubicaciones.

Estas y muchas más funciones sorprendentes se ofrecen de forma gratuita y en diferentes idiomas. Pero lo mejor de esto: es de código abierto, por lo que con un poco de conocimiento de JavaScript puede ajustar fácilmente el cliente a su caso de uso personal.

Cliente de mapas de desastres

Basado en la versión clásica, nuestro cliente para la gestión de desastres está desarrollado para apoyar el trabajo de los actores humanitarios y los socorristas en las regiones más vulnerables y propensas a desastres del mundo. Gracias al trabajo del Equipo Humanitario de OpenStreetMap y al proyecto Missing Maps, en situaciones de desastre, los datos de OSM se actualizan continuamente y se enriquecen con información crítica. Al limitar el servicio a las regiones de desastre activas, es posible volver a calcular el gráfico de enrutamiento una vez cada hora sobre la base de los datos de OSM más actualizados.

Nuevo cliente de mapas

Nuestro nuevo cliente de mapas fue creado con el impresionante marco VueJs que ya está disponible. El nuevo cliente mantiene todas las funcionalidades del anterior, pero es completamente receptivo y está optimizado para su uso en navegadores móviles y de escritorio, a la vez que trae un montón de características nuevas. Nuestro objetivo es una interfaz de mapa más intuitiva que facilite aún más la planificación de rutas y estamos pensando mucho en las mejoras estructurales y de rendimiento.

Ayúdenos a mejorar su experiencia de usuario brindándonos sus comentarios a través de nuestro foro de preguntas.

El código fuente está disponible para todos en GitHub. Una gran ventaja del nuevo enfoque es la posibilidad de convertir al cliente en una aplicación móvil nativa con facilidad, lo que nos acerca a ofrecer una aplicación de enrutamiento en vivo real. ¡Así que estad atentos a los desarrollos futuros!


Navegación a estima para peatones con la ayuda de gráficos de enrutamiento basados ​​en A * en grandes espacios sin restricciones.

Pedestrian Dead Reckoning (PDR) se adopta ampliamente en el campo de la navegación peatonal con dispositivos portátiles. Está particularmente adaptado a la localización basada en teléfonos inteligentes, ya que los sensores inerciales se pueden diseñar en una tecnología MEMS (sensores microelectromecánicos), lo que les permite integrarse en dispositivos livianos. A diferencia de los receptores GNSS, los sensores inerciales son especialmente útiles en interiores, ya que permiten la localización autónoma sin visibilidad del cielo. Sin embargo, debido a las limitaciones de detección de pasos y deriva del giroscopio, se requiere información adicional para ayudar al proceso de posicionamiento PDR. Para los sensores montados en el pie, la calibración de actualización de velocidad cero (ZUPT) se explota para ajustar los parámetros de posicionamiento mediante la detección de fases de la postura dentro del ciclo de la marcha (fase estática), aunque esta calibración no es posible con dispositivos de mano debido al movimiento de la mano libre y un aumento dificultad para detectar la fase de apoyo. En exteriores, PDR aún puede ser asistido por GNSS [1], pero esto no es factible en interiores debido a la indisponibilidad de la señal y se necesitan más mediciones. Estos podrían ser proporcionados por radiobalizas o información visual. El primer enfoque requiere el despliegue de la infraestructura y la formación [2], mientras que el segundo requiere una cámara y un mayor procesamiento de imágenes para el reconocimiento de características [3]. Una tercera posibilidad es restringir la posición del peatón usando la información del mapa. Se pueden retener dos paradigmas principales de trabajos anteriores. O el espacio transitable viene dado por mapas 2D delimitados por obstáculos [4] o está dado por una red de gráficos de enrutamiento que transforma el proceso de posicionamiento en un modelo 1D por partes [5]. En el primer caso, se explora mejor el espacio, pero el mapa no se explota más que para detectar obstáculos estáticos (por ejemplo, paredes). Esto significa que no se realiza ninguna calibración a menos que se golpee un obstáculo. Por el contrario, los gráficos de enrutamiento son mucho más restrictivos porque el modelo de movimiento viene dado directamente por la red de gráficos. Por lo tanto, su uso tiene un mayor impacto en la forma y precisión de la trayectoria y deben ser lo suficientemente realistas como para limitar los errores de posicionamiento.

Este documento se centra en el enrutamiento de PDR asistido por gráficos. De hecho, los gráficos de enrutamiento involucran un modelo de movimiento simple que permite tanto la evitación de obstáculos como la calibración de las direcciones para caminar dentro de recorridos en línea recta [5]. Su uso puede incluso extenderse a la calibración del modelo de longitud de paso como se informó en nuestro trabajo anterior [6], aunque dos inconvenientes principales hacen que su uso sea poco práctico y, a veces, ineficaz. En primer lugar, no existe un proceso ubicuo que genere redes gráficas combinadas de peatones interiores y exteriores. Su construcción puede llevar mucho tiempo y, a veces, ser inadecuada con el movimiento de los peatones. Si bien se espera que el gráfico contrarreste las limitaciones de PDR, puede introducir errores adicionales debido a inconsistencias con el desplazamiento real. En segundo lugar, no manejan trayectorias "pseudoaleatorias" dentro de áreas libres de obstáculos y durante la transición entre espacios exteriores e interiores a medida que aumenta la libertad de movimiento. En estos casos, los gráficos de enrutamiento se vuelven ineficaces ya que no se puede confiar en suposiciones de movimiento para diseñar una red realista. Los modelos basados ​​en cuadrículas son adecuados para explorar grandes espacios [7]. Sin embargo, no es posible realizar ninguna calibración con este enfoque. Esto incluso conduce a sobreestimar la distancia de viaje porque la linealidad del movimiento se pierde debido a la estructura de la cuadrícula. Como resultado, el proceso de PDR ya no cuenta con asistencia y los problemas básicos de la deriva del giro y la distancia de viaje no calibrada no se resuelven.

En este estudio se investiga una solución a la vulnerabilidad de la navegación PDR asistida por gráficos de enrutamiento en espacios libres de obstáculos. La propuesta es hacer uso del algoritmo A *, que se usa comúnmente para la planificación de rutas dentro de mundos virtuales o para la guía de rutas de vehículos, con el fin de diseñar un gráfico de ruta realista en espacios libres de obstáculos. El gráfico se construye sobre la base de un conjunto de puntos de referencia que son cruciales para la navegación peatonal. De hecho, se espera que estos últimos equilibren la ausencia de restricciones geométricas al proporcionar ubicaciones estratégicas entre las cuales el cálculo de la ruta con el algoritmo A * sería relevante. Por tanto, la primera contribución de este estudio es mitigar la deriva en el enfoque PDR incluso en grandes espacios. Además, el problema de la acumulación de errores durante la transición entre espacios interiores y exteriores se aborda mejorando la relevancia del gráfico de enrutamiento. Esto se logra mediante el cálculo de los caminos probables que un peatón puede tomar desde ubicaciones estratégicas al aire libre para llegar a las puertas de entrada de los edificios. Además, la elección del algoritmo A * es adecuada para manejar diferentes perfiles de movilidad (por ejemplo, enfermedad personal que afecta la ruta del usuario objetivo) de modo que el enfoque se pueda personalizar para las necesidades específicas de cada peatón. De hecho, esto se garantiza gracias a una ponderación relativa del usuario del mapa que está directamente involucrada en la construcción del gráfico. Esto se debe a que el algoritmo A * calcula las rutas óptimas de acuerdo con las tasas de transitabilidad dadas por un mapa de navegación (por ejemplo, la tasa de transitabilidad según las pendientes, el pavimento). Por ejemplo, uno tomaría el camino más corto para cruzar un área abierta, mientras que una persona discapacitada puede seguir otro camino, como caminar cerca de paredes o pistas dedicadas.

2. A * Pathfinding dentro de las mallas de navegación

2.1. Descripción general de la generación de mallas de navegación. Una malla de navegación (NavMesh) es un conjunto de varios polígonos 2D o 3D accesibles por un usuario determinado [8]. Esta estructura se puede obtener automáticamente mediante el software GIS. Otros hacen uso de RECAST [9], una biblioteca de código abierto dentro de la comunidad de diseñadores de mundos virtuales. Se realizaron varios estudios sobre cómo construir mallas de navegación a partir de modelos 3D sin procesar [10,11]. La construcción NavMesh permite asignar pesos que traducen las tasas de transitabilidad del polígono de acuerdo con algunas características dadas (pendiente, tipo = ) y al perfil de movilidad del usuario objetivo (capacidad para caminar, subir, subir escaleras, etc.). La ponderación de NavMesh es bastante importante para considerar el perfil de movilidad del usuario a fin de calcular rutas de enrutamiento adecuadas. DETOUR [12] es un ejemplo de software de código abierto que permite cálculos de búsqueda de ruta A * sobre la base de NavMesh.

2.2. Un centro comercial NavMesh Generation. El método propuesto se aplicó a un centro comercial (Figura 1). Este último está mapeado en Google Maps con los nombres de las tiendas, las puertas principales del centro comercial y el conjunto de zonas transitables. Utilizamos el software QGIS 2.12.1 para extraer el mapa en forma de raster con una resolución de 11 cm. Las zonas transitables se extrajeron digitalizando el mapa y eliminando obstáculos. La triangulación de Delaunay se utilizó para crear NavMesh. A todos los polígonos se les asignó el mismo peso ya que todos los experimentos son realizados por personas sanas. Esto implica que las rutas calculadas con A * minimizarán la distancia y pueden dar como resultado una forma que se puede obtener con diferentes enfoques [10,13].

2.3. Un algoritmo de búsqueda de caminos. A * es una versión mejorada del algoritmo de Dijkstra [14]. Este último tiene como objetivo calcular la ruta óptima entre dos puntos de acuerdo con una función de costo dada. La optimización se aplica a la distancia de viaje, el tiempo de viaje, la energía gastada, etc. Esta adaptabilidad permite afrontar el problema de la movilidad reducida por enfermedad o minusvalía. El proceso de optimización A * es un esquema de búsqueda discreto donde el espacio es modelado por una cuadrícula compuesta de celdas. Cada celda se explora de acuerdo con un gráfico de adyacencia que modela las conexiones dentro de la cuadrícula. Una vez visitada, una celda se almacena junto con su costo asignado hasta que se alcanza la celda objetivo. La ruta óptima viene dada por la secuencia de celdas para las cuales la suma de costos es mínima. A * es una extensión del principio de Dijkstra que calcula el costo de las celdas visitadas de acuerdo con su distancia desde el punto de partida (que es el mismo que el costo de Dijkstra) pero también a su distancia supuesta a la celda objetivo en un enfoque heurístico. Se supone que el costo de uso a priori es menor que el costo real (desconocido) de la celda actual a la celda objetivo. A * es más rápido que el algoritmo de Dijkstra debido a la exploración ordenada de las celdas de acuerdo con sus costos de uso. El esquema de búsqueda de ruta A * se puede aplicar a cualquier NavMesh rasterizado donde los pesos de polígono son heredados por las celdas ráster.

3. Generación de gráficos de enrutamiento basados ​​en A *

3.1. Generación de gráficos de enrutamiento sobre la base de waypoints. Un waypoint es un elemento puntual que interviene significativamente en el proceso de búsqueda de caminos. La importancia de un waypoint está relacionada con el papel que desempeña en la toma de decisiones del peatón durante su viaje. Vale la pena considerar dos situaciones. La primera es cuando el peatón tiene la intención de llegar a un destino conocido dentro de un entorno familiar. En este caso, es obvio que sigue el itinerario que mejor se adapta a su perfil de movilidad. Generalmente es el más corto pero puede ser cualquier camino dependiendo de la función de costo que defina el perfil de movilidad del usuario. Esta situación es manejada por el algoritmo A * usando un NavMesh ponderado. El destino objetivo se conoce si es visible desde la posición actual del peatón, por ejemplo, si el peatón está ubicado en un nodo gráfico que es visible desde su nodo objetivo. La segunda situación es cuando el destino del peatón es invisible debido a los obstáculos. En este caso, los puntos de referencia se construyen para discretizar los posibles destinos de destino que pueden ser destinos finales o intermedios.

Para comprender mejor la implementación de los puntos de referencia, el espacio debe considerarse en relación con la cognición espacial humana. De hecho, las áreas transitables dentro del piso de un edificio pueden ser pasillos, habitaciones o pasillos. En el exterior, las áreas transitables son el espacio que comprende aceras, senderos, plazas, aparcamientos, etc. (las carreteras pertenecen a las áreas transitables). Esta clasificación intuitiva de los componentes del espacio permite definir escenas y extiende lo que se denomina escenas de decisión al espacio exterior y a los pasillos. Las escenas de decisión se han definido previamente en [15] como los lugares en los que "se puede entrar y salir y [están] delimitados físicamente por edificios y otros obstáculos sólidos que impiden el movimiento". La extensión de las escenas de decisión a corredores y aceras en este trabajo está motivada por el hecho de que estos elementos tienen fronteras (fronteras físicas para corredores y fronteras geométricas para aceras) y que se puede acceder y dejar a través de puntos específicos. Por ejemplo, dos pasillos son dos escenas separadas. Se puede acceder a ellos y dejarlos a través de su intersección, que es una esquina del edificio, un corredor y un pasillo también son escenas distintas entre las que es posible el flujo de tráfico a través de su intersección. Dos elementos son importantes para el tránsito de peatones dentro y entre escenas. El primero está relacionado con el isovista, que es el espacio visible desde la posición actual del peatón. El isovista está influenciado principalmente por la presencia de obstáculos que repercuten tanto en la visibilidad como en la trayectoria del peatón [16]. El segundo elemento es el conjunto de portales que permiten el flujo de peatones de una escena a otra [15], como los extremos de los corredores, las puertas de los edificios, las entradas de las tiendas o los extremos de los senderos. De hecho, los elementos clave en el comportamiento de orientación de los peatones dependen principalmente de los portales y fronteras de obstáculos (que determinan el isovista). Materializan que la visibilidad y la finalidad (destino) son los parámetros que dan forma a la propia trayectoria. En este estudio, el conjunto de waypoints se compone de portales (extremos de pasillos, extremos de senderos y puertas exteriores / interiores) y esquinas con obstáculos. La construcción de gráficos basada en puntos de ruta es obviamente más realista que los métodos basados ​​en kernel donde las escenas son modeladas por sus centros [17], lo que implica erróneamente que el peatón camina sistemáticamente por el centro de la escena. Además, la estructura del gráfico no está completamente determinada por la geometría del espacio, sino que maneja las rutas basadas en el comportamiento generadas de acuerdo con los puntos de referencia y que reflejan las estrategias de viaje de los peatones.

Una vez que se han construido los puntos de ruta, se pueden exportar a una base de datos que ayudará al proceso de búsqueda de rutas. Cada par de waypoints está relacionado por un conjunto de itinerarios que se generan con el algoritmo A * y son parte del gráfico de enrutamiento final. El movimiento de hipótesis múltiples se maneja como en los gráficos de enrutamiento clásicos mediante la exploración de varias rutas y manteniendo las que se adaptan mejor a las mediciones de IMU. La estructura del gráfico se almacena en forma de una base de datos GIS que contiene los identificadores de los segmentos del gráfico, sus coordenadas de los nodos de las extremidades, su longitud y sus conexiones dentro del gráfico en un enfoque de conectividad de nodos. Cada borde del gráfico está orientado y tiene un nodo de entrada A y un nodo de salida B. El diseño de conectividad de nodo está involucrado en el modelo de movimiento utilizado para el filtrado.

3.2. Planificación de rutas A * para una transición perfecta entre los espacios interiores y exteriores y dentro de las áreas libres de obstáculos. Trabajos anteriores demostraron que los gráficos basados ​​en el diseño de interiores son eficientes para mejorar la localización de PDR dentro de áreas geométricamente restringidas [5, 6]. Por lo tanto, el método propuesto se aplica solo al área que precede a la entrada principal del centro comercial, así como en el pasillo libre de obstáculos (Figura 2). Estos últimos representan los lugares críticos privados de GNSS donde la información del mapa no proporciona una calibración al proceso de posicionamiento PDR, enfatizando el tema principal que se aborda en este documento. En el exterior, el gráfico de enrutamiento se construye de acuerdo con la geometría de aceras, cruces peatonales y senderos.

La Figura 3 muestra el gráfico de enrutamiento generado dentro del área de prueba. Tres waypoints materializan la puerta de entrada al edificio (dibujada en negro en la Figura 2). La atención se centra en el punto de ruta donde se cruzan las rutas rojas. Representa el lado izquierdo de la entrada del centro comercial. Los caminos rojos son los itinerarios calculados con A * que relacionan el lado izquierdo de la puerta con otros lugares de interés, como las entradas de las tiendas o los corredores principales del edificio. Estos últimos están modelados por una serie de líneas rectas según las direcciones principales de los pasillos. Tres caminos relacionan el espacio exterior con el interior a través del lado izquierdo de la entrada del centro comercial.

Esta representación muestra que los viajes en línea recta son privilegiados para un desplazamiento práctico y rápido. También son más realistas en lo que respecta al movimiento de los peatones. De hecho, se eliminan algunas hipótesis como caminar hacia las paredes o hacer una serie de giros para atender un lugar al que se puede llegar de frente. Además, esto proporciona una medición de las direcciones de caminata dadas por los segmentos del gráfico en zonas libres de obstáculos, lo que sería imposible si se hubiera aplicado un enfoque basado en cuadrícula, que requiere información adicional como la señal de radiobalizas para compensar los errores de PDR.

4. IMU Fusion con GNSS y el gráfico de enrutamiento con un filtro de partículas

4.1. Detección de pasos y cálculo de rumbo. La detección de pasos se realiza después de la clasificación del movimiento según [18] mediante la detección de picos en la señal de aceleración utilizando un algoritmo de umbral adaptativo [19]. Según la misma referencia, se utiliza un modelo genérico para estimar la longitud del paso. Este modelo se basa en un conjunto de tres parámetros entrenados en 10 sujetos y está dado por

donde s es la longitud del paso, h es la altura del usuario, f es la frecuencia del paso, son los parámetros genéricos del modelo y k es un factor de escala que se espera calibre el modelo en el peatón.

Los rumbos se han calculado con el filtro de estimación de actitud MAGYQ [20] que fusiona las señales de un acelerómetro triaxis, un giroscopio triaxis y un magnetómetro triaxis. El cálculo de rumbo considera diferentes modos de transporte, como el modo de balanceo o el modo de mensajes de texto. A continuación, se obtiene la orientación del dispositivo en el espacio 3D y se deduce el ángulo de guiñada, dando la orientación del dispositivo en relación con el norte verdadero.

4.2. Calibración de los parámetros de PDR usando posiciones GNSS y el gráfico de enrutamiento. Los parámetros de PDR a calibrar son la longitud del paso y los encabezados. El modelo de longitud de paso debe ajustarse a cada usuario, ya que los parámetros del modelo dependen de las características fisiológicas del peatón y del ciclo de la marcha, mientras que los rumbos están potencialmente desalineados con la dirección real de la marcha debido a la deriva del giro y al modo de transporte del dispositivo. De hecho, el dispositivo puede orientarse hacia una dirección que es diferente a la de caminar. Estos errores se compensan fusionando la IMU con GNSS y el gráfico de enrutamiento. La fusión se realiza gracias a un filtro de partículas que modela el estado (vector de variables desconocidas) mediante un conjunto de partículas (un conjunto de vectores de estado muestreados). El vector de estado contiene las variables necesarias para determinar la posición del usuario y se presenta en detalle en la Sección 4.3.

El modelo de longitud de escalón se ajusta al peatón utilizando tanto el gráfico como las posiciones GNSS cuando están disponibles. De hecho, el gráfico permite mantener las posiciones en trayectorias plausibles. Esto impacta directamente en la distancia de viaje. Además, GNSS disminuye la dispersión de partículas acercándolas a la posición GNSS. Por otro lado, las direcciones para caminar vienen dadas por los encabezados de los caminos. Son especialmente fiables en interiores, ya que los caminos se calculan mediante el algoritmo A * o se dan directamente en las direcciones principales de los pasillos. Luego, la dirección de caminata derivada del gráfico de enrutamiento se compara con la dirección de apuntamiento de la IMU y se selecciona la ruta más probable. La diferencia entre ambos encabezados da a la IMU una desalineación angular con la dirección de la marcha del peatón.

El modelo de longitud de paso se calibra utilizando un factor de escala k. Este último se asume constante ya que depende principalmente de los parámetros fisiológicos del peatón. Está modelado por una variable gaussiana con una media de 1 m y variaciones bajas, ya que la longitud del paso está restringida a valores realistas que comprenden 0,60 m-1 m. Se espera que k converja en recorridos en línea recta donde se garantiza una calibración óptima.

La desalineación de rumbo [beta] es la diferencia angular entre la dirección de marcha real y la dirección de puntería de la IMU. Depende del tiempo porque varía con el movimiento de la mano. Se extraen muestras distribuidas uniformemente de valores de desalineación de rumbo con variaciones de hasta 30 [grados].

4.3. Implementación de modelos con filtro de partículas. El vector de estado está dado por

donde Id es el identificador de borde en la base de datos del gráfico, Dp es la abscisa curvilínea, [delta] representa la dirección de viaje, que puede ser 1 si el borde se camina hacia adelante (de A a B) y -1 en caso contrario (de B a A ), k es el factor de escala que calibra el modelo de longitud del paso, beta es la desalineación entre la dirección de caminar y la dirección de apuntamiento del dispositivo de mano, w es el peso de la partícula y pyt se refieren, respectivamente, a la partícula y tiempo.

Cada partícula se mueve a lo largo de la trayectoria actual de acuerdo con la distancia de viaje dada por la longitud del paso. El filtro de partículas introduce ruido blanco en cada parámetro para esparcir las partículas y optimizar la exploración del gráfico. La posición de la partícula está determinada por el identificador del borde del gráfico y su abscisa curvilínea. Si este último está por encima de la longitud del borde, se explorará uno de sus bordes conectados. El modelo de transición es

DU = (s) x delta x alpha + [n.sub.G] + [Dp.sub.sub.t-1], (3)

donde DU se compara con la longitud del borde actual [L Id] para calcular la abscisa curvilínea Dp (Figura 4), s es la longitud del paso y [n. G] es el error de modelado representado por un ruido gaussiano . alpha [miembro de] <0,1,2> y determina el número de pasos que debe realizar una partícula. Permite detectar pasos sobre / mal detectados.

La Figura 4 muestra el proceso de prueba de transición que permite calcular la abscisa curvilínea Dp cuando se excede un nodo de salida B (es decir, DU & gt 0). t es el índice de tiempo. La conectividad BA / BB traduce la búsqueda en la base de datos del gráfico para determinar si el borde que se está explorando está conectado al excedido a través de un nodo A o B. Se adopta la misma lógica si se excede un nodo de entrada A (es decir, DU & lt 0).

Cuando las posiciones GNSS son lo suficientemente precisas, se utilizan junto con los encabezados de los gráficos para calibrar tanto el modelo de longitud de paso como los encabezados PDR. Los encabezados de los gráficos proporcionan una medida de las direcciones a pie que se comparan con los encabezados PDR, teniendo en cuenta la posible desalineación angular. Esto se realiza de acuerdo con

[expresión matemática no reproducible] (4)

donde [w.sub.t] es el peso de la partícula y [Esub.p] y [Esub.GPS] son, respectivamente, la coordenada este predicha de una partícula y su correspondiente observación GPS. [N.sub.p] y [N.sub.GPS] son ​​los mismos parámetros a lo largo de la dirección norte. [[SIGMA] .sup.-1] es la matriz de ponderación considerando la precisión del gráfico y la posición GPS.

En el interior, algunas posiciones GNSS todavía están disponibles, pero estas últimas generalmente no son confiables y se rechazan. La prueba de rechazo se realiza mediante el umbral de la relación señal / ruido (SNR) y la dilución horizontal de precisión (HDOP). En el proceso de ponderación solo se explotan los encabezados de los gráficos. La ecuación de ponderación en interiores es

[expresión matemática no reproducible] (5)

donde [[theta] .sub.PDR] es la dirección de caminata estimada por los algoritmos PDR, [[theta] .sub.sub.d] es el rumbo predicho de la ruta actual, β es la desalineación de rumbo entre la dirección de la ruta y la estimación de PDR, [expresión matemática no reproducible] es la desviación estándar del rumbo de la ruta, y [expresión matemática no reproducible] es la desviación estándar de la estimación de la dirección de marcha de PDR.

Una vez que se han pesado las partículas, a algunas de ellas se les asigna un peso bajo y se vuelven inútiles en el proceso. Se realiza un remuestreo para duplicar las partículas con pesos elevados y eliminar las demás. La cantidad de partículas se mantiene constante y sus pesos iguales después de cada actualización para explorar suficientes hipótesis de movimiento.

5.1. Recolección de datos con HSGNSS e IMU en mano. Tres voluntarios sanos (2 hombres, 1 mujer) recopilaron datos con el dispositivo ULISS (Unidad de localización ubicua con sensores inerciales y satélites) (Figura 5) sostenido en la mano (Figura 6). Los datos se recopilaron tanto en entornos exteriores como interiores para dos modos de transporte de dispositivos diferentes. Se realizaron dos adquisiciones en un modo de mensajes de texto y una en los modos de balanceo y mensajes de texto. La duración media de las adquisiciones fue de unos 14 minutos y la distancia a pie para cada prueba de casi 1,5 km.

Se eligieron diferentes escenarios para realizar los experimentos. Estos se explicarán en detalle en la Sección 6.1, donde el texto se realza con figuras.

5.2. Los datos de entrada. El dispositivo ULISS [21] comprende una unidad móvil inercial de 9 grados de libertad, un receptor y una antena GNSS de alta sensibilidad (HSGNSS), una tarjeta de memoria y una batería. It delivers measurements that are time-stamped in GPS time. Inertial sensors and magnetometers provide measurements at a 200 Hz frequency.

The HSGNSS receiver operates in a standalone mode and delivers positions in real time at a 5 Hz frequency. Delivered positions are time-stamped in GPS time and have metric accuracies ranging from 2 m up to 10 m near buildings and tree shades. In this work, GNSS positions were interpolated at the step frequency in order to be fused with the PDR estimates of headings and step lengths.

5.3. Reference Trajectories. Besides collecting data with ULISS device in hand, all volunteers were equipped with an independent GNSS receiver carried in their backpacks and a small antenna attached to their caps. GNSS measurements were then postprocessed in order to calculate reference trajectories by differential GNSS. This was performed using RTKLIB 2.4.2p12 software [22]. Measurements from the embarked GNSS receiver and from a nearby base station were used to perform relative GNSS positioning. Obtained positions had decimetric accuracies up to several meters near buildings and other elevated features. Afterwards, thresholding was applied to three parameters in order to reject some outlier position estimates. These parameters are first the number of visible satellites, second, the ratio factor of ambiguity resolution, and, finally, the horizontal dilution of precision. The resulting positions had precisions below 1 m and were adequate for accuracy assessment in this work.

6.1. Trajectory Analysis. Figures 7, 8, and 9 show the estimated trajectories (red) with the A* -generated routing graph and the particle filter described in Section 4.3. The blue pattern corresponds to the PDR trajectory, while the green one is the reference trajectory obtained by differential GNSS.

Figures 7 and 8 correspond to acquisitions performed in the texting mode. The starting point for both acquisitions lies on the top right extremity of the trajectories. Both subjects made a closed loop around the building, with an intermediate outdoor travel (bottom side of the figures) before reaching the starting point back.

For both acquisitions, the travel distance seems to be overestimated. Yet, heading determination is more accurate for the first acquisition as the shape of the trajectory is more faithful to the building structure. The drift is higher for the second dataset and can be visually observed at the end of the PDR trajectory.

Where the drift is most important, the PDR trajectory presents major inconsistencies with the map. According to Figures 7, 8, and 9, the drift has been corrected as the estimated trajectories are more compliant with the building structure and with footpaths in outdoor space. This has been achieved thanks to the proposed particle filter and to an increased conformity with pedestrian motion, demonstrating that the positioning accuracy for the texting scenario has been significantly enhanced using our approach.

Figure 9 corresponds to data collected for both the swinging and texting modes. The acquisition started at the bottom of the figure where the reference and the filtered trajectories overlap. Starting from this position, the subject entered the building and then went outside through the North-East building entrance. This travel was made in the swinging mode. The top right extremity of the trajectory underlines a U-turn before the subject entered the building back to reach the starting point. This part of the travel was performed in the texting mode.

Unlike the two first acquisitions, there is a gap in the PDR trajectory because the subject did not go around the building as the two first subjects did. This gap is retrieved in the filtered trajectory.

Obviously, this scenario implies a less accurate heading determination and even an alteration in the travel distance estimation. In fact, the walking distance is underestimated for the swinging mode (first part of the travel until the subject reached the outdoor) and overestimated for the texting mode (second part of the travel until the ending point). These errors can be noticed in the PDR trajectory.

The filtered trajectory shows that the drift has been corrected, resulting in a shape that is more compliant with the map and with the reference trajectory outdoors. Yet, the positioning accuracy seems to be decreased as compared with the two first datasets. Following section discusses the accuracy of estimated trajectories.

6.2. Error Computation. In order to assess the accuracy of our positioning method, filtered positions were compared to the reference positions interpolated at the step frequency. The average plane error ranges from 4 to 5 meters for the three datasets (Figure 10). Accuracy is dependent on the quality of the PDR trajectory. Therefore, computed errors are more important for the second dataset considering the texting scenario. For the third acquisition that includes both swinging and texting, the accuracy is significantly decreased and more outliers (precisions above 15 m), which are given by the red plus signs in Figure 10, are detected due to mismatching errors (i.e., choosing wrong edges of the graph). These errors are mainly due to uncalibrated PDR parameters and are discussed in the following sections.

6.3. Heading Misalignment Estimation. Figures 11,12, and 13 show the estimated heading misalignment values for each dataset. For the first trial (Figure 11), angular misalignment is comprised between -10[degrees] and +10[degrees] and varies around an approximate mean value of 0[degrees]. According to this distribution, the angular difference between walking directions and the pointing direction of the device is minimal. Hence, applied corrections compensate only for the gyro drift, which is rather logical regarding the texting mode scenario.

For the second dataset (Figure 12), estimated heading misalignment values are between -15[degrees] and +12[degrees]. They are not equally distributed around 0[degrees] (e.g., between the 1st and 2nd minutes the mean value is over 5[degrees]). From this analysis, nonnegligible hand motion can be assumed even if the subject intended to perform the experiment in the texting mode.

Figure 13 gives the estimated heading misalignment for the third trial. The first part (until 9.5 min) of the travel was performed in the swinging mode. Hence, the estimated values vary significantly (-15[degrees] to +20[degrees]). For the second part of the plot (>10min), angular misalignment variations occur with lower magnitudes comprising [+ or -]5[degrees] over a mean value of 0[degrees] which reflects the texting mode of the acquisition.

6.4. Step Length Model Calibration. In this paper, a scale factor was introduced on the step length in order to calibrate the walking distance, though due to degraded GNSS signal and to short walking periods in outdoor space, the scale factor was not calibrated. In fact, regular and accurate GNSS positions are needed through straight line travels as cited in our introduction in order to calibrate the walking distance. These conditions were not verified during our experiments.

As a result, only corrected headings were relied on in the selection process. Therefore, distance calibration occurred only at junctions of the graph when a change in heading was detected. This explains the fact that the accuracy of filtered trajectories is still enhanced and compliance with the map improved.

Though the uncalibrated walking distances caused some mismatching errors because direction change was detected too late or too early in the process, this can be noticed in the Northern part of Figure 9. Indeed, while the pedestrian was intending to exit the building, the filtered trajectory indicates that he was walking towards a corridor. This happened for two reasons. First, the real trajectory is quite unusual in terms of pedestrian behavior. In fact, there is a change in heading (observed in the PDR trajectory) that is independent of space configuration, invalidating the assumptions that allowed constructing our navigation network. Second, the uncalibrated walking distance prevented the particles from reaching outdoor space at the right time. Another mismatching error occurred at the middle of the building (between 300 m and 400 m North) because direction change was detected too late due to uncalibrated walking distance. Later on, the particle filter corrected for this error and converged over the right corridor thanks to the particle dispersion over the graph and to the multihypothesis approach.

A map-aided PDR approach where a routing graph is used as motion model has been proposed. Main contribution of this paper is A* algorithm adaptation to elaborate a pedestrian network that is capable of cancelling the gyro drift and the misalignment between the device orientation and the walking direction even in large spaces. These are GNSS-deprived and obstacle-free areas where the limitations of map-aided PDR algorithms are most important. In fact, widespread map-aided PDR approaches do not compensate for these errors when pedestrian motion is unconstrained, mainly during the transition between outdoor and indoor spaces and when obstacles are absent. The A*-based routing graph mitigates the lack of obstacles thanks to a set of waypoints implemented according to human spatial cognition and to a weighted navigation mesh. This allows building a realistic motion model that meets the requirements of map-aided localization. Indeed, the proposed routing graph is well exploited because it gives prior knowledge about the pedestrian's destination and provides reliable measurements of walking directions. Results show that it is adequate for a seamless transition between outdoor and indoor environments and for enhancing the positioning accuracy even in large spaces. Achieved accuracies range from 3 to 5 meters and the drift is almost cancelled with the help of the routing graph, though some mismatching errors due to uncalibrated walking distance, especially while carrying the device in the swinging mode, might induce important positioning errors. Indeed, proper conditions of sky visibility and sufficient period of outdoor walking are prerequisite for the step length calibration before the pedestrian reaches indoor space.

The authors declare that there are no conflicts of interest regarding the publication of this paper.

This research work was done as part of the Happy Hand (2015-2018) project which is funded by the 19th "Fonds Unique Interministeriel" (French national R&D funding).

[1] J. B. Bancroft and G. Lachapelle, "Data fusion algorithms for multiple inertial measurement units," Sensors, vol. 11, no. 7, pp. 6771-6798, 2011.

[2] Y. Hu, L. Sheng, and S. J. Zhang, "Design of Continuous Indoor Navigation System Based on INS and Wifi," Applied Mechanics and Materials, vol. 303-306, pp. 2046-2049, 2013.

[3] T. Lee, B. Shin, J. H. Lee et al., "An Indoor Positioning System Using Vision aided Advanced PDR technology without image DB and with motion recognition," in Proceedings of the ION 2013 Pacific PNT Meeting, pp. 490-497

[4] P. Hafner, T. Moder, M. Wieser, and T. Bernoulli, "Evaluation of smartphone-based indoor positioning using different Bayes filters," in Proceedings of the 2013 International Conference on Indoor Positioning and Indoor Navigation, IPIN 2013, October 2013.

[5] T. Willemsen, F. Keller, and H. Sternberg, "A topological approach with MEMS in smartphones based on routing-graph," in Proceedings of the International Conference on Indoor Positioning and Indoor Navigation, IPIN 2015, October 2015.

[6] F. T. Alaoui, D. Betaille, and V. Renaudin, "A multi-hypothesis particle filtering approach for pedestrian dead reckoning," in Proceedings of the 2016 International Conference on Indoor Positioning and Indoor Navigation, IPIN 2016, October 2016.

[7] T. Fetzer, F. Ebner, F. Deinzer, L. Koping, and M. Grzegorzek, "On Monte Carlo smoothing in multi sensor indoor localisation," in Proceedings of the 2016 International Conference on Indoor Positioning and Indoor Navigation, IPIN 2016, October 2016.

[8] M. R. F. Mendonca, H. S. Bernardino, and R. F. Neto, "Stealthy path planning using navigation meshes," in Proceedings of the 4th Brazilian Conference on Intelligent Systems, BRACIS 2015, pp. 31-36, bra, November 2015.

[9] "Recast: Detail API documentation for the members declared in Recast.h . - recastnavigation/[email protected]," GitHub, https://github.com/recastnavigation/commit/6f5c9f9b82418efc44b85974e604095b95354ada.

[10] I. Afyouni, C. Ray, and C. Claramunt, "Spatial models for context-aware indoor navigation systems: a survey," Journal of Spatial Information Science, vol. 4, no. 1, pp. 85-123, 2012.

[11] W. Van Toll, A. F. Cook, and R. Geraerts, "Navigation meshes for realistic multi-layered environments," in Proceedings of the 2011IEEE/RSJ International Conference on Intelligent Robots and Systems: Celebrating50 Years of Robotics, IROS'11, pp. 3526-3532, September 2011.

[12] DETOUR, "GitHub," https://github.com/recastnavigation/recastnavigation/tree/master/Detour/Source, 2017.

[13] F. Mortari, S. Zlatanova, L. Liu, and E. Clementini, "Improved geometric network model (IGNM): a novel approach for deriving connectivity graphs for indoor navigation," ISPRS Annals of Photogrammetry, Remote Sensing and Spatial Information Sciences, vol. II-4, pp. 45-51, 2014.

[14] N. O. Eraghi, F. Lopez-Colino, A. De Castro, and J. Garrido, "Path length comparison in grid maps of planning algorithms: HCTNav, A and Dijkstra," Design of Circuits and Integrated Systems, pp. 1-6, 2014.

[15] C. Gaisbauer and A. U. Frank, "Wayfinding Model For Pedestrian Navigation," in Proceedings of the 11th AGILE International Conference on Geographic Information Science, Spain, 2008.

[16] N. Victor, evaluation des deplacements pietons quotidiens, Universitee de Lyon, 2016.

[17] L. Yang and M. Worboys, "Generation of navigation graphs for indoor space," International Journal of Geographical Information Science, vol. 29, no. 10, pp. 1737-1756, 2015.

[18] M. Susi, V. Renaudin, and G. Lachapelle, "Motion mode recognition and step detection algorithms for mobile phone users," Sensors, vol. 13, no. 2, pp. 1539-1562, 2013.

[19] V. Renaudin, M. Susi, and G. Lachapelle, "Step length estimation using handheld inertial sensors," Sensors (Switzerland), vol. 12, no. 7, pp. 8507-8525, 2012.

[20] V. Renaudin and C. Combettes, "Magnetic, acceleration fields and gyroscope quaternion (MAGYQ)-based attitude estimation with smartphone sensors for indoor pedestrian navigation," Sensors (Switzerland), vol. 14, no. 12, pp. 22864-22890, 2014.

[21] ULISS, http://www.ifsttar-geoloc.fr/index.php/en/equipment/ 44-uliss.

[22] "GitHub--tomojitakasu/RTKLIB_bin," https://github.com/tomojitakasu/RTKLIB_bin, 2017

F. Taia Alaoui, David Betaille, and Valerie Renaudin

IFSTTAR, COSYS, GEOLOC, 44344 Bouguenais, France

Correspondence should be addressed to F. Taia Alaoui [email protected]

Received 10 March 2017 Revised 8 May 2017 Accepted 5 June 2017 Published 10 July 2017

Academic Editor: Carlo Fischione

Caption: Figure 1: Walkable zones have been meshed (green polygons). Blank spaces are also walkable but the NavMesh is restricted to our zone of interest. The gray blocks are the stores considered as obstacles.

Caption: Figure 2: Main area where A* algorithm has served for the routing graph construction.

Caption: Figure 3: The highlighted segments of the graph in red color show the A* itineraries relating a portal waypoint (left side of the building entrance door) to different destinations. The latter are either extremities of corridors or footpaths, obstacle corners, or store entries.

Caption: Figure 4: Dp computation according to DU.

Caption: Figure 5: Ubiquitous Localization Unit with Inertial Sensors and Satellites.

Caption: Figure 6: Data collection by a pedestrian with ULISS unit in hand.

Caption: Figure 7: Estimated trajectory (in red). The blue trajectory gives the PDR position estimates and the green one gives the reference trajectory (only texting).

Caption: Figure 8: Trajectories for the second dataset (only texting).

Caption: Figure 9: Trajectories for the third dataset (swinging, texting).


Flexibility and extensibility¶

We want to encourage others to contribute their expertise and local knowledge to routing and guidance/narrative. What makes a good route in one country/region may not hold true in another country. Having the ability to create dynamic and extensible “plug-in” code to perform costing/weighting may encourage others to use and extend Valhalla. Dynamic costing will also help create alternate route paths (at run time - without generating different data sets) and allow new costing methods for specialized use cases: truck routing, green/eco routing, and perhaps least cost routing. Within narrative and guidance generation software we want to provide means of adding custom narrative phrases and perhaps other means of extending or adding custom plug-ins to tailor the output to a user’s need.


Valhalla is an open source routing engine and accompanying libraries for use with OpenStreetMap data. Valhalla also includes tools like time+distance matrix computation, isochrones, elevation sampling, map matching and tour optimization (Travelling Salesman).

Valhalla, and all of the projects under the Valhalla organization, use the MIT License. Avatar/logo by Jordan

There are several key features that we hope can differentiate the Valhalla project from other routing and network analysis engines. Ellos son:

  • Open source software, on open source data with a very liberal license. Should allow for transparency in development, encourage contribution and community input, and foster use in other projects.
  • Tiled hierarchical data structure. Should allow users to have a small memory footprint on memory constrained devices, enable offline routing, provide a means for regional extracts and partial updates.
  • Dynamic, runtime costing of edges and vertices within the graph via a plugin architecture. Should allow for customization and alternate route generation.
  • C++ based API. Should allow for cross compilation of the various pieces to enable routing on offline portable devices.
  • A plugin based narrative and manoeuvre generation architecture. Should allow for generation that is customized either to the administrative area or to the target locale.
  • Multi-modal and time-based routes. Should allow for mixing auto, pedestrian, bike and public transportation in the same route or setting a time by which one must arrive at a location.

Valhalla is fully functional on many Linux and Mac OS distributions.

In Windows all functionality is not yet fully supported. Building the Valhalla library works flawlessly, as well as the following application modules:

  • TOOLS : utilities to query and benchmark various components
  • DATA_TOOLS : utilities to build input data and handle transit
  • PYTHON_BINDINGS : use all actions (route, isochrones, matrix etc) via the Valhalla Python library (needs a full (i.e. development) Python distribution in the PATH )

Also, be aware that building tiles on Windows works, however, you can't build tiles with support of admin & timezone DBs (see #3010). This mostly affects the following functionalities:

  • no/falsy time-dependent routing
  • no border-crossing penalties
  • driving side will be off in LHT countries
  • currently wrong navigation in roundabouts, see #2320

The Valhalla organization is comprised of several library modules each responsible for a different function. The layout of the various modules is as follows:

    - Basic geographic and geometric algorithms for use in the various other projects. - The base data structures for accessing and caching tiled route data. - Library used in costing of graph nodes and edges. This can be used as input to loki and thor . - Library and service for accessing elevation data. This can be used as input to mjolnir or as a standalone service. - Tools for turning open data into Valhalla graph tiles. - Library used to search graph tiles and correlate input locations to an entity within a tile. This correlated entity (edge or vertex) can be used as input to thor . - Library used to for map-matching. - Library used to generate a path through the graph tile hierarchy. This path and attribution along the path can be used as input to odin . - Library used to generate manoeuvres and narrative based on a path. This set of directions information can be used as input to tyr . - Service used to handle http requests for a route communicating with all of the other valhalla APIs. The service will format output from odin and support json (and eventually protocol buffer) output. - A set command line tools that exercise bits of functionality from the library components above and provide the basis for quality testing and performance benchmarking. - A set of demos which allows interacting with the service and APIs.

Documentation is stored in the docs/ folder in this GitHub repository. It can be viewed at valhalla.readthedocs.io.

[DEPRECATED] Get Valhalla from Personal Package Archive (PPA)

NOTICE: Since we moved to cmake build systems we haven't updated our debian packaging scripts. Because of that the packages in the PPA are very very old. Once we get time to correct this we'll remove this notice but until then we recommend building from source or using docker.

If you are running Ubuntu (trusty or xenial) Valhalla can be installed quickly and easily via PPA. Try the following:

Building from Source - Linux

Valhalla uses CMake as build system. When compiling with gcc (GNU Compiler Collection), version 5 or newer is supported.

To install on a Debian or Ubuntu system you need to install its dependencies with:

Building from Source - MacOS

Configuring Rosetta for ARM64 MacBook

Check your architecture typing arch in the terminal. In case the result is arm64 set up Rosetta terminal to emulate x86_64 behavior. Otherwise, skip this step.

  1. Go to Finder > Application > Utilities .
  2. Select Terminal and right-click on it, then choose Duplicate .
  3. Rename the duplicated app Rosetta Terminal .
  4. Now select Rosetta Terminal application, right-click and choose Get Info .
  5. Check the box for Open using Rosetta , then close the Get Info window.
  6. Make shure you get i386 after typing arch command in Rosetta Terminal .
  7. Now it fully supports Homebrew and other x86_64 command line applications.

Install Homebrew in the Rosetta Terminal app and update the aliases.

You will use them to specify the platform when installing a library. Note: use ibrew in Rosetta Terminal to install all dependencies for valhalla and prime_server projects.

To install valhalla on macOS, you need to install its dependencies with Homebrew:

Now, clone the Valhalla repository

After getting the dependencies install it with:

In Rosetta Terminal use these flags for cmake:

Important build options include:

Option Comportamiento
-DENABLE_DATA_TOOLS ( On / Off ) Build the data preprocessing tools
-DENABLE_PYTHON_BINDINGS ( On / Off ) Build the python bindings
-DENABLE_SERVICES ( On / Off ) Build the HTTP service
-DBUILD_SHARED_LIBS ( On / Off ) Build static or shared libraries
-DENABLE_COMPILER_WARNINGS ( ON / OFF ) Build with common compiler warnings (defaults to off)
-DENABLE_WERROR ( ON / OFF ) Treat compiler warnings as errors (defaults to off). Requires -DENABLE_COMPILER_WARNINGS=ON to take effect.
-DENABLE_BENCHMARKS ( ON / OFF ) Enable microbenchmarking (defaults to on).
-DENABLE_SANITIZERS ( ON / OFF ) Build with all the integrated sanitizers (defaults to off).
-DENABLE_ADDRESS_SANITIZER ( ON / OFF ) Build with address sanitizer (defaults to off).
-DENABLE_UNDEFINED_SANITIZER ( ON / OFF ) Build with undefined behavior sanitizer (defaults to off).

For more build options run the interactive GUI:

For more information on binaries, see Command Line Tools section below and the docs.

Building from Source - Windows

It's recommended to work with the following toolset:

  • Visual Studio with C++ support
  • Visual Studio Code (easier and lighter to handle) to install packages
  1. Install the following packages with vcpkg and your platform triplet (e.g. x64-windows ). Note, you can remove all packages after zlib in ..vcpkg_deps.txt if you don't want to build TOOLS & DATA_TOOLS :
  1. Let CMake configure the build with the required modules enabled. Nota, you have to manually link LuaJIT for some reason, e.g. the final command for x64 could look like

The following bash should be enough to make some routing data and start a server using it. (Note - if you would like to run an elevation lookup service with Valhalla follow the instructions here).

We welcome contributions to valhalla. If you would like to report an issue, or even better fix an existing one, please use the valhalla issue tracker on GitHub.

If you would like to make an improvement to the code, please be aware that all valhalla projects are written mostly in C++11. We use clang-format v7.0 to format the code. We welcome contributions as pull requests to the repository and highly recommend that your pull request include a test to validate the addition/change of functionality.

Note that our CI system checks that code formatting is consistent, and the build will fail if formatting rules aren't followed. Please run ./scripts/format.sh over your code before committing, to auto-format it in the projects preferred style. To spare yourself (and the CIs) pure format commits, you can register it as a pre-commit hook so it lints your changes in-place (and will fail if files were changed, so you'll need to stage and commit again):

Also note that we run some clang-tidy linting over the code as well (see .clang-tidy for the list of rules enforced). You can run ./scripts/clang-tidy-only-diff.sh over the code before committing to ensure you haven't added any of the common problems we check for (Note: ./scripts/clang-tidy-only-diff.sh requires the exitence of a compile_commands.json database. You can generate this file by running cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=On . && make .

scripts/clang-tidy-only-diff.sh is run in CI and will fail the build if it detects any issues.

Additionally, a check with ASan is run in CI. We recommend testing with ASan and debug symbols locally prior to commiting, with the -DENABLE_ADDRESS_SANITIZER=ON -DCMAKE_BUILD_TYPE=Debug flags during cmake configuration. As long as leak sanitizer (which is a part of address sanitizer) is not currently supported across different platforms it is disabled in the CI. You can disable it locally with the environment variable ASAN_OPTIONS=detect_leaks=0 .

We highly encourage running and updating the tests to make sure no regressions have been made. We use the Automake test suite to run our tests by simply making the check target:

To run an individual test, make run-<test name> from the build directory or ./test/<testname>

You may check some notes on unit tests

Coverage reports are automatically generated using codecov for each pull request, but you can also build them locally by passing -DENABLE_COVERAGE=On and running make coverage .

Valhalla includes several microbenchmarks which you can build and run using:

They are enabled by the -DENABLE_BENCHMARKS=On CMake flag and are currently only available for Linux and MacOS.


1. Introducción

With the upsurge of open data movement and the development of Internet of things, there has been an increasingly abundant data resource [ 1 , 2 ]. It provides a solid data foundation for the construction of smart cities. These data include maps and point of interest (POI), GPS, the flows of people, mobile phones, location based service, video monitoring, environment and meteorology and social activities data others. However, due to the characteristics of diversity and heterogeneity of the data, there still exist three major challenges in an attempt to use these data to solve construction requirements of smart cities [ 3 , 4 ]. The first one is how to mine the data and find out the potential knowledge from data conveniently. The second one is how to effectively build connection between the knowledge and integrate them into a knowledge network. The third one is how to utilise the correlations between knowledge to solve various demands in constructing smart cities.

In this paper an urban knowledge graph is proposed to address the above-mentioned issues. It find out knowledge from urban multi-source data by data mining and learning technology. A network graph is created by the relationship between knowledge. On the basis of the network graph some issues in practical application are to be addressed. Instead of being the single, scattered and isolated pieces of knowledge, the knowledge graph integrates them into a network and takes advantage of the correlations to provide solutions to the macro issues as well as the micro issues. Therefore, it provides a comprehensive reference for the construction of smart city and urban governance.


Pedestrian Dead Reckoning Navigation with the Help of

An -based routing graph is proposed to assist PDR indoor and outdoor navigation with handheld devices. Measurements are provided by inertial and magnetic sensors together with a GNSS receiver. The novelty of this work lies in providing a realistic motion support that mitigates the absence of obstacles and enables the calibration of the PDR model even in large spaces where GNSS signal is unavailable. This motion support is exploited for both predicting positions and updating them using a particle filter. The navigation network is used to correct for the gyro drift, to adjust the step length model and to assess heading misalignment between the pedestrian’s walking direction and the pointing direction of the handheld device. Several datasets have been tested and results show that the proposed model ensures a seamless transition between outdoor and indoor environments and improves the positioning accuracy. The drift is almost cancelled thanks to heading correction in contrast with a drift of 8% for the nonaided PDR approach. The mean error of filtered positions ranges from 3 to 5 m.

1. Introducción

Pedestrian Dead Reckoning (PDR) is widely adopted in the field of pedestrian navigation with handheld devices. It is particularly adapted to smartphone-based localization as inertial sensors can be designed in a MEMS (Microelectromechanical Sensors) technology, enabling them to be embedded in lightweight devices. Unlike GNSS receivers, inertial sensors are especially useful indoors as they allow standalone localization without sky visibility. Yet, due to gyro drift and step detection limitations, additional information is required to assist the PDR positioning process. For foot-mounted sensors, zero velocity update (ZUPT) calibration is exploited to adjust the positioning parameters by detecting stance phases within the gait cycle (static phase), though this calibration is not possible with handheld devices because of free hand motion and an increased difficulty to detect the stance phase. Outdoors, PDR can still be aided by GNSS [1], but this is not feasible indoors because of signal unavailability and further measurements are needed. These could be provided by radio beacons or visual information. The first approach requires infrastructure deployment and training [2], while the second necessitates a camera and further image processing for feature recognition [3]. A third possibility is to constrain the pedestrian’s position using map information. Two main paradigms can be retained from previous work. Either walkable space is given by 2D maps delimited by obstacles [4] or it is given by a routing graph network that transforms the positioning process into a piecewise 1D model [5]. In the first case, space is better explored but the map is not exploited further than for detecting static obstacles (e.g., walls). This means that no calibration is performed unless an obstacle is hit. On the contrary, routing graphs are much more constraining because the motion model is directly given by the graph network. Hence, their use has greater impact on the shape and accuracy of the trajectory and they have to be realistic enough to limit positioning errors.

This paper focuses on routing graph-assisted PDR. In fact, routing graphs involve a simple motion model that allows both obstacle avoidance and the calibration of walking directions within straight line travels [5]. Their use can even be extended to calibrating the step length model as reported in our previous work [6], though two major drawbacks make their use quite impractical and sometimes ineffective. First, there is no ubiquitous process that generates combined indoor- outdoor pedestrian graph networks. Their construction can be time-consuming and sometimes inadequate with pedestrian motion. While the graph is expected to counterbalance PDR limitations, it may introduce additional errors due to inconsistencies with real displacement. Second, they do not handle “pseudorandom” trajectories within obstacle-free areas and during the transition between outdoor and indoor spaces as the freedom of motion increases. In these cases, routing graphs become inefficient as no motion assumptions can be relied on to design a realistic network. Grid-based models are well-suited for exploring large spaces [7]. Yet, no calibration is possible with this approach. This even leads to overestimating the travel distance because linearity of movement is lost due to the grid structure. As a result, the PDR process is no longer assisted and the basic issues of gyro drift and uncalibrated travel distance are not solved.

A solution to the vulnerability of routing graph-assisted PDR navigation in obstacle-free spaces is investigated in this study. The proposal is to make use of algorithm, which is commonly used for path planning within virtual worlds or for vehicle route guidance, in order to design a realistic routing graph in obstacle-free spaces. The graph is constructed on the basis of a set of waypoints that are crucial for pedestrian navigation. In fact, the latter are expected to balance the absence of geometrical constraints by providing strategic locations between which path computation with algorithm would be relevant. Therefore, the first contribution of this study is to mitigate the drift in the PDR approach even in large spaces. Moreover, the issue of accumulating errors during the transition between indoor and outdoor spaces is addressed by improving the routing graph relevance. This is accomplished through the computation of the likely paths a pedestrian may take from outdoor strategic locations to reach buildings entrance doors. In addition, the choice of algorithm is well-suited for handling different mobility profiles (e.g., personal disease that impacts the path of the target user) so that the approach can be customized for the specific needs of each pedestrian. Indeed, this is ensured thanks to a user-relative weighting of the map which is directly involved in the graph construction. This is because algorithm computes optimal paths according to walkability rates given by a map of navigation (e.g., walkability rate according to slopes, pavement). For instance, one would take the shortest path to cross an open area, whereas a disabled person may follow another path such as walking near walls or dedicated tracks.

2. Pathfinding within Navigation Meshes

2.1. Overview of Navigation Mesh Generation

A navigation mesh (NavMesh) is a set of several 2D or 3D polygons reachable by some given user [8]. This structure can be obtained automatically using GIS software. Others make use of RECAST [9], an open source library within the community of virtual world designers. Several studies were conducted on how to construct navigation meshes from raw 3D models [10, 11]. NavMesh construction allows assigning weights that translate the polygon walkability rates according to some given characteristics