blob: 1f253c20f2fac51e27ce044528b5a71299d7a9ab [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>Simulation User Guide &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="ProfilesCatalog" href="sim_user_guide/input/profilescatalog.html" />
<link rel="prev" title="GUI User Guide" href="10_gui_user_guide.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="current reference internal" href="#">Simulation User Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#intended-audience">Intended Audience</a></li>
<li class="toctree-l2"><a class="reference internal" href="#primer">Primer</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#inputs">Inputs</a></li>
<li class="toctree-l3"><a class="reference internal" href="#outputs">Outputs</a></li>
<li class="toctree-l3"><a class="reference internal" href="#component-view">Component View</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#inputs-in-depth">Inputs in Depth</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/profilescatalog.html">ProfilesCatalog</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/scenario.html">Scenario</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/scenery.html">Scenery</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/slaveconfig.html">SlaveConfig</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/staticsystemconfig.html">Static SystemConfig</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/input/systemconfigblueprint.html">SystemConfigBlueprint</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#outputs-in-depth">Outputs in Depth</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_log.html">Observation_Log</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_repository.html">Observation_EntityRepository</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#components-in-depth">Components in Depth</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/components/driver.html">Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/components/spawner.html">Spawner</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/components/vehicle.html">VehicleComponents</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#use-cases-examples">Use Cases Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/examples/basic.html">Basic Example</a></li>
</ul>
</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>Simulation User Guide</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/user_guide/20_sim_user_guide.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="simulation-user-guide">
<h1>Simulation User Guide<a class="headerlink" href="#simulation-user-guide" title="Permalink to this headline"></a></h1>
<div class="admonition-before-we-start admonition">
<p class="admonition-title">Before we start…</p>
<p>The official Working Group website of <strong>openPASS</strong> (Open Source) (<a class="reference external" href="https://openpass.eclipse.org/">https://openpass.eclipse.org/</a>) offers a lot of information, well suited for beginners.</p>
</div>
<p><strong>OpenPASS</strong> is a tool for executing a traffic based Monte-Carlo simulation and provides capabilities for the following two levels of variation:</p>
<ol class="arabic simple">
<li><p><strong>Experiment:</strong> Topmost, an experiment defines the domains of possible inputs, which shall be compared, such as <em>“traffic at high volume”</em> with <em>“traffic at low volume”</em>.
In this sense, a parameter variation is done at a very coarse level, resulting in two sets of inputs.
Note that this level is covered by the GUI (see <a class="reference internal" href="10_gui_user_guide.html#gui-user-guide"><span class="std std-ref">GUI User Guide</span></a>).</p></li>
<li><p><strong>Invocation:</strong> When an input-set is available, <strong>openPASS</strong> invokes a defined number of runs, resulting in a probabilistic sampling of the given state under parameterizable conditions.
For example, in the aforementioned situation <em>“traffic at high volume”</em>, it would generate participants at <em>“lower speeds”</em> and <em>“smaller gaps”</em>.
Thereby parameterizable means, that the user has the freedom to define probabilities defining <em>“lower speed”</em> and <em>“smaller gaps”</em>.
In each invocation, <strong>openPASS</strong> samples from these probabilities to generate a possible traffic situation under the given parameter variation.</p></li>
</ol>
<p>This guide primarily covers the aspect of the second tier, describing the parts an input-set and the expected output.</p>
<div class="section" id="intended-audience">
<h2>Intended Audience<a class="headerlink" href="#intended-audience" title="Permalink to this headline"></a></h2>
<p>This manual serves as an entry point for users who have an operational simulator at hand (see <a class="reference internal" href="../installation_guide/20_sim_installation_guide.html#sim-install-guide"><span class="std std-ref">Simulation Installation Guide</span></a>) and want to carry out (first) experiments at the invocation level (<em>GUI-less mode</em>).
In this sense, it primarily tackles how input-sets are composed, their interdependencies and, finally, the generated outputs.</p>
<img alt="|op| Workflow" src="../_images/workflow.png" />
<p>This image shows the <em>GUI-less</em> workflow, starting with the input-set, bundled together in a folder typically named <code class="docutils literal notranslate"><span class="pre">configs</span></code>.
The <code class="docutils literal notranslate"><span class="pre">core</span></code>, executed manually by the experimenter, processes these configs and generates an (configurable) output-set typically placed in a folder named <code class="docutils literal notranslate"><span class="pre">results</span></code>.
Thereby, the <strong>Simulation Output</strong> is again a set of files.</p>
</div>
<div class="section" id="primer">
<h2>Primer<a class="headerlink" href="#primer" title="Permalink to this headline"></a></h2>
<p>In the following the input and output sets are described with respect to the intended audience.
For detailed information please refer to the “in-depth” documentation of the individual files.</p>
<div class="section" id="inputs">
<h3>Inputs<a class="headerlink" href="#inputs" title="Permalink to this headline"></a></h3>
<p>The input is focused around the following files, with decreasing importance for the current audience.</p>
<ul>
<li><p><strong>Scenario</strong></p>
<p>This file describes the overall situation in terms of the <strong>ASAM OpenSCENARIO 1.0</strong> standard.
This includes placement of cars, the story (what happens when), how long the simulation will run.</p>
<p>On top it contains links to additionally needed files, where the following might need modification with respect to the current audience:</p>
<ul>
<li><p><strong>Scenery</strong> (<code class="docutils literal notranslate"><span class="pre">*.xosc</span></code>)</p>
<p>The <strong>scenery</strong> file, which follows the <strong>ASAM OpenDRIVE 1.6</strong> standard, describes the world in which the experiment runs, such as a highway, or a parking lot.
As such, it contains the description of the road network and any static object, such as traffic signs or obstacles.</p>
</li>
<li><p><strong>ProfilesCatalog</strong> (<code class="docutils literal notranslate"><span class="pre">*.xml</span></code>)</p></li>
</ul>
<blockquote>
<div><p>This catalog describes the profiles of moving participants and are the probabilistic heart of the simulation.
A profile could be a <strong>MiddleClassCar</strong>, and describes which components could be available with what probability.
Such components could be ADAS’s or sensors and as such, their parametrization is also found here.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>As <strong>OpenSCENARIO</strong> does not support probabilities (yet), this file is not conform to the standard.</p>
</div>
</div></blockquote>
<ul>
<li><p><strong>VehiclesCatalog</strong> and <strong>PedestriansCatalog</strong>: (<code class="docutils literal notranslate"><span class="pre">*.xosc</span></code>)</p>
<p>These catalogs, also based on <strong>OpenSCENARIO</strong>, describes the physical parameters of available vehicles or pedestrians, respectively.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Historically, the referenced files have carry an additional <em>Model</em> in the filename: <code class="docutils literal notranslate"><span class="pre">VehicleModelsCatalog.xosc</span></code> and <code class="docutils literal notranslate"><span class="pre">PedestrianModelsCatalog.xosc</span></code></p>
</div>
</li>
</ul>
</li>
<li><p><strong>SlaveConfig</strong> (<code class="docutils literal notranslate"><span class="pre">slaveConfig.xml</span></code>)</p>
<p>This is the entry point for the simulation, containing the setup of the core, such as active observers, reference to the scenario, the initial random seed, and the number or invocations.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This file is normally of limited interest.
Yet, some variations, such as <em>environmental conditions</em> are historically placed in here and not in the scenario description.
It is therefore recommended to study the contents of this file.</p>
</div>
</li>
<li><p><strong>SystemConfigBlueprint</strong> (<code class="docutils literal notranslate"><span class="pre">systemConfigBlueprint.xml</span></code>)</p>
<p>This file is contains a superset of all possible <em>components</em> and their valid connections.
Such components can be lateral and longitudinal controllers, assistance systems, prioritizers, driver models, and so on.
Depending on the configured profiles and their probabilities, the core picks a subset of components to create one complete <em>system</em>.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This file should not be changed without the proper (developer) expertise.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Instead of using an overall blueprint, concrete (static) systems can be specified using the same format.
These files are simply referred to as <code class="docutils literal notranslate"><span class="pre">SystemConfig</span></code> files.</p>
</div>
</li>
</ul>
<p>Some components need their own input files (e.g. a configuration).
It is convention to put these files also into the <code class="docutils literal notranslate"><span class="pre">configs</span></code> folder, which is internally provided as path to the components.
This helps to keep experiments separated.</p>
</div>
<div class="section" id="outputs">
<h3>Outputs<a class="headerlink" href="#outputs" title="Permalink to this headline"></a></h3>
<p>Outputs are generated by individual observers, configured by the <strong>SlaveConfig</strong>, and collected within the folder <cite>results</cite>.
This section describes the output files by the <a class="reference internal" href="sim_user_guide/output/observation_log.html#observation-log"><span class="std std-ref">Observation_Log</span></a>, as configured by the provided example configurations.</p>
<p>Please refer to the documentation of the individual observers and files for more details.</p>
<ul>
<li><p><strong>Simulation Output</strong> (<code class="docutils literal notranslate"><span class="pre">simulationOutput.xml</span></code>)</p>
<p>This file acts as central entry point for further evaluation, such as the visualization.
It contains central information about all executed invocations within an experiment, such as the executed scenario and the run results, which can be seen as current values from the random sampling of the given probabilities.
As such, each run result contains, a list of participating moving entities (also referred to as agents), events related to the entities, such as collisions or activation of ADAS’s, and a reference to the <em>cyclics file</em>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This file <strong>does not</strong> contain information about the actual position of agents.</p>
</div>
</li>
<li><p><strong>Cyclic Output</strong> (<code class="docutils literal notranslate"><span class="pre">Cyclics_Run_###.csv</span></code>)</p>
<p>This file contains the ground truth information for each agent at each time step.
For each invocation, a new file is generated (starting with <code class="docutils literal notranslate"><span class="pre">Cyclics_Run_000.csv</span></code> and referenced in the according run results in the <code class="docutils literal notranslate"><span class="pre">simulationOutput.xml</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This file <strong>does not</strong> contain information about the interaction between agents.</p>
</div>
</li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The core generates a file called <code class="docutils literal notranslate"><span class="pre">LogSlave.txt</span></code> at the execution path, which logs errors and warnings.
If the simulation behaves strange or did not produce any output, check this file.</p>
</div>
</div>
<div class="section" id="component-view">
<h3>Component View<a class="headerlink" href="#component-view" title="Permalink to this headline"></a></h3>
<p><strong>OpenPASS</strong> is divided into components, which can be roughly divided into <strong>core components</strong> and <strong>model components</strong>.
The most interesting core components are the individual <strong>spawners</strong>, which are responsible for populating the world in a realistic fashion.
Model components are again roughly divided into <strong>drivers</strong> and <strong>vehicle components</strong> and represent how an individual participant is composed.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>There are several additional components acting in the background, making sure things work as they should.
As a guideline, components parameterized through the <strong>ProfilesCatalog</strong> are scope of this guide, others not.</p>
</div>
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Todo</p>
<p>Move Inputs, Outputs, and Components to their own master section</p>
</div>
</div>
</div>
<div class="section" id="inputs-in-depth">
<h2>Inputs in Depth<a class="headerlink" href="#inputs-in-depth" title="Permalink to this headline"></a></h2>
<p>As described in the primer above, not all inputs might be of interest for the targeted audience.
Yet, for completeness, all potential input files shall be described here in detail.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/profilescatalog.html">ProfilesCatalog</a></li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/scenario.html">Scenario</a></li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/scenery.html">Scenery</a></li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/slaveconfig.html">SlaveConfig</a></li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/staticsystemconfig.html">Static SystemConfig</a></li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/input/systemconfigblueprint.html">SystemConfigBlueprint</a></li>
</ul>
</div>
</div>
<div class="section" id="outputs-in-depth">
<h2>Outputs in Depth<a class="headerlink" href="#outputs-in-depth" title="Permalink to this headline"></a></h2>
<p>As described in the primer above, simulation outputs are generated by the corresponding observers.
In the following, all potential outputs are described, grouped by the corresponding observers.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/output/observation_log.html">Observation_Log</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/output/observation_log.html#paramerization">Paramerization</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/output/observation_log.html#output-files">Output Files</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_log.html#simulationoutput">SimulationOutput</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_log.html#cyclics-run">Cyclics_Run_###</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/output/observation_repository.html">Observation_EntityRepository</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/output/observation_repository.html#parametrization">Parametrization</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/output/observation_repository.html#output-files">Output Files</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_repository.html#repository-run-csv">Repository_Run_###.csv</a></li>
<li class="toctree-l3"><a class="reference internal" href="sim_user_guide/output/observation_repository.html#repository-persistent-csv">Repository_Persistent.csv</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="components-in-depth">
<span id="simuserguide-components"></span><h2>Components in Depth<a class="headerlink" href="#components-in-depth" title="Permalink to this headline"></a></h2>
<p>In the following, all available components are described.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/components/driver.html">Driver</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/driver.html#algorithmagentfollowingdrivermodel">AlgorithmAgentFollowingDriverModel</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/components/spawner.html">Spawner</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/spawner.html#scenariospawner">ScenarioSpawner</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/spawner.html#prerunspawner">PreRunSpawner</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/spawner.html#runtimespawner">RuntimeSpawner</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/spawner.html#trafficgroups">TrafficGroups</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/components/vehicle.html">VehicleComponents</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/vehicle.html#aeb">AEB</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/vehicle.html#dynamicstrajectoryfollower">DynamicsTrajectoryFollower</a></li>
<li class="toctree-l2"><a class="reference internal" href="sim_user_guide/components/vehicle.html#sensorgeometric2d">SensorGeometric2D</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="use-cases-examples">
<h2>Use Cases Examples<a class="headerlink" href="#use-cases-examples" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="sim_user_guide/examples/basic.html">Basic Example</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="sim_user_guide/input/profilescatalog.html" class="btn btn-neutral float-right" title="ProfilesCatalog" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="10_gui_user_guide.html" class="btn btn-neutral float-left" title="GUI User Guide" 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>