blob: 95f51be028cd2eac9e2f5c849525f57cd6cd6ee8 [file] [log] [blame]
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Spawner &mdash; OpenPASS Documentation</title>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/openPASS.ico"/>
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="VehicleComponents" href="vehicle.html" />
<link rel="prev" title="Driver" href="driver.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> openPASS
<img src="../../../_static/openPASS.png" class="logo" alt="Logo"/>
</a>
<div class="version">
9999.9999.9999
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Installation Guides</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../installation_guide/10_gui_installation_guide.html">GUI Installation Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../installation_guide/20_sim_installation_guide.html">Simulation Installation Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../installation_guide/21_pcm_installation_guide.html">PCM Installation Guide</a></li>
</ul>
<p class="caption"><span class="caption-text">User Guides</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../10_gui_user_guide.html">GUI User Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../20_sim_user_guide.html">Simulation User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../20_sim_user_guide.html#intended-audience">Intended Audience</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../20_sim_user_guide.html#primer">Primer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../20_sim_user_guide.html#inputs-in-depth">Inputs in Depth</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../20_sim_user_guide.html#outputs-in-depth">Outputs in Depth</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../20_sim_user_guide.html#components-in-depth">Components in Depth</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="driver.html">Driver</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Spawner</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#scenariospawner">ScenarioSpawner</a></li>
<li class="toctree-l4"><a class="reference internal" href="#prerunspawner">PreRunSpawner</a></li>
<li class="toctree-l4"><a class="reference internal" href="#runtimespawner">RuntimeSpawner</a></li>
<li class="toctree-l4"><a class="reference internal" href="#trafficgroups">TrafficGroups</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="vehicle.html">VehicleComponents</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../20_sim_user_guide.html#use-cases-examples">Use Cases Examples</a></li>
</ul>
</li>
</ul>
<p class="caption"><span class="caption-text">Advanced topics</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../advanced_topics/10_documentation.html">Documentation Concept</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../advanced_topics/20_simulator_advanced.html">Simulator</a></li>
</ul>
<p class="caption"><span class="caption-text">Other Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../license.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">openPASS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="../../20_sim_user_guide.html">Simulation User Guide</a> &raquo;</li>
<li>Spawner</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/user_guide/sim_user_guide/components/spawner.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="spawner">
<span id="components-spawner"></span><h1>Spawner<a class="headerlink" href="#spawner" title="Permalink to this headline"></a></h1>
<p id="components-scenariospawner">Spawners are responsible to populate the world.
In order to do so, several spawners can be used, whereas only the <strong>ScenarioSpawner</strong> is mandatory.</p>
<div class="section" id="scenariospawner">
<h2>ScenarioSpawner<a class="headerlink" href="#scenariospawner" title="Permalink to this headline"></a></h2>
<p>The ScenarioSpawner is responsible for spawning Ego and Scenario vehicles as defined in the Scenario configuration file.
It is only called once initially and is <strong>mandatory</strong> for each simulation.
This Spawner should trigger before any other Spawners.</p>
<p>The ScenarioSpawner has no parameters.</p>
<p>Behavior:</p>
<ul class="simple">
<li><p>In order to spawn correctly, a position for each Ego and Scenario vehicle is necessary, normally coming from the scenario (recommended).
As the position is <em>optional</em> in openSCENARIO it is possible that it is <strong>not defined</strong>.
In such cases spawning takes place at <code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">=</span> <span class="pre">0</span></code> and <code class="docutils literal notranslate"><span class="pre">y</span> <span class="pre">=</span> <span class="pre">0</span></code>.</p></li>
<li><p>If there is no route defined in the Scenario, the Spawner will set a random route starting at the spawning position.</p></li>
<li><p>If there are multiple lanes at this position (this is only possible on junctions) it will take the lane with the lowest relative heading.</p></li>
</ul>
</div>
<div class="section" id="prerunspawner">
<span id="components-prerunspawner"></span><h2>PreRunSpawner<a class="headerlink" href="#prerunspawner" title="Permalink to this headline"></a></h2>
<p>The PreRunSpawner is responsible for populating the scenery/world with Common-Agents before the simulator starts.
This Spawner only acts once before the simulator starts and not during the simulation run.
The PreRunSpawner needs a list of SpawnPoints that define where it will spawn agents and a list of weighted <a class="reference internal" href="#components-trafficgroups"><span class="std std-ref">TrafficGroups</span></a> that defines the type and parameters of the spawned agents.
The SpawnPoints have the following parameters:</p>
<table class="tight-table docutils align-default">
<colgroup>
<col style="width: 8%" />
<col style="width: 11%" />
<col style="width: 4%" />
<col style="width: 77%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Parameter</p></th>
<th class="head"><p>Type</p></th>
<th class="head"><p>Unit</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Roads</p></td>
<td><p>StringVector</p></td>
<td></td>
<td><p>The RoadIDs of the Roads on which to spawn Agents.
Multiple roads can be given as a comma-separated list.
Inexistent roads are ignored.</p></td>
</tr>
<tr class="row-odd"><td><p>Lanes</p></td>
<td><p>IntVector</p></td>
<td></td>
<td><p>The LaneIDs of the Lanes of the Road on which to spawn Agents.
Multiple lanes can be given as a comma-separated list.
Inexistent lanes are ignored.</p></td>
</tr>
<tr class="row-even"><td><p>SStart</p></td>
<td><p>Double</p></td>
<td><p>m</p></td>
<td><p>The S position specifying the minimum S for the range within which to spawn Agents</p></td>
</tr>
<tr class="row-odd"><td><p>SEnd</p></td>
<td><p>Double</p></td>
<td><p>m</p></td>
<td><p>The S position specifying the maximum S for the range within which to spawn Agents</p></td>
</tr>
</tbody>
</table>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;Profile</span> <span class="na">Name=</span><span class="s">&quot;DefaultPreRunCommon&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;List</span> <span class="na">Name=</span><span class="s">&quot;SpawnPoints&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;StringVector</span> <span class="na">Key=</span><span class="s">&quot;Roads&quot;</span> <span class="na">Value=</span><span class="s">&quot;1&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;IntVector</span> <span class="na">Key=</span><span class="s">&quot;Lanes&quot;</span> <span class="na">Value=</span><span class="s">&quot;-1,-2,-3,-4,-5&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;SStart&quot;</span> <span class="na">Value=</span><span class="s">&quot;0.0&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;SEnd&quot;</span> <span class="na">Value=</span><span class="s">&quot;1000.0&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;/List&gt;</span>
<span class="nt">&lt;List</span> <span class="na">Name=</span><span class="s">&quot;TrafficGroups&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;4&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Reference</span> <span class="na">Type=</span><span class="s">&quot;TrafficGroup&quot;</span> <span class="na">Name=</span><span class="s">&quot;LightVehicles&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;1&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Reference</span> <span class="na">Type=</span><span class="s">&quot;TrafficGroup&quot;</span> <span class="na">Name=</span><span class="s">&quot;HeavyVehicles&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;/List&gt;</span>
<span class="nt">&lt;/Profile&gt;</span>
</pre></div>
</div>
<p>The PreRunCommonSpawner will spawn common agents on the specified Lanes of the specified Road from the s position S-Start to the s position S-End based on the parameters of the TrafficGroups.
The following restrictions apply:</p>
<ul>
<li><dl class="simple">
<dt>The PreRunCommonSpawner only spawns on the following OpenDRIVE lane types:</dt><dd><ul class="simple">
<li><p>Driving</p></li>
<li><p>OnRamp</p></li>
<li><p>OffRamp</p></li>
<li><p>ConnectingRamp</p></li>
</ul>
</dd>
</dl>
</li>
<li><p>If the ScenarioSpawner spawned Scenario Agents (including the Ego agent) before this Spawner is triggered (in the intended order of these Spawners), ranges between the Scenario Agents are invalid for spawning by this Spawner.
The spawn ranges will only be augmented by Scenario Agents on the same Road and Lane.
As such, there are 7 different potential scenarios that may arise in terms of how the valid spawn ranges of the spawner may be impacted:</p>
<ol class="arabic">
<li><p><strong>Two Scenario Agents on the same Road and Lane</strong></p>
<p>One before S-Start position and one after S-End position:
This invalidates the entirety of the spawning range; no agents may be spawned here</p>
</li>
<li><p><strong>Two Scenario Agents on the same Road and Lane</strong></p>
<p>One between S-Start position and S-End position and one either before S-Start or after S-End:
The only valid spawn range is that on the opposite side of the in-specified-range Agent from the outside-specified-range agent</p>
</li>
<li><p><strong>Two Scenario Agents on the same Road and Lane</strong></p>
<p>Both within the specified S-Start and S-End positions
The valid spawn ranges are between S-Start and the first car and between the second car and S-End</p>
</li>
<li><p><strong>Two Scenario Agents on the same Road and Lane</strong></p>
<p>Both outside the specified S-Start and S-End positions on the same side (both before S-Start or both after S-End):
The specified spawn range is entirely valid</p>
</li>
<li><p><strong>One Scenario Agent on the same Road and Lane</strong></p>
<p>Within specified S-Start and S-End positions:
The valid spawn ranges include all but the bounds of the Agent within the specified S-Start and S-End positions</p>
</li>
<li><p><strong>One Scenario Agent on the same Road and Lane</strong></p>
<p>Outside specified S-Start and S-End positions:
The specified spawn range is entirely valid</p>
</li>
<li><p><strong>No Scenario Agents on the same Road and Lane</strong></p>
<p>The specified spawn range is entirely valid</p>
</li>
</ol>
</li>
<li><p>If a non-existent road is specified, no spawning will occur</p></li>
<li><p>If only non-existent lanes for an existent road are specified, no spawning will occur</p></li>
<li><p>If some specified lanes exist and some are non-existent for an existent road, spawning will occur for the lanes which do exist</p></li>
<li><p>If the specified S-Start and S-End positions are either beyond or before the S positions at which the specified Road and Lane combination exists, no spawning will occur</p></li>
<li><p>In the situation where a section of a Road adds a new lane to the left of the currently existing lanes, one should be aware that the laneId “-1” will shift to the newest left lane and should adjust Spawner profiles with this in mind</p></li>
</ul>
<p>Once the spawning ranges are determined the PreRunSpawner will spawn for each spawning area based on the following logic:</p>
<ol class="arabic simple">
<li><p>First the agentprofile needs to be determined. If the current spawn position evaluate to a right lane, the pool from which the agentprofile is drafted is extended by all traffic groups which contain the RightLaneOnly flag set to true.</p></li>
<li><p>Then the time gap between the new agent and the closest existing agent is sampled.</p></li>
<li><p>Afterwards the velocity of the new agent is being sampled under consideration of the homogeneity.</p></li>
<li><p>The gap and velocity are used to calculate the distance between the new agent and the next agent in this spawnarea. Here a minimum distance of 5m between agents is required.</p></li>
<li><p>A random route is sampled starting at the appropriate road</p></li>
<li><p>Based on the distance and the velocity the TTC (2s) conditions are evaluated.If the TTC is critical the spawn velocity is reduced to fulfill the TTC requirements.</p></li>
<li><p>As a final step the spawnpoint evaluates the spawncoordinates. If they are valid the agent is created, else the spawnpoint moves on to the next spawning range.</p></li>
</ol>
</div>
<div class="section" id="runtimespawner">
<span id="components-runtimespawner"></span><h2>RuntimeSpawner<a class="headerlink" href="#runtimespawner" title="Permalink to this headline"></a></h2>
<p>The RuntimeSpawner (included in library “SpawnPointRuntimeCommon_OSI”) is responsible for maintaining a populated scenery throughout the simulation runtime.
It acts at each timestep throughout the simulation run and attempts to spawn Common Agents at the specified location(s).
The RuntimeSpawner needs a list of Spawners that define where it will spawn agents and a list of weighted <a class="reference internal" href="#components-trafficgroups"><span class="std std-ref">TrafficGroups</span></a> that defines the type and parameters of the spawned agents.
The Spawners have the following parameters:</p>
<table class="tight-table docutils align-default">
<colgroup>
<col style="width: 11%" />
<col style="width: 14%" />
<col style="width: 5%" />
<col style="width: 70%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Parameter</p></th>
<th class="head"><p>Type</p></th>
<th class="head"><p>Unit</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Roads</p></td>
<td><p>StringVector</p></td>
<td></td>
<td><p>The RoadIDs of the Roads on which to spawn Agents</p></td>
</tr>
<tr class="row-odd"><td><p>Lanes</p></td>
<td><p>IntVector</p></td>
<td></td>
<td><p>The LaneIDs of the Lanes of the Road on which to spawn Agents</p></td>
</tr>
<tr class="row-even"><td><p>S-Position</p></td>
<td><p>Double</p></td>
<td><p>m</p></td>
<td><p>The S position specifying at which point to spawn Agents</p></td>
</tr>
</tbody>
</table>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;Profile</span> <span class="na">Name=</span><span class="s">&quot;DefaultRuntimeCommon&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;List</span> <span class="na">Name=</span><span class="s">&quot;SpawnPoints&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;StringVector</span> <span class="na">Key=</span><span class="s">&quot;Roads&quot;</span> <span class="na">Value=</span><span class="s">&quot;1&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;IntVector</span> <span class="na">Key=</span><span class="s">&quot;Lanes&quot;</span> <span class="na">Value=</span><span class="s">&quot;-1,-2,-3,-4,-5&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;SCoordinate&quot;</span> <span class="na">Value=</span><span class="s">&quot;0.0&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;/List&gt;</span>
<span class="nt">&lt;List</span> <span class="na">Name=</span><span class="s">&quot;TrafficGroups&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;4&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Reference</span> <span class="na">Type=</span><span class="s">&quot;TrafficGroup&quot;</span> <span class="na">Name=</span><span class="s">&quot;LightVehicles&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;1&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Reference</span> <span class="na">Type=</span><span class="s">&quot;TrafficGroup&quot;</span> <span class="na">Name=</span><span class="s">&quot;HeavyVehicles&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;/List&gt;</span>
<span class="nt">&lt;/Profile&gt;</span>
</pre></div>
</div>
<p>The RuntimeSpawner will spawn based on the following logic:</p>
<ul class="simple">
<li><p>First the agentprofile needs to be determined. If the current spawn position evaluates to a right lane, the pool from which the agentprofile is drafted is extended by all traffic groups which contain the RightLaneOnly flag set to true.</p></li>
<li><p>Then the time gap between the new agent and the closest existing agent is sampled.</p></li>
<li><p>Afterwards the velocity of the new agent is being sampled under consideration of the homogeneity.</p></li>
<li><p>A random route is sampled starting at the appropriate road</p></li>
<li><p>Once the timely gap expires, the spawnpoint evaluate if the TTC (2s) conditions and a minimum required distance between agents (5m) are met. If the TTC is critical the spawn velocity is reduced to fullfill the TTC requriements. If the minimum distance is not fullfilled, the agent will be held back.</p></li>
<li><p>If all requirements were fullfilled the agent is spawned.</p></li>
</ul>
<p>The RuntimeSpawner only spawns on the following OpenDRIVE lane types: Driving, OnRamp</p>
</div>
<div class="section" id="trafficgroups">
<span id="components-trafficgroups"></span><h2>TrafficGroups<a class="headerlink" href="#trafficgroups" title="Permalink to this headline"></a></h2>
<p>Both the <a class="reference internal" href="#components-prerunspawner"><span class="std std-ref">PreRunSpawner</span></a> and the <a class="reference internal" href="#components-runtimespawner"><span class="std std-ref">RuntimeSpawner</span></a> need one or more TrafficGroup.
These are typically defined in a separate ProfileGroup of type “TrafficGroup” and then reference by the spawner profile.
In this way both spawner can use the same TrafficGroups.</p>
<table class="tight-table docutils align-default">
<colgroup>
<col style="width: 7%" />
<col style="width: 7%" />
<col style="width: 2%" />
<col style="width: 85%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Parameter</p></th>
<th class="head"><p>Type</p></th>
<th class="head"><p>Unit</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>AgentProfiles</p></td>
<td><p>&lt;List&gt;</p></td>
<td></td>
<td><p>A set of &lt;ListItem&gt;s which define potential AgentProfile values for the Agents spawned in the SpawnArea and the probability at which the TrafficVolume will be selected</p></td>
</tr>
<tr class="row-odd"><td><p>Velocity</p></td>
<td><p>Distribution</p></td>
<td><p>m/s</p></td>
<td><p>A stochastic distribution describing the velocity of the spawned Agents</p></td>
</tr>
<tr class="row-even"><td><p>TGap</p></td>
<td><p>Distribution</p></td>
<td><p>s</p></td>
<td><p>A stochastic distribution describing the time gap between spawned Agents</p></td>
</tr>
<tr class="row-odd"><td><p>Homogeneity</p></td>
<td><p>DoubleVector</p></td>
<td></td>
<td><p>OPTIONAL: A vector describing the velocity increments for left lanes</p></td>
</tr>
<tr class="row-even"><td><p>RightLaneOnly</p></td>
<td><p>Bool</p></td>
<td></td>
<td><p>OPTIONAL: A flag determining whether this TrafficGroup can only be applied to the right most lane</p></td>
</tr>
</tbody>
</table>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;Profile</span> <span class="na">Name=</span><span class="s">&quot;LightVehicles&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;List</span> <span class="na">Name=</span><span class="s">&quot;AgentProfiles&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;String</span> <span class="na">Key=</span><span class="s">&quot;Name&quot;</span> <span class="na">Value=</span><span class="s">&quot;LuxuryClassCarAgent&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;0.4&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;ListItem&gt;</span>
<span class="nt">&lt;String</span> <span class="na">Key=</span><span class="s">&quot;Name&quot;</span> <span class="na">Value=</span><span class="s">&quot;MiddleClassCarAgent&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;Double</span> <span class="na">Key=</span><span class="s">&quot;Weight&quot;</span> <span class="na">Value=</span><span class="s">&quot;0.6&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/ListItem&gt;</span>
<span class="nt">&lt;/List&gt;</span>
<span class="nt">&lt;NormalDistribution</span> <span class="na">Key=</span><span class="s">&quot;Velocity&quot;</span> <span class="na">Max=</span><span class="s">&quot;43.685&quot;</span> <span class="na">Mean=</span><span class="s">&quot;31.475&quot;</span> <span class="na">Min=</span><span class="s">&quot;19.265&quot;</span> <span class="na">SD=</span><span class="s">&quot;6.105&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;LogNormalDistribution</span> <span class="na">Key=</span><span class="s">&quot;TGap&quot;</span> <span class="na">Max=</span><span class="s">&quot;80&quot;</span> <span class="na">Min=</span><span class="s">&quot;0.5&quot;</span> <span class="na">Mu=</span><span class="s">&quot;1.5&quot;</span> <span class="na">Sigma=</span><span class="s">&quot;1.7&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;DoubleVector</span> <span class="na">Key=</span><span class="s">&quot;Homogeneity&quot;</span> <span class="na">Value=</span><span class="s">&quot;0.820, 1.0&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/Profile&gt;</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="vehicle.html" class="btn btn-neutral float-right" title="VehicleComponents" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="driver.html" class="btn btn-neutral float-left" title="Driver" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021 OpenPASS Working Group.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>