<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Coordination of Autonomous Vehicles at Intersections with Decentralized V2V Communication</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Maite González Mendoza</string-name>
          <email>maite@niclabs.cl</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Benjamín Holloway</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alejandro Hevia</string-name>
          <email>ahevia@niclabs.cl</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sandra Céspedes</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Javier Bustos</string-name>
          <email>jbustos@niclabs.cl</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Departamento de Ciencias de la Computación</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Departamento de Ingeniería Eléctrica</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>NIC Chile Research Labs</institution>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Universidad de Chile</institution>
        </aff>
      </contrib-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Resumen</title>
      <p>In order to minimize the accidents,
autonomous vehicles are being designed as the
future of transportation. To fulfill this goal, we
should look at vehicular intersections, where
unfortunately most car accidents take place.
In “Automation of a T-intersection using
virtual platoons of cooperative autonomous
vehicles”, the algorithm called “Target Vehicle
Assignment(TVA)” was proposed to resolve the
problem of deciding an order in which
vehicles cross in a 4-way intersection. This article
reviews this algorithm and uses it as starting
point to propose novel algorithms that fix
issues detected in the original algorithm. The
newly proposed algorithms are designed to be
used with Vehicle To Vehicle (V2V)
communications and are descentralized to avoid
dependency of specific hardware in any intersection.
Keywords: Autonomous vehicles,
autonomous intersection management, vehicular
intersection control algorithms.</p>
      <p>
        Cuando se tiene una intersección y existen varios
