<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Future Transp.</journal-id>
<journal-title>Frontiers in Future Transportation</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Future Transp.</abbrev-journal-title>
<issn pub-type="epub">2673-5210</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">894148</article-id>
<article-id pub-id-type="doi">10.3389/ffutr.2022.894148</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Future Transportation</subject>
<subj-group>
<subject>Technology and Code</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Modelling autonomous vehicle interactions with bicycles in traffic simulation</article-title>
<alt-title alt-title-type="left-running-head">Rampf et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/ffutr.2022.894148">10.3389/ffutr.2022.894148</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Rampf</surname>
<given-names>Felix</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2129584/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Grigoropoulos</surname>
<given-names>Georgios</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1679160/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Malcolm</surname>
<given-names>Patrick</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1845541/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Keler&#x2009;</surname>
<given-names>Andreas</given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Bogenberger</surname>
<given-names>Klaus</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1245966/overview"/>
</contrib>
</contrib-group>
<aff>
<institution>Chair of Traffic Engineering and Control</institution>, <institution>Technical University of Munich</institution>, <addr-line>Munich</addr-line>, <country>Germany</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/971653/overview">Jose Santa</ext-link>, Universidad Polit&#xe9;cnica de Cartagena, Spain</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/946658/overview">Aleksandar Stevanovic</ext-link>, University of Pittsburgh, United States</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2118899/overview">Johan Scholliers</ext-link>, VTT Technical Research Centre of Finland Ltd., Finland</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Georgios Grigoropoulos, <email>george.grigoropoulos@tum.de</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Connected Mobility and Automation, a section of the journal Frontiers in Future Transportation</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>04</day>
<month>01</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>3</volume>
<elocation-id>894148</elocation-id>
<history>
<date date-type="received">
<day>11</day>
<month>03</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>09</day>
<month>12</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Rampf, Grigoropoulos, Malcolm, Keler&#x2009; and Bogenberger.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Rampf, Grigoropoulos, Malcolm, Keler&#x2009; and Bogenberger</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>With the undeniable advance of automated vehicles and their gradual integration in day-today urban traffic, many new technologies have been developed that offer great potential for this emerging field of research. However, testing automated vehicle technologies in real road traffic with vulnerable road users (VRUs) is still a complicated and time consuming procedure. The virtual development and evaluation of automated vehicles using simulation tools offers a good opportunity to test new functions efficiently. However, existing models prove to be insufficient in modeling the interaction between autonomous vehicles and vulnerable road users such as bicyclists and pedestrians. In this paper, an automated vehicle model for microscopic traffic simulation tools is developed with the open-source traffic simulation software Simulation of Urban Mobility (SUMO) and evaluated in common traffic interaction scenarios with bicyclists. A controller model is proposed using different path-finding algorithms from the field of robotic and automated vehicle research, which covers all important control levels of a self-driving vehicle. Finally, its performance is compared to existing car-following and lane-changing models. Results showcase that the autonomous vehicle model achieves either comparable results or has a much steadier and more realistic driving behavior when compared to existing driving models while interacting with bicyclists. The whole source code developed over the course of this work is freely accessible at: <ext-link ext-link-type="uri" xlink:href="https://github.com/FlixFix/Kimarite">https://github.com/FlixFix/Kimarite.</ext-link>
</p>
</abstract>
<kwd-group>
<kwd>autonomous vehicle model</kwd>
<kwd>bicycle simulator</kwd>
<kwd>microscopic traffic simulation model</kwd>
<kwd>bicycle</kwd>
<kwd>simulation of urban mobility</kwd>
<kwd>simulator</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Testing of autonomous vehicle functions in real-world scenarios with Vulnerable Road Users (VRUs) such as bicyclists is a key stage on the way to developing fully functioning autonomous vehicles. Recently, evaluating vehicle models in simulation and virtual environments has become a very important intermediate step that reduces costs and avoids potential safety critical situations during the development phase. Virtual tests now include all the different components of a self-driving car. The different manufacturers partly rely on their own in-house simulations, but there are already many open-source programs on the market, some of which even support autonomous vehicle models, such as CARLA, developed by (<xref ref-type="bibr" rid="B3">Dosovitskiy et al., 2017</xref>). Microscopic traffic simulation tools such as Simulation of Urban Mobility (SUMO) (<xref ref-type="bibr" rid="B13">Lopez et al., 2018</xref>), VISSIM (<xref ref-type="bibr" rid="B15">PTV AG, 2016</xref>), and AIMSUN (<xref ref-type="bibr" rid="B2">Barcel&#xf3; and Casas, 2005</xref>), which are originally developed for the simulation of vehicle flows in microscopic traffic scenarios, still lack an interface to perform simulations with mixed traffic volumes composed of VRUs and autonomous vehicles. This paper proposes an autonomous vehicle model for use in microscopic traffic simulation focusing on modeling interactions with bicycle traffic. The proposed autonomous vehicle architecture is based on the four most important components of a self-driving car: Perception, Planning, Control, and Communication. Most importantly, the model integrates sensor models for the perception component that identify nearby simulated users and makes use of path-finding algorithms used predominately in the field of robotics and autonomous vehicle research for accomplishing driving tasks and interacting with bicycle traffic.</p>
<p>This paper is divided into three parts. At the beginning, the state of the art of the individual autonomous vehicle components is analyzed with regard to different functions of the model developed. In addition, various research approaches, such as the used path-finding algorithms, are examined. The developed autonomous vehicle model is based on the different components of a self-driving car: Perception, Planning, Control, and Communication. In order to test the implemented control logic and the interface with SUMO, four test scenarios where the autonomous vehicle model has to perform common driving tasks and interact with simulated bicyclists are developed, and the behavior of the vehicle model is examined. The behavior of the simulated bicycle agent in these scenarios is derived from the behavior of real test subjects that took part in bicycle simulator studies conducted at the Chair of Traffic Engineering and Control at the Technical University of Munich (TUM). Finally the performance and behavior of the autonomous vehicle model is compared to the existing car-following models (CFMs) and the lane changing models, which are already part of the SUMO simulation software. The driving behavior of the individual models is then assessed with key traffic safety and performance parameters. The proposed methodology is developed in the context of the @City Project, which aims to develop new automated driving functions for urban traffic scenarios.</p>
</sec>
<sec sec-type="methods" id="s2">
<title>2 Methods</title>
<sec id="s2-1">
<title>2.1 Simulation environments</title>
<p>Since newly developed automated vehicle functions can only be tested in combination with respective testing scenarios, various companies and open-source projects have already developed promising platforms for evaluations. For example, with the NVIDIA Drive Constellation, NVIDIA provides an open platform based on a virtual test fleet for the validation of autonomous vehicles <xref ref-type="bibr" rid="B14">NVIDIA (2019)</xref>. To evaluate the individual models, the solution relies on the key elements of simulation and the possibility of a subsequent replay allowing for data evaluation and analysis. CARLA is a software simulator for autonomous driving supporting development, training, and validation of autonomous urban driving systems. It supports different sensor specifications and environmental conditions combined with three self-driving approaches: a classic modular pipeline, an end-to-end model trained <italic>via</italic> imitation learning, and an end-to-end model trained <italic>via</italic> reinforcement learning (<xref ref-type="bibr" rid="B3">Dosovitskiy et al., 2017</xref>). It also offers an integration with SUMO and VISSIM for simulating traffic flow. These environments can be eventually integrated with physical simulators that enable interconnected studies with real test subjects assuming the role of a driver, pedestrian, or bicyclist. In order to study the behavior of bicyclists in traffic, a bicycle simulator is introduced <xref ref-type="bibr" rid="B7">Keler et al. (2018)</xref>. The bicycle simulator has the purpose of collecting trajectories of test subjects experiencing traffic scenarios, interacting with other simulated road users, and transport infrastructure. The bicycle simulator consists of a physical bicycle fitted with speed and steering sensors connected to a micro-controller, which sends the measurements to a model (MATLAB Simulink) within the driving simulation software DYNA4 from the company TESIS, part of Vector Informatic GmbH. Microscopic traffic simulation is handled by SUMO <italic>via</italic> a bridge module between SUMO and DYNA4. The bicycle simulator setup is presented in <xref ref-type="fig" rid="F1">Figure 1</xref> For increasing simulation accuracy and quality, the development of high quality models is of utmost importance. In microscopic traffic simulation software such as SUMO, VISSIM, and AIMSUN <xref ref-type="bibr" rid="B2">Barcel&#xf3; and Casas (2005)</xref> that can be coupled with simulators used for autonomous vehicle research such as CARLA or DYNA4, motor traffic is modeled through the implementation of car-following models that adapt the agent&#x2019;s behavior based on the position and speed of the leading vehicle. The lateral movement is usually adapted through a discrete lane choice model and in the case of mixed traffic simulation through the resolution of a traffic lane into sub-lanes or through non-lane-based behavior using the maximum longitudinal time to collision (TTC) to choose the lateral position along a lane <xref ref-type="bibr" rid="B13">Lopez et al. (2018)</xref>; <xref ref-type="bibr" rid="B15">PTV AG (2016)</xref>; <xref ref-type="bibr" rid="B4">Fellendorf and Vortisch (2010)</xref>; <xref ref-type="bibr" rid="B17">Semrau and Erdmann (2016)</xref>. Therefore, the integration of autonomous driving functions in the existing models becomes a difficult and time-consuming procedure, as it requires the adaptation of existing model functions. Additionally, the motion of the simulated agents remains confined by the resolution of the traffic space into lanes and other simulator-specific network elements, which in turn limits the simulation accuracy for advanced autonomous driving functions, especially in cases with interactions with other simulated agents.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>
<bold>(A)</bold> Bicycle simulator setup, <bold>(B)</bold> skeletal points extraction and depth field detection, <bold>(C)</bold> 3D simulator environment.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g001.tif"/>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 Basic autonomous agent model</title>
<p>In order to address the existing limitations identified in the literature review executed in the process of this project, an approach for modeling and studying autonomous vehicle and bicycle interactions is proposed. The proposed autonomous agent model relies on the four elements used in the development of autonomous vehicles Perception, Planning, Control, and Communication. In order to combine these controlling devices, the agent is fitted with a main Controlling Unit, which is responsible for connecting the various parts of the control in a main control system taking care of when to use specific sub-controllers. The main control loop is shown in <xref ref-type="fig" rid="F2">Figure 2</xref> given by <xref ref-type="statement" rid="algorithm_1">Algorithm 1</xref>. Its architecture is based on the general autonomous vehicle control components described in the literature review and the layout proposed in <xref ref-type="bibr" rid="B8">Kogan and Murray (2006)</xref>, extending it to work for implementation in a simulation software environment. The model is implemented in SUMO using the Traffic Control Interface (TraCI) that provides users the ability to modify the behavior of simulated objects and the simulation state in real-time <xref ref-type="bibr" rid="B19">Wegener et al. (2008)</xref>. Due to simplicity reasons, the autonomous vehicle physics have been reduced to a one-dimensional context neglecting lateral acceleration such as traversal velocity. This is tolerable in comparison with other CFMs since they are generally based on one-dimensional vehicle models.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>The developed Controlling Unit layout of the autonomous agent.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g002.tif"/>
</fig>
<p>
<statement content-type="algorithm" id="algorithm_1">
<label>Algorithm 1</label>
<p>The main control loop of the autonomous agent.<list list-type="simple">
<list-item>
<p>1 initialize()</p>
</list-item>
<list-item>
<p>
<bold>2 while</bold> <italic>not arrived</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>
<bold>3 Perceptor</bold>.find_conflicting_agents();</p>
</list-item>
<list-item>
<p>
<bold>4 PathPlanner</bold>.get_path() &#x2192; path;</p>
</list-item>
<list-item>
<p>
<bold>5 Controller</bold>.make_trajectory() &#x2192; trajectory;</p>
</list-item>
<list-item>
<p>
<bold>6 for</bold> <italic>i</italic> <bold>
<italic>in range</italic>
</bold>
<italic>(0, len(trajectory))</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>
<bold>7 Simulator</bold>.traci_step()</p>
</list-item>
<list-item>
<p>
<bold>8 if</bold> <italic>check_for_arrival()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>9 plot_results();</p>
</list-item>
<list-item>
<p>10 arrived &#x3d; True;</p>
</list-item>
<list-item>
<p>
<bold>11 break</bold>;</p>
</list-item>
<list-item>
<p>12 end</p>
</list-item>
<list-item>
<p>
<bold>13 Activator</bold>.conflict_agent_speed_changed();</p>
</list-item>
<list-item>
<p>
<bold>14 if <italic>Activator</italic>
</bold>
<italic>.agent_finished_overtaking()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>15 break</p>
</list-item>
<list-item>
<p>16 end</p>
</list-item>
<list-item>
<p>
<bold>17 if <italic>Activator</italic>
</bold>
<italic>.agent_passed_stopping_vehicle()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>18. break</p>
</list-item>
<list-item>
<p>19 end</p>
</list-item>
<list-item>
<p>
<bold>20 Perceptor</bold>.plot_and_sensor_update();</p>
</list-item>
<list-item>
<p>
<bold>21 Perceptor</bold>.find_conflicting_agents();</p>
</list-item>
<list-item>
<p>
<bold>22 if <italic>Interpreter</italic>
</bold>
<italic>.is_enabled</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>23 if <italic>Interpreter</italic>
</bold>
<italic>.check_for_conflict()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>24 break</p>
</list-item>
<list-item>
<p>25 end</p>
</list-item>
<list-item>
<p>
<bold>26 if <italic>Interpreter</italic>
</bold>
<italic>.check_for_junction_control()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>27 break</bold>;</p>
</list-item>
<list-item>
<p>28 end</p>
</list-item>
<list-item>
<p>
<bold>29 if <italic>Activator</italic>
</bold>
<italic>.acceleration_changed()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>30 break</bold>;</p>
</list-item>
<list-item>
<p>31 end</p>
</list-item>
<list-item>
<p>32 end</p>
</list-item>
<list-item>
<p>
<bold>33 if <italic>Perceptor</italic>
</bold>
<italic>.junction_in_view()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>34 break</bold>;</p>
</list-item>
<list-item>
<p>35 end</p>
</list-item>
<list-item>
<p>
<bold>36 if</bold> <italic>overtaking_enabled</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>37 if <italic>Interpreter</italic>
</bold>
<italic>.check_for_overtaking()</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>38 break</bold>;</p>
</list-item>
<list-item>
<p>39 end</p>
</list-item>
<list-item>
<p>40 end</p>
</list-item>
<list-item>
<p>41 end</p>
</list-item>
<list-item>
<p>42 end</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s2-3">
<title>2.3 Sensors and perceptor</title>
<p>The autonomous agent&#x2019;s path planning relies on the recognition of the lane borders along its route and the detection of other simulated agents. To sense its environment, the agent is fitted with a front camera model and a forward facing LiDAR sensor model. In reality, autonomous vehicles are fitted with many more perception hardware and sensors, however, this work only serves as a proof of concept and limits the sensor setup to a minimum in order to guarantee full functionality while saving computing cost. It is however possible for future applications to add additional sensors in different positions across the vehicle model and assess its performance with different sensor setups. To add the different sensors and cameras to the model, a local coordinate system, based on the agent&#x2019;s back right corner is first defined.</p>
<p>The LiDAR is modeled as a collection of rays with a set length joined to a sensor cone of a certain reach, coverage, and covering angle. A higher coverage results in a greater number of rays assigned to the sensor. To simulate the functionality of a radar, the frequency of the agent&#x2019;s sensor can also be set. For each sensor ray, the intersection point with the closest road border is calculated, set as the ray&#x2019;s endpoint, and identified as a definite road border data point. The algorithm principle is given by <xref ref-type="statement" rid="algorithm_2">Algorithm 2</xref>. During the time of active AV control, all this data gathered by the LiDAR sensor is recorded by the Controlling Unit&#x2019;s Data Monitor (see <xref ref-type="fig" rid="F2">Figure 2</xref>). In order to determine the agent&#x2019;s final path, the data points are labeled as either being on the left or right border of the agent&#x2019;s current driving lane. Therefore, the data points are checked beginning with the point closest to the agent and then moving along the data points always finding the closest neighbor to the current point. This procedure is repeated until the distance to the closest neighbor exceeds the current lane width. Once this criterion is met, the second closest, not-yet-labeled point to the agent&#x2019;s position is found and then processed as in the previous step, again until the distance exceeds the lane width. The high frequency of the sensor updates (given by the time step in SUMO, or, if set, the sensor&#x2019;s frequency) ensures sufficient input for the path planning process, even though the evaluation logic skips some data points. <xref ref-type="fig" rid="F4">Figure 4</xref> shows the described logic showing color-coded outputs.</p>
<p>
<statement content-type="algorithm" id="algorithm_2">
<label>Algorithm 2</label>
<p>The Border Derivation Algorithm<list list-type="simple">
<list-item>
<p>1 border &#x3d; list(closest_pt);</p>
</list-item>
<list-item>
<p>2 new_closest &#x3d; None;</p>
</list-item>
<list-item>
<p>3&#xa0;pt_to_remove &#x3d; 0;</p>
</list-item>
<list-item>
<p>
<bold>4 while</bold> <italic>sensor_data_pts is not empty</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>5&#xa0;min_dist &#x3d; inf;</p>
</list-item>
<list-item>
<p>6 closest_pt &#x3d; border[-1];</p>
</list-item>
<list-item>
<p>
<bold>7 for</bold> <italic>i in range(0, len(sensor_data_pts))</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>8 current_dist &#x3d; dist(closest_pt, sensor_data_pts[i]);</p>
</list-item>
<list-item>
<p>
<bold>9 if</bold> <italic>current_dist</italic> <inline-formula id="inf1">
<mml:math id="m1">
<mml:mo>&#x3c;</mml:mo>
</mml:math>
</inline-formula> <italic>min_dist</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>10 new_closest &#x3d; sensor_data_pts[i] min_dist &#x3d; current_dist;</p>
</list-item>
<list-item>
<p>11&#xa0;pt_to_remove &#x3d; i;</p>
</list-item>
<list-item>
<p>12 end</p>
</list-item>
<list-item>
<p>
<bold>13 if</bold> <italic>min_dist</italic> &#x2265; <italic>lane_width</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>14 break</bold>;</p>
</list-item>
<list-item>
<p>15 end</p>
</list-item>
<list-item>
<p>16 border.append(new_closest);</p>
</list-item>
<list-item>
<p>17 sensor_data_pts.remove(pt_to_remove)</p>
</list-item>
<list-item>
<p>18 end</p>
</list-item>
<list-item>
<p>19 end</p>
</list-item>
<list-item>
<p>
<bold>20 return</bold> <italic>border;</italic>
</p>
</list-item>
</list>
</p>
</statement>
</p>
<p>The Camera Sensor is modeled as a cone represented by a polygon, basically determining the agent&#x2019;s field of view. Every object that falls within the field of view polygon will be recognized by the agent and considered in the further planning process. The camera&#x2019;s specifications assume the ability to recognize nearby intersections, as well as the position, speed, and orientation at the current time step of nearby agents falling inside the cone of view. The sensor layout is presented in <xref ref-type="fig" rid="F3">Figure 3</xref> and a detailed example of the sensor setup in operation in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>The sensor layout of the autonomous agent used in this work.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g003.tif"/>
</fig>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>The visualisation of the sensor working principle including the projected trajectory. The thin red lines represent the LiDAR&#x2019;s recognition rays, with the thick red and green lines showing the derived left and right lane border and, ultimately, the proposed driving path given by the green chevrons.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g004.tif"/>
</fig>
<p>The Perceptor proceeds to classify all detected agents inside the field of view of the sensors so that the autonomous agent can react to them in the appropriate order. The classification developed in the course of this work is based on the conflicting vehicle&#x2019;s position and its orientation. It groups the detected agents into the following sets:<list list-type="simple">
<list-item>
<label>&#x2022;</label>
<p>Agents in View: all agents, which are currently inside the field of view</p>
</list-item>
<list-item>
<label>&#x2022;</label>
<p> Aligned Agents: all agents facing the same direction as the autonomous agent</p>
</list-item>
<list-item>
<label>&#x2022;</label>
<p> Oncoming Agents: all agents facing the opposite direction as the autonomous agent</p>
</list-item>
<list-item>
<label>&#x2022;</label>
<p> Agents to Yield: all agents approaching the autonomous agent from the right and, therefore, having the right of way, e.g. at intersections</p>
</list-item>
<list-item>
<label>&#x2022;</label>
<p> Minor Agents: agents, which are in the field of view, however, their role in the current traffic situation is rather minor due to, for example, their distance from the autonomous agent or because they are approaching from the left and, therefore, must yield to the autonomous agent</p>
</list-item>
</list>
</p>
<p>In order to keep a certain flexibility in assigning the conflict vehicle to a specific group, a deviation angle &#x394;<italic>&#x3d5;</italic> is introduced, so that vehicles traveling in the autonomous agent&#x2019;s direction or in a direction within a user specified interval will still be considered an aligned agent. The same principle is used for the other groups. All these sets are then sorted in an ascending manner according to the conflicting agent&#x2019;s distance to the autonomous agent. The logic is presented in <xref ref-type="fig" rid="F5">Figure 5</xref> given by <xref ref-type="statement" rid="algorithm_3">Algorithm 3</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>The sorting principle of conflicting agents.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g005.tif"/>
</fig>
<p>
<statement content-type="algorithm" id="algorithm_3">
<label>Algorithm 3</label>
<p>Get Agent Role Algorithm.<list list-type="simple">
<list-item>
<p>1 move_conflict_agent_to_origin();</p>
</list-item>
<list-item>
<p>2 rotate_conflict_agent_to_zero();</p>
</list-item>
<list-item>
<p>
<bold>3 if</bold> <italic>conflict_angle</italic> <inline-formula id="inf2">
<mml:math id="m2">
<mml:mo>&#x3c;</mml:mo>
</mml:math>
</inline-formula> <italic>0</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>4 conflict_angle &#x2b;&#x3d; 2 &#x2a;<italic>&#x3c0;</italic>;</p>
</list-item>
<list-item>
<p>//Takes care of negative angles</p>
</list-item>
<list-item>
<p>5 end</p>
</list-item>
<list-item>
<p>
<bold>6 if</bold> <italic>eps</italic> &#x2264; <italic>conflict_angle</italic> &#x2264; <italic>&#x3c0;</italic> <italic>- eps</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>
<bold>7 if</bold> <italic>conflict_agent_left_of_av_agent</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>8 conflict_role &#x3d; minor;</p>
</list-item>
<list-item>
<p>9 end</p>
</list-item>
<list-item>
<p>10 else</p>
</list-item>
<list-item>
<p>11 conflict_role &#x3d; yield;</p>
</list-item>
<list-item>
<p>12 end</p>
</list-item>
<list-item>
<p>13 end</p>
</list-item>
<list-item>
<p>
<bold>14 else if</bold> <italic>&#x3c0;</italic> <italic>- eps</italic> &#x2264; <italic>conflict_angle</italic> &#x2264; <italic>&#x3c0;</italic> <italic>&#x2b; eps</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>15 conflict_role &#x3d; oncoming;</p>
</list-item>
<list-item>
<p>16 end</p>
</list-item>
<list-item>
<p>
<bold>17 else if</bold> <italic>&#x3c0;</italic> <italic>&#x2b; eps</italic> &#x2264; <italic>conflict_angle</italic> <inline-formula id="inf3">
<mml:math id="m3">
<mml:mo>&#x3c;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c0;</mml:mi>
</mml:math>
</inline-formula> <italic>- eps</italic> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>18 conflict_role &#x3d; minor;</p>
</list-item>
<list-item>
<p>19 end</p>
</list-item>
<list-item>
<p>20 else</p>
</list-item>
<list-item>
<p>21 conflict_role &#x3d; aligned;</p>
</list-item>
<list-item>
<p>22 end</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s2-4">
<title>2.4 Interpreter</title>
<p>The Interpreter can be seen as the autonomous agent&#x2019;s brain. After the Perceptor recorded the agent&#x2019;s surrounding area, the Interpreter assesses the current situation based on the gathered input data. <xref ref-type="fig" rid="F6">Figure 6</xref> presents the decision tree of the Interpreter, with the yellow arrow illustrating the importance hierarchy of the various conflict checks. In comparison to existing car following models, the Interpreter also takes into account other simulated vehicles that are not directly in a leading position compared to the autonomous agent, as well as handling intersections and overtaking maneuvers.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>The developed Controlling Unit logic of the autonomous agent.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g006.tif"/>
</fig>
<p>The first check performed by the controlling unit is for imminent conflicts. The leading vehicle of the autonomous agent will always be the critical vehicle to react to in every traffic situation. Therefore, the check and ultimately the reaction to a conflicting aligned vehicle (conflict meaning within a certain distance to the autonomous agent) always wins over any decision made based on other conflicting vehicles. Obviously, the control value affected by a leading vehicle is the acceleration, or deceleration <italic>&#x3b1;</italic>
<sub>
<italic>ego</italic>
</sub> in case of a vehicle traveling at a lower velocity than the autonomous agent. The autonomous agent needs to always maintain a minimum gap <italic>x</italic>
<sub>min</sub> to the leading vehicle and aims for the same speed as the leading traffic participant. Since this paper focuses on the interaction with bicyclists this is a viable speed target and exceeding speed limits is not relevant (However, to address speed limits, the autonomous agent model is also configurable with a maximum speed limit). A re-planning of the autonomous agent&#x2019;s path will then take place whenever the leading vehicle&#x2019;s speed changes. Therefore, for the re-planning step, one can assume <italic>&#x3b1;</italic>
<sub>
<italic>conflict</italic>
</sub> &#x3d; 0. This results in the autonomous agent&#x2019;s change of position based on time and its change in velocity based on time specified by the following equations, which are all based on the fundamental laws of movement given in <xref ref-type="bibr" rid="B5">Gerlough and Huber (1975)</xref>:<disp-formula id="e1">
<mml:math id="m4">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(1)</label>
</disp-formula>
<disp-formula id="e2">
<mml:math id="m5">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>t</mml:mi>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>This equation system has a unique solution for the predicted time gap <italic>t</italic>
<sub>
<italic>mingap</italic>
</sub> it takes for the autonomous agent to reach the minimum tolerable distance <italic>x</italic>
<sub>
<italic>min</italic>
</sub>&#x2212;<italic>x</italic>
<sub>
<italic>conflict,i</italic>
</sub> to the leading agent and the respective acceleration <italic>&#x3b1;</italic>
<sub>
<italic>ego,i</italic>
</sub> given the current agent states, resulting in the following set of equations for any given time step <italic>i</italic>:<disp-formula id="e3">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">mingap,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#x2217;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(3)</label>
</disp-formula>
<disp-formula id="e4">
<mml:math id="m7">
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">mingap,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>In a second step, the check for an upcoming intersection is performed. This control module adjusts the agent&#x2019;s control in the vicinity of intersections. In case of a nearby intersection, the presence of an agent with right-of-way, and the absence of a leading agent, the autonomous agent&#x2019;s acceleration or deceleration <italic>a</italic>
<sub>
<italic>ego</italic>
</sub> will be adjusted in such a way that the time to arrival <italic>t</italic>
<sub>
<italic>ego,arr</italic>
</sub> is outside the time interval defined by the arrival time of the conflicting agent <italic>t</italic>
<sub>
<italic>conflict,arr</italic>
</sub> and a user-defined safety time gap <italic>t</italic>
<sub>
<italic>safety</italic>
</sub>. Given a nearby intersection and an agent with right-of-way, the autonomous agent&#x2019;s time to arrival <italic>t</italic>
<sub>
<italic>ego,arr,i</italic>
</sub> at any given time step <italic>i</italic> can be calculated as follows:<disp-formula id="e5">
<mml:math id="m8">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb1;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">intersection</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>Assuming an acceleration <italic>a</italic>
<sub>
<italic>conflict</italic>
</sub> &#x3d; 0 for the conflicting agent at the intersection, the arrival time of the agent to yield is:<disp-formula id="e6">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">intersection</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="" close=")">
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>Subsequently, an adjusted acceleration <italic>a</italic>
<sub>
<italic>ego,i&#x2b;1</italic>
</sub> for the autonomous agent is necessary, if the following criterion is met:<disp-formula id="e7">
<mml:math id="m10">
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">safety</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>If the autonomous agent&#x2019;s predicted arrival time is prior to the conflicting arrival time, the desired arrival time <italic>t</italic>
<sub>
<italic>des,arr,i</italic>
</sub> is given by:<disp-formula id="e8">
<mml:math id="m11">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">des,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">safety</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Unless the autonomous agent&#x2019;s predicted arrival time is later than the conflicting arrival time, in which case it is given by:<disp-formula id="e9">
<mml:math id="m12">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">des,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">safety</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>If the autonomous agent&#x2019;s predicted arrival time is prior to the conflict&#x2019;s arrival time, an acceleration is necessary&#x2014;or, in the case of a later arrival time, a deceleration&#x2014;which is calculated by:<disp-formula id="e10">
<mml:math id="m13">
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i&#x2b;1</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#x2217;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">intersection</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">des,arr,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">des,arr,i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>This logic allows for a continuous stream of traffic without the necessity to stop at intersections possibly causing delays and traffic jams in upstream traffic.</p>
<p>Finally the check for overtaking is performed. The overtaking logic implemented in this work imitates the driver&#x2019;s behavior in a real traffic situation. Provided a certain decision and sight distance to the leading vehicle in order to evaluate the overtaking situation, the Interpreter considers oncoming vehicles and upcoming intersections. To guarantee a safe manoeuvre, the autonomous agent must finish its overtaking with a safety gap <italic>x</italic>
<sub>
<italic>safety,1</italic>
</sub> to the vehicle to be overtaken and an additional safety gap <italic>x</italic>
<sub>
<italic>safety,2</italic>
</sub> to the oncoming vehicle, in order not to affect other traffic. Further, the maneuver must be finished before reaching a distance of <italic>x</italic>
<sub>min</sub> of any downstream intersection. First, the time necessary for an overtaking maneuver <italic>t</italic>
<sub>
<italic>m</italic>
</sub> is calculated at the overtaking maneuver initiation time step <italic>i</italic> &#x3d; 0:<disp-formula id="e11">
<mml:math id="m14">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,0</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,0</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(11)</label>
</disp-formula>
<disp-formula id="e12">
<mml:math id="m15">
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>&#xb1;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,0</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,0</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">safety,1</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>The necessary distance for the overtaking move is derived based on the time <italic>t</italic>
<sub>
<italic>m</italic>
</sub> and the maximum acceleration of the autonomous agent <italic>&#x3b1;</italic>
<sub>
<italic>ego,max</italic>
</sub> and given by the following equation:<disp-formula id="e13">
<mml:math id="m16">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>For the above stated safety reasons, the overtaking move will only be initiated, if the following criterion is met:<disp-formula id="e14">
<mml:math id="m17">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,0</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">oncoming,0</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">oncoming</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>In order to avoid unnecessary re-planning cycles, the Interpreter is fitted with an additional upstream Activator. The Activator tracks the agent&#x2019;s acceleration <italic>&#x3b1;</italic>
<sub>
<italic>ego,i&#x2212;1</italic>
</sub> in the previous time step <italic>i</italic>, as well as the current critical conflict vehicle, its speed <italic>v</italic>
<sub>
<italic>conflict,i&#x2212;1</italic>
</sub>, and the current traffic situation to be handled. Based on these parameters, the Interpreter can be switched off, so that the agent maintains its current driving state until a certain threshold in the change of the environment parameters is exceeded.</p>
</sec>
<sec id="s2-5">
<title>2.5 Path planner</title>
<p>The Path Planner&#x2019;s task is to derive a path considering the vehicle dynamic constraints based on the agent&#x2019;s surroundings such as intersections, obstacles, and most importantly lane borders. In a first step, it is necessary to derive the desired path from the start to the end position within the given road network. This initial control is equivalent to standard satellite navigation, which considers the entire road network and returns the shortest path from start to goal resulting in an ordered list of network nodes and edges to be passed. Planning is based on an A&#x2a; path finding algorithm presented in <xref ref-type="bibr" rid="B9">Koubaa et al. (2018)</xref>, which is an extension of Dijkstra&#x2019;s Algorithm, but achieves better performance with respect to time.</p>
<p>While driving, the agent&#x2019;s trajectory is calculated as the center-line using the left and right lane borders, which are recognized by the Perceptor, as reference. These functions assume no obstacles for the current lane such as vehicles parked along the side of the road. The path itself is a poly-line, not yet containing specific controlling information such as speed, time-based agent placement, or orientation. The actual driving behavior will be derived subsequently by the Controller.</p>
<p>In order to decouple the agent&#x2019;s path from a lane&#x2014;i.e., in order to pass a stopping vehicle due to oncoming traffic&#x2014;an RRT&#x2a; path planning algorithm with a subsequent Dubins Paths optimization has been proposed. Although it is possible to directly implement the agent&#x2019;s motion constraints within the RRT&#x2a; planning, the resulting path turns out very curvy (without optimization) and does not produce a feasible solution to the problem. Besides, it makes RRT&#x2a; a lot more computationally expensive compared to using simple straight edges. Therefore, an initial RRT&#x2a; motion planning without differential constraints is used in order to explore the configuration space <italic>C</italic> for a set number of iterations <italic>N</italic> or until a path to the target position <italic>z</italic>
<sub>
<italic>end</italic>
</sub> (the end of the intersection) is found. In a second step, the shortest path from the agent&#x2019;s position to the end of the intersection is split at <italic>z</italic>
<sub>
<italic>mid</italic>
</sub> in a 1:2 ratio, defined as the ratio of the number of nodes along the target path from the middle node to the target node and the number of nodes from the start node to the middle node calculated as the nearest integer. This results in two consecutive segments which are then converted into two Dubins curves&#x2014;comprising the actual desired path&#x2014;passing the obstructing vehicle <xref ref-type="bibr" rid="B12">LaValle (2006)</xref>. Despite the fact, that usually cloothoids are used in traffic engineering, this paper uses Dubins curves instead in order to provide a proof-of-concept while maintaining implementation simplicity. However, cloothoids can easily replace the current paths in further research. The minimum turning radius used for the resulting Dubins curves <italic>r</italic>
<sub>
<italic>ego,min</italic>
</sub> can be calculated, ignoring traversal jerk and maximum cornering acceleration, based on the Ackermann steering model and is dependent of the maximum steering angle <italic>&#x3d5;</italic>
<sub>
<italic>ego,max</italic>
</sub> given by the following equations <xref ref-type="bibr" rid="B11">Lavacs (2006)</xref>:<disp-formula id="e15">
<mml:math id="m18">
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,min</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>Resulting in a maximum curvature of:<disp-formula id="e16">
<mml:math id="m19">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,max</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>The end result is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>. The Dubins paths implementation used in this work is taken from <xref ref-type="bibr" rid="B16">Sakai et al. (2018)</xref>. A main advantage of the path planner is that the proposed methodology enables lane-free motion of the simulated autonomous agent in comparison to the existing models used in SUMO, where the lateral movement of vehicles is lane-based, typically simulated through discrete lane choice models or through the resolution of a traffic lane into sub-lanes <xref ref-type="bibr" rid="B17">Semrau and Erdmann (2016)</xref>.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Intersection passing path planning results combining RRT&#x2a; with dubins path. The green path represents the path, chosen by the RRT&#x2a; algorithm. The purple curve then gives the optimsed dubins path, whilst the white edges show the complete RRT&#x2a; output.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g007.tif"/>
</fig>
</sec>
<sec id="s2-6">
<title>2.6 Controlling</title>
<p>After the current traffic situation has been evaluated by the Interpreter and an appropriate path has been generated by the Path Planner, the Controller is responsible for creating the final trajectory for the upcoming time steps <italic>t</italic>
<sub>
<italic>i</italic>
</sub>: &#x2208; [0, <italic>T</italic>]. It consists of the actual positions <italic>x</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>) following the given path, the respective orientation <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>), and the anticipated speed <italic>v</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>). The control logic is based on the acceleration determined by the Interpreter for the current traffic situation and, additionally, the engine&#x2019;s limitations, such as the maximum acceleration and speed. The evaluation points <italic>x</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>) and orientations <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>) are indicated by markers, which are colour-coded based on the respective speed and can be annotated by the velocity for better examination.</p>
</sec>
<sec id="s2-7">
<title>2.7 Comparison of the agent&#x2019;s behavior to the existing driving models</title>
<p>In order to assess the driving behavior of the autonomous vehicle model in response to interactions with bicyclists, its trajectory will be compared to some of the existing driving models already implemented in SUMO. Therefore, in the developed scenarios the AV was replaced by agents controlled through SUMO using the following already implemented CFMs:<list list-type="simple">
<list-item>
<p>&#x2022; The Car Following Model Wiedemann 99, 10-Parameter version as implemented in SUMO (<xref ref-type="bibr" rid="B13">Lopez et al., 2018</xref>).</p>
</list-item>
<list-item>
<p>&#x2022; The Krauss Model with some modifications, which is the default model used in SUMO <xref ref-type="bibr" rid="B10">Krauss et al. (1997)</xref>.</p>
</list-item>
<list-item>
<p>&#x2022; The Intelligent Driver Model (IDM) <xref ref-type="bibr" rid="B18">Treiber and Kesting (2013)</xref>.</p>
</list-item>
</list>
</p>
<p>The CFMs are coupled with the SUMO sub-lane model <xref ref-type="bibr" rid="B17">Semrau and Erdmann (2016)</xref>. For the agents controlled by the three models defined in SUMO, corresponding vehicle types (<italic>vType</italic>) are created, which correspond in their properties to those of the autonomous agent. Arbitrary scenarios can therefore be simulated without using the autonomous vehicle control logic. Since both the behavior of the autonomous agent and the agents controlled by SUMO follow the default logic and the parameters of the critical agent have not been changed, making the tests deterministic, it was sufficient for the evaluation of the autonomous vehicle model to run through each test scenario only once. Further, this work is intended to develop a general autonomous vehicle framework to be used for further research and tests, so the proposed test scenarios only evaluate the basic functions of an autonomous vehicle. The behavior of the different agents is evaluated based on the scenario using key traffic parameters such as the average speed, maximum acceleration, maximum deceleration, waiting time, and time to collision <xref ref-type="bibr" rid="B6">Hou et al. (2014)</xref>. The <italic>TTC</italic> is a defined as:<disp-formula id="e17">
<mml:math id="m20">
<mml:mi>T</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>The required time to collision <italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> defined by the minimum safety gap, the current speed and acceleration<disp-formula id="e18">
<mml:math id="m21">
<mml:mi>T</mml:mi>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">req</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>&#xb1;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2217;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2217;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>y</mml:mi>
<mml:mtext>_</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>with<disp-formula id="e19">
<mml:math id="m22">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego,i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">conflict,i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>Given the current speed, a maximum braking deceleration is specified by SUMO <xref ref-type="bibr" rid="B13">Lopez et al. (2018)</xref>:<disp-formula id="e20">
<mml:math id="m23">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">brake</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>7.5</mml:mn>
<mml:mi>m</mml:mi>
<mml:mo>/</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>The Time To Stop (TTS) is then a function of:<disp-formula id="e21">
<mml:math id="m24">
<mml:mi>T</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ego</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">brake</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<sec id="s2-7-1">
<title>2.7.1 The bicycle simulator dataset</title>
<p>In order to assess the proposed autonomous vehicle model and compare its performance to existing models, trajectories gathered using the bicycle simulator described in <xref ref-type="bibr" rid="B7">Keler et al. (2018)</xref> are used. All the non-autonomous agents in this study are controlled based on these trajectories and not by any specific CFM. The bicyclist trajectories were gathered as part of a previous bicycle simulator study with 30 participants per scenario (This does not suffice for statistic significance, however, it gives a good starting test for a initial model), where test subjects were asked to perform common bicyclist maneuvers in mixed traffic conditions with motor vehicles. Three scenarios were examined for left turns, two scenarios for the crossing, and one scenario for right turns at an non-signalized intersection. Additional scenarios included the test subjects performing lane changing maneuvers along a road section and crossing a roundabout. These scenarios were specifically chosen in order to account for frequent urban traffic situations. The speed limit on all streets was set to 30&#xa0;km/h. For the purposes of this work and to account for all the simulator data, the autonomous agent&#x2019;s control logic has been tested with an average trajectory based on all thirty test subjects of each specific scenario. This has the advantage that noise from the orientation data points, which was quite common, could be eliminated. A correct and especially continuous orientation is very important, as the autonomous agent&#x2019;s interpretation ability relies on accurate agent orientation. Key scenarios are thoroughly described in the next subsections.</p>
</sec>
<sec id="s2-7-2">
<title>2.7.2 Scenario 1&#x2014;Simple following</title>
<p>The first scenario simulates a simple bicycle following scenario without any turning or overtaking desire by the involved agents. Both agents are simply moving along a straight road segment without any other vehicles to yield to or obstacles. When placed at their initial positions, the distance between the autonomous agent and the bicyclist is 120<italic>m</italic>. This is to ensure that the autonomous agent starts driving freely, not being influenced by the critical agent, since it is not within the field of view <xref ref-type="fig" rid="F8">Figure 8A</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>
<bold>(A)</bold> Scenario 1- Simple Following, <bold>(B)</bold> scenario 2&#x2014;Advanced Following, <bold>(C)</bold> scenario 3&#x2014;Intersection Passing, <bold>(D)</bold> scenario 4&#x2014;Overtaking.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g008.tif"/>
</fig>
</sec>
<sec id="s2-7-3">
<title>2.7.3 Scenario 2&#x2014;Advanced following</title>
<p>The goal of scenario 2 is to examine the autonomous agent&#x2019;s behavior when interacting with a stopping leading critical bicycle agent. Unlike the previous scenario, the bicycle agent starts already within the autonomous agent&#x2019;s field of view. Until reaching the minimum gap, the autonomous agent simply follows the leading critical agent until it comes to a stop. In order to simulate more realistic driving behavior, additionally to the safety gap, an absolute minimum gap is introduced, which results in a final approach up to this distance when the leading critical agent stops. For varying tests, the critical agent&#x2019;s stopping position as well as the anticipated stopping time can be defined, which has been set to 10<italic>s</italic> in this example (see <xref ref-type="fig" rid="F8">Figure 8B</xref>).</p>
</sec>
<sec id="s2-7-4">
<title>2.7.4 Scenario 3&#x2014;Junction passing</title>
<p>Scenario 3 requires the most advanced planning effort for the autonomous agent&#x2019;s driving behavior. The simulation setup is again based on a leading bicyclist and an additional intersecting agent traveling in the opposite direction of the autonomous agent. However, the bicyclist&#x2019;s desire to make a left turn in combination with the oncoming traffic leads to the critical agent stopping in the middle of the intersection, which is a very common scenario occurring at non-signalized intersections (see <xref ref-type="fig" rid="F8">Figure 8C</xref>). It is important to mention that the stopping of the preceding agent in both scenario 2 and scenario 3 was modeled using a reference coordinate, which was chose to be a fixed coordinate just before entering the intersecting lane representing the typical location a left-turning vehicle or cyclist would stop in order to let oncoming traffic pass. When passing this reference coordinate, the simulation causes the preceding agent to rather suddenly stop without taking into account physical limits such as realistic negative acceleration. As a result, the braking acceleration of the preceding vehicle reaches very high values as can be seen in <xref ref-type="fig" rid="F9">Figure 9B</xref> and <xref ref-type="fig" rid="F10">Figure 10B</xref>. Even if the stopping behavior of the bicyclist is therefore unrealistic, its implementation fulfills its purpose, since the scenario task for the autonomous agent is to pass a stationary obstacle at an intersection. The reason why and how the obstacle stopped is not important to evaluate the proposed autonomous agent model. The junction passing itself is modeled using an RRT&#x2a; algorithm excluding the bicyclists extended by a certain safety distance from the configuration space. The resulting path is optimized using dubins paths and in the following split into two sections in a 1:2 ratio in order to guarantee smooth driving behavior. The logic is shown in <xref ref-type="statement" rid="algorithm_4">Algorithm 4</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold> Resulting speed profiles for scenario 2, <bold>(B)</bold> resulting acceleration and deceleration profiles for scenario 2, <bold>(C)</bold> showing the distance to the leading agent for scenario 2, <bold>(D)</bold> showing the difference between the actual <italic>TTC</italic> and <italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> defined by the given minimum safety distance to the leading agent for scenario 2.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g009.tif"/>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>
<bold>(A)</bold> Resulting speed profiles for scenario 3, <bold>(B)</bold> resulting acceleration and deceleration profiles for scenario 3.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g010.tif"/>
</fig>
<p>
<statement content-type="algorithm" id="algorithm_4">
<label>Algorithm 4</label>
<p>Junction Vehicle Passing Algorithm.<list list-type="simple">
<list-item>
<p>1 InitializeRRT(<italic>C</italic>
<sub>
<italic>f</italic>
</sub>, <italic>C</italic>
<sub>
<italic>b</italic>
</sub>, <italic>z</italic>
<sub>
<italic>current</italic>
</sub>);</p>
</list-item>
<list-item>
<p>2 <italic>z</italic>
<sub>
<italic>end</italic>
</sub> &#x3d; RRTPlanning(<italic>N</italic>);</p>
</list-item>
<list-item>
<p>3 RenumberTargetPath(<italic>z</italic>
<sub>
<italic>end</italic>
</sub>);</p>
</list-item>
<list-item>
<p>4 <italic>z</italic>
<sub>
<italic>mid</italic>
</sub> &#x3d; GetNodeByNumber(int(<italic>z</italic>
<sub>
<italic>end</italic>
</sub>.<italic>nbr</italic>/3));</p>
</list-item>
<list-item>
<p>5 <italic>segment</italic>
<sub>1</sub> &#x3d; DubinsPath(<italic>z</italic>
<sub>
<italic>current</italic>
</sub>, <italic>z</italic>
<sub>
<italic>mid</italic>
</sub>, <italic>c</italic> &#x3d; <italic>c</italic>
<sub>
<italic>ego,max</italic>
</sub>);</p>
</list-item>
<list-item>
<p>6 <italic>segment</italic>
<sub>2</sub> &#x3d; DubinsPath(<italic>z</italic>
<sub>
<italic>mid</italic>
</sub>, <italic>z</italic>
<sub>
<italic>end</italic>
</sub>, <italic>c</italic> &#x3d; <italic>c</italic>
<sub>
<italic>ego,max</italic>
</sub>);</p>
</list-item>
<list-item>
<p>7 <italic>path</italic> &#x3d; Join(<italic>segment</italic>
<sub>1</sub>, <italic>segment</italic>
<sub>2</sub>);</p>
</list-item>
<list-item>
<p>
<bold>8 return </bold>
<italic>path</italic>
</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s2-7-5">
<title>2.7.5 Scenario 4&#x2014;Overtaking</title>
<p>Since in urban traffic situations, bicyclists and vehicles are often travelling at different speeds, overtaking maneuvers are quite common. A maximum overtaking speed and acceleration for the autonomous agent have already been defined. The maximum speed is extended to 15<italic>m</italic>/<italic>s</italic> and the maximum acceleration to 2<italic>m</italic>/<italic>s</italic>
<sup>2</sup> respectively. The scenario setup is presented in <xref ref-type="fig" rid="F8">Figure 8D</xref>.</p>
</sec>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>3 Results</title>
<sec id="s3-1">
<title>3.1 Testing setup</title>
<p>All tests were run under <italic>Windows 10 Pro N Version 1903</italic> using SUMO <italic>build v1_3_1&#x2b;0841-0db23d23c1</italic> and a machine with the following hardware specifications:<list list-type="simple">
<list-item>
<p>&#x2022; Processor: Intel Core i7-6700K CPU @ 4.00GHz</p>
</list-item>
<list-item>
<p>&#x2022; Memory: 16.0&#xa0;GB</p>
</list-item>
<list-item>
<p>&#x2022; GPU: GeForce GTX 1070 GPU @ 8&#xa0;GB GDDR5</p>
</list-item>
</list>
</p>
</sec>
<sec id="s3-2">
<title>3.2 Scenario 1&#x2014;Simple following</title>
<p>The main goal of the simple following scenario is to drive as close to the desired minimum gap and to reach a maximum average velocity throughout the simulation. Results show that the autonomous vehicle model drove at maximum average speed in comparison to the other CFMs (see <xref ref-type="fig" rid="F11">Figure 11A</xref>) while maintaining relatively low maximum acceleration and deceleration values, indicating a smooth driving (see <xref ref-type="fig" rid="F11">Figure 11B</xref>). In fact, the other CFMs show high deflections in acceleration especially when reaching a shorter distance to the leading agent. <xref ref-type="fig" rid="F11">Figure 11D</xref> shows <italic>TTC</italic>&#x2212;<italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> for the different vehicle models, which should be as close to zero as possible when reaching the minimum allowed gap. The autonomous agent successfully maintains a stable minimum distance to the leading vehicle.The constant switch between positive and negative acceleration, when reaching the minimum gap is due to the agents controller trying to adjust to the leading bicyclist&#x2019;s slightly changing speed.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>
<bold>(A)</bold> Resulting speed profiles for scenario 1, <bold>(B)</bold> resulting acceleration and deceleration profiles for scenario 1, <bold>(C)</bold> showing the distance to the leading agent for scenario 1, <bold>(D)</bold> showing the difference between the actual <italic>TTC</italic> and <italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> defined by the given minimum safety distance to the leading agent for scenario 1.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g011.tif"/>
</fig>
</sec>
<sec id="s3-3">
<title>3.3 Scenario 2&#x2014;Advanced following</title>
<p>
<xref ref-type="fig" rid="F9">Figure 9A</xref> shows the leading critical agent stopping at around 28<italic>s</italic>, resulting in the autonomous agent reaching the absolute minimum gap. The existing CFMs, although given the same safety gap as the autonomous agent, do not drive as closely to the minimum gap as possible, showing deviations almost twice the defined value (see <xref ref-type="fig" rid="F9">Figure 9B</xref>). However, the speeds are equally accurate to the bicyclist&#x2019;s speed for all the CFMs, shown in <xref ref-type="fig" rid="F9">Figure 9C</xref>.</p>
<p>When comparing the results of the autonomous agent to the existing models it becomes clear, that, even though existing models also perform a second approach upon the leading vehicle&#x2019;s stop, they do not drive closer to the critical agent than the minimum safety gap, resulting in rather unrealistic driving behavior. This ultimately leads to greater deviations of <italic>TTC</italic> from <italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> (See <xref ref-type="fig" rid="F9">Figure 9D</xref>). A drop in the autonomous agent&#x2019;s <italic>TTC</italic>&#x2212;<italic>TTC</italic>
<sub>
<italic>req</italic>
</sub> can also be found in <xref ref-type="fig" rid="F9">Figure 9D</xref>. This is due to the fact, that the autonomous agent has two safety gaps defined: A minimum safety gap, when driving in a fluid traffic situation and and absolute safety gap, when approaching and ultimately stopping behind a leading stopped traffic participant. The absolute safety gap, however, leads to a violation of the minimum required time to collision. After all, this does not lead to any dangerous situations and mimics realistic driving behavior.</p>
</sec>
<sec id="s3-4">
<title>3.4 Scenario 3&#x2014;Intersection passing</title>
<p>In this scenario, the stopping agent produces comparable deflections to the agent&#x2019;s acceleration in scenario 2. Its stopping position is denoted by a red dot in <xref ref-type="fig" rid="F10">Figure 10A</xref>. Unlike the other SUMO models, after entering the intersection and reaching its maximum tolerable stopping time, the autonomous agent begins a right-hand side overtaking maneuver at the intersection. This behavior is enabled by the path-planning module of the autonomous agent, which enables lane-free movement, in contrast to those of agents simulated by the simulation software, whose movement is limited to the available lane space. The simulation ends before the critical agent has fully left the intersection, hence the SUMO models do not continue their driving after they have come to a stop. Additionally as observed in <xref ref-type="fig" rid="F10">Figure 10C</xref> and <xref ref-type="fig" rid="F12">Figure 12</xref>, the IDM model fails to stop and passes through the simulated bicyclist. However, even the other SUMO CFMs seem to struggle with this scenario, shown by partly high deflections in their accelerations in <xref ref-type="fig" rid="F10">Figure 10B</xref>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>The trajectories of the autonomous agent in comparison to the other car models scenario 3.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g012.tif"/>
</fig>
<p>Regarding the total waiting times of the various CFMs, the AV model results in the lowest waiting time (2<italic>s</italic>), due to its ability to pass a stopped agent in comparison to Krauss (15.5<italic>s</italic>) and Wiedemann (9.7<italic>s</italic>). Although resulting in the lowest waiting time of (0<italic>s</italic>), the IDM agent&#x2019;s behavior is not considered correct, as it leads to a collision with the stopping critical agent. Another interesting observation is the deflection in the Krauss agent&#x2019;s speed in <xref ref-type="fig" rid="F10">Figure 10A</xref> at around 32<italic>s</italic>, which shows that the CFM first interprets the obstacle as negligible, but quickly after changes its decision and performs a stop as well, resulting in strong braking.</p>
</sec>
<sec id="s3-5">
<title>3.5 Scenario 4&#x2014;Overtaking</title>
<p>Since scenario 4 is also based on a straight road section, the highest possible average speed within the permissible maximum speed while reaching the target position as fast as possible is desirable. Due to a lack of oncoming traffic, an overtaking maneuver is the most logical consequence for the agents after they have reached the leading critical agent. However, none of the SUMO CFMs is capable of such a maneuver if it involves entering the oncoming lane. Thus, the SUMO agents simply follow the leading critical agent, maintaining a similar speed and safety distance, as shown in <xref ref-type="fig" rid="F13">Figures 13A,B</xref>. On the contrary, it is possible for the autonomous agent to perform an overtaking maneuver according to the proposed control logic, even when using the opposite lane. This results in a great difference in the autonomous agent&#x2019;s trajectory in comparison to the other vehicle models. Unlike the other scenarios, the CFMs perform fairly well in regards to their acceleration, shown in <xref ref-type="fig" rid="F13">Figure 13B</xref>, resulting in a maximum deceleration of &#x2212;2.9 <italic>m</italic>/<italic>s</italic>
<sup>2</sup>, which is the defined maximum braking deceleration for the SUMO agents not leading to uncomfortable driving behavior.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>
<bold>(A)</bold> Resulting speed profiles for scenario 4, <bold>(B)</bold> resulting acceleration and deceleration profiles for scenario 4.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g013.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>4 Discussion</title>
<sec id="s4-1">
<title>4.1 Limitations</title>
<p>The following design of a car following model primarily assumes correct driving behavior of other road users. Scenarios in which this behavior is violated or randomness, such as sensor failure or unnatural bike-riding behavior, were not considered in the concept design. Furthermore, individual modeling steps, such as that of a stopping preceding vehicle, lead to partially unrealistic driving behavior of the preceding vehicle due to their implementation. This limitation was accepted, however, in order to test certain functionalities of the developed car following model. Since the underlying study was based on bicyclists as interaction vehicles, such were also used as control vehicles in the design of the car following model. Nevertheless, all design concepts work with any type of control vehicle. A further limitation regarding the autonomous vehicle model is the simplification to a one-dimensional driving model resulting in the neglection of traversal jerk such as lateral acceleration, which becomes particularly important in the context of the path optimization used due to the Dubins curves. This leads to a simplified cornering behavior throughout the conducted simulations. Performance optimization was also not considered when implementing the autonomous agent&#x2019;s logic. Therefore, all simulations were performed on a single machine, which led to performance interference of the running simulation with the autonomous agent calculations. However, looking at <xref ref-type="fig" rid="F14">Figure 14</xref> and <xref ref-type="fig" rid="F15">Figure 15</xref> show the duration of the control unit&#x2019;s calculation duration against the threshold of 0.1&#xa0;s, which was the duration of one simulation time step within SUMO. This illustrates that no considerable input lag was introduced by the control logic apart from the path planning in scenario 3, which should be improved considering performance in further research.</p>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>Showing the duration of the different controlling steps during the simulation for scenarios 1, 2, and 4 against the time step duration threshold within SUMO, which was chosen to be 0.1&#xa0;s.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g014.tif"/>
</fig>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>Showing the duration of the different controlling steps during the simulation for scenario 3 against the time step duration threshold within SUMO, which was chosen to be 0.1&#xa0;s.</p>
</caption>
<graphic xlink:href="ffutr-03-894148-g015.tif"/>
</fig>
</sec>
<sec id="s4-2">
<title>4.2 Conclusion</title>
<p>In this work, an autonomous vehicle model based on current state of the art in robotics and autonomous vehicle research was presented and evaluated in the microscopic traffic simulation software SUMO for modeling interactions with bicyclists. The vehicle model features a navigation component, which connects to the microscopic traffic simulation software SUMO through a node edge representation and uses an A&#x2a; path planning algorithm to generate a path from the start to the target destination, returning all the lanes and intersections along the way. To account for more complex driving maneuvers in the presence of bicyclists, such as overtaking and passing, the autonomous agent is further fitted with an RRT&#x2a; path planner, which generates a path based on a given configuration space (i.e., the intersection area) converting it to a drivable trajectory based on dubins paths, given the limits defined by the vehicle dynamics model. In a second step, an example AV agent was assembled and tested in common traffic simulation scenarios in SUMO. To evaluate the developed model, the scenarios were also simulated with the autonomous agent replaced by vehicles, that use the existing car following models and the sub-lane model already implemented in SUMO. The derived simulation data was compared to resulting speed and acceleration profiles and to various key evaluation parameters specifically related to the respective scenario.</p>
<p>Results show, that the profiles of the autonomous agent match the profiles generated by the existing driving models that are part of SUMO and that the autonomous agent was able to drive much closer to the given thresholds than the agent models defined in SUMO, leading to a more realistic driving behavior, overall reduction in queuing times, and a potentially higher traffic density throughout the network. Additionally, the autonomous agent was able to perform overtaking maneuvers due to the lane-free path planning approach through the combined use of RRT&#x2a; and dubins paths. Thus, it outperformed the existing SUMO models in simulation scenarios, where the former are limited by the lane-based simulation approach and the junction model limitations in handling such interactions. This is a significant improvement, especially for modeling bicyclist interactions with autonomous vehicles. Also, the autonomous vehicle model achieves significantly more consistent acceleration and speed profiles compared to the existing SUMO CFMs in the presence of a bicyclist, which improves the simulation accuracy and quality.</p>
<p>The highly modular approach in the Controlling Unit&#x2019;s implementation allows for easy, uncoupled further research regarding the different control components. It is also possible for users to modify the proposed model components by integrating existing methods and developing and testing their own new methods for autonomous vehicle operation and navigation in traffic environments. Given the stable driving in the tested traffic scenarios, an evaluation of the behavior in more complex scenarios, possibly with several conflict agents, would be interesting. Regarding scenario generation, a coupling with <xref ref-type="bibr" rid="B1">Alekszejenk&#xf3; and Dobrowiecki (2019)</xref> seems possible. To make use of the inter-vehicle and network communication, the agent model could be tested in scenarios with several autonomous agents communicating either with each or other with nearby intersections. It would also be interesting to evaluate overall network utilization taking into account autonomous, non-autonomous vehicles, and bicycle traffic. Finally, considering the results of the first two test scenarios, which are mainly defined by the vehicle following behavior, it becomes clear that the vehicle model developed in this work represents a realistic alternative to the CFMs already defined in SUMO. In further research and development work, this logic could therefore possibly be implemented directly in SUMO as a new CFM called Kimarite. The whole source code developed over the course of this work is freely accessible under: <ext-link ext-link-type="uri" xlink:href="https://github.com/FlixFix/Kimarite">https://github.com/FlixFix/Kimarite</ext-link>.</p>
</sec>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s5">
<title>Data availability statement</title>
<p>The datasets presented in this study can be found in online repositories. The names of the repository/repositories and accession number(s) can be found below: <ext-link ext-link-type="uri" xlink:href="https://github.com/FlixFix/Kimarite">https://github.com/FlixFix/Kimarite</ext-link>.</p>
</sec>
<sec id="s6">
<title>Ethics statement</title>
<p>Written informed consent was obtained from Patrick Malcolm for the publication of any potentially identifiable images or data included in this article.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>The authors confirm contribution to the paper as follows: study conception and design: GG and FR, data collection: PM, GG, AK, and FR; analysis and interpretation of results: FR and GG; draft manuscript preparation: GG, PM, FR, and KB. All authors reviewed the results and approved the final version of the manuscript.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>Federal Ministry for Economic Affairs and Energy of Germany (BMWi), based on a decision taken by the German Bundestag, grant number 19A17015B.</p>
</sec>
<ack>
<p>This work is part of the research project @CITY&#x2014;Automated Cars and Intelligent Traffic in the City. The project is supported by the Federal Ministry for Economic Affairs and Energy of Germany (BMWi). The authors are solely responsible for the content of this publication.</p>
</ack>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alekszejenk&#xf3;</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dobrowiecki</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Sumo based platform for cooperative intelligent automotive agents</article-title>. <source>EPiC Ser. Comput.</source> <volume>62</volume>, <fpage>107</fpage>&#x2013;<lpage>123</lpage>. <pub-id pub-id-type="doi">10.29007/sc13</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Barcel&#xf3;</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Casas</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2005</year>). &#x201c;<article-title>Dynamic network simulation with aimsun</article-title>,&#x201d; in <source>Simulation approaches in transportation analysis</source> (<publisher-loc>New York, United States</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>57</fpage>&#x2013;<lpage>98</lpage>.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dosovitskiy</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Codevilla</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Lopez</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Koltun</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>CARLA: An open urban driving simulator</article-title>,&#x201d; in <conf-name>Conference on Robot Learning (CoRL 2017)</conf-name>, <conf-loc>Mountain View, United States</conf-loc>. <comment>
<italic>arXiv preprint arXiv:1711.03938</italic>
</comment>.</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Fellendorf</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vortisch</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>Microscopic traffic flow simulator VISSIM</article-title>,&#x201d; in <source>Fundamentals of traffic simulation</source> (<publisher-loc>New York, United States</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>63</fpage>&#x2013;<lpage>93</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Gerlough</surname>
<given-names>D. L.</given-names>
</name>
<name>
<surname>Huber</surname>
<given-names>M. J.</given-names>
</name>
</person-group> (<year>1975</year>). <source>Traffic flow theory: A monograph</source>. <publisher-name>Transportation Research Board, National Research Council</publisher-name>.</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hou</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>List</surname>
<given-names>G. F.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>New algorithms for computing the time-to-collision in freeway traffic simulation models</article-title>. <source>Comput. Intell. Neurosci.</source> <volume>2014</volume>, <fpage>1</fpage>&#x2013;<lpage>8</lpage>. <pub-id pub-id-type="doi">10.1155/2014/761047</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Keler</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kaths</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chucholowski</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Chucholowski</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Grigoropoulos</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Spangler</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). &#x201c;<article-title>A bicycle simulator for experiencing microscopic traffic flow simulation in urban environments</article-title>,&#x201d; in <conf-name>IEEE Conference on Intelligent Transportation Systems, Proceedings, ITSC</conf-name>, <conf-loc>Maui, HI, USA</conf-loc>, <conf-date>04-07 November 2018</conf-date>. <pub-id pub-id-type="doi">10.1109/ITSC.2018.8569576</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Kogan</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Murray</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>Optimization-based navigation for the DARPA grand challenge</article-title>,&#x201d; in <conf-name>Conference on Decision and Control (CDC)</conf-name>.</citation>
</ref>
<ref id="B9">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Koubaa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bennaceur</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Chaari</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Trigui</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ammar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sriti</surname>
<given-names>M.-F.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). &#x201c;<article-title>Introduction to mobile robot path planning</article-title>,&#x201d; in <source>Robot path planning and cooperation</source> (<publisher-loc>New York, United States</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>3</fpage>&#x2013;<lpage>12</lpage>.</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Krauss</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Wagner</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Gawron</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>1997</year>). <article-title>Metastable states in a microscopic model of traffic flow</article-title>. <source>Phys. Rev. E - Stat. Phys. Plasmas, Fluids, Relat. Interdiscip. Top.</source> <volume>55</volume>, <fpage>5597</fpage>&#x2013;<lpage>5602</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRevE.55.5597</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lavacs</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>A 2D car physics model based on Ackermann steering</article-title>,&#x201d; in <source>Institute of distributed and multimedia systems</source> (<publisher-loc>Vienna</publisher-loc>: <publisher-name>University of Vienna</publisher-name>).</citation>
</ref>
<ref id="B12">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>LaValle</surname>
<given-names>S. M.</given-names>
</name>
</person-group> (<year>2006</year>). <source>Planning algorithms</source>. <publisher-loc>Cambridge, New York</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</citation>
</ref>
<ref id="B13">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lopez</surname>
<given-names>P. A.</given-names>
</name>
<name>
<surname>Behrisch</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bieker-walz</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Erdmann</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Fl</surname>
<given-names>Y.-p.</given-names>
</name>
<name>
<surname>Hilbrich</surname>
<given-names>R.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). &#x201c;<article-title>Microscopic traffic simulation using SUMO</article-title>,&#x201d; in <conf-name>2018 21st International Conference on Intelligent Transportation Systems (ITSC)</conf-name>, <conf-loc>Maui, Hawaii, USA</conf-loc>, <conf-date>04-07 November 2018</conf-date>, <fpage>2575</fpage>&#x2013;<lpage>2582</lpage>. <pub-id pub-id-type="doi">10.1109/ITSC.2018.8569938</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<collab>NVIDIA</collab> (<year>2019</year>). <source>Virtual reality autonomous vehicle validation platform</source> <publisher-loc>Silicon Valley</publisher-loc>: <publisher-name>NVIDIA&#x2019;s GPU Technology Conference (GTC)</publisher-name>.</citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<collab>PTV AG</collab> (<year>2016</year>). <source>PTV vissim 9</source>. <publisher-loc>Karlsruhe</publisher-loc>: <publisher-name>PTV, AG</publisher-name>.</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sakai</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ingram</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Dinius</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chawla</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Raffin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Paques</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>PythonRobotics: A Python code collection of robotics algorithms</article-title>. <comment>
<italic>arXiv preprint arXiv:1808.10703</italic>
</comment>.</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Semrau</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Erdmann</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Simulation framework for testing ADAS in Chinese traffic situations</article-title>,&#x201d; in <conf-name>Proceedings of the 2016 SUMO User Conference</conf-name>, <conf-loc>Berlin, Germany</conf-loc>, <conf-date>May 23&#x2013;25, 2016</conf-date>
</citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Treiber</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kesting</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2013</year>). <source>Traffic flow dynamics: Data, models and simulation</source>. <publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer-Verlag Berlin Heidelberg</publisher-name>.</citation>
</ref>
<ref id="B19">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Wegener</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Piorkowski</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Maxim</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Hellbr&#xfc;ck</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Fischer</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hubaux</surname>
<given-names>J.-P.</given-names>
</name>
</person-group> (<year>2008</year>). &#x201c;<article-title>TraCI : An interface for coupling road traffic and network simulators</article-title>,&#x201d; in <conf-name>Proceedings of the 11th communications and networking simulation symposium</conf-name>, <conf-loc>Ottawa, Canada</conf-loc>, <conf-date>April 14 - 17, 2008</conf-date>, <fpage>155</fpage>&#x2013;<lpage>163</lpage>.</citation>
</ref>
</ref-list>
</back>
</article>