Introducción a la manipulación de SUMO: importar mapas desde OpenStreetMap
Este artículo tiene como orientación tratar de traducir (así mismo, traducir, porque mucha de la información acerca de esto está en otros idiomas) y sintetizar conceptos básicos y procedimientos que hay que conocer para ejecutar una simulación con SUMO, como primera parte de una recopilación de mi experiencia acerca de cómo trabajar con esta herramienta.
Es importante indicar que la PC desde la que yo realicé la instalación y la simulación funciona con OS Linux Mint 19 – 32 bits. Y la versión del simulador que trabajé es sumo-1.1.0. Porque el funcionamiento del procedimiento descrito aquí está sujeto a estas características.
Los procedimientos que describiré en este artículo, me sirvieron a mí para realizar una simulación de una tarea de la universidad. Me costó un poco ejecutar mi primera simulación porque los tutoriales que conseguía se saltaban pasos, manejaban otras versiones, otros sistemas operativos, la información era muy densa (o en otro idioma, lo que dificultaba a un más entender el procedimiento) y los tutoriales de YouTube de media hora siempre fueron mi última opción. De todo eso, resulta este procedimiento que resultó válido para mí. Ojalá, ustedes, con la información descrita en este artículo, puedan ejecutar su simulación, sin mayores problemas. Ese es el propósito de este texto. Pero dejemos la verborrea y vamos a lo que vinimos… ¡Ejecutar simulaciones de tráfico con _ SUMO _!
1. ¿Qué es SUMO?
Simulation of Urban MObility, de allí provienen sus siglas, lo cual ilustra muy bien lo que es, un simulador de movilidad urbana, en otras palabras, un simulador de tráfico. ¡Simple! Es una herramienta de código abierto, desarrollada por el Instituto de Sistemas de Transporte y el Centro Aeroespacial de Alemania.
SUMO permite definir la ruta de los vehículos, el flujo de tráfico (de forma determinista o aleatoria), el ciclo de los semáforos, y así otras variables que nos dan propiedad para moldear la simulación según nuestro interés. Algunos de estos valores se pueden ajustar a través de su entorno gráfico o de forma más específica modificando datos en uno de los archivos xml que genera la simulación.
Uno de los atractivos de este simulador es que nos permite incorporar mapas desde OpenStreetMap. Ahora el asunto es… ¿cómo importar un mapa de mi zona de estudio desde OpenstreetMap a SUMO? Es lo que veremos a continuación.
2. Importar un mapa de tu ciudad a SUMO
En primer lugar, como he dicho, los mapas que trabajaremos no los extraeremos de Google Maps. No señoras y señores. Existen otros buscadores espaciales muy interesantes, además de la bestia buscadora. Como el de OpenStreetMap. Nos basaremos en los mapas suministrados por este motor para trabajar con nuestra zona de interés en SUMO.
Después de todas estas aclaraciones, iniciemos con el procedimiento:
-
En el buscador de _O penStreetMap _, ubica la zona que quieres estudiar.
Fig. 1. Vista de la zona de estudio en OpenStreetMap. -
Selecciona la opción Exportar , que te llevará a la descarga de un archivo llamado map.osm.
-
En algún lugar de tu PC crea una carpeta para guardar todo lo relacionado con la información del mapa que vas a importar al simulador. En mi caso la llamé map. Copia el archivo anteriormente descargado a esta carpeta.
-
Debes crear un archivo .xml , donde pondrás la información extraída de polygon SUMO. A este archivo lo llamarás typemap.xml. La información de este archivo indica datos adicionales del mapa como ríos, puentes, etc.; es decir, este archivo es necesario para que el simulador interprete la información de todo nuestro mapa y nos la pueda mostrar en su interfaz gráfica. En fin, lo que debes hacer es crear en un archivo de texto, copias y pegas la información de polygon SUMO y lo guardas en tu carpeta map.
Fig. 2. Captura de pantalla obtenida de \url{https://sumo.dlr.de/docs/Networks/Import/OpenStreetMap.html} . -
Lo siguiente es encontrar un archivo con el nombre test.sumocfg. Dicho archivo debes buscarlo en la carpeta de tu programa SUMO. Para localizar debes ir a la siguiente dirección: sumo/tools/contributed/traci4j/test/sumo_maps/variable_speed_signs. Aunque esto depende de la versión de SUMO que tengas instalada. Así que, en caso de no encontrar este archivo, simplemente copia y pega las siguientes líneas en un archivo de texto y guardalo dentro de tu carpeta map con el nombre map.sumo.cfg :
<configuration>
<input>
<net-file value="map.net.xml"/>
<route-files value="map.rou.xml"/>
<additional-files value="map.poly.xml"/>
</input>
<time>
<begin value="0"/>
<end value="2000"/>
<step-length value="0.2"/>
</time>
</configuration>
- Si has llegado hasta aquí, quiere decir que ya creaste los archivos fundamentales de tu mapa. Ahora queda ejecutar comandos desde la consola para convertir datos del mapa y que el simulador pueda interpretarlos. Es decir, simplemente ejecuta los siguientes comandos que Linux hará el resto por ti:
- Abre el terminal de tu PC y coloca: cd ‘dirección de tu carpeta map’.
Ejemplo: ~$ cd /home/…/map
-
Ejecuta ~$ ls.Aquí se muestran los archivos que contiene tu carpeta, que hasta ahora deberían ser tres: map.sumo.cfg , typemap.xml y map.osm.
-
Ejecuta ~$ netconvert –osm-files map.osm –lefthand –output.street-names -o map.net.xml
-
Ejecuta ~$ polyconvert –net-file map.net.xml –osm-files map.osm –type-file typemap.xml -o map.poly.xml
-
Ejecuta un archivo python que se encuentra en la carpeta del programa SUMO. La dirección de este archivo es: sumo-1.1.0/tools/. Requiere ejecutar una instrucción similar a: ~$ python/home/mariana/Descargas/sumo-1.1.0/tools/randomTrips.py -o map.net.xml -e 100 -l
Por supuesto, tendrías que ejecutar la dirección del archivo correspondiente en tu PC.
- Ejecuta, nuevamente, el comando ~$ python /home/mariana/Descargas/sumo-1.1.0/tools/randomTrips.py{} -n map.net.xml -r map.rou.xml e 100 -l
Finalmente, la ejecución de todos esos comandos debió proporcionarte todos estos archivos en tu carpeta map :
- ¡Listo! Con esto ya habrás creado los archivos necesarios para que la simulación de tráfico de tu mapa sea ejecutada en SUMO. Para probar puedes ejecutar, seguidamente, ~$ sumo-gui map.sumo.cfg.
Fig. 3. Captura de pantalla de la simulación con la zona importada.