vehículos que quieren cruzar, se debe coordinar de
forma que los vehículos que crucen la intersección al
mismo tiempo no crucen sus trayectorias. Hoy en día
comúnmente se utilizan señaléticas o semáforos para
realizar esta coordinación, pero en el futuro próximo
se espera que los automóviles se comuniquen entre sí,
para establecer una coordinación mediante algoritmos
como los presentados en [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ].En el caso en que los
vehículos cruzan sus trayectorias, se debe encontrar un
Copyright © by the paper’s authors. Copying permitted for
private and academic purposes.
orden donde primero cruza uno y luego el otro. En este
documento analizaremos el algoritmo propuesto en [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
y se proponen otros algoritmos para mejorar ciertos
aspectos.
      </p>
      <p>Si los vehículos se pueden comunicar dentro de los
márgenes de una zona de cooperación (CZ del inglés
Cooperation Zone) entonces se pueden definir
algoritmos de coordinación que tomen información de los
vehículos (como posición, velocidad, vehículos
existentes en la CZ, etc), y definir cierto orden que asegure
una intersección libre de colisiones.</p>
    </sec>
    <sec id="sec-2">
      <title>Algoritmos Básicos 2.</title>
      <p>2.1.</p>
      <p>
        Algoritmo con Caravanas Virtuales (CV)
El primer algoritmo a analizar es el algoritmo de
Asignación de vehículo objetivo (Target Vehicle
Assignment) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. En este algoritmo, para decidir el orden
de cruce de una intersección, a cada vehículo nuevo vi
que ingresa a la CZ le asigna un vehículo objetivo a
seguir, utilizando información de vi tal como su carril de
entrada y su intención (virar a la derecha o izquierda,
o seguir derecho), generando así pelotones virtuales.
El proceso está descrito en pseudocódigo en el
Algoritmo 1.
      </p>
      <p>Data: v: Vehículo nuevo, L: Lista de vehículos viejos.
Result: id: Identificador del vehículo a seguir.
ordenaP orT poIngreso(L);//más nuevo al más viejo
for v′ L do
if cruzanCaminos(v; v′) then</p>
      <p>
        return id(v′)
end
end
Algoritmo 1: Algoritmo TVA con caravanas [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
Para ilustrar el funcionamiento de este algoritmo,
consideremos el escenario del cuadro 1, en una
intersección en cruz con una vía en cada sentido. Los vehículos
V1 al V5 ingresan y se procesan en el orden que aparece
en la tabla. La flecha muestra de manera gráfica el
origen y destino del vehículo. En la columna “Vehículos”
se ven los vehículos que están en la intersección al
momento de ingresar a la CZ, y en la columna “Objetivo”
se indica el vehículo que asignado según el Algoritmo
1. La Figura 1 muestra la caravana obtenida en este
ejemplo. Aquí se aprecia que los vehículos V3 y V5 se
encuentran caravanas distintas y en el mismo nivel,
por lo que según el algoritmo descrito deberían poder
pasar al mismo tiempo. Sin embargo, en el caso del
ejemplo, estos cruzan trayectorias lo que conllevaría a
una colisión.
      </p>
      <p>En el trabajo donde se propone este algoritmo, se
utilizan técnicas de collission avoidance para evitar
estas colisiones. Sin embargo, en nuestra opinión, una
mejor estrategia es diseñar métodos de asignación de
cruce que eviten esto desde el inicio.
2.2.</p>
      <p>Algoritmo con CV Mejorado</p>
      <p>En vista del que el algoritmo anterior provoca
colisiones, una posible mejora consiste en ordenar los
vehículos de manera distinta, como se muestra en el
algoritmo 2. Comparado con el algoritmo 1, aquí se
agrega el factor de orden por profundidad en la
caravana.</p>
      <p>Data: v: Vehículo nuevo, L: Lista de vehículos viejos
en la intersección
Result: id: Identificador del vehículo a seguir
ordenaP orT poIngreso(L);//más nuevo al más viejo
ordP orP rof EnCarav(L);//de + a profundidad
for v′ L do
if cruzanCaminos(v; v′) then</p>
      <p>return id(v′)
end
end</p>
      <p>
        Algoritmo 2: Algoritmo TVA [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] Mejorado
      </p>
      <p>Con esa mejora, para el ejemplo anterior se obtiene
una simulación como la que se ve en el cuadro 2. La
única diferencia está en que V5 debe seguir ahora el
vehículo V3, puesto que al calcular el nuevo orden, es
el primer vehículo con el cual choca V5. Con esto la
caravana queda como se ve en la Figura 2, evitando así
la colisión que se presentó con el algoritmo anterior.
Id
V1
V2
V3
V4
V5
s 300
e
n
io200
s
i
l
oC100
0</p>
      <p>V4</p>
      <p>V2
V1</p>
      <p>V3</p>
      <p>V5</p>
      <p>Figura 2: Caravana formada con la primera mejora
3.</p>
    </sec>
    <sec id="sec-3">
      <title>Efectos de la mejora</title>
      <p>Los resultados que se ven en la Figura 3 dejan ver
que la primera mejora disminuyó considerablemente la
cantidad de colisiones, sobre todo cuando se
aumenta la distancia mínima que tiene que haber entre los
vehículos. Sin embargo, las colisiones no fueron
eliminadas por completo.</p>
      <sec id="sec-3-1">
        <title>Alg. Original</title>
        <p>Alg. Mejora No1
5</p>
        <p>7 9
Distancia entre vehículos
11</p>
        <p>Figura 3: Cantidad de colisiones variando distancia
4.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Nuevos Algoritmos</title>
      <p>Dado que la mejora propuesta no soluciona el
problema de colisiones, se proponen nuevos algoritmos que
ahora toman en cuenta otros factores, tales como la
velocidad del vehículo que ingresa, su posición, su
distancia hasta la intersección y su tiempo dentro de la
intersección.</p>
      <p>Cabe destacar que si tenemos los vehículos de la
Figura 4, podemos saber que V1 cruza trayectoria con
V2 y V3, pero que entre ellos no cruzan trayectorias.
Sin embargo, no podemos decir nada con respecto a la
relación de cruce que existe entre V2 y V4 ó V1 y V4, ya
que las relaciones descritas por “chocar” o “no chocar”
no son transitivas.</p>
      <p>V1</p>
      <p>V3
V2</p>
      <p>V4</p>
      <sec id="sec-4-1">
        <title>Figura 4: Ejemplo de caravana</title>
        <p>Propuesta 1: Caravanas FIFO sin colisión
Este algoritmo se basa en el anterior, pero además
revisa si hay colisiones en las N potenciales
caravanas. La descripción del algoritmo 3 asume que
existe un árbol que guarda la información de las
caravanas (vehículos ya asignados, jerarquía de seguimiento
y tiempo de cruce asignado de cada vehículo).</p>
        <p>Data: v: Vehículo nuevo, AC: Árbol de caravanas
Result: vf : vehículo a seguir
vehsQueCruza ; for Carav AC do
for v′ Carav do
if cruzanCaminos(v; v′) then</p>
        <p>vehsQueCruza:append(v′); break;
end
end
end
vf vehM axT poDeCruce(vehsQueCruza);
v:tpoCruce calcT poCruce(v); return vf</p>
        <p>Algoritmo 3: Algoritmo de caravanas FIFO</p>
        <p>Si bien no lo hemos demostrado formalmente,
conjeturamos que este algoritmo está libre de colisiones.
Un potencial problema es su eficiencia en el peor caso:
cuando el vehículo que ingresa no cruza trayectoria con
ningún otro, se debe comparar con todos los vehículos
en la CZ. Dado que esto ya ocurre en el caso anterior
(cuando hay sólo una caravana y no cruza trayectoria
con ningún otro vehículo) su impacto es menor. Por
otro lado, este algoritmo es conservador y asegura un
orden FIFO, lo cual no siempre es óptimo.
Concretamente, obliga a vehículos a siempre esperar a que el
que entró primero salga primero, aun cuando podrían
haber cruzado sin riesgo a colisión.
4.2.</p>
        <p>Propuesta 2: Bloques de Tiempo</p>
        <p>A fin de optimizar el algoritmo anterior en relación
al tiempo de espera de los vehículos, permitimos a los
vehículos ingresar en un orden no FIFO y así
optimizar los tiempos de cruce y de espera. Se definen dos
propiedades de los vehículos: origen y dirección. El
primero es el lugar de donde viene el vehículo: Norte, Sur,
Este u Oeste. La dirección que corresponde a la
intención:“seguir derecho”, “doblar a la derecha”, “doblar
a la izquierda” o “todos”1. Esto entrega 16
combinaciones distintas. La estructura de datos para este
algoritmo consiste en 16 arreglos de tipo bool, uno para
cada combinación. Cada arreglo asociado a una tupla
&lt;origen, dirección&gt; representa el tiempo dividido en
bloques, y el bloque k ésimo es verdadero si existe un
vehículo que intenta cruzar la intersección en el
tiempo k con el origen y destino indicados. El Algoritmo 4
define esta propuesta.</p>
        <p>1La dirección “todos” se reserva para los casos donde hay
algún vehículo en el mismo carril (mismo origen) y así poder
calcular el tiempo mínimo de llegada tomando en cuenta vehículos
que antecedan al vehículo que va ingresando.</p>
        <p>Data: v: Vehículo nuevo, AB[ori][dir][tpo]: Arreglos
de bloques de tiempo
Result: bs: bloques de tiempo para cruzar
tml tpoM inLlegadaIntersect(v);
ti getT poInterseccion(v);
arrsCol getArreglosColision(v);
arrCol mergeArreglosColision(arrsCol);
kBloques getBloquesDisponibles(arrCol; v);
for k kBloques do</p>
        <p>AB[v:ori][v:dir][k] true;</p>
        <p>AB[v:ori][“todos”][k] true;
end
return kBloques</p>
        <p>Algoritmo 4: Algoritmo de bloques de tiempo
El tiempo mínimo de llegada a la intersección
corresponde al tiempo que demora el vehículo en llegar
hasta la intersección tomando en cuenta factores
como la velocidad máxima y los vehículos que lo
anteceden. Por otro lado, la función getArreglosColision
retorna a todos los arreglos AB[orig′][dir′] que
correspondan a orígenes y direcciones que crucen la
intersección con el vehículo que va ingresando. La función
mergeArreglosColision realiza un OR (“o lógico”)
entre los bool, así obteniendo un sólo arreglo donde hay
T rue sólo en los bloques donde pasan vehículos con los
cuales se colisiona.</p>
        <p>Por la forma en que se asignan los bloques de
tiempo-espacio, conjeturamos que el algoritmo
propuesto es optimal greedy.
5.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusiones</title>
      <p>
        El algoritmo original presentado por Medina2015 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
presenta falencias relacionadas con las colisiones
entre vehículos en las implementaciones desarrolladas en
nuestro trabajo. Si bien con el primer arreglo se
lograron eliminar la mayoría de las colisiones existentes, no
fueron completamente eliminadas. Con las soluciones
propuestas se pretende eliminar todas las colisiones,
aunque todavía se requiere una verificación teórica y
experimental para obtener resultados definitivos.
Conjeturamos que es posible optimizar la última solución
propuesta a fin de alcanzar un algoritmo correcto
optimal greedy.
6.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Trabajo Futuro</title>
      <p>
        En un futuro trabajo se buscará verificar la
correctitud de manera teórica y experimental de los algoritmos
propuestos. Para ello, se utilizará tanto en el
framework especializado diseñado Holloway16 [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ] como en
el framework Veins [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Este último utiliza Sumo para
el tráfico vehicular y Omnet++ para la simulación de
redes. Además, conjeturamos que el último algoritmo
propuesto tiene potencial para ser optimal greedy, lo
cual requiere ser probado formalmente.
      </p>
      <p>Este proyecto ha sido financiado a través del NIC
Chile Research Labs, el proyecto “RETRACT” ELAC
2015/T10-0761 y el Instituto de Sistemas Complejos
de Ingeniería, ISCI (CONICYT: FB0816).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A. I. M.</given-names>
            <surname>Medina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. V. D.</given-names>
            <surname>Wouw</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Nijmeijer</surname>
          </string-name>
          , “
          <article-title>Automation of a T-intersection Using Virtual Platoons of Cooperative Autonomous Vehicles</article-title>
          ,
          <source>” IEEE Conference on Intelligent Transportation Systems, Proceedings, ITSC</source>
          , vol.
          <source>2015- Octob</source>
          , pp.
          <fpage>1696</fpage>
          -
          <lpage>1701</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Elhadef</surname>
          </string-name>
          , “
          <article-title>An adaptable invanets-based intersection trafic control algorithm</article-title>
          .,” in CIT/IUCC/DASC/
          <string-name>
            <surname>PICom (Y. Wu</surname>
            , G. Min,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Georgalas</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Atzori</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Jin</surname>
            ,
            <given-names>S. A.</given-names>
          </string-name>
          <string-name>
            <surname>Jarvis</surname>
            ,
            <given-names>L. C.</given-names>
          </string-name>
          <string-name>
            <surname>Liu</surname>
            , and
            <given-names>R. A</given-names>
          </string-name>
          . Calvo, eds.), pp.
          <fpage>2387</fpage>
          -
          <lpage>2392</lpage>
          , IEEE,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Holloway</surname>
          </string-name>
          , “
          <article-title>T-intersection algorithm implementation and attacks</article-title>
          .” https://github.com/bhollowa/ t-intersection-implementation,
          <fpage>2016</fpage>
          -
          <lpage>2017</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Holloway</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Céspedes</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Hevia</surname>
          </string-name>
          , “
          <article-title>Analisys of attacks to automated vehicular coordination systems at intersections</article-title>
          ,”
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Dressler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sommer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Eckhof</surname>
          </string-name>
          , and
          <string-name>
            <given-names>O. K.</given-names>
            <surname>Tonguz</surname>
          </string-name>
          , “
          <source>Towards Realistic Simulation of Inter-Vehicle Communication: Models, Techniques and Pitfalls,” IEEE Vehicular Technology Magazine</source>
          , vol.
          <volume>6</volume>
          , pp.
          <fpage>43</fpage>
          -
          <lpage>51</lpage>
          ,
          <year>September 2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>