<!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>Simulation Framework for Executing Component and Connector Models of Self-Driving Vehicles</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Filippo Grazioli</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Evgeny Kusmenko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Roth</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael von Wenckstern</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Software Engineering, RWTH Aachen University</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Software for self-driving vehicles requires intensive importance to enable agile development. Meeting all these testing to avoid fatal accidents and to allow correct operation requirements represents the challenge that we want to tackle in real-world environments. Simulation frameworks allow to in this paper. ivmehitiacltees tuhseinbgehsaimvipoluifireodf mcoomdepllsexofsythsteemresalsuwcohrlads. aHuetnocneo,mthoueys A significant number of simulation frameworks already are important tools allowing to extend component and functional exists. In Section III, we compare the most popular and tests to address interconnections between sensors, actuators, powerful ones, such as Gazebo, PTV Vissim, SUMO, and Carand controllers in virtual and predefined environments. Existing Sim. Each of the investigated simulation frameworks exhibits simulators can be separated into high-level and low-level ones. its particular benefits and drawbacks. For example, Gazebo, fBoorthadadrreedsseisniggnaeldl dforrivvinergyssitpueactiifiocnss.ceWnahrilieoshaignhd-laerveelnsoitmsuuliatatobrles which is a highly versatile open-source simulation tool feaare suitable for mastering large testing environments such as turing multiple physics engines, does not support environment cities, they lack fine-grained simulation capabilities, e.g., turning data imports from OpenStreetMap. Conversely, PTV Vissim of wheels. In contrast, low-level simulators provide a high level of can import OpenStreetMap data but does not have a physics detail with realistic motion profiles. This is usually only possible engine and is relatively expensive. To our knowledge no ianppsrmoaacllh ttehsattincgomenbvinireosntmheenbtesn.eIfints tohfisboptahpherig,hw-leeveplreasnedntloawn- simulation framework supports native execution of Component level simulators to execute component and connector models. &amp; Connector (C&amp;C) models (Simulink, Modelica, LabView, Vehicle and traffic engineers can choose the most suitable level of EmbeddedMontiArc, and SysML are popular C&amp;C representadetail for their application and integrate real-world environment tives) in realistic city environments. In fact, C&amp;C modeling is data from OpenStreetMap. Moreover, the simulator allows for possible in MathWorks Simulink with Animation3D. However, iandcalputdaitnigonnseawndseenxstoernss,ioancstuoaftotrhse apnhdyscicoanltrvoelhiscylsetecmons.figAunroatthioenr no realistic city environment is provided by this solution. feature of our simulator is its automated testing support and its Finally, most simulators do not explicitly address automated ability to visualize 3D simulations in a browser. testing support. Index Terms-Simulation framework, self-driving vehicles, Even though further work is still needed, the simulation component and connector models, executable modeling framework introduced in this paper aims to combine all desirable features of the considered frameworks and to simultaneI. INTRODUCTION ously eliminate their drawbacks. We propose a MontiCAR [13] Autonomous vehicles are complex software and hardware simulation framework named MontiSim that meets the presystems providing a wide spectrum of safety-relevant functions viously highlighted requirements, thereby supporting model[1] which have to be tested and validated extensively before based software engineering (MBSE), test driven development they can be made available for series production. Real world (TDD), evolution, and execution of autonomous vehicle functests are not only dangerous but also time consuming and tions. Our framework has its own extensible physics engine cost-intensive and therefore unfeasible in early development and is compatible with OpenStreetMap enabling a realistic stages. This leads to the importance of simulation frameworks simulation of large-scale environments such as cities. At the for self-driving vehicles enabling safe and efficient testing in same time, highly-detailed low-level simulations of vehicle predefined environments. dynamics and accidents are possible. A further feature is the Ideally, a homogeneous and versatile solution would cover a continuous integration and regression testing support allowing large variety of scenarios starting from fine grained sensor and to perform unit, integration and acceptance testing. actuator simulation through to high level traffic scenarios. As This paper is structured as follows: First, we introduce a runa consequence such a versatile simulator would need to meet ning example and requirements on the simulator in Section II a broad set of requirements. First of all, it should combine the in order to demonstrate the capabilities of the developed framefeatures of high-level and low-level simulators. In other words, work. Second, we compare existing simulation frameworks it should be able to simulate large-scale environments but, at with our proposed solution in Section III. Third, in Section IV the same time, guarantee a high level of detail. Furthermore, we present our first contribution, namely, the modular archiit should allow the detailed simulation of real-world situations tecture of our simulation framework allowing to exchange such as city areas. Moreover, it needs to support an easy and adapt C&amp;C controllers, sensors and actuators in integration and comparison of different sensors, actuators and vehicle models as well as maps and environment data controllers. In addition, automated regression testing is of great in simulation models. Our second contribution presented in</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Section V are automatically executable testing concepts for
C&amp;C models such as regression tests with and without the
environment. Finally, Section VI concludes this paper.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RUNNING EXAMPLE AND REQUIREMENTS</title>
      <p>
        Based on previous research projects with industry partners
[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and three labs on autonomous vehicle
modeling, we identified a precise set of requirements for a
simulation framework: (R1) Import and reuse of existing real
world environment data. (R2) Capability to simulate
largescale everyday scenarios, e.g., different traffic densities, light
and weather conditions. (R3) Support for realistic and
extensible car models with sensors, controllers and actuators. (R4)
Multi-platform and portable devices support. (R5) Automated
support for continuous integration and regression testing. (R6)
Simulator should contain a physics engine. (R7) 3D
visualization for demonstration purposes. These requirements must be
fulfilled by a versatile autonomous driving simulator in order
to execute and validate previously developed C&amp;C vehicles
models.
      </p>
      <p>In the remainder of this section, the usage workflow of
our proposed simulation framework is demonstrated based on
a small realistic example, where two cars follow a straight
street; videos showing our simulation framework in action are
available at: https://youtu.be/TwMtA6ZV86I, https://youtu.be/
d-EEs62-rGM, and https://youtu.be/HiaHf0dd_1w.</p>
      <p>
        (1) First, the map of interest is downloaded from
openstreetmap.org; based on this information the simulator
accurately recreates streets, buildings and traffic signs. (2)
Next, a simulation model as shown in Figure 1 is created.
It contains an environment description as well as
simulation parameters such as location, time, resolution, weather
conditions, and available vehicles. (3) New vehicle models
can be created as shown in Figure 2 if needed. Here, one
specific car is assembled by assigning its physical and visual
properties as well as its controlling unit, sensors and actuators.
For each input port of the controller, our framework delivers
three default virtual sensors with different noise models. (4)
The logic of the self-driving vehicle is modeled as a C&amp;C
controller mapping the sensor inputs to actuator commands.
Therefore, we use the MontiCAR C&amp;C modeling language
family together with its embedded math expression language
for behavior definitions [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Figure 4 depicts a simple lane
keeping control system for straight streets (road curvature =
0 ) inspired by [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; due to better readability, the body of
the LaneKeepingController is represented graphically
in Figure 5 instead of showing the textual syntax. The input
port of the lane keeping control system d[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] represents a
distance array to the road markers (see Figure 5 for a detailed
explanation); the output port s represents the desired steering
angle of the wheels. The controller contains a simple
correction component to automatically adapt steering errors due
to imperfect sensor inputs or actuator delays (see difference
in Measured car state (at t=1s) and Calculated car state for
t=1s (at t=0s) in Figure 5). (5) Finally, new sensors and
actuator models can be created. Figure 3 shows a simple
steering actuator modeled in MontiCAR. In l.12-13 zero-mean
normally distributed noise with a variance of 0.01 is added to
the manipulated variable of the actuator. Thereby, we take into
account its non-ideal and non-deterministic nature as well as
environmental factors such as changing street surfaces.
      </p>
      <p>Using appropriate quality measures such as the mean
squared error (MSE) of the car’s trajectory, our simulation
framework allows for an easy comparison between different
C&amp;C controllers.</p>
    </sec>
    <sec id="sec-3">
      <title>III. EXISTING SIMULATION ENVIRONMENTS</title>
      <p>
        Simulation frameworks represent a consistently used tool in
the software development and testing process of self-driving
vehicles. A wide variety of frameworks already exists on the
market. In this section, the most popular ones will be compared
in terms of their functionalities and capability to satisfy the
requirements presented in section II. In particular, we will
focus on Pelops [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Prescan [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], Mathworks Simulink 3D
Animations [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], RTMaps [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Gazebo [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], SUMO [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], PTV Vissim [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], SimTram [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], Vires VTD Virtual
Test Drive [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], the Udacity simulator [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], OpenDaVinci [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ],
and CarSim [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Finally, their differences will be summarized
with respect to the requirements.
      </p>
      <p>
        (R1) Import and reuse of existing real world
environment data: Pelops [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], a framework developed by the
Forschungsgesellschaft Kraftfahrwesen mbH Aachen, does not
present this function as a default feature. The same holds for
Mathworks Simulink 3D Animations, RTMaps, Gazebo and
the Udacity simulator. Gazebo, which is a widely used
simulation framework allows the design of complex maps, but not the
import of OpenStreetMap data, which can only be performed
by using external modules. Conversely, Prescan, SUMO, PTV
Vissim, and SimTram provide data import functionality from
OpenStreetMap.
      </p>
      <p>
        (R2) Capability to simulate large-scale everyday
scenarios: This is a typical feature of high-level traffic simulators
which allows, for instance, to analyze different traffic densities
or different weather conditions. PTV Vissim [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], SUMO, and
SimTram are typically used for large-scale simulations [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
Mathworks Simulink 3D Animation, Gazebo, and CarSim
offer limited support for such simulations, i.e., they are not
optimized for large-scale scenarios. Pelops, RTMaps, and the
Udacity simulator do not allow simulations of this kind due
to their focus on a single vehicle.
      </p>
      <p>
        (R3) Support for realistic and extensible car models
with sensors, controllers and actuators: Being able to
simulate different car, sensor, and controller models is a core
feature of our framework. Among the considered simulation
frameworks, only SUMO, PTV Vissim and SimTram do not
offer this feature due to their pure high-level nature. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] display how different models are implemented in Gazebo
and OpenDaVinci, respectively. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] explains the modeling of
an all-wheel driver car with GPS and LIDAR whose dynamics
is handled by the Open Dynamics Engine. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] demonstrates
how to implement a lane detection application by using the
OpenDaVinci framework.
1 simulation Example1 { Sim
2 map = AachenCity.osm;
3 startTime = 22.06.2017 13:30;
4 deltaT = 1ms
5 weather = noRain, noSnow;
6 duration = 30s;
7 cars { Start Position
8 AC-SE001:50°46'43.7"N 6°03'38.6"E -&gt;
9 50°46'49.7"N 6°04'32.5"E,
10 M-SE003: … -&gt; … }} Target Position
Fig. 1: Example Simulation Model.
      </p>
      <p>
        EMA
component LaneKeepingController {
ports in Q(0m:0.1m:5m) d[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
      </p>
      <p>out Q(-45°:0.2°:45°) s;</p>
      <p>(R4) Multi-platform and portable devices support:
CarSim, PTV Vissim, and Prescan exclusively support Windows
machines. All other frameworks support Linux, as well.
Mathworks Simulink 3D Animation supports also a 3D animation
web viewer based on HTML5.</p>
      <p>(R5) Automated support for continuous integration and
regression testing: This requirement is only fulfilled by
Gazebo and the OpenDaVinci framework. Gazebo runs a
variety of regression tests concerning both the simulation and
the physical robot either on an own cluster or in its Hudson
regression test suite. OpenDaVinci itself is developed using
continuous integration on Jenkins. Furthermore, its modular
structure facilitates unit testing of new self-driving vehicle
algorithms.</p>
      <p>(R6) Physics engine: While Pelops, Prescan, Gazebo
and CarSim provide their own physics engines, Mathworks
Simulink 3D Animation does not include out-of-the-box
physics. However, it allows to import a car modeled in
Simulink and to simulate it. The Udacity simulator, RTMaps,
SUMO, PTV Vissim, OpenDavinci, and SimTram do not
provide a real physics engine.</p>
      <p>(R7) 3D visualization for demonstration purposes: In the
context of the considered frameworks, SUMO and SimTram
are the only frameworks not supporting a 3D visualization.</p>
      <p>Table I summarizes the comparison between all the
presented frameworks including ours.</p>
      <p>IV. FRAMEWORK FOR THE SIMULATION OF C&amp;C MODELS</p>
      <p>IN REALISTIC ENVIRONMENTS</p>
      <p>An overview of the proposed MontiSim framework is shown
in Figure 6. The main features provided include the support for
rigid body based physics simulation, computer vision, versatile
sensors, control systems, actuators, car models, real
environment data as well as continuous integration and regression
testing. The framework is based on the discrete time paradigm,
i.e., the state of the simulation is updated in predefined discrete
time steps. Furthermore, the main simulator can be coupled
with an arbitrary amount of helper simulators in order to add
specific capabilities such as vehicle to vehicle communication
or tire pressure simulation. Helper simulators can be both
discrete time or discrete event based.</p>
      <p>The main part contains one or multiple car models
describing a particular car and one or multiple MontiCar C&amp;C models
to model control systems. These models are independently
developed by the vehicle engineer and the controller developer.
A test case designer creates one or multiple simulation models
describing the simulation. Furthermore, additional environment
data can be inserted. All sensors and actuators are modeled
and integrated by a domain expert. Apart from the MontiCar
C&amp;C model, each model is directly inserted into the simulation
MontiCar
Simulation
Visualization
raFm onM
ew it</p>
      <p>S
ro im
k</p>
      <p>AcAAtcucttuuaaatttooorrr
SAeAccnttuusaattooorrr</p>
      <p>Car
Assembler</p>
      <p>Car Model
framework. The MontiCar C&amp;C model is translated to
multithreaded C++ code, which is executed to control a vehicle
during the simulation.</p>
      <p>A big advantage of the presented simulation framework
is the fact that all C&amp;C languages can relatively easily be
translated into another C&amp;C language. Therefore, we will
from now on refer to only one representative C&amp;C language,
MontiCar, which we developed.</p>
      <p>The visualization part of the simulation framework consists
of 3D models, which are created by a 3D designer and used
in the visualization of the simulation. At the current state of
development, it is possible to fluently simulate 2D scenarios
with up to 50 cars and 3D scenarios with up to 5 cars.</p>
      <p>In the following, each element of the simulation framework
is explained in detail.
1 stream StearingAngleTest Stream
2 for Sensors2CarState
Values for input port d (L=3m, w=2m) {
3 d = [50cm 50cm 2.5m 2.5m]
4 tick [50cm 1.3m 2.6m 1.8m];
Expected Values for output ports time step
5 phi = 0° tick 15.45°+/-0.05°;
6 y = - tick -; 15.4° ≤ exp.
7 }Do not care about value value ≤ 15.5°</p>
      <p>Fig. 7: Stream Test Model.</p>
      <p>TestingSensors</p>
      <sec id="sec-3-1">
        <title>Deviation: 12,5%</title>
      </sec>
      <sec id="sec-3-2">
        <title>Deviation: 22,5%</title>
        <p>One main requirement for the MontiCAR C++ Code
generator is to be compatible with the widely used Simulink. If
we transform Simulink block diagrams into MontiCAR C&amp;C
models, the MontiCAR model will produce for the same input
7Rvalues the same output values as the original Simulink model.
)
n This allows us to integrate Simulink models in our toolchain.
(
o
tiza In the first step, our C++ code generator calculates the
exela cution order of the C&amp;C component instances. This creates a
i
u
iVsorted execution list, equivalent to Simulink slist command,
s
Dwhere only atomic components are considered. All other C&amp;C
3
p components are similar to the Simulink virtual subsystems
p and are flattened so that only their atomic components are
p considered. The calculation of the execution order, which
p is mostly not unique, satisfies the two main rules: (i) If
p component C1 is connected with component C2, i.e, there
p is at least one connector from any outgoing port of C1 to
- any ingoing port of C2, than the execution order of C2 must
pp be greater than the execution order of C1. (ii) Components
p having no input ports (e.g. constant components) can have
p any execution order as long as they satisfy (i).
p The C++ code generator now uses the execution order to
p invoke the calculation methods of the atomic blocks in the
right order. In this context, the input values are pointers of the
previously executed calculation method results so that objects
do not need to be copied.</p>
        <p>
          In MontiCAR, the behavior of atomic blocks is described
via MontiMath, a strongly typed Matlab-like Domain Specific
Language (DSL). To enable high-speed matrix operations, the
body of the calculation methods invokes the highly optimized
Octave [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] C++ implementation using the Intel Math Kernel
Library [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>To tackle the issue that one atomic component A can
produce an output x in km/h and the other one B wants
input values in m/s, the C++ code generator converts all input
and output values to default SI unit values. In this example
x is divided by 3:6 at end of the calculation method before
being transferred to B. Thereby, the modeler benefits from
SI unit support including generator errors, e.g., when trying
to connect kg with m/s, as well as optimized Basic Linear
Algebra Subprograms (BLAS) libraries.</p>
        <sec id="sec-3-2-1">
          <title>B. Provide Realistic Environment</title>
          <p>The simulation of the environment relies upon
OpenStreetMap which is a 2D model. Thus the third dimension
has to be obtained from a different source or needs to be
sampled as a random variable from an appropriate probability
distribution.</p>
          <p>In the generated map, for each intersection road signs
and traffic lights are randomly generated, as well. Similarly,
pedestrians can be included. Their behavior is defined by a
set of five parameters which define their movement between
two defined points P0 and P1: (1) the distance the pedestrian
moves during each time frame (2) the side of the road on
which the pedestrian is (3) the direction, either from P0 to P1
or the opposite (4) whether the pedestrian will cross the road
or not (5) the instantaneous position of the pedestrian. The
weather conditions can be either fixed, constantly or randomly
changing.</p>
          <p>Vehicles have access to the simulated environment
via sensors implementing the Sensor interface;
available sensor classes include, e.g., a WeatherSensor,
LocationSensor, CameraSensor, CompassSensor,
SpeedSensor, SteeringAngleSensor,
DistanceToRightSensor. Adding or modifying sensors can be done
easily.</p>
          <p>C. Aggregation of C++ Code and Environment in Simulator
/ Physics Engine</p>
          <p>The actuator, as shown in Figure 3, can either be written
in Java or in MontiMath. Since the Actuator interface
for MontiMath has one input and one output port of the
same type, the simulator engine generates one large C&amp;C
model, which has the controller and all MontiMath actuators
as child components. According to the car assembly model, the
controller output ports are connected with the actuator inputs.
All input ports and unused output ports of the controller are
directly connected to the large C&amp;C model, also all output
ports of the actuators are connected to the corresponding
output ports of the large C&amp;C model. Due to the Actuator
interface, the large C&amp;C model has always the same interface
as the controller. The large C&amp;C model is now translated to
C++ code in order to take advantage of the BLAS operations.
Note that the simulator, the sensors and actuators are written
in Java.</p>
          <p>The generic Java Sensor interface contains one method
that has two pointers as parameters, one to the complete
world object and one to the current car object. This method
returns one calculated value. Based on the external simulated
environment and objects, the sensor can calculate an output.
The generic Java Actuator interface contains also one
method with a HashMap containing all input and output
values of the C&amp;C controller, e.g., the engine actuator for the
acceleration does not only depend on the target acceleration
but also on the current speed. In contrast to the generated C++
code, where all units are compatible by construction and thus
ignored, the Java code for sensors and actuators works with the
JScience library. In this way, unit incompatible computations
result in Java compile errors.</p>
          <p>The simulator (1) executes the sensors models, than (2) it
transforms all JScience values to standard SI values and finally
it (3) invokes the generated C++ code by JNI. Afterwards, the
unitless C++ code result values of the large C&amp;C model are (4)
translated back to JScience values. Subsequently, the (5) Java
actuators are executed and, eventually, (6) the physics engine
updates all objects (vehicles, pedestrians) in the world. When
this process is completed, everything starts from (1) again.</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>D. Fluent Visualisation of Simulated Data</title>
          <p>For systems or acceptance tests, it is helpful to visualize the
simulated data. This way, it is possible to figure out missing
unit or integration tests, such as "the car should not to leave
the road", "the car should not wobble too much", "the car
should not park too close in parking slot, otherwise the door
cannot open".</p>
          <p>Another important reason that justifies the visualization is
the test case designer’s motivation, i.e., they produce models
of better quality when the executed result can be seen. A
visualization allows to demonstrate their models’ features, to
actually see the performance of their automated vehicles and
to better compare different models in order to identify the best
one.</p>
          <p>The visualization is realized as follows. The server sends
the states of the objects (cars and pedestrians) to the ThreeJS
library via web sockets for rendering the world. In order to
have a fluent visualization, the JavaScript visualization script
interpolates the car states, so that it can fluently drive between
two discrete state updates preventing the car from hopping
from one place to another. Technically, the visualization
consists of two parts, an init to create the world and a loop
part to move the objects.</p>
          <p>a) Init.: The simulator delivers all data required to build
up the entire map at the beginning, which contains (i) the
terrain as bounds and height-map data, (ii) the street as 4D
array (x,y,z position and street width) of nodes, (iii) the street
signs, delivered as a JSON file for the geometry, a PNG image
file as well as a 3D position point in the map and a 3D
vector telling in what direction the sign points, (iv) the traffic
lights, handled similarly to the street signs. To make the scenes
more realistic, the visualization supports a day and night cycle
and three different light sources: ambient light (that globally
illuminates all objects in the scene), directional light (that gets
emitted in a specific direction), hemisphere light (positioned
directly above the scene).</p>
          <p>b) Loop.: In the loop, the visualization sets the position
of the cars and the pedestrians. In order to have a fluent
visualization at 60 fps, which is independent from the steps per
second that can be calculated by the simulator, the
visualization has its own simple interpolation algorithms for positions
and directions of all moved objects. This way the simulation
looks fluent even if a position must be retransmitted due to
data loss.</p>
          <p>Since the simulator only considers the friction coefficient of
the road, it does not model rain drops to save computational
power on the server. Thus, the JavaScript web client contains a
rain controller that creates a specified amount of rain or snow
particles (which may have independent sizes) randomly in the
world and moves the existing particles around, e.g., by just
decrementing the y coordinate.</p>
          <p>V. C&amp;C UNIT, INTEGRATION, AND SYSTEM TESTING
Apart from the simulation, MontiSim addresses testing
purposes in order to validate sensors, controllers, actuators,
as well as other components. Hence, in the remainder of this
section, two testing methods are presented. First, a unit testing
method without environment is presented. Second, a C&amp;C
integration test method is explained to test controllers with
the environment.</p>
          <p>A. C&amp;C Unit, and Integration Testing without Environment</p>
          <p>The aim of C&amp;C black-box unit testing, similar to JUnit
testing, is to validate the correctness of single C&amp;C
components by testing the component with given time-dependent
input values and comparing its calculated time-dependent output
values with the specified ones given in the stream test file. This
methodology provides an easy and intuitive way of testing
C&amp;C components. To perform, e.g., in Simulink, a similar
unit testing for subsystems (analogue to C&amp;C components)
the tester needs to execute the following steps for each test
case: (1) create a new Simulink model as a new slx file, (2)
import the subsystem to be tested as model reference, (3) add
two signal builder blocks and manually specify (or via Matlab
script) the time-dependent input values and the expected output
values, (4) manually connect all output signals of the first
signal builder to the input values of the model reference
block, (5) compare each output of the model reference with
the expected values of the second signal builder block by
connecting both to the input ports of an equal subsystem, (6)
connect the output ports of all equal blocks with the Simulink
stop block, so that the simulation and thus the test will fail
if the calculated output and the expected output are not the
same. Our experience in several industry projects as well as
in student labs showed that, due to the high technical obstacles,
nearly no unit testing of subsystems is done in Simulink; and
even then no automatic regression testing on build servers
is done. As a consequence, errors are only detected later
by inspecting the output values manually in a time-intensive
testing phase.</p>
          <p>This paragraph now explains how the C&amp;C steering
controller (Sensors2CarState component (s. l. 2)) can be
tested in our simulation framework. For this controller,
Figure 7 shows a test case for testing the correct calculation
of the steering angle (phi) of the Sensors2CarState
component. In this example, the input values for which the
component is tested are defined in ll.3-4. Note that the tick
represents one time step, e.g., going from t = 0s to t = 0:1s.
The expected output values for phi, i.e., the calculated
angle, are defined in l.5. as 15.45 +/-0.05 meaning that
any value between 15.4 and 15.5 is accepted. Finally, the
expected output values for y, i.e., the relative y-position of
the car are defined in l.6. Since these values are irrelevant for
this test, both time steps are defined by dashes.</p>
          <p>If a unit test is successful, the result is a list of components
used in this test case. Based on this information, a test
coverage is computed. If a unit test fails, then the list of
failing components is presented. Note that the inner-defined
C&amp;C components are regarded, as well; testing a large C&amp;C
component with many inner subcomponents is mostly called
black-box integration testing.</p>
          <p>B. C&amp;C Integration, and System Testing with Environment</p>
          <p>Unit testing controllers, sensors, or actuators can also be
done in an environment to simulate real world scenarios. For
example, consider the example in Figure 8. Here the car
should follow the straight line autonomously. However, the
path computed by the controller is not ideal as shown in the
figure.</p>
          <p>To test different controllers, the deviation from the
optimal path can be computed for each controller. Based on
this deviation, the most optimal controller can be identified.
In this testing scenario, the deviations are totalized and
compared. Starting from an ideal position on the line, the
environment is initialized (void init(World w)). After
each simulation time step (void simulateTick(World
w)), the deviation from the ideal position is added to the
previous deviation. When the simulation is finished (void
finish(World w)), the total deviation is computed as
deviation[m]
s = and it is checked whether the
driven distance[m]
simulation was successful (boolean success()).</p>
          <p>
            System tests including the environment enable
model-inthe-loop testing of liveness, smoothness, and responsiveness
of discretized closed-loop controllers [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ].
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>VI. CONCLUSION</title>
      <p>Simulating self-driving vehicles is essential but still a highly
complex task. Hence, in this paper, we presented a simulation
framework that aims to address extension and adaptation
concerns, real-world environments as well as real-world sensors
and actuators. In particular, it provides an integration of
highlevel and low-level simulation, which allows to analyze
largescale scenarios as well as to address low-level details, e.g.,
the steering angle of the wheels. Furthermore, the framework
supports integration and unit testing with and without the
environment, respectively. This can be used to test sensors,
actuators, and controllers. Based on a small scale example,
we have demonstrated the applicability of the framework.
Acknowledgements This research was supported by a Grant from the GIF, the
GermanIsraeli Foundation for Scientific Research and Development, and by the Grant SPP1835
from DFG, the German Research Foundation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1] ISO 26262:
          <string-name>
            <surname>Road</surname>
            <given-names>Vehicles : Functional</given-names>
          </string-name>
          <string-name>
            <surname>Safety. ISO</surname>
          </string-name>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Behrisch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bieker</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erdmann</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krajzewicz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Sumo - simulation of urban mobility an overview</article-title>
          .
          <source>Proceedings of SIMUL</source>
          <year>2011</year>
          ,
          <source>The Third International Conference on Advances in System Simulation</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Bertram</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manhart</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plotnikov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulze</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wenckstern</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>v</year>
          .:
          <article-title>Infrastructure to Use OCL for Runtime Structural Compatibility Checks of Simulink Models</article-title>
          .
          <source>In: Modellierung 2016 Conference. LNI</source>
          , vol.
          <volume>254</volume>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>116</lpage>
          . Bonner Köllen Verlag (
          <year>March 2016</year>
          ), http://www.se-rwth.de/publications/Infrastructure-to-
          <article-title>Use-OCLfor-Runtime-Structural-Compatibility-Checks-of-Simulink-Models</article-title>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Bertram</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maoz</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>von Wenckstern</surname>
          </string-name>
          , M.:
          <article-title>Component and Connector Views in Practice: An Experience Report</article-title>
          . In: MoDELS (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Forschungsgesellschaft</given-names>
            <surname>Kraftfahrwesen mbH</surname>
          </string-name>
          , A.: Pelops, white paper http://www.pelops.de
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Gabriel</given-names>
            <surname>Gome</surname>
          </string-name>
          , Adolf May, R.H.:
          <article-title>Congested freeway microsimulation model using vissim</article-title>
          .
          <source>Transportation Research Record: Journal of the Transportation Research Board</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Hansen</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          : GNU Octave:
          <article-title>Beginner's Guide: Become a Proficient Octave User by Learning this High-level Scientific Numerical Tool from the Ground Up</article-title>
          . Packt Publishing Ltd (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>I.</given-names>
            <surname>Abuhadrous</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Nashashibi</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.L.:</surname>
          </string-name>
          <article-title>Multi-sensor data fusion for land vehicle localization using /sup rt/maps. Intelligent Vehicles Symposium</article-title>
          .
          <source>Proceedings</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Ibtissam</given-names>
            <surname>Karouach</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.I.</surname>
          </string-name>
          :
          <article-title>Lane detection and following approach in self-driving miniature vehicle</article-title>
          .
          <source>Bachelor of Science Thesis in Software Engineering and Management</source>
          , University of Gothenburg (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Koenig</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Howard</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Design and use paradigms for gazebo, an open-source multi-robot simulator</article-title>
          .
          <source>In: Intelligent Robots and Systems</source>
          ,
          <year>2004</year>
          .(
          <article-title>IROS 2004)</article-title>
          .
          <source>Proceedings. 2004 IEEE/RSJ International Conference on. vol. 3</source>
          , pp.
          <fpage>2149</fpage>
          -
          <lpage>2154</lpage>
          . IEEE (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Krajzewicz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erdmann</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Behrisch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bieker</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Recent development and applications of sumo-simulation of urban mobility</article-title>
          .
          <source>International Journal On Advances in Systems and Measurements</source>
          <volume>5</volume>
          (
          <issue>3</issue>
          &amp;4),
          <fpage>128</fpage>
          -
          <lpage>138</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Kumar</surname>
            <given-names>Abhilash</given-names>
          </string-name>
          , Sarkar Partha Pratim, S.T.K.:
          <article-title>Studying and simulating mix traffic using simtram</article-title>
          .
          <source>Traffic Engineering &amp; Control</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Kusmenko</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roth</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>von Wenckstern</surname>
          </string-name>
          , M.:
          <article-title>Modeling architectures of cyber-physical systems</article-title>
          .
          <source>In: 13th European Conference on Modelling Foundations and Applications</source>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Matinnejad</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nejati</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Briand</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruckmann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poull</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Automated Model-in-the-Loop Testing of Continuous Controllers Using Search</article-title>
          , pp.
          <fpage>141</fpage>
          -
          <lpage>157</lpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Oliver</surname>
            <given-names>Toro</given-names>
          </string-name>
          , Tamas Becsi,
          <string-name>
            <surname>S.A.</surname>
          </string-name>
          :
          <article-title>Design of a lane keeping algorithm of autonomous vehicle</article-title>
          .
          <source>Periodica Polytechnica Transportation Engineering</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Özgüner</surname>
            ,
            <given-names>Ü.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Redmill</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Biddlestone</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hsieh</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yazici</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Charles</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Simulation and testing environments for the darpa urban challenge</article-title>
          .
          <source>IEEE International Conference on Vehicular Electronics and Safety</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Patil</surname>
            ,
            <given-names>K.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jagtap</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jadhav</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bhosale</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kedar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Generating a 3d simulationof a car accident from a written description in natural language: the carsim system</article-title>
          .
          <source>Proceedings of the workshop on Temporal and spatial information processing</source>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Patil</surname>
            ,
            <given-names>K.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jagtap</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jadhav</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bhosale</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kedar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Performance evaluation of active suspension for passenger cars using matlab</article-title>
          .
          <source>IOSR Journal of Mechanical and Civil Engineering</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Richenhagen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schloßer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulze</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thissen</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>von Wenckstern</surname>
          </string-name>
          , M.:
          <article-title>Test-driven Semantical Similarity Analysis for Software Product Line Extraction</article-title>
          .
          <source>In: International Systems and Software Product Line Conference (SPLC '16)</source>
          . pp.
          <fpage>174</fpage>
          -
          <lpage>183</lpage>
          . ACM (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Roth</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dirndorfer</surname>
            ,
            <given-names>T.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knoll</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , v. Neumann-Cosel,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Ganslmeier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Kern</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Fischer</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.O.</surname>
          </string-name>
          :
          <article-title>Analysis and validation of perception sensor models in an integrated vehicle and environment simulation</article-title>
          .
          <source>Proceedings of SIMUL</source>
          <year>2011</year>
          ,
          <source>The Third International Conference on Advances in System Simulation</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulze</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wenckstern</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>v</year>
          .,
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manhart</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Behavioral Compatibility of Simulink Models for Product Line Maintenance and Evolution</article-title>
          .
          <source>In: Software Product Line Conference (SPLC'15)</source>
          . pp.
          <fpage>141</fpage>
          -
          <lpage>150</lpage>
          . ACM (
          <year>2015</year>
          ), http://www.se-rwth.de/publications/Behavioral-Compatibility-
          <article-title>ofSimulink-Models-for-Product-Line-Maintenance-and-</article-title>
          <string-name>
            <surname>Evolution</surname>
          </string-name>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Udacity</surname>
          </string-name>
          :
          <article-title>Self-driving car simulator</article-title>
          .
          <source>GitHub</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Viral</surname>
            <given-names>Patel</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Manish</given-names>
            <surname>Chaturvedi</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.S.</surname>
          </string-name>
          :
          <article-title>Comparison of sumo and simtram for indian traffic scenario representation</article-title>
          .
          <source>Transportation Research Procedia</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shen</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Zhang, G.,
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Intel math kernel library</article-title>
          .
          <source>In: High-Performance Computing on the Intel R Xeon PhiTM</source>
          , pp.
          <fpage>167</fpage>
          -
          <lpage>188</lpage>
          . Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Zhizhou</surname>
            <given-names>Wu</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Jie</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <surname>L.H.:</surname>
          </string-name>
          <article-title>Study on the collision avoidance strategy at unsignalized intersection based on prescan simulation</article-title>
          .
          <source>13th COTA International Conference of Transportation Professional</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>