Académique Documents
Professionnel Documents
Culture Documents
IN PRAGUE
Faculty of Electrical Engineering
MASTER’S THESIS
ii
Abstrakt
Tato práce se věnuje návrhu a implementaci systému integrujı́cı́mu simulátor řı́zenı́ s
modulem pro předcházenı́ kolizı́m. Systém simuluje jı́zdu po dálnici v provozu. Modul
pro předcházenı́ kolizı́m zahrnuje dvě implementace metod zabraňujı́cı́ kolizı́m. Prvnı́
z metod je založena na principu sledovánı́ a udržovánı́ bezpečné vzdálenosti, druhá je
aplikacı́ metody ORCA. Modul komunikuje se simulátorem a poskytuje instrukce pro
řı́zenı́ vozidel. Vozidlo řı́zené řidičem tyto instrukce zobrazuje a navrhuje tak řidiči
dalšı́ manévry. Vozidla okolnı́ho provozu se řı́dı́ autonomně plněnı́m těchto instrukcı́.
Jednoduché experimenty ukazujı́ smysluplnost konceptu a možnosti jeho využitı́ pro sim-
ulace s řidičem - člověkem. Dále na základě experimentů ukazujeme dalšı́ směr aplikace,
kterým jsou studie metod zabraňujı́cı́ch kolizı́m pro silničnı́ vozidla v dálničı́m provozu.
iii
Abstract
The thesis deals with the design and implementation of a system integrating driving
simulator with a collision avoidance module. The system performs simulation of driving
on the highway with traffic. There are two integrated collision avoidance methods in the
module. One is based on the observance of the Safe Distance and the second implements
ORCA algorithm. The module communicates with the driving simulator and provides
instructions for vehicles. Traffic vehicles execute instructions autonomously. The driven
vehicle visualize the instruction for a human driver. The proof-of-concept experiments
show the possibilities of application of the system for a human-in-the-loop simulations as
well as for studies of collision avoidance techniques for traffic vehicles on a highway.
iv
Contents
List of Figures ix
List of Tables x
1 Introduction 1
1.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Additional Requirements . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Highway Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2.1 Traffic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Thesis Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Related Work 5
2.1 Simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Driving Simulators . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Sensor Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Collision Avoidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Velocity Obstacles . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Reciprocal Velocity Obstacles . . . . . . . . . . . . . . . . . . . . 10
2.2.3 Optimized Reciprocal Collision Avoidance . . . . . . . . . . . . . 10
2.2.4 ORCA-based Methods for Non-Holonomic Robots . . . . . . . . 13
2.2.5 Non-Homogeneous Non-Linear Reciprocal Collision Avoidance . . 13
3 Implementation 14
3.1 OpenDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Traffic in OpenDS . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Collision Avoidance Module . . . . . . . . . . . . . . . . . . . . . . . . . 17
vi
3.2.1 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Agent Implementations . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2.1 ORCA Agent . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2.2 SafeDistance Agent . . . . . . . . . . . . . . . . . . . . . 19
3.3 Collision Avoidance and Simulator Integration . . . . . . . . . . . . . . . 22
3.3.1 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.1.1 Protocol Buffers . . . . . . . . . . . . . . . . . . . . . . 23
3.3.1.2 Communication Protocol . . . . . . . . . . . . . . . . . . 24
3.3.1.3 Update Message . . . . . . . . . . . . . . . . . . . . . . 24
3.3.1.4 Plans Message . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.2 Extensions in OpenDS . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.2.1 Communication . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.2.2 Plan Executer . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.3 Human-Machine Interaction Interface . . . . . . . . . . . . . . . . 27
4 Experiments 29
4.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Settings and Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.1 Imminent Collision Experiments . . . . . . . . . . . . . . . . . . . 30
4.2.2 Driver Assistance System Experiments . . . . . . . . . . . . . . . 33
4.3 Results and Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.1 Imminent Collision Experiments . . . . . . . . . . . . . . . . . . . 34
4.3.1.1 Experiment I . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.1.2 Experiment II . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.1.3 Experiment III . . . . . . . . . . . . . . . . . . . . . . . 36
4.3.1.4 Experiment IV . . . . . . . . . . . . . . . . . . . . . . . 36
4.3.1.5 Summary of the Experiments I - IV . . . . . . . . . . . . 37
4.3.2 Driver Assistance System Experiments . . . . . . . . . . . . . . . 38
4.3.2.1 Experiment V . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3.2.2 Experiment VI . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2.3 Experiment VII . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2.4 Summary of the Experiments V - VII . . . . . . . . . . . 40
5 Conclusion 41
References 46
vii
A Protocol Buffers - SIMPLAN protocol I
B Contents of attached CD IV
B.1 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV
B.2 Videos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV
viii
List of Figures
ix
List of Tables
4.1 Imminent Collision Experiments (vD0 and vDi is the initial and final speed
of the dummy vehicle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Driver Assistance System Experiments (vD0 and vDi is the initial and final
speed of the dummy vehicle) . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 Results of the Experiments I - IV . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Results of the Experiments V - VII . . . . . . . . . . . . . . . . . . . . . 40
x
Chapter 1
Introduction
Road safety is an issue that is often spelled to be a priority for automotive manufactur-
ers, governments as well as for the drivers themselves. The effort is well motivated by
the Global Status Report on Road Safety [WHO(2013)] presented by the World Health
Organization. It estimates the number of road traffic deaths to be 1,240,000 per year in
2013.
Nowadays computer science, robotics and artificial intelligence are just some of over-
lapping areas that automotive industry benefits from. The driver assistance systems [Eu-
roFOT(2013)] or autonomous vehicles [Guizzo(2011)] are examples of the applications
aiming to improve road safety.
Accident-free traffic or at least limitation of the number of accidents is an actual
challenge in the related research areas. Accidents are caused by the collisions of a vehicle
with other vehicles, pedestrians, animals or infrastructure. And the prevention of these
collisions is the purpose of the collision avoidance.
1.1 Requirements
This section presents requirements and specification of the assignment. The tasks of
assignment are listed in this section. Further requirements of the assignment follows.
1. Review existing techniques for collision avoidance of mobile robots focusing on road
vehicles.
1
CHAPTER 1. INTRODUCTION 2
execution.
1. The implementation should consider the need of a modular system that would allow
to prototype new strategies of collision avoidance easily.
5. The collision avoidance module should be able to control the traffic in the simulator
as well as it should provide assistance to the driver via driver assistance system.
6. The execution of commands by driver and by traffic vehicles bring the uncertainty
in execution.
7. The experiments should show possibility of testing various algorithms for collision
avoidance. Simple experiments should provide general information about perfor-
mance of collision avoidance algorithms on highway, allow to compare various con-
figuration of parameters for these algorithms.
1.1.2.1 Traffic
The vehicles are supposed to move in one direction, more than one lane is needed to allow
vehicles to overtake. Vehicles are supposed to model real cars. The physical model should
be part of the simulator used. The vehicles are controlled by a driver (e.g keyboard, game-
pad or steering wheel) or the vehicles drive autonomously (i.e. are driven by software
agents).
Sensing is assumed to be perfect and complete (i.e. vehicle is able to sense locations
and velocities of itself, other vehicles and obstacles).
1.2 Approach
This section outlines a chosen approach to the assignment in general. Nevertheless, the
scope of the assignment is relatively broad. Separation of work into parts dealing with
simulator related issues and collision avoidance module seems reasonable. This text is
organized in this way if it is possible to separate these areas.
Now let as discuss the assignment and reveal the ways to satisfy the desired require-
ments. The implementation will be done using portable Java programming language [Or-
acle(2013)]. The motivation for this choice is a previous experience and the fact that
Java dominates the development at the Agent Technology Center at the Department
of Computer Science [ATG(2013a)] (including implementation of some collision avoid-
CHAPTER 1. INTRODUCTION 4
ance algorithms). Previous experience allows to build on the knowledge and code-base
gained by working on the bachelor’s thesis [Schaefer(2011)]. The knowledge of simula-
tion toolkit Alite [ATG(2013b)] is welcome as well as the fact that the Safe Distance
Observance method [Schaefer(2011)] can be adapted to be used as one of the collision
avoidance algorithms.
There are specific requirements on the simulator (e.g. possibility of controlling traffic
vehicles or driver’s mode that would allow to visualize driver assistance system). The
simulator satisfying the requirements must also allow the integration of a collision avoid-
ance module. The integration of a simulator and a collision avoidance should remain
general enough to allow modularity, i.e. to offer possibility to switch the simulator or the
collision avoidance module.
Related Work
Related Work chapter is divided into two main parts. First part is related to the simu-
lators. Second part deals with the collision avoidance techniques in robotics.
2.1 Simulators
Simulation is an instrument used in a variety of disciplines. The Nobel Prize in Chemistry
was awarded for development of multiscale models of complex chemical systems [RoyalA-
cademy(2013)], crowd simulations help to optimize emergency plans [Almeida(2013)] or
simulators are used for training of drivers, pilots or soldiers. Safety and economic reasons
motivate usage of simulators for wide spectrum of the applications where direct deploy-
ment of new technologies is risky or expensive. Collision avoidance system is a convenient
technology to be simulated before deployment in the real world.
5
CHAPTER 2. RELATED WORK 6
[Oktal(2013)]). High-end simulators with a cabin on a motion platform are the most ad-
vanced, realistic and expensive solution e.g. Figure 2.1(a). Simpler solution is a static
cabin or only seats equipped with visual projection e.g. Figure 2.1(b). The basic solution
is the simulation software without any special peripheries. The [OSS(2013b)] offers recent
market overview in the field and claims simulators are expensive or not using state-of-the-
art technologies. Interesting projects in the area seem to be OpenDS and OSS Driving
Simulator. Both of these simulators are supposed to be released as open-source projects.
OpenDS is the driving simulator selected to be used for the implementation in this work.
More details about OpenDS are provided in Section 3.1.
OSS Driving Simulator is probably still not yet realized project, but the ideas and
planned features are promising for the field of driving simulation. So far the team around
OSS Driving Simulator published ideas and plans for a new open-source driving simulator
[OSS(2013a)]. The simulator should be built on a Unity game platform [Unity(2013)].
The authors claim that: We think everyone, from a big corporation to group of students
in a dorm working on a startup to the individual inventor, should have access to simulation
technology and methodology. Open Source is a natural way to do this. It allows low cost,
broad experimentation and contributions back to the project from many people and corners
of the world. An open platform for driving simulation could bring a stable and up-to-date
underlying core for various applications of driving simulators.
CHAPTER 2. RELATED WORK 7
Dynamic Window approach was used for high-speed navigation in [Brock and Khatib(1999)].
Another method using Ripple Tantacles was deployed on the BIT unmanned vehicle plat-
form [Yu et al.(2012)Yu, Gong, Iagnemma, Jiang, and Duan]. In spite of the method is
considered to be motion planning method, it is eligible to smoothly control vehicle in
unknown or partially unknown environments. Another example of a motion planning for
high-speed driving is [Cowlagi and Peters(2013)] using RRT*.
Recently approaches based on Velocity Obstacles (VO) [Fiorini and Shiller(1998)]
became popular. We focus on these methods, particularly Optimized Reciprocal Colli-
sion Avoidance (ORCA) [Berg et al.(2010)Berg, Guy, Lin, and Manocha] is the selected
method to be used in implementation (see 3.2). The basic roadmap of the development
of the methods based on the VO is addressed by the following Section.
where λA,B is the line of vA,B . In Figure 2.2 the tangents λf ,λr delimiting the CCA,B
are shown.
CHAPTER 2. RELATED WORK 9
^
B
λ V
r B
λ
CC f
A,B
-VB
V
A,B
^ V
A A
^
B
union of velocity obstacles determines the colliding velocities for the robot A.
The responsibility can be split among two robots in arbitrary ratio αA|B . Than the
generalization of RVO is:
0 1 0 1
RV OA|B,αA|B = {vA | vA + (1 − )vA ∈ V OA|B } (2.5)
αA|B αA|B
The RVO concept is used for other robots, VO is still used for passively moving
obstacles. The union of obstacles delimits the colliding velocities. Minor extension of
RVO is hybrid reciprocal velocity obstacle (HRVO) which deals with a problem of so-
called reciprocal dances [Snape and van den Berg(2011)].
collision avoidance (ORCA). The ORCA is claimed to be locally optimal collision avoid-
ance method for robots in multi-robot environment with static and dynamic obstacles.
The ORCA is used in our collision avoidance module implementation (see 3.2.2.1). The
ORCA is based on the RVO but the formulation is slightly different. Let us redefine some
of the terms as it is used in [Berg et al.(2010)Berg, Guy, Lin, and Manocha].
The velocity obstacle for A induced by B for time window τ is defined as:
τ
V OA|B = {v | ∃t ∈ [0, τ ] :: tv ∈ D(pB − pA , rA + rB )}, (2.6)
where D(p, r) is an open disc with center at p and radius r. The geometrical construction
of a velocity obstacle for ORCA is shown in Figure 2.4. In contrast to RVO velocity
obstacle does not delimit colliding and collision-free space. For this purpose are designed
so-called ORCA lines.
Let us cite the description of the construction in Figure 2.4, [Berg et al.(2010)Berg,
τ
Guy, Lin, and Manocha]: Geometric construction of the velocity obstacle V OA|B (shown
gray on right) for the configuration of robots A and B shown on left. The velocity obstacle
V OA|B can geometrically be interpreted as a truncated cone with its apex at the origin (in
velocity space) and its legs tangent to the disc of radius rA + rB centered at pB + pA . The
amount of truncation depends on the value of τ , the cone is truncated by an arc of a disc
of radius (rA + rB )/τ centered at (pB − pA )τ . The velocity obstacle shown in the figure
is for τ = 2.
Let u be the smallest change to the relative velocity of A and B to avoid collision.
Figure 2.5: Orca lines [Berg et al.(2010)Berg, Guy, Lin, and Manocha]
Then we consider the robots share the responsibility equally so each of them takes
care of a half. The ORCA line splits the space and delimits a half-plane of collision
avoiding velocities within τ time . The ORCAτA|B is formally specified as follows:
opt 1
ORCAτA|B = {v | (v − (vA + u)) · n ≥ 0} (2.8)
2
The intersection of the collision avoiding half-planes induced by the respective robots
delimits the safe velocities in multi-robot setting. For the completeness we provide the
equation as it was presented in [Berg et al.(2010)Berg, Guy, Lin, and Manocha] with an
additional constraint to the maximum speed.
\
ORCAτA = D(0, vAmax ) ∩ ORCAτA|B . (2.9)
B6=A
The selection of the closest velocity, among collision safe velocities, to the originally
pref
preferred velocity vA is solved by linear programming. That is based on the claims
that ORCAτA is a convex region and the quadratic optimization function has only one
local minimum [Berg et al.(2010)Berg, Guy, Lin, and Manocha]. If the linear program is
infeasible (densely packed conditions - empty ORCAτA ), then the safest velocity possible
is chosen (see [Berg et al.(2010)Berg, Guy, Lin, and Manocha] for more details).
Let us note that a passive obstacle must be avoided in a slightly different way. The
difference is that the robot most take full responsibility for the avoidance with the passive
obstacle.
The ORCA is presented without considering kinematics and dynamics of the robot.
The application of the ORCA on non-holonomic robots is the subject to the following
methods.
CHAPTER 2. RELATED WORK 13
1
At the time of writing this thesis the paper is under review for ICRA 2014, published on the author’s
website http://arl.cs.utah.edu/research/nhnlrca/. The proposals in this paper are not considered
during implementation, the paper is presented to introduce the most recent ideas in the relevant research
field.
Chapter 3
Implementation
There is the approach to the assignment composed in Section 1.2 with respect to the
requirements presented in Section 1.1. The implementation of a modular system to
allow to implement and to test collision avoidance techniques in a driving simulator is
desired. This chapter describes the architecture of the system and its components. The
system consists of two main components: a driving simulator (Section 3.1) and a collision
avoidance module (Section 3.2).
OpenDS CA
CAModule
Traffic Module
The Figure 3.1 presents the simplified architecture of the system. Our thesis con-
tribution in implementation is marked by the red color. The OpenDS simulator (see
[OpenDS(2013)]) is described as it is released by its developers (see 3.1) and then the
our implementation of the extensions needed to integrate the simulator into our system
is described in the Section 3.3.2. The collision avoidance module (see 3.2) is already
14
CHAPTER 3. IMPLEMENTATION 15
designed and developed to be a part of the system. The integration of the OpenDS and
the collision avoidance module is described in Section 3.3. The communication and com-
munication protocol SIMPLAN designed to be used in the system is presented in Section
3.3.1.
3.1 OpenDS
OpenDS is an open-source driving simulator [OpenDS(2013)]. OpenDS is based on a
game engine jMonkeyEngine (jME) [JME(2013)]. The jME provides the simulator with
a visualization and physics (via jBullet Physics library [JBullet(2013)]). Rendering is
provided by the Lightweight Java Game Library (LWJGL) [LWJGL(2013)]. OpenDS
uses a possibility importing various 3D models in jME. All scenes can be prepared in
advance and loaded. Individual models can also be added using related XML format
setting files or loaded directly in source code.
OpenDS is not a simulator itself, it contains also so-called Drive Analyzer. Drive
Analyzer allows to replay a drive and to realize further analysis after the simulation run
itself.
OpenDS is a driving simulator aiming mainly on human-machine interaction commu-
nity. There are several preprepared scenarios and drive tasks in OpenDS, nevertheless
creation of a new experiment in OpenDS is possible. As we already mentioned earlier,
settings is based on XML format files. The presence of XML Schema is rewarding and
necessary for creating new scenarios.
So far smooth trajectories and basic collision preventing by speed adjustment is pro-
vided by using so-called follow boxes. A follow box is a virtual object tracking the
desired smoothed trajectory between waypoints of a vehicle. The speed of the follow box
is adjusted according to the desired speed at the next waypoint and the position of the
following vehicle. The follow box is also extended to observe the situation ahead the
vehicle and to adjust the velocity (i.e. to slow down) if it is needed to prevent a collision
with a vehicle ahead. The Figure 3.2 visualizes the described technique: waypoints are
shown in red, a follow box is green tracking the green dot-dashed line. The line illustrates
Catmull-Rom spline that is used by default in OpenDS implementation of motion path of
the follow box. The traffic vehicles are supposed to be extended to even more autonomous
so-called AI vehicles. This would allow the traffic simulation with autonomous vehicles.
3.1.2 Integration
The communication extension of OpenDS is implemented to allow integration of the col-
lision avoidance module and the simulator. The implementation is dependent on the
communication protocol presented in Section 3.3.1.2. The communication protocol is
a part of the Section 3.3 that deals with the integration of the system. Design of the
communication extension is presented there when the communication protocol is already
presented. The extension of control mechanism in OpenDS to allow execution of instruc-
tions received by collision avoidance module is also described there in Section 3.3.2.
CHAPTER 3. IMPLEMENTATION 17
3.2.1 Architecture
The module implementation is based on a simulation toolkit Alite [ATG(2013b)]. The
Figure 3.3 illustrates the typical architecture of a simulation based on Alite. We used
a simulation toolkit to create a module that is a simulator itself. The module performs
a multi-agent simulation. Each agent represents an entity responsible for the collision
avoidance of the related vehicle. The multi-agent simulation allows to use distributed
collision avoidance methods as well as the centralized ones. An agent in this context is
specified as an entity that can perceive and act on the environment. The sensors and
actuators respectively are used to provide interactions with the environment. We consider
the agent to be the intelligent, decision making entity. The agent then implements a
specific collision avoidance method. We use a new agent implementation for each collision
avoidance method (see Section 3.2.2).
The simulation environment is supposed to be updated by data received via com-
munication from an external simulator. The output of the agents is also to be sent to
the external simulator. The simulation is event-based, so the core of the module is the
event processor responsible for the simulation to be running. In fact, the simulation to be
updated is dependent on the communication (external simulation) i.e. there is no update
of the environment on a local simulation timestep event. The communication in general
is described in more detail in related Section 3.3.1.
It is possible to visualize the environment of collision avoidance module. The visual-
ization is independent from the simulation and can be easily switched off. The visualiza-
tion is also easily expandable by new layers. New layers can be registered by an agent
implementation for example, so any method used for collision avoidance can provide
visualization specific for the method (e.g. velocity obstacles, potential fields, etc.).
CHAPTER 3. IMPLEMENTATION 18
ORCA agent is based on the Optimized Reciprocal Collision Avoidance described in Sec-
tion 2.2.3. The implementation of the method is published in RVO2 Library [RVO2(2011)].
The library is written in C++ and C#, for our purpose we need the implementation in
Java. For the purpose of the [Janovský(2014)] Pavel Janovsky implemented RVO library
in Java. The library is used in our implementation.
The ORCA algorithm provided by the library is integrated into the agent in our col-
lision avoidance module. The ORCA as it is described in 2.2.3 requires specific input.
The environment is specified by the static obstacles. The static obstacles in our case are
delimiting the highway. The positions and velocities of agents are provided via commu-
nication from the driving simulator. Preferred velocities are needed to be specified to
allow ORCA algorithm to optimize the output new velocity. The Figure 3.2.2.1 shows
CHAPTER 3. IMPLEMENTATION 19
UPDATE Preferred
velocity
RVO
Simulator
ORCA
New
ORCA
Comm. velocity
Agent
Plan - Waypoint
SafeDistance (SD) agent is based on the Safe Distance Observance method originally
described in [Schaefer(2011)]. The brief summary of the principle is to repeatedly find a
maneuver which execution leads to a safe state.
The important feature of the method is that it can ensure the safe state after maneuver
CHAPTER 3. IMPLEMENTATION 20
Maneuver
execution
execution. This is guaranteed because the safe distance is checked on the distance between
the position after maneuver and the initial position of the vehicle ahead. The safe state
means the possible safe maneuver in the next step. Let the initial state be safe and all the
future states are safe as well. [Schaefer(2011)].
The input of the method is a set of possible maneuvers with priorities and the current
state of the vehicle and of the other vehicles. The output is a safe maneuver with the
highest priority. Conditions to be satisfied to say a certain maneuver is safe are described
in the Section 3.2.2.2. The method works on the level of maneuvers. Maneuvers are
presented in the following section.
Maneuvers
The finding of the next safe maneuver is done repeatedly after previous maneuver exe-
cution. The set of maneuvers is checked one by one in order of descending priority. The
control loop of the method is shown in Figure 3.5. There are several conditions to be
CHAPTER 3. IMPLEMENTATION 21
Critical distance
Rear
vehicle Front
vehicle
maneuver to be Operating
checked vehicle
Critical distance
Rear
vehicle
Front
vehicle
1. Highway condition A - The desired lane must exist at the related highway segment.
2. Highway condition B - The end lane of the maneuver must continue far enough to
allow the vehicle to stop until the end of the lane is reached.
3. Vehicles condition - The maneuver is acceptable for a vehicle if all other vehicles
that the vehicle can endanger are in safe distance from the vehicle.
Safe Distance
The critical distance is examined to decide whether the distance between vehicles is safe.
The critical distance is get as is shown in the Figure 3.6 and Figure 3.7. To decide whether
the critical distance is safe we need to count the value of the minimal safe distance ds .
The situation at time t0 is shown in the Figure 3.6. We can use basic motion laws. The
maneuvers are defined with constant acceleration a so we use it as well.
vA1 = vB0
CHAPTER 3. IMPLEMENTATION 22
vA0 + a · TS = vB0
TS . . . maneuver duration
Now we get the minimal safe braking period TS . The minimal safe distance dS is defined
by the following equation.
1 v 2 − vA0
2
dS = vA0 · TS + a · TS2 = B0
2 2a
The critical distance d is safe if d > dS + , where is an emergency reserve. The
emergency reserve comprises for example dimensions of the vehicles that are omitted
during the computation.
OpenDS CA Module
Traffic
Storage
Steering vehicle FB
Traffic 1 FB
PB Protocol PB
Traffic 2 FB
Comm Buffers Comm
Traffic 3 FB
Agent 1
Agent 1
Agent 1
3.3.1 Communication
Communication between the simulator and collision avoidance module is addressed in
this Section. Communication is TCP socket-based and uses binary streams to send data.
The serialization and deserialization of structured data is done by Protocol Buffers (see
3.3.1.1). Communication protocol designed for the communication between a simulator
and a collision avoidance module is described in Section 3.3.1.2.
Protocol Buffers is a mechanism for serializing structured data. Protocol Buffers are
developed by Google [Google(2013)]. Protocol Buffers aim to simplicity and performance.
It allows developer to define a protocol in a text .proto file. By compiling .proto file
developer can generate data access classes in various programming languages. Java, C++
and Python are supported by Google but even other languages are available using third
party contributions. The Protocol Buffers messages are not self-describing in general
but there are ways how to achieve it. The data is easily accessible via API. Serialized
data is sent in a binary form for example via sockets as it is done in OpenDS - CA
module integration. For implementation of communication we use Communicator and
ProtobufFactory libraries. ProtobufFactory is a library developed at ATG by Michal
Stolba. Communicator is our lightweight implementation of socket-based communicator
for receiving and sending data. Communicator is based on ProtobufFactory and provides
CHAPTER 3. IMPLEMENTATION 24
The specific protocol used in OpenDS - Highway platform integration we named SIM-
PLAN and is described in this section. The Message container is used in our example, the
Message contains optional fields Update, Plans and Init messages. Optional field usage is
technique called Union Types, one of the commonly used design patterns of using Proto-
col Buffers [Google(2013)]. It allows to send messages of various types using one protocol.
Init message can be used in the beginning of a communication to provide information
needed to initialize internal system states of communicating systems (e.g. highway road
structure). The Update message is used to provide information about traffic in simulator
to the CA module and in the opposite direction the Plans are sent from CA module to
the simulator.
message Message {
// One of the following will be filled in.
optional Update update = 1;
optional Plans plans = 2;
optional Init init = 3;
}
Update message contains data going from a simulator to a collision avoidance module
and/or other module that would need the data. Update message instance is specified by
an updateTime value. The content is a repeated field of VehicleUpdate - type representing
state data of a related vehicle in the simulation.
message Update {
required double updateTime = 1;
repeated Vehicle_update updates = 2;
}
CHAPTER 3. IMPLEMENTATION 25
Plans message contains data going from a collision avoidance module to a simulator.
Timestamp value allows to link a Plans message to a specific Update message. The Plans
message timestamp specifies what received Update message the Plans message was gen-
erated from. The repeated field of message type Plan contains plans for related vehicles.
The Plan is a list of actions of type Action. Action is an abstract type implemented by
Maneuver, Waypoint and Actuator message type. The protocol allows to send an action
in three different ways. The Maneuver, Waypoint and Actuator message represent layers
of controlling the vehicles. The layered design allows to use collision algorithms working
on one of the specified layers. On the other side the simulator must be able to control
vehicles on the basis of these layers. The complete protocol files are listed in an Appendix
A.
message Plans {
required double timestamp = 1;
repeated Plan plans = 2;
}
message Plan {
required int32 vehicleId = 1;
repeated Action actions = 2;
}
message Action{
optional Maneuver maneuver = 1;
optional Waypoint waypoint = 2;
optional Actuators actuators = 3;
related to OpenDS. This section deals with the implementation of communication and
the interface with these already implemented OpenDS controlling techniques.
We provide a description of the implementation of communication and further exten-
sions to enable integration of collision avoidance in OpenDS simulator.
3.3.2.1 Communication
The communication protocol SIMPLAN (see 3.3.1.2) enables to send plans in several
ways. The 3 layers correspond to the levels of control. Let us remind that there are
Maneuver, Waypoint and Actuator layers.
The Plan Executer that is a component responsible for the execution of a plan defined
in one of the levels. There are also two ways of the execution. First, there are traffic
vehicles driven autonomously by the plan. Second, there is a so-called steering vehicle
driven by a driver, to whom the plan is proposed via human-machine interaction interface
(HMI).
Let us describe the update loop of the traffic vehicles. As we mention in Section 3.1
the traffic in OpenDS is controlled using so-called Follow Boxes (FB). The vehicle simply
steers and set the speed to follow the FB. We use this interface between a traffic vehicle
and its FB, so we can control the vehicle in fact on the Waypoint level.
The Figure 3.9 shows the principle of the plan execution in OpenDS. The commu-
nicator receives the plans from collision avoidance module. The OpenDS waypoints are
CHAPTER 3. IMPLEMENTATION 27
WP generator Plan
Traffic Car
Comm
WP Queue
WP FB
steerTo(WP)
setSpeed(v)
next check if WP
speed WP reached
state
state
generated according to the level of the individual actions in the plan. The original
OpenDS simulator offers a control mechanism able to steer to a waypoint. The current
waypoint is provided by the Plan Executer. The executer offers a new waypoint from the
waypoint queue when the previous waypoint was reached or overwritten by the new plan.
An action of the lower level (e.g. waypoint) is mapped to a lane. We assume that the
lane instruction can provide stable HMI output by filtering possible dynamically updated
waypoints.
The lane is proposed by the blue colouring of the lane of the proposed lane. See
the Figure 3.10(a), where the driver is instructed to keep current speed and lane. The
changle lane instruction is shown in the Figure 3.10(d). The speed instruction is projected
into a rectangle in the heading direction. The transparency of the rectangle is being
adjusted. The rectangle is red if braking is proposed (see Figure 3.10(c)) and is green if
the accelerating is proposed. The color intensity is proportional to the proposed speed
change.
Chapter 4
Experiments
This chapter is dedicated to the experiments. First we specify what are the features we
want to study, what is the purpose of the experiments. We provide the motivation for
the experiments in the Section 4.1. The experimental scenarios settings are described
in Section 4.2, there is also the methodology of the evaluation of the results of the
experiments. At last we provide the results of the experiments. The discussion of the
results is also the part of the Section 4.3.
4.1 Motivation
The motivation of the experiments is based on the requirements specified in the Section
1.1. The requirements number 2,7 and 8 are related to the experiments.
The demand to allow to evaluate the collision avoidance techniques in the simulation
is the general requirement. We provide a set of scenarios in the experiment named the
Imminent Collision Experiments (ICE). The set of experiments is described in the related
Section 4.2.1.
The ICE should provide the insight into the behaviour of the vehicles. The ICE
experiments can be either executed on the scenarios without the steering car - without
the human driver. Or either on the scenarios with the driver. The scenarios without
the driver are more suitable for the analysis of the features of the implemented collision
avoidance methods. The behaviour is less influenced by the uncertain execution of the
plans.
The experiments with the driver are mainly based on the requirement to reveal pos-
29
CHAPTER 4. EXPERIMENTS 30
sibilities of the user testing of the driver assistance system. The proof-of-concept exper-
iments are meant to show whether the evaluation of driver assistance systems can be
done using the studied system. The experiments with the just described purposes are
presented in the Section 4.2.2.
500 meters
Incident area
Direction of the movement
The Figure 4.2 illustrates the basic initial setting of the braking experiments. The
blue vehicles are the vehicles driven by the collision avoidance agents. The black vehicle
is a dummy vehicle. The dummy vehicle is not driven by the collision avoidance agent but
it is driven by the predefined waypoints. The dummy vehicle in the ICE context causes
the potential imminent collision. The Figure 4.3 illustrates the moment of an incident.
The dummy vehicle suddenly brakes. The agents of other traffic vehicles are supposed to
ensure collision avoidance.
CHAPTER 4. EXPERIMENTS 32
Incident area
Direction of the movement
A slightly different initial setting is used for the experiments with constantly slow
dummy vehicle (ICE - slow vehicle). There is no sudden braking of the dummy vehicle
in the scenario, but the dummy vehicle is slower than the other vehicles. The Figure 4.4
illustrates the setting of the dummy vehicle ahead the others.
Let us now introduce the particular scenarios. The ICE - braking experiments are
instantiated in two variants. The ICE - slow vehicle experiments are also in two variants.
For both pairs one of them is an extreme case. The extreme ones in the sense that braking
is performed until the vehicle is stopped and in the ICE - slow vehicle case the constant
speed of vehicle is equal to zero. The Table 4.1 summarizes the experiments.
Evaluation Methodology
The main source of the information is the record of the experiment execution (the list
of videos is in Appendix B.2). The experiments are recorded to allow to visually study
the behaviour of the vehicles driven by the collision avoidance agents. There are features
we extract from the experiments and present them as the quantified results. We observe
if there is a collision during the experiment. Above that, let us remind that one of the
CHAPTER 4. EXPERIMENTS 33
Table 4.1: Imminent Collision Experiments (vD0 and vDi is the initial and
final speed of the dummy vehicle)
Table 4.2: Driver Assistance System Experiments (vD0 and vDi is the ini-
tial and final speed of the dummy vehicle)
assistance system are in Section 4.3.2. The Appendix B.2 is also referred, as it contains
a list of videos attached to this thesis. The following sections describes the behaviour of
the vehicles that is advised to be watched on the video. The text then offers an additional
description or eventual clarification of the observed features.
4.3.1.1 Experiment I
The scenario models a situation when a vehicle on a highway suddenly slows down from
130 km/h to 72 km/h. Other traffic vehicles should safely overtake the slow vehicle.
SD Agent
SD agent method is able to deal with the incident of sudden braking. No collision of
vehicles is detected and the motion of the traffic is smooth. The traffic vehicles in the
lane behind the braking vehicle slow down, overtaking is not possible because of the
vehicles in the second lane. When the second lane is free, the vehicles behind change
the lane and overtake. Interesting situation appears when two of the vehicles begin to
overtake at almost the same time. In this case the vehicle that is ahead perceives the
overtaking vehicle behind and interrupts the overtaking maneuver and gives way to the
vehicle behind. All vehicles overtake the slow dummy vehicle in the end.
CHAPTER 4. EXPERIMENTS 35
The SD agents performed well in this scenario and subjectively the vehicles behaved
naturally.
ORCA Agent
ORCA agents also avoided collisions and let all the vehicles to overtake the slow vehicle.
The process of experiment is different. First the fact, that the ORCA agent does not
consider lanes is observable. So the passing close to the slow vehicle is performed. The
close passing make the overtaking vehicle to slow down. The slowing down causes a
so-called traffic wave (also called traffic shock) that almost lead to a collision.
The ORCA agent navigates the vehicle without considering lanes. The experiment is
collision free but the observed traffic shock caused less smooth performance.
4.3.1.2 Experiment II
This experiment is an extreme variant of the previous one. The dummy vehicle brakes
from 130 km/h until it is stopped.
SD Agent
There is also no collision in this experiment, on the other hand there are 4 vehicles that
get stuck.
The experiment progresses similarly to the previous one. The difference is that the
vehicles just behind the stopped vehicle must stop too. Then the vehicles are not capable
to accelerate again and overtake. This is the limitation of the method that is caused
partially by the reactive nature of the method and also by the fact that the set of possible
maneuvers is finite. The SD agent does a safety check of a maneuver but no planning
to detect possible deadlock after performing the maneuver. It can happen after stopping
that the only defined acceleration maneuver is not safe.
ORCA Agent
The summary of the experiment is that all the vehicles avoid collisions and are able to
overtake the stopped vehicle.
The video (for all videos see Appendix B.2) shows how the method can benefit from
not considering the lanes. The vehicles from both lanes behind the braking vehicle are
able to overtake at the same time. The stopped vehicle is positioned near the edge of the
highway, so the overtaking is possible for two vehicles in parallel.
CHAPTER 4. EXPERIMENTS 36
Let us note that the observed close passing by the stopped vehicle at high speeds is a
potential risk.
In this experiment the dummy vehicle models a slow vehicle (72km/h) on a highway. The
other vehicles are approaching at the speed of 130 km/h.
SD Agent
The experiment is collision free with no vehicles being stuck. The vehicles in the lane
behind the slow vehicle are again made to slow down. The vehicles in the faster lane do
not give them way. Not even the vehicles behind the slow vehicle take the risk to join
the faster lane. The behaviour is non-cooperative.
ORCA Agent
The ORCA agents are not able to prevent some collisions in this experiment. The collision
than causes a blockage on the highway.
The vehicles already experience troubles to approach the slow vehicle. The vehicles get
close to each other and slow down. Then the aggressive braking in the dense conditions
causes a collision of 5 vehicles. The maneuvers of a vehicle driven by ORCA agent are
quite aggressive. And the other vehicles have a problem to react to these aggressive
maneuvers.
4.3.1.4 Experiment IV
The last of the Imminent Collision Experiments is the experiment with a static vehicle.
The dummy vehicle is stopped in the right lane.
SD Agent
SD agent experiment is again collision free. The 4 stuck vehicles correspond to the
Experiment II where the dummy vehicle after braking stopped too.
We already mentioned that the SD agents are non-cooperative when merging, so the
vehicles in the lane behind the stopped vehicle must stop too.
There is another potential collision situation revealed. We already described that it
can happen that two vehicles decide to change lane simultaneously. Both of the vehicles
CHAPTER 4. EXPERIMENTS 37
are assuming the other lane is free. When one of the vehicles changing the lane perceives
the other one, it interrupts the lane change maneuver. This interruption makes the
vehicle to remain in the current lane. By that time it can be late to slow down to avoid
a collision with a vehicle ahead in the current lane. The time spent on the interrupted
lane changing can be then missing for the sufficient braking. The potential collision can
be seen in the end of the related video (see Appendix B.2).
ORCA Agent
There is no collision in this experiment. In contrast there are 6 vehicles unable to pass
by the stopped vehicle. The ORCA agents deals with the other vehicles close around by
slowing down. The vehicles perceive the stopped vehicle but are unable to overtake the
stopped vehicle. Here we should note that the stopped vehicle is perceived as an agent,
meaning that reciprocity is assumed by other agents. So no reciprocity from the stopped
vehicle complicates the task of the others. Second thing is that not even ORCA agent
is using long-term planning to avoid deadlocks. The current higher-level planner used
to provide the desired direction is only visibility graph planner considering only static
obstacles. The deadlocks are not avoided.
The extracted results of the experiments are summarized in the Table 4.3. We can
compare the tested collision avoidance methods by the criteria of collision presence and
by the count of vehicles that got stuck.
To summarize we can say that SD agent is better in preventing collisions with no
collision occurrence. ORCA agent does not prove to be collision free in scenarios similar
to our experiments. By observing ORCA agent driving, we state that ORCA control
actions are aggressive. The SD agent’s driving is smoother. For the purpose of modelling
natural behaviour of the traffic we would also choose SD agent for its smoother and
predictable behaviour.
SD agent can suffer from getting stuck as it is demonstrated in Experiments II and
IV. An application of a special maneuver designed to avoid getting stuck behind stopped
vehicle is our fture proposal to solve this problem.
Another discovered weakness is a simultaneous lane changing. Resolving this weakness
should not lead to the extensive restriction of the lane changing. Proper solution requires
deeper analysis of the lane change maneuver in future.
CHAPTER 4. EXPERIMENTS 38
4.3.2.1 Experiment V
The scenario of this experiment is simple. The driven vehicle accelerates up to 130km/h
and approaches slower vehicle ahead. There is no other traffic.
SD Agent
SD agent proposes to accelerate by visualizing a green ray in the heading direction. The
proposed lane is highlighted by the blue color. The green ray looses intensity as the
vehicle reaches the desired speed. The lane change proposal appears in advance while
approaching the slow vehicle.
ORCA Agent
Despite the simplicity of the experiment the output of the HMI interface is substantially
different. ORCA agent keeps distance between the driven and dummy vehicle. Driver
is instructed to approach dummy vehicle slowly. In meanwhile sudden hard braking
proposals appear. The navigation is less stable and mainly it does not instruct driver
to change lane. The driver is proposed not to overtake but to slow down and follow the
dummy vehicle.
The problem of no lane change proposal is related to the level of plan the ORCA agent
sends (see 3.2.2.1 for more details). ORCA agent sends plan on the Waypoint lavel. The
HMI interface is proposing speed and lane which is corresponding to the Maneuver level of
plan. A waypoint proposed by the ORCA agent must be mapped to a lane. The mapped
CHAPTER 4. EXPERIMENTS 39
lane is usually the current lane because the lane is given according to the waypoint’s
location. The waypoint usually doesn’t reach another lane.
4.3.2.2 Experiment VI
Experiment VI is similar to the previous experiment. Only the dummy vehicle is not
driving constantly slowly but breaks suddenly and stops.
SD Agent
SD agent reacts to the braking immediately by proposing lane change maneuver. In our
opinion the proposal comes earlier then a driver can realize the dummy vehicle is actually
braking.
ORCA Agent
The ORCA agent is not expected to propose a lane change maneuver after the findings
from the previous experiment. Nevertheless the instruction to apply brakes is clear and
convincing so the vehicle is stopped in time.
The Driver Assistance System is also tested with the traffic vehicles in this experiment.
The traffic is driven by the same agent that is used for HMI. The dummy vehicle slows
down from 130km/h to 72 km/h.
SD Agent
The navigation works in an expected way even in the presence of the traffic. The driven
vehicle is notably slower, it is overtaken by all the vehicles before it reaches the dummy
vehicle. Several times short braking is proposed. The driven vehicle is following the
dummy vehicle for a while before the instruction to change the lane appears. The execu-
tion of the plan by the driver is not so exact as is in the the autonomous traffic vehicles.
It leads to the slower drive and later overtaking in this experiment.
ORCA Agent
The most interesting in this experiment is to observe other traffic vehicles. The experi-
ment offers an insight to the group of vehicles driven by ORCA agent. When the vehicles
CHAPTER 4. EXPERIMENTS 40
overtake in the second lane nothing abnormal is registered. Interesting is the behaviour
of a vehicle behind the driven vehicle, that tries to closely overtake the driven vehicle.
Similar oscillating behaviour can be observed on the vehicle in front of the driven vehicle.
The vehicles accelerate, get closer to the other vehicle and at the level of the rear bumper
of the other vehicle suddenly slow down. In the end the situation leads to a collision of
the two traffic vehicles.
The experiment shows that driving by following the proposals of the driver assistance
system is feasible. The simple experiments reveal the differences in the navigation by
two different collision avoidance methods. The concept of the eventual user testing of the
HMI interface and connected CA module in this system is in our opinion applicable.
The Table 4.4 shows that following instructions of SD agent prevented collisions.
Using ORCA agent we observe a collision in the Experiment VII, but in this experiment
the collision is caused by the other traffic vehicles.
ORCA agent do not propose lane change maneuvers so no overtaking is possible
when the driver would strictly follow its instructions. OpenDS agent’s proposals lead to
more cautious driving (Experiment VII) but the driver is still approaching the desired
destination. SD agent proposes lane change if it is assumed to be safe.
Conclusion
In this chapter we summarize the contents of this thesis. We conclude the outputs of the
work. General results of the experiments are followed by the ideas and proposals for the
future work.
The goal of this thesis was to design and to implement a system that would allow
to integrate a collision avoidance techniques in a driving simulator. The purpose of the
concept is to allow to develop various collision avoidance techniques and to allow to
apply these techniques in an arbitrary driving simulator. The application of the collision
avoidance techniques is to control autonomous traffic and/or to advise a driver via a
driver assistance system interface in the simulator.
We studied and described state-of-the art of the driving simulators and also the re-
search on collision avoidance techniques relevant for our application. We implemented
a collision avoidance module and integrated and adapted two collision avoidance tech-
niques into the module. The module is developed as a part of the designed system.
Second main component of the system is the OpenDS simulator where we implemented
only the extensions to enable the integration. Our extensions implement: communica-
tion, plan execution for traffic and HMI interface for a driver. We also prepared a scene
and several scenarios to run the experiments in OpenDS. All the system is build on the
communication protocol we designed and implemented.
The experiments in general show that the system as it is designed can be used for re-
quired purposes. Collision avoidance module is able to navigate traffic using two different
methods of the collision avoidance. The safety and specific features of navigation depend
on the CA method implementation. The Safe Distance technique performed better than
the ORCA-based technique in the presented experiments. The comparison of the meth-
ods is possible in the system and possibilities of analysing the methods is revealed. The
41
CHAPTER 5. CONCLUSION 42
concept of the driving with the driver assistance system presenting the outputs of the
CA module is shown to be relevant. The system can be used for studies on the used CA
method suitability for HMI and even for HMI interface user testing.
[Bareiss and van den Berg(2014)] Daman Bareiss and J van den Berg. Recipro-
cal Control-Obstacles for Collision Avoidance of Multiple Robots with Non-
Homogeneous Non-Linear Dynamics. arl.cs.utah.edu, 2014. URL http://arl.cs.
utah.edu/pubs/ICRA2014-nhnlrca.pdf.
[Berg et al.(2010)Berg, Guy, Lin, and Manocha] Jur Van Den Berg, SJ Guy, Ming Lin,
and Dinesh Manocha. Reciprocal n-body collision avoidance. Robotics Re-
43
BIBLIOGRAPHY 44
[Brock and Khatib(1999)] O. Brock and O. Khatib. High-speed navigation using the
global dynamic window approach. Proceedings 1999 IEEE International Conference
on Robotics and Automation (Cat. No.99CH36288C), 1(May):341–346, 1999. doi: 10.
1109/ROBOT.1999.770002. URL http://ieeexplore.ieee.org/lpdocs/epic03/
wrapper.htm?arnumber=770002.
[Cowlagi and Peters(2013)] RV Cowlagi and SC Peters. Optimal motion planning with
the half-car dynamical model for autonomous high-speed driving. American Con-
trol . . . , 2013. URL http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=
6579835.
[Fiorini and Shiller(1998)] P Fiorini and Z Shiller. Motion planning in dynamic envi-
ronments using velocity obstacles. The International Journal of Robotics Research,
1998. URL http://ijr.sagepub.com/content/17/7/760.short.
[Guizzo(2011)] Erico Guizzo. How Google’s Self-Driving Car Works, 2011. URL
http://spectrum.ieee.org/automaton/robotics/artificial-intelligence/
how-google-self-driving-car-works.
[Snape and van den Berg(2011)] Jamie Snape and J van den Berg. The hybrid reciprocal
velocity obstacle. . . . , IEEE Transactions on, 27599(October):1–11, 2011. URL
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5746538.
BIBLIOGRAPHY 46
[van den Berg and Manocha(2008)] Jur van den Berg and Dinesh Manocha. Recip-
rocal Velocity Obstacles for real-time multi-agent navigation. 2008 IEEE Inter-
national Conference on Robotics and Automation, pages 1928–1935, May 2008.
doi: 10.1109/ROBOT.2008.4543489. URL http://ieeexplore.ieee.org/lpdocs/
epic03/wrapper.htm?arnumber=4543489.
[WHO(2013)] WHO. Global status report on road safety. 2013. URL http://www.who.
int/violence_injury_prevention/road_safety_status/2013/en/.
[Yu et al.(2012)Yu, Gong, Iagnemma, Jiang, and Duan] Hongxiao Yu, Jianwei Gong,
Karl Iagnemma, Yan Jiang, and Jianmin Duan. Robotic wheeled vehicle rip-
ple tentacles motion planning method. 2012 IEEE Intelligent Vehicles Sympo-
sium, pages 1156–1161, June 2012. doi: 10.1109/IVS.2012.6232292. URL http:
//ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6232292.
Appendix A
message Header{
required fixed32 size = 1;
}
message Message {
// One of the following will be filled in.
optional Update update = 1;
optional Plans plans = 2;
optional Init init = 3;
}
message Update {
required double updateTime = 1;
repeated Vehicle_update updates = 2;
}
message Vehicle_update{
required int32 vehicleId = 1;
required Vector position = 2;
required Vector velocity = 3;
I
APPENDIX A. PROTOCOL BUFFERS - SIMPLAN PROTOCOL II
message Plans {
required double timestamp = 1;
repeated Plan plans = 2;
}
message Plan {
required int32 vehicleId = 1;
repeated Action actions = 2;
}
message Action{
}
message Maneuver {
required double speed = 1;
required int32 lane = 2;
required double duration = 3;
}
message Waypoint{
required Vector position = 1;
required double speed = 2;
}
message Actuators{
optional double steer = 1;
optional double gas = 2;
APPENDIX A. PROTOCOL BUFFERS - SIMPLAN PROTOCOL III
Contents of attached CD
B.1 Sources
Sources of implemented system and other software used in the thesis is provided on the
attached CD.
B.2 Videos
All the videos are provided on the attached CD in the videos folder.
IV