Post on 01-Oct-2018
1 - 29
V Congreso Iberoamericano de Seguridad Vial.
Santiago de Chile, 7, 8 y 9 de noviembre de 2016
Título del trabajo: Simulador de conducción 3D inmersivo para la formación y el análisis del nivel de seguridad
Tema: Consecución de usuarios más seguros
Subtema: Educación vial y campañas de concienciación social. Papel de los medios de comunicación y ONG´s.
Autores: D. González-Ortega, F. J. Díaz-Pernas, R. J. Corchero-Floriano, M. Martínez-
Zarzuela, M. Antón-Rodríguez Empresa / Institución: Universidad de Valladolid
Cargo: Profesor contratado doctor (D. González-Ortega)
Dirección: Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática. Escuela Técnica Superior de Ingenieros de Telecomunicación de la Universidad de
Valladolid. Campus Miguel Delibes. Paseo de Belén nº15. 47011 Valladolid (España).
Email: davgon@tel.uva.es
Teléfono: +34 983423000 ext. 5552
RESUMEN
Este trabajo presenta un simulador de conducción 3D inmersivo que incorpora diferentes
escenarios y situaciones de tráfico de interés para analizar el nivel de seguridad del
conductor en las pruebas. Entre esas situaciones se incluyen usuarios vulnerables como
peatones, ciclistas y motoristas ante los que el conductor debe reaccionar adecuadamente
para garantizar la seguridad. El simulador almacena gran cantidad de información del
vehículo del conductor en cada ruta que realiza, como la posición, velocidad, revoluciones
por minuto, marcha y consumo. También muestra por pantalla y guarda en fichero para su
análisis posterior, las infracciones de tráfico e incidencias ocurridas, entre las que se
encuentran: salirse de la carretera, exceso de velocidad, velocidad por debajo de la mínima,
realización incorrecta de un cruce por no ceder la prioridad, realización incorrecta de un
cruce por no seguir la trayectoria correcta, realización incorrecta de la salida de una glorieta,
incumplir la distancia de seguridad, pisar línea continua, señal de stop mal realizada, señal
2 - 29
de ceda el paso mal realizada, semáforo no respetado, colisión con otro vehículo de cuatro
ruedas, colisión con una motocicleta, atropello a un peatón y atropello a un ciclista. El
simulador está desarrollado con el motor de videojuegos Unity y los programas de modelado
3D Blender y 3ds Max y se puede ejecutar en un ordenador sin requisitos altos de hardware
y con un dispositivo periférico de bajo coste como Logitech G27. Permite analizar el tipo de
conducción de diferentes personas teniendo en cuenta su reacción ante las diversas
situaciones a las que se enfrenta y lo ocurrido en ellas. También permite la concienciación y
formación en técnicas de conducción segura.
PALABRAS CLAVE:
Simulador de conducción, seguridad vial, aprendizaje virtual, Unity, infracciones de tráfico,
usuarios vulnerables, eficiencia en la conducción.
1. INTRODUCCIÓN
La simulación de eventos cada vez está siendo más utilizada en todo tipo de campos. A
medida que avanza la tecnología, es más viable crear entornos con gran realismo que
permitan una fácil inmersión de los usuarios en los simuladores, consiguiendo mejores
resultados del uso de los mismos.
Estos simuladores pueden acelerar el proceso de adquisición de habilidades básicas y se
configuran como herramientas con gran capacidad educativa en múltiples áreas. En
concreto los simuladores de conducción posibilitan el aprendizaje y reeducación de
conductores mediante la inclusión de rutas variadas y situaciones ante las que la seguridad
puede quedar comprometida dependiendo del comportamiento del conductor.
Muchas empresas, como Mercedes-Benz, están invirtiendo enormes cantidades de dinero
en simuladores de conducción (Mercedes-Benz, 2016), ya que piensan que las simulaciones
permiten adaptar a los futuros conductores a muchas situaciones que suceden con poca
frecuencia pero que pueden acabar en accidentes, tales como desprendimientos,
encontrarse con un accidente o con animales en medio de la carretera, etc.
El desarrollo de entornos de simulación es importante tanto por lo que aportan a los
conductores como por el hecho de que permiten recuperar datos que pueden ser analizados
para estudiar los diferentes aspectos con influencia en la seguridad vial o para ver carencias
en la formación o habilidades de los conductores que darían lugar a situaciones de peligro
3 - 29
en determinadas circunstancias. Los simuladores pueden ayudar a mantener la tendencia
decreciente de los niveles de siniestralidad en las carreteras, que ya han ido mejorando a lo
largo de los últimos años en España, llegando a ser en 2015 el quinto país de la Unión
Europea con menor número de fallecidos en proporción a su población (DGT, 2016a).
En este trabajo se presenta un simulador de conducción inmersivo 3D con diferentes
escenarios de conducción y eventos de tráfico para analizar el nivel de seguridad en la
conducción. El simulador muestra en tiempo real, y almacena en ficheros, tanto la
información del vehículo del conductor (posición, velocidad, revoluciones por minuto (rpm),
marcha y consumo) como, si así se configura, las infracciones de tráfico cometidas durante
las simulaciones. Esa información puede servir para la formación del conductor así como
para realizar análisis de las distintas simulaciones realizadas por los conductores que sirvan
para extraer conclusiones sobre el grado de seguridad en la conducción dependiendo del
tipo de conductor y las infracciones cometidas.
2. OBJETIVOS
- Desarrollo de un simulador de conducción inmersivo 3D que incorpore escenarios y
situaciones variadas para analizar el nivel de seguridad en la conducción.
- Inclusión dentro de los escenarios de conducción de usuarios vulnerables como
peatones y ciclistas para poder estudiar el comportamiento de los conductores ante
ellos.
- Almacenamiento de información del vehículo del conductor en cada simulación
(velocidad, revoluciones por minuto, marcha y consumo) y con una periodicidad
configurable.
- Informar en tiempo real de las infracciones cometidas por el conductor en el simulador
para su formación y reeducación.
- Almacenamiento de las infracciones cometidas en cada simulación.
- Formación de los conductores ante situaciones que no se pueden crear en escenarios
reales sin resultar peligrosas o sin requerir un gran coste económico pero que son fáciles
de implementar en un simulador.
- Estudio de los datos obtenidos en las simulaciones para asociar los diferentes
conductores y tipos de conducción con su nivel de seguridad y eficiencia en la
conducción.
4 - 29
- Concienciación sobre la importancia de formarse en técnicas de conducción segura y
sobre el cumplimiento de las normas de circulación.
3. DESARROLLO
3.1. Simuladores de conducción para la seguridad vial
Un simulador es una configuración de hardware y software en la que, mediante algoritmos
de cálculo, se reproduce el comportamiento de un determinado proceso o sistema físico. En
este proceso se sustituyen las situaciones reales por otras creadas artificialmente que
pueden servir para adquirir habilidades que posteriormente se transfieran a una situación de
la vida real de una manera efectiva.
En el mundo educativo, los simuladores constituyen un procedimiento, tanto para la
formación de conceptos y construcción en general de conocimientos, como para la
aplicación de estos a nuevos contextos a los que, por diversas razones, una persona no
puede acceder desde el contexto metodológico donde se desarrolla su aprendizaje. Entre
las ventajas educativas que aportan los simuladores se encuentran el entorno de
aprendizaje abierto basado en modelos reales que suministran y que el usuario adopta un
rol activo, convirtiéndose en el constructor de su aprendizaje a partir de su propia
experiencia.
Todo lo mencionado anteriormente es perfectamente aplicable a los simuladores de
conducción. Si bien hay simuladores de conducción pensados para la formación de los
futuros conductores (DriveSim, 2016) a partir de los que el usuario puede aprender a
conducir desde cero, la mayor parte de estos simuladores están orientados a la diversión
más que a la formación para una conducción responsable. Un gran número de usuarios,
entre ellos pilotos de carreras, destacan que este tipo de simuladores suelen proporcionar
una respuesta muy realista de los vehículos y unos circuitos muy detallados que les
permiten conocer y adaptarse a nuevas competiciones, de tal forma que se conozcan los
recorridos antes de realizarlos en la vida real (iRacing, 2016). Simuladores como iRacing,
Project Cars, Gran Turismo o Forza Motorsport están reconocidos mundialmente por su
fidelidad en la representación de la respuesta de vehículos de competición y, en el caso de
Gran Turismo, también de vehículos convencionales.
En los últimos años, se han usado los simuladores de conducción en muchas
investigaciones. Con ellos, se puede evaluar la reacción de los conductores ante diversas
5 - 29
situaciones que no pueden ser replicadas en carretera (Bham et al., 2010). Se ha probado
su idoneidad para evaluar el comportamiento de los conductores y como medio de
aprendizaje de hábitos de conducción eficiente y segura. (Sullman et al., 2015) demostraron
el potencial del entrenamiento en técnicas de conducción eficiente con un simulador para
conductores de autobuses. (Jamson et al., 2015) estudiaron mediante un simulador el
compromiso entre la eficiencia y la seguridad en la conducción con el uso de sistemas
integrados en el vehículo que aconsejan al conductor sobre el uso del pedal de acelerador.
Probaron que se podía mejorar la eficiencia gracias a esos sistemas. En los simuladores de
conducción se pueden introducir escenarios para analizar el grado de eficiencia y seguridad
en la conducción, la relación entre ellos y los resultados producidos en función de ellos.
Cuando una persona se visualiza en un entorno de conducción real como una gran ciudad
con tráfico denso y cruces complejos, puede que se vea incapaz de afrontar ese reto. Los
simuladores de conducción permiten que los usuarios puedan enfrentarse a muchas de
estas situaciones en un entorno virtual que no ponga en peligro al propio usuario ni a otros
conductores. Los simuladores posibilitan a los usuarios enfrentarse a problemas y obtener
unas habilidades y destrezas en la conducción con los que resolver estos problemas, de
manera que puedan aplicar esas habilidades cuando se enfrenten a situaciones similares
en un entorno real. Los usuarios también pueden acostumbrarse a los controles del vehículo
mediante estos simuladores, manejándolos con volante, pedales y palanca de cambio de
marchas, al igual que lo harían en un vehículo real. Para ello, se puede recurrir a todo tipo
de periféricos, desde mandos a cabinas completas de conducción, pasando por dispositivos
como el Logitech G27.
Obviamente los simuladores aportan la posibilidad de repetir las simulaciones en un
escenario y enfrentarse a ciertos eventos muchas veces. Además, es posible simular
situaciones de la vida real que serían prácticamente imposibles de simular de forma
voluntaria en un entorno real, al menos sin poner en riesgo tanto a personas y como a
vehículos. Situaciones como un desprendimiento, un vehículo en medio de la carretera o un
peatón cruzando una carretera de forma inesperada son eventos que podrían ser simulados
fácilmente en un simulador. Esto permitirá a los usuarios de un simulador estar mejor
preparados ante situaciones inusuales que se les puedan presentar en el futuro.
Por otro lado, los simuladores permiten realizar estudios de cómo ciertos agentes pueden
influir en las capacidades de conducción, tales como el cansancio, el estado físico o
psicológico del conductor, el consumo de medicamentos, drogas o alcohol o la edad.
6 - 29
Por último, es importante mencionar que los simuladores permiten recopilar datos de forma
simple. De esta manera, los usuarios pueden acceder a información de las simulaciones que
han realizado y observar su evolución. Esto permite que un conductor pueda ver qué fallos o
infracciones ha cometido durante su conducción y qué aspectos debe mejorar.
3.2. Simulador de conducción desarrollado
3.2.1. Motor de videojuegos Unity
Para el desarrollo del simulador de conducción, se han utilizado los programas de modelado
3D Blender y 3ds Max y, fundamentalmente, el motor de videojuegos Unity (Unity, 2016a).
Unity es uno de los motores más utilizados actualmente en proyectos con presupuestos
limitados. Permite desarrollar juegos y aplicaciones gráficas multiplataforma tanto
bidimensionales como tridimensionales. Tiene la posibilidad de exportar sus aplicaciones a
21 plataformas distintas, entre ellas las móviles como iOS y Android. En las versiones más
recientes del motor, se ha dado un gran peso a las plataformas de realidad virtual como
Oculus Rift. Unity tiene un editor intuitivo y muy personalizable. Este editor se puede
extender mediante la creación de scripts, con los que ejecutar funcionalidades como crear
objetos aparte de los que vienen por defecto. La herramienta Profiler es una de las más
importantes para el desarrollo con Unity y está incluida por defecto desde la versión 5 del
motor. Es una herramienta de depuración de una aplicación con la que detectar su
rendimiento en diferentes áreas como la memoria utilizada, la velocidad de ejecución de los
scripts o el renderizado de los elementos.
En Unity todos los objetos son GameObjects y la programación está orientada a
componentes. A estos GameObjects se les pueden añadir funcionalidades mediante scripts
para darles un comportamiento. Los scripts se pueden programar en C# o en UnityScript,
que es una versión de JavaScript semitipada creada exclusivamente para Unity. Unity
dispone de un Asset Store donde encontrar componentes (assets), tanto gratuitos como de
pago, que encapsulan funcionalidades reutilizables, tales como animaciones, modelos
bidimensionales y tridimensionales, sistemas de partículas, scripts o texturas. Es posible
desarrollar una aplicación en Unity tanto con el sistema operativo Windows, como con OS X
o Linux.
3.2.2. Tráfico generado, peatones y almacenamiento de información
Hemos desarrollado diferentes escenarios de conducción con Unity para que recojan la
variedad de entornos en los que un conductor debe saber reaccionar adecuadamente como,
7 - 29
por ejemplo, escenarios urbanos, carreteras interurbanas de un carril por sentido y autovías.
Dentro de esos diferentes escenarios se han incluido situaciones de tráfico de interés para
analizar el nivel de formación y seguridad del conductor. Como periférico de entrada para las
simulaciones se ha utilizado el dispositivo Logitech G27, el cual está formado por volante
(con levas incluidas), pedales de embrague, freno y acelerador y palanca de cambio de
marchas. Además, se han utilizado los botones que incorpora el volante para encender las
luces cortas y largas y para girar el campo de visión a la derecha, izquierda y hacia arriba.
Hemos utilizado el plugin Road & Traffic System del Asset Store para incluir tráfico realista
en los escenarios. Road & Traffic System permite crear y simular redes de tráfico dinámicas
con carreteras de uno, dos y tres carriles por sentido, intersecciones en T y reguladas
mediante semáforos y glorietas. Hemos modificado el plugin para que los vehículos detecten
a los peatones que se encuentren delante y paren ante ellos. Además, se ha incluido la
posibilidad de que algunos vehículos (con probabilidad configurable) se comporten de
manera inesperada ante situaciones de tráfico como, por ejemplo, no parando en un
semáforo en rojo. Para incluir ciclistas en los escenarios, hemos utilizado el asset Bicycle
animations que incorpora un amplia gama de animaciones de ciclista.
Hemos creado un sistema de peatones consistente en un controlador para crear y mover los
peatones de forma aleatoria por los escenarios. Los peatones se detienen ante los vehículos
y aumentan su velocidad cuando cruzan una carretera fuera de un paso de peatones. Para
ello, se ha utilizado el sistema de navegación de Unity (Unity, 2016b). Este sistema permite
ejecutar cálculo de caminos entre dos puntos mediante algoritmos de búsqueda A*. Estos
algoritmos buscan el camino más corto entre dos puntos sujeto a unas condiciones, que son
los pesos de las diferentes áreas de los escenarios. En nuestros escenarios hay 3 tipos de
áreas: aceras, calzadas y áreas no transitables por los peatones. Las aceras tienen un peso
de valor 1 y son las áreas por las que los peatones se moverán con una probabilidad más
alta. Las calzadas tienen un peso de valor 4 y podrán ser pisadas por los peatones aunque
con una probabilidad menor. Los pasos de peatones son zonas especiales de las calzadas
en las que el peso es de 1, similar al de las aceras. En la figura 1 se muestra una sección de
escenario con las áreas de acera y calzada con diferente color y un paso de peatones en el
área de calzada.
8 - 29
Figura 1. Sección de escenario con áreas de acera, calzada y un paso de peatones.
Para implementar los peatones, se ha utilizado el componente NavMeshAgent, que
proporciona una serie de funcionalidades como asignar puntos de origen, puntos de destino
y velocidad y el propio componente se encarga de calcular la ruta a seguir por los peatones.
El modelo tridimensional de un ser humano, que debe tener asignados huesos y
articulaciones que permitan crear una animación, pertenece a un paquete gratuito de
Mixamo. Además, hemos usado el controlador de animaciones y el script de Third Person
Controller de los Standard Assets para mover y animar a los peatones. Para gestionar las
animaciones, se ha utilizado el sistema Mecanim de Unity con el que se representan las
animaciones como transiciones entre estados. El controlador de animaciones de los
Standard Assets utiliza 3 estados genéricos: de pie, agachado y en el aire. Se puede pasar
de cada uno de los estados a otro siguiendo las líneas de transición. Estas transiciones se
realizan a nivel de código mediante variables. Una vez creado el peatón, se debe instanciar
y asignar dentro de una escena, para lo que hemos creado la clase PedestianController, que
va a encargarse de crear los peatones al inicio de cada simulación. Esta clase recupera los
puntos de inicio y de destino establecidos en cada escenario. Los peatones se crean
aleatoriamente en diferentes puntos de inicio establecidos y se les asigna, también
aleatoriamente, un punto de destino diferente a cada uno. Durante la simulación, la clase
MyPedestrian se encarga de crear un nuevo punto de destino para cada peatón una vez
este ha llegado al actual. En la figura 2 se muestra el diagrama de flujo de un peatón.
9 - 29
Figura 2. Diagrama de flujo del comportamiento de un peatón.
En cada simulación se almacena información detallada de la conducción. La clase
DataController se encarga de la recuperación de datos de forma regular. Esta clase contiene
otra clase interna llamada DatoInstantaneo, que almacena la información relativa a un
instante dado, con la posición 3D, la velocidad, las rpm, la marcha, el consumo instantáneo
y el consumo total. Mediante el método InvokeRepeating se lanza el método
AddNewDatoInstantaneo en cada instante de tiempo, que va creando una nueva instancia
10 - 29
de la clase DatoInstantaneo y la va almacenando en un listado de objetos DatoInstantaneo.
Es posible establecer el primer instante de recuperación de datos y su frecuencia de
recuperación.
3.2.3. Sistema de infracciones
Para desarrollar el sistema de control de infracciones, hemos creado un controlador para
gestionar las infracciones y almacenarlas de la misma forma en que se almacenan los datos
del vehículo durante cada simulación. De forma genérica, se puede definir este controlador
como el sistema que especifica las infracciones posibles (mediante un tipo enumerado) y
que permite a otras clases añadir infracciones mediante el método AddNewInfraccion. Las
infracciones gestionadas por el controlador son: atropello a un peatón o a un ciclista, colisión
con un vehículo, invadir la acera, exceso de velocidad, salida incorrecta de glorieta,
recorrido incorrecto por glorieta, glorieta realizada en sentido inverso, recorrido incorrecto en
intersección, señal de stop realizada incorrectamente, señal de ceda el paso realizada
incorrectamente, semáforo cruzado en rojo, colisión con un objeto fijo, pisar línea continua,
no usar luces cortas en el interior de un túnel, no usar luces cortas de noche, giro incorrecto
en intersección, distancia de seguridad no respetada, intermitente no utilizado en una
intersección o al salir de una rotonda, adelantamiento realizado sin usar intermitentes y
velocidad por debajo de la mínima.
La mayoría de estas infracciones están consideradas como tal en el manual del conductor
de la DGT (DGT, 2016b) y se han llevado a cabo de la manera más fiel posible en el
simulador. Algunas infracciones solo se pueden producir con uno de los 2 posibles modos
de hacer las simulaciones, el modo con indicaciones (modo de conducción guiado), que se
muestran en las intersecciones y glorietas y que el conductor debe seguir en su recorrido.
Estas indicaciones podrían ser similares a las direcciones mencionadas por un examinador
en una prueba práctica para la obtención del permiso de conducción. El otro modo de hacer
las simulaciones es el modo libre sin indicaciones en el que el conductor puede tomar
cualquier salida en las intersecciones que se vaya encontrando durante el recorrido.
Como funcionalidad extra, es posible seleccionar, antes del comienzo de cada simulación, si
se desea que se vaya mostrando, cada vez que el conductor comete una infracción y en el
momento en que se comete, información textual sobre ella de forma que pueda ver qué ha
hecho mal.
A continuación se muestran varias capturas de pantalla del simulador de conducción en las
que aparecen diferentes situaciones de interés antes las que evaluar el comportamiento del
11 - 29
conductor. En la figura 3 se muestra cómo un peatón cruza la carretera delante del
conductor. Además, en la figura 3 se muestran diferentes datos del vehículo en tiempo real
que el conductor puede observar durante las simulaciones. En la esquina superior izquierda
y en la parte inferior central aparece la velocidad del vehículo. Las rpm del motor y la
marcha actual están en la esquina superior derecha. En la esquina inferior derecha aparece
un mapa de localización con una sección del escenario en torno a la posición actual del
vehículo.
Figura 3. Escena de simulación con un peatón cruzando la carretera.
Las figuras 4 y 5 muestran un ciclista y un grupo de ciclistas, respectivamente, ante los que
el conductor debe reaccionar adecuadamente respetando la separación lateral mínima en su
adelantamiento. Finalmente, en la figura 6 se muestra un vehículo detenido en la calzada
debido a un desprendimiento.
En las próximas subsecciones, se presenta cómo se han implementado en Unity varias de
las infracciones consideradas.
12 - 29
Figura 4. Escena de simulación con un ciclista delante del conductor.
Figura 5. Escena de simulación con un grupo de ciclistas delante del conductor.
Figura 6. Escena de simulación con un vehículo parado en la calzada por un
desprendimiento.
13 - 29
3.2.3.1. Infracción de una indicación en el modo de conducción guiado
Se han desarrollado dos infracciones relativas a las indicaciones en el modo de conducción
guiado: una para intersecciones (en T y de cuatro carriles) y otra para las glorietas. Estas
infracciones utilizan triggers, que son regiones incluidas en el escenario no visibles en la
ejecución y sobre las que podemos controlar cuándo el vehículo del conductor entra,
permanece o sale de ellas para que se ejecute el script correspondiente. En la figura 7 se
muestran los triggers (rectangulares verdes) colocados antes de la glorieta para controlar
por dónde entra y sale el vehículo del conductor en la glorieta y los triggers azules colocados
sobre la glorieta para controlar cuándo hay que indicar al conductor que la siguiente salida
es la que debe tomar. La infracción se lanza cuando el vehículo no sale por la salida
indicada, de la que se informa tanto antes de entrar en una intersección o glorieta con una
imagen en la parte superior central (como se muestra en la figura 8) como cuando, ya en
una glorieta, la siguiente salida es la que se debe tomar.
Figura 7. Glorieta.
Cuando un vehículo entra en uno de los triggers colocados antes de una intersección o
glorieta, se selecciona la salida a tomar y se activa la imagen que representa esa salida,
como se muestra en la figura 8 en la parte superior central. La infracción se lanza cuando el
vehículo no sale por la salida marcada en la imagen.
14 - 29
Figura 8. Indicación antes de una intersección en el modo de conducción guiado.
3.2.3.2. Intermitente no utilizado al realizar una intersección o glorieta
Aparte de las infracciones relacionadas con las indicaciones, se ha establecido una
infracción relativa a no utilizar los intermitentes al realizar una intersección o una glorieta. La
norma de circulación indica que se debe utilizar el intermitente de la dirección adecuada
cuando se gira en una intersección o se toma una salida de una glorieta. Esta
implementación requería de una clase que permitiera controlar los intermitentes de nuestro
vehículo. Dicha funcionalidad ha sido implementada mediante la clase BlinkingCarControl.
Esta clase permite activar los intermitentes mediante botones de entrada del dispositivo
periférico usado (Logitech G27), como también leer el estado de los mismos. De esta forma,
es sencillo implementar una funcionalidad en nuestras clases para controlar la salida de las
glorietas y que comprueben si el intermitente derecho está activo al salir de ellas.
En las intersecciones el modo de proceder ha sido diferente porque el intermitente a
presionar depende de la salida tomada. Por ello, se mantiene un control durante la
realización de la intersección que detecta si se ha pulsado alguno de los intermitentes.
Cuando se sale de la intersección se tiene un método que devuelve si la salida tomada
respecto a la entrada es la derecha o la izquierda y mediante esto se comprueba si se ha
girado a izquierda a derecha y si se ha activado el intermitente correspondiente.
3.2.3.3. Infracciones en una glorieta
Se han establecido dos infracciones relacionadas exclusivamente con las glorietas, que
cada vez están más presentes en la red viaria.
15 - 29
La primera consiste en comprobar que se ha realizado la salida correctamente. Para ello, se
comprueba a posteriori si el conductor se posicionó en el carril externo antes de tomar la
salida. Esto se realiza mediante una serie de triggers verdes que se distribuyen a lo largo de
la glorieta, como se observa en la figura 9.
Figura 9. Triggers de reconocimiento de recorrido en una glorieta.
Cuando el conductor pasa por estos triggers, se marcan parámetros a true de forma que se
puede comprobar a posteriori el recorrido del vehículo por la glorieta. Esto es más complejo
que solo comprobar si el vehículo se posicionó en el carril exterior. De hecho, permitiría
comprobar si el conductor realizó un recorrido en concreto dentro de la glorieta. Esta
infracción nos permite establecer cuándo un conductor ha realizado una glorieta de forma
incorrecta.
Para computar la segunda infracción se comprueba si se intenta realizar la glorieta en
sentido contrario. La norma indica que las glorietas deben hacerse siempre en sentido
antihorario y tomarla en sentido horario no solo es una infracción muy grave sino también
muy peligrosa. Para gestionar esta infracción se coloca otro bloque de triggers.
3.2.3.4. Infracción de una señal de stop
Para cumplir una señal de stop correctamente, hay que detener el vehículo por completo
antes de la intersección señalizada. Tras ello, solo se puede invadir la intersección cuando
no haya vehículos en la misma. Para gestionar esta infracción se requiere de un bloque de
dos triggers (figura 10) y de dos scripts: StopTrafficControl y StopIntersectionDetection.
16 - 29
Figura 10. Sección con una señal de stop.
Cuando un vehículo entra en el trigger más pequeño (la zona de parada), el script
StopTrafficControl comprueba si el vehículo se detiene por completo o no y lo almacena
como una variable. Cuando el vehículo abandona la zona de parada se activa el trigger de la
intersección y se comprueba si existe algún vehículo en la intersección que no sea el del
conductor. Si alguna de estas dos comprobaciones devuelve true, se considera que el
conductor ha incumplido la señal de stop y se añade una nueva infracción.
3.2.3.5. Infracción de una señal de ceda el paso
Las infracciones de ceda el paso son algo más complejas que las de stop, aunque siguen
una lógica similar. Para computarlas, también se utilizan dos triggers aunque, en este caso,
no basta con comprobar que existan vehículos en la intersección sino también qué recorrido
realizaron los mismos. Las normas de circulación definen el ceda el paso como una señal de
tránsito que se utiliza en intersecciones o zonas de conflicto en la infraestructura de
transporte que indica al conductor, en caso de que no le sea posible cruzar o incorporarse
de forma segura sin interferir en la circulación del resto de vehículos, la obligación de ceder
el paso. Esto conlleva que si, por ejemplo, se da la situación de la figura 11, el vehículo rojo
debe ceder el paso al vehículo azul que viene por su izquierda. Pero, si el vehículo azul
señaliza un giro a su derecha como el mostrado en el caso de la figura 11, entonces el
vehículo rojo podría invadir la intersección y realizar un giro a la izquierda porque no
interferiría en la maniobra del vehículo azul.
17 - 29
Figura 11. Ejemplo de intersección con señal ceda el paso realizada correctamente.
La necesidad de contemplar esta situación, conllevaba realizar la comprobación a posteriori.
El bloque usado para controlar el comportamiento ante una señal de ceda el paso es muy
similar al de la señal de stop y se muestra en la figura 12.
Figura 12. Sección con una señal de ceda el paso.
La idea consiste en que cuando el conductor entra en el trigger pequeño, se activa el trigger
más grande que actúa como detector para almacenar la información de todos los vehículos
que están en ese momento en la intersección. Para realizar la comprobación a posteriori, se
lanza un método tras haber realizado el vehículo del conductor la intersección, para evaluar,
por cada vehículo presente en la intersección, si el del conductor ha interferido en su
18 - 29
trayectoria. Para ello, se comprueba la relación entrada-salida de cada vehículo y se
compara con la relación entrada-salida del vehículo del conductor. Todas estas operaciones
se realizan mediante una corrutina, que es un método que permiten realizar su funcionalidad
en distintos ciclos. En concreto, mediante la palabra reservada yield una corrutina devuelve
el control a Unity, manteniendo su contexto actual. Esto permite, por ejemplo, realizar una
comprobación sobre un enorme número de objetos que se recorren mediante un bucle en
distintos frames, distribuyendo la carga computacional de la aplicación de forma más
eficiente sin afectar a la funcionalidad.
3.2.3.6. Colisión con un vehículo o con un objeto fijo
Estas infracciones se contemplan en la clase que implementa el funcionamiento general del
vehículo del conductor y utilizan el método OnCollisionEnter, que es un método lanzado por
el motor de Unity cuando se detecta una colisión entre dos objetos. El sistema es tan
sencillo como comprobar si el objeto que colisiona con el vehículo del conductor es otro
vehículo, comparando su tag (etiqueta) con la de los vehículos del plugin Road & Traffic
System, o es un objeto (edificios, bancos, farolas, etc.), comprobando que la capa a la que
pertenece el GameObject es Buildings o SmallObject.
3.2.3.7. Exceso de velocidad y velocidad por debajo de la mínima
La clase VelocityControl se encarga de gestionar la infracción de exceso de velocidad. Esta
clase controla la velocidad a la que circula el vehículo del conductor y la compara con unas
velocidades máxima y mínima establecidas en la misma clase. Estas velocidades máxima y
mínima se modifican mediante un trigger colocado junto a cada señal de limitación de
velocidad, como se puede ver en la figura 13. La infracción de velocidad mínima solo se
considera en carreteras interurbanas.
19 - 29
Figura 13. Sección con una señal de limitación de velocidad.
3.2.3.8. Infracción por la no utilización de las luces durante la noche o en un túnel
Esta infracción controla que se hayan encendido las luces en las simulaciones nocturnas.
Básicamente, lanza un método mediante InvokeRepeating que realiza la comprobación de
que el vehículo del conductor lleva las luces encendidas.
En el caso de las luces para un túnel, la norma indica que siempre deben encenderse las
luces cortas cuando se entra en uno. Para gestionarlo, la clase TunnelContext es la
encargada de almacenar una variable que se pone a true si, durante el tiempo que el
vehículo está en el túnel, se activan las luces. Si al salir del túnel esta variable no está a
true, se inserta una infracción.
3.2.3.9. Infracción de la distancia de seguridad
En los escenarios interurbanos, se ha establecido una infracción que determina si el
conductor está respetando la distancia de seguridad con el vehículo que tiene delante. El
diagrama que representa el flujo del script CarDistanceDetector, que es el encargado de
realizar esta comprobación, se muestra en la figura 14.
20 - 29
Figura 14. Diagrama de flujo del script de control de distancia de seguridad.
Este script solo está funcional en las carreteras interurbanas y va comprobando a intervalos
regulares si existen vehículos por delante del conductor dentro de la distancia de seguridad.
Esta distancia se ha establecido como el producto del tiempo de dos segundos por la
velocidad de nuestro vehículo y se utiliza como el radio de una esfera de detección que
devuelve todos los objetos dentro de ella. Con esa esfera se hace un cómputo para
descartar aquellos vehículos que no podemos ver (por ejemplo, si están detrás de un
21 - 29
edificio), los que están fuera del ángulo frontal de visión y los que vienen en sentido
contrario. Si un vehículo no es eliminado tras estas comprobaciones es porque está delante
del vehículo del conductor y dentro de la distancia de seguridad, que no se está respetando,
por lo que debe guardarse la infracción correspondiente.
3.3. Resultados experimentales
A continuación se van a mostrar algunos resultados obtenidos con el simulador por
diferentes conductores. A todos los conductores que han realizado alguna simulación se les
han pedido los siguientes datos: edad, años con el permiso de conducción, kilometraje
medio anual y si son jugadores de videojuegos. De este modo, se puede analizar la
influencia de estos factores en los datos obtenidos en las simulaciones. En la figura 15 se
muestran los datos de todos los conductores que han realizado alguna simulación.
Figura 15. Usuarios del simulador.
Vamos a mostrar los datos obtenidos por los distintos conductores en un escenario diurno
realizado de modo guiado similarmente por todos ellos (escenario 1), en el que el recorrido
es inicialmente por una zona urbana para finalizar en una carretera interurbana de un carril
por sentido con varios tramos sinuosos.
En la figura 16 se aprecia un gráfico de barras que muestra el consumo medio en litros a los
100 km. de los usuarios que han realizado al menos una simulación en ese escenario. Se
observa que todos los usuarios mantienen un consumo medio entre los 7,5 litros y los 10
22 - 29
litros a los 100 km. Solo el usuario con ID 26 baja su consumo por debajo de los 7,5 litros,
siendo de 7,44. Esto podría relacionarse con el hecho de que su kilometraje medio anual (de
30000 km.) sea mayor que el de otros usuarios, aunque por otro lado el usuario con ID 14 es
el que realiza más kilómetros anuales (50000 km.) y, sin embargo, su consumo medio es el
más alto de entre todos los usuarios en el escenario.
Figura 16. Consumo medio por simulación en litros/100 km para el escenario 1.
Vamos a ver ahora la velocidad media para este mismo escenario de los distintos usuarios,
que se muestra en la figura 17. En este caso, el usuario con ID 26 es uno de los que más
rápido ha circulado junto al usuario con ID 14. El resto de usuarios han estado por debajo de
los 35 km/h, por lo que cabe deducir que los dos usuarios mencionados probablemente han
excedido la velocidad durante la simulación, ya sea de forma continuada (estando durante
algunos periodos continuos por encima de la velocidad máxima) o en varios tramos cortos
diferentes.
Figura 17. Velocidad media por simulación en km/h para el escenario 1.
En la figura 18 se muestran las rpm medias de los usuarios que han realizado alguna
simulación en el escenario 1.
23 - 29
Figura 18. Revoluciones por minuto medias por simulación para el escenario 1.
En la figura 19 se puede observar una gráfica que compara el consumo medio de los
usuarios con un kilometraje medio anual de entre 0 y 15000 km. frente a los usuarios con
uno superior a 15000 km. Los usuarios con un kilometraje anual mayor presentan un
consumo medio menor (8,51 frente a 9,06 litros a los 100 km.).
Figura 19. Consumo medio en litros/100 km entre el grupo de usuarios de 0-15000 km.
anuales frente al grupo de usuarios de más de 15000 km. anuales para el escenario 1.
Ahora vamos a comprobar si los años con el permiso de conducción afectan de la misma
manera en el consumo o no. En la figura 20 podemos ver una comparación del consumo
medio entre los usuarios que obtuvieron el permiso de conducción hace menos de 10 años y
el resto de usuarios. Los datos obtenidos son 8,86 litros a los 100 km. para los usuarios con
menos de 10 años de permiso de conducción frente a los 8,91 litros a los 100 km. del resto
de usuarios. Teniendo en cuenta estos datos, los años de permiso de conducción no son un
dato que influya en la conducción eficiente del vehículo, algo lógico si estos años no van
acompañados por la regularidad en el uso de un vehículo a lo largo del tiempo desde la
obtención del permiso.
24 - 29
Figura 20. Consumo medio de los usuarios con menos de 10 años con el permiso de
conducción frente al resto de usuarios para el escenario 1.
En la figura 21 se muestra una comparación del consumo medio de los usuarios con menos
de 26 años frente a los de 26 o más años. En las figuras 22 y 23 se comparan la velocidad
media y las rpm medias de los mismos grupos de usuarios mostrados en la figura 21.
Figura 21. Consumo medio de los usuarios con menos de 26 años frente a los
usuarios de 26 o más años para el escenario 1.
Figura 22. Velocidad media de los usuarios con menos de 26 años frente a los usuarios de
26 o más años para el escenario 1.
25 - 29
Figura 23. Revoluciones por minuto medias de los usuarios con menos de 26 años frente a
los usuarios de 26 o más años para el escenario 1.
Ahora se van a presentar algunos datos obtenidos relativos a las infracciones, también para
el escenario 1. Vamos a realizar una comparación entre varias infracciones cometidas por el
usuario con ID 27 (de 26 años, 8 años de experiencia como conductor, 1000 kilómetros al
año y jugador de videojuegos) frente a otros grupos de usuarios. Las comparaciones están
realizadas sobre el resto de usuarios y otros grupos sin contar al usuario con ID 27 en
ninguno de esos grupos. Los datos de la figura 24 muestran que el resto de usuarios comete
la infracción del tipo “Intermitente no utilizado al tomar una intersección o salir de una
rotonda” de media 1,6 veces por simulación. Mientras tanto, el usuario con ID 27 la comete
de media una vez por simulación. El resto de usuarios con edades inferiores a 30 años y el
resto de usuarios con menos de 10 años con el permiso de conducción cometen esta
infracción de media una vez por simulación, como el usuario con ID 27.
Figura 24. Comparación del número medio de infracciones del tipo “Intermitente no utilizado
en una intersección o al salir de una rotonda” cometidas por simulación por el usuario con ID
27 frente al resto de usuarios y a otros grupos de usuarios para el escenario 1.
26 - 29
Finalmente, vamos a mostrar la comparación de otras tres infracciones del usuario con ID 27
frente a otros grupos de usuarios en las figuras 25, 26 y 27. El usuario con ID 27 ha
cometido más infracciones del tipo “Recorrido incorrecto en una intersección” que el resto de
usuarios aunque, por otro lado, ha cometido menos de la mitad de infracciones del tipo
“Semáforo cruzado en rojo” que el resto de usuarios y no ha cometido ninguna vez la
infracción “Recorrido incorrecto por glorieta”, a diferencia del resto de usuarios. Mientras que
la experiencia en videojuegos no arroja diferencias significativas en las infracciones del tipo
“Semáforo cruzado en rojo” y “Recorrido incorrecto en una intersección”, sí las arroja en las
infracciones del tipo “Intermitente no utilizado al tomar una intersección o salir de una
rotonda” y “Recorrido incorrecto por glorieta”. Los usuarios con hasta 10 años de experiencia
como conductores, es el grupo de los representados en las gráficas que más infracciones
del tipo “Recorrido cruzado en rojo” ha cometido, mientras que es el que menos infracciones
del tipo “Recorrido incorrecto por glorieta” ha cometido.
Figura 25. Comparación del número medio de infracciones del tipo “Semáforo cruzado en
rojo” cometidas por simulación por el usuario con ID 27 frente al resto de usuarios y otros
grupos para el escenario 1.
27 - 29
Figura 26. Comparación del número medio de infracciones del tipo “Recorrido incorrecto en
una intersección” cometidas por simulación por el usuario con ID 27 frente al resto de
usuarios y otros grupos para el escenario 1.
Figura 27. Comparación del número medio de infracciones del tipo “Recorrido incorrecto por
glorieta” cometidas por simulación por el usuario con ID 27 frente al resto de usuarios y otros
grupos para el escenario 1.
3.4. Agradecimientos
Este trabajo ha sido subvencionado por la Dirección General de Tráfico (perteneciente al
Ministerio del Interior de España) con el proyecto de investigación SPIP2015-01801.
4. CONCLUSIONES
En este trabajo hemos presentado un simulador de conducción 3D inmersivo desarrollado
con el motor de videojuegos Unity que posibilita la formación y reeducación de conductores
mediante la inclusión de escenarios variados y situaciones antes las que la seguridad puede
quedar comprometida dependiendo del comportamiento del conductor. Los continuos
avances tecnológicos hacen posible que se puedan desarrollar simuladores como el
28 - 29
presentado con un bajo coste y con escenarios y situaciones realistas imposibles de obtener
en un entorno de conducción real sin peligro, como son las que incluyen reacciones
inesperadas de usuarios vulnerables como peatones y ciclistas. El simulador de conducción
es ampliable con nuevos escenarios y situaciones y se le podrían incorporar dispositivos de
visualización como el casco de realidad virtual Oculus Rift para lograr una experiencia más
realista e inmersiva acercando el campo de visión del conductor al presente en una
conducción real.
El simulador permite realizar análisis y estudios comparativos de los datos obtenidos en las
simulaciones para asociar los diferentes conductores y tipos de conducción con su nivel de
seguridad y eficiencia en la conducción, así como evaluar la evolución en la formación de los
conductores a medida que van utilizando el simulador. Los simuladores de conducción para
la formación y reeducación de conductores son una herramienta de gran potencial cuyo uso
se generalizará en el futuro y que deben ayudar a alcanzar los objetivos deseados en cuanto
a la reducción de siniestralidad en las carreteras.
BIBLIOGRAFÍA
Bham, G. H. et al. (2010) Younger drivers evaluation of vehicle mounted attenuator markings
in work zones using a driving simulator. Transportation Letters: the International Journal of
Transportation Research 3: 187–198.
DGT. (2016a) Nota de prensa. Balance de seguridad vial 2015.
http://www.dgt.es/Galerias/prensa/2016/01/mir_BALANCE-2015_seguridad-vial_nota.pdf.
Última visita, Julio 2016.
DGT. (2016b) Manual del conductor.
http://www.seguridadpublica.es/Autoescuela/manual1.html. Última visita, Julio 2016.
DriveSim. (2016) http://drivesimsimulator.com/. Última visita, Julio 2016.
iRacing. (2016) http://www.iracing.com/. Última visita, Julio 2016.
Jamson, J.L. et al. (2015) Drivers’ ability to learn eco-driving skills; effects on fuel efficient
and safe driving behaviour. Transportation Research Part C: Emerging Technologies 58:
657-668.
29 - 29
Mercedes-Benz. (2016) The Mercedes-Benz Driving Simulation Center.
https://www.mercedes-benz.com/en/mercedes-benz/innovation/the-mercedes-benz-driving-
simulation-center/. Última visita, Julio 2016.
Sullman, M.J.M., et al. (2015) Eco-driving training of professional bus drivers – Does it work?
Transportation Research Part C: Emerging Technologies 58: 749-759.
Unity. (2016a) https://unity3d.com/es. Última visita, Julio 2016.
Unity. (2016b) Manual de Unity. https://docs.unity3d.com/Manual/Navigation.html. Última
visita, Julio 2016.