blob: 366475c83998d592edbaa03fd5c0d70de67799de [file] [log] [blame]
<!DOCTYPE html><html lang="en-us" >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="generator" content="Source Themes Academic 4.8.0">
<meta name="author" content="Fraunhofer FOKUS">
<meta name="description" content="This section presents the architecture and the main features of the Application Simulator as well as the related Mapping Ambassador, which is used to configure individual simulation entities (or simulation units) and &ldquo;map&rdquo; applications to them.">
<link rel="alternate" hreflang="en-us" href="https://www.eclipse.org/mosaic/docs/simulators/application_simulator/">
<meta name="theme-color" content="#68145C">
<script src="/mosaic/js/mathjax-config.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.8.6/css/academicons.min.css" integrity="sha512-MCWBwPSput2UWNwyznVFLbD2iUc1e5VsdD1zahsWVzkDSUzyHhMZ4kCS3wgYSRm0mU+glwD/Q9lSJrDPwbUL2A==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-1/css/all.min.css" integrity="sha512-ZYg+hQvLlM0W9C3P6vTpes5LmJ66G2EsroxDNzwD6qiulckldb29eD9I672HL2X+LH5nRhY1sQqZLJGB+aUUPg==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css" integrity="sha512-H9jrZiiopUdsLpg94A333EfumgUBpO9MdbxStdeITo+KEIMaNfHNvwyjjDJb+ERPaRS6DpyRlKbvPUasNItRyw==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-light.min.css" crossorigin="anonymous" title="hl-light">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-light.min.css" crossorigin="anonymous" title="hl-dark" disabled>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.2.2/lazysizes.min.js" integrity="sha512-TmDwFLhg3UA4ZG0Eb4MIyT1O1Mb+Oww5kFG0uHqXsdbyZz9DcvYQhKpGgNkamAI6h2lGGZq2X8ftOJvF/XjTUg==" crossorigin="anonymous" async></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.1.0/es5/tex-chtml.min.js" integrity="sha512-uwL1UtpYdWra2iqJlAW8Ts0s9Os6IxWLDJDF/BnWdhDmT7DEMFba3GPsFwmV3QiTNcUyl2GB5vsgycB/MOvo9g==" crossorigin="anonymous" async></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,400i,700,700i%7CRoboto+Mono&display=swap">
<link rel="stylesheet" href="/mosaic/css/academic.css">
<link rel="manifest" href="/mosaic/index.webmanifest">
<link rel="icon" type="image/png" href="/mosaic/images/icon_hu6bdfb97c7e23190c70e41ca0e15a9fce_30436_32x32_fill_lanczos_center_2.png">
<link rel="apple-touch-icon" type="image/png" href="/mosaic/images/icon_hu6bdfb97c7e23190c70e41ca0e15a9fce_30436_192x192_fill_lanczos_center_2.png">
<link rel="canonical" href="https://www.eclipse.org/mosaic/docs/simulators/application_simulator/">
<meta property="twitter:card" content="summary">
<meta property="og:site_name" content="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility">
<meta property="og:url" content="https://www.eclipse.org/mosaic/docs/simulators/application_simulator/">
<meta property="og:title" content="Application Simulator | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility">
<meta property="og:description" content="This section presents the architecture and the main features of the Application Simulator as well as the related Mapping Ambassador, which is used to configure individual simulation entities (or simulation units) and &ldquo;map&rdquo; applications to them."><meta property="og:image" content="https://www.eclipse.org/mosaic/images/logo.svg">
<meta property="twitter:image" content="https://www.eclipse.org/mosaic/images/logo.svg"><meta property="og:locale" content="en-us">
<meta property="article:published_time" content="2019-05-05T00:00:00&#43;01:00">
<meta property="article:modified_time" content="2019-05-05T00:00:00&#43;01:00">
<title>Application Simulator | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility</title>
</head>
<body id="top" data-spy="scroll" data-offset="70" data-target="#TableOfContents" class=" page-mosaic page-docs page-simulators page-application_simulator ">
<aside class="search-results" id="search">
<div class="container">
<section class="search-header">
<div class="row no-gutters justify-content-between mb-3">
<div class="col-10 col-md-3">
<div class="logo" style="background-image: url(/mosaic/img/logos/mosaic/EclipseMOSAIC-Logo-RGB-positiv.svg)"></div>
</div>
<div class="col-2 col-md-4 col-search-close">
<a class="js-search" href="#"><i class="fas fa-times-circle text-muted" aria-hidden="true"></i></a>
</div>
</div>
<div id="search-box">
<input name="q" id="search-query" placeholder="Search..." autocapitalize="off"
autocomplete="off" autocorrect="off" spellcheck="false" type="search">
</div>
</section>
<section class="section-search-results">
<div id="search-hits">
</div>
</section>
</div>
</aside>
<nav class="navbar navbar-expand-lg navbar-light compensate-for-scrollbar" id="navbar-main">
<div class="container">
<div class="d-none d-lg-inline-flex">
<a style="visibility:visible;" class="navbar-brand" href="/mosaic/"><img src="/mosaic/images/logo.svg" alt="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"></a>
</div>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-content-mobile" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span><i class="fas fa-bars"></i></span>
</button>
<div class="navbar-brand-mobile-wrapper d-inline-flex d-lg-none">
<a class="navbar-brand" href="/mosaic/"><img src="/mosaic/images/logo.svg" alt="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"></a>
</div>
<div id="navbar-content" class="navbar-collapse main-menu-item collapse justify-content-start">
<ul class="navbar-nav d-md-inline-flex">
<li class="nav-item">
<a class="nav-link " href="/mosaic/about/"><span>About</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/news/"><span>News</span></a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/mosaic/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/tutorials/"><span>Tutorials</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/download/"><span>Download</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/community/"><span>Community</span></a>
</li>
</ul>
</div>
<ul class="nav-icons navbar-nav flex-row ml-auto d-flex pl-md-2">
<li class="nav-item">
<a class="nav-link js-search" href="#" aria-label="Search"><i class="fas fa-search" aria-hidden="true"></i></a>
</li>
<li class="nav-item ">
<a href="https://github.com/eclipse/mosaic" target="blank">
<i class="fab fa-github" aria-hidden="true"></i>
</a>
</li>
</ul>
<div id="navbar-content-mobile" class="navbar-collapse main-menu-item collapse justify-content-start d-lg-none">
<ul class="navbar-nav d-inline-flex">
<li class="nav-item">
<a class="nav-link " href="/mosaic/about/"><span>About</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/news/"><span>News</span></a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/mosaic/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/tutorials/"><span>Tutorials</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/download/"><span>Download</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/community/"><span>Community</span></a>
</li>
</ul>
</div>
</div>
</nav>
<div class="docs container">
<div class="row flex-xl-nowrap">
<div class="docs-sidebar col-12 col-md-3 col-xl-3">
<div class="docs-version">
<a class="" data-bs-toggle="tooltip" data-bs-placement="bottom" title="The documentation corresponds to the latest version of Eclipse MOSAIC 20.1-SNAPSHOT." href="https://github.com/eclipse/mosaic">
<i class="fab fa-github"></i>&nbsp;Eclipse MOSAIC 20.1-SNAPSHOT
</a>
</div>
<form class="docs-search d-flex align-items-center">
<button class="btn docs-toggle d-md-none p-0 mr-3" type="button" data-bs-toggle="collapse" data-bs-target="#docs-nav" aria-controls="docs-nav" aria-expanded="false" aria-label="Toggle section navigation">
<span><i class="fas fa-bars"></i></span>
</button>
<input name="q" type="search" class="form-control" placeholder="Search..." autocomplete="off">
</form>
<nav class="collapse docs-links" id="docs-nav">
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/getting_started/">Getting Started</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/getting_started/">Download</a>
</li>
<li >
<a href="/mosaic/docs/getting_started/run_mosaic/">Run Eclipse MOSAIC</a>
</li>
<li >
<a href="/mosaic/docs/getting_started/results/">Simulation Results</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/visualization/">Visualization</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/visualization/">WebSocket Visualizer</a>
</li>
<li >
<a href="/mosaic/docs/visualization/filevis/">File Output</a>
</li>
<li >
<a href="/mosaic/docs/visualization/statistics/">Statistics Output</a>
</li>
<li >
<a href="/mosaic/docs/visualization/itef/">ITEF</a>
</li>
<li >
<a href="/mosaic/docs/visualization/phabmap/">PHABMap</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/simulators/">Simulators</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/simulators/">Overview</a>
</li>
<li class="active">
<a href="/mosaic/docs/simulators/application_simulator/">Application Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/traffic_simulator_sumo/">Traffic - Eclipse SUMO</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_omnetpp/">Network - OMNeT&#43;&#43;</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_ns3/">Network - ns-3</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_sns/">Network - SNS</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_cell/">Network - Cell</a>
</li>
<li >
<a href="/mosaic/docs/simulators/environment_simulator/">Environment Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/battery_simulator/">Battery Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/vms_simulator/">VMS Simulator</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/building_scenarios/">Building Scenarios</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/building_scenarios/">Simulation Scenarios</a>
</li>
<li >
<a href="/mosaic/docs/building_scenarios/scenario_convert/">Scenario Convert</a>
</li>
<li >
<a href="/mosaic/docs/building_scenarios/scenario_configuration/">Additional Scenario Configuration</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/develop_applications/">Create Applications</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/develop_applications/">Basics</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/communication/">V2X Communication</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/event_scheduler/">Event Scheduling</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/road_traffic/">Scenario Database</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/extending_mosaic/">Extending Eclipse MOSAIC</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/extending_mosaic/">Core Concepts</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/simulator_coupling/">Simulator Coupling</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/interactions/">Interactions</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/application_ambassador_details/">Application Ambassador</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/sumo_ambassador_details/">Sumo Ambassador</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/omnetpp_details/">OMNeT&#43;&#43; Federate</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/delay_models/">Delay Models</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/mosaic_configuration/">MOSAIC Configuration</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/mosaic_configuration/">Configuration Files</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/scenario_config/">Scenario Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/mapping_ambassador_config/">Mapping Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/environment_config/">Environment Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/sns_config/">SNS Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_config/">Cell Basic Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_network_config/">Cell Network Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_region_config/">Cell Region Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/sumo_config/">SUMO Configuration</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/api_docs/">API Documentation</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/api_docs/">Javadoc</a>
</li>
</ul>
</div>
<div class="nav-bottom">
<img src="/mosaic/img/logos/mosaic/EclipseMOSAIC-Medallion-RGB-single-navy.svg">
</div>
</nav>
</div>
<div class="docs-toc d-none d-xl-block col-xl-2">
<ul class="nav toc-top">
<li><a href="#" id="back_to_top" class="docs-toc-title">Contents</a></li>
</ul>
<nav id="TableOfContents">
<ul>
<li><a href="#eclipse-mosaic-application-simulator">Eclipse MOSAIC Application Simulator</a>
<ul>
<li><a href="#folder-structure">Folder Structure</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#overview">Overview</a></li>
<li><a href="#configuration">Configuration</a></li>
</ul>
</li>
<li><a href="#eclipse-mosaic-mapping">Eclipse MOSAIC Mapping</a>
<ul>
<li><a href="#configuration-1">Configuration</a></li>
<li><a href="#unit-identifiers">Unit Identifiers</a></li>
</ul>
</li>
</ul>
</nav>
</div>
<style>
@media (min-width:1140px) {
.docs-sidebar {
flex: 0 1 320px;
}
.docs-toc {
flex: 0 1 280px;
}
main.docs-content.no-docs-toc {
padding-bottom: 0 !important;
max-width: calc(100% - 320px) !important;
flex: 0 1 calc(100% - 320px);
width: 100%;
}
main.docs-content {
padding-bottom: 0 !important;
max-width: calc(100% - 600px) !important;
flex: 0 1 calc(100% - 600px);
width: 100%;
}
}
@media (max-width: 770px) {
main.docs-content {
max-width: 100% !important;
width: 100%;
}
}
@media (min-width: 771px) and(max-width: 1139px) {
main.docs-content.no-docs-toc {
padding-bottom: 0 !important;
max-width: calc(100% - 320px) !important;
width: 100%;
}
}
</style>
<main class="docs-content col-12 col-md-9 col-xl-auto py-md-3 pl-md-4" role="main">
<article class="article">
<div class="docs-article-container">
<h1>Application Simulator</h1>
<div class="article-style">
<p>This section presents the architecture and the main features of the <strong>Application Simulator</strong> as well as the related <strong>Mapping</strong> Ambassador,
which is used to configure individual simulation entities (or simulation units) and &ldquo;map&rdquo; applications to them.</p>
<h2 id="eclipse-mosaic-application-simulator">Eclipse MOSAIC Application Simulator</h2>
<p>The <strong>Application Simulator</strong> plays an important role in the simulation of vehicles and its functions. It provides the capability
to model the application logic for different simulation units (e.g. vehicles, road side units (RSUs), traffic lights, and others)
as well as possible interaction attempts between the units via different communication links.</p>
<h3 id="folder-structure">Folder Structure</h3>
<pre><code class="language-plaintext">└─ &lt;scenario_name&gt;
├─ application
| ├─ YourApplication.jar
| ├─ application_config.json ............. Configuration file for the ambassador.
| └─ &lt;scenario_name&gt;.db .................. Database file for navigation.
└─ mapping
└─ mapping_config.json ................. Configuration file for the ambassador.
</code></pre>
<p>This ambassador can be configured with a configuration file. The specific path is
<code>&lt;scenario_name&gt;/application/application_config.json</code>. However, it is not necessary to provide such file.</p>
<h3 id="installation">Installation</h3>
<p>This simulator does not need to be installed. It is delivered as part of the Eclipse MOSAIC installation package.</p>
<h3 id="overview">Overview</h3>
<p>Each simulation unit (e.g. vehicle, RSU, traffic light ..) can have different applications (depending on their application
<a href="/mosaic/docs/simulators/application_simulator/#eclipse-mosaic-mapping">
Mapping
</a>
. The applications
for the units are basically compiled JAVA classes, which <strong>extend</strong> the abstract class <code>AbstractApplication</code>. Those
classes have to be deployed as pre-compiled JAR files into the <code>application</code> folder of the simulated scenario.</p>
<figure id="figure-overview-of-interaction-between-applications-and-the-units-operating-system-with-its-modules-an-example-v2x-message-propagation-is-presented">
<a data-fancybox="" href="../images/application_overview.svg" data-caption="Overview of interaction between applications and the unit&rsquo;s operating system with its modules. An example V2X message propagation is presented.">
<img src="../images/application_overview.svg" alt="" >
</a>
<figcaption>
Overview of interaction between applications and the unit&rsquo;s operating system with its modules. An example V2X message propagation is presented.
</figcaption>
</figure>
<h4 id="application-operating-system">Application Operating System</h4>
<p>The <code>AbstractApplication</code> possesses a unit-specific <code>OperatingSystem</code>, which allows interactions with the simulated parameters.
The operating system provides access to information like the current time or position of the units and could control unit-specific
actions (like <code>slowDown()</code> for vehicles).</p>
<p>As the interaction types for navigation (retrieving road network information and calculating routes) and communication (preparing and
sending messages) are more complex, they are separated into the specific modules <code>NavigationModule</code> (Navigation + Routing for
vehicles) / <code>RoutingModule</code> (Routing-only for static units) and <code>AdHocModule</code> / <code>CellModule</code> with APIs dedicated to their purpose.</p>
<p>The following table lists all modules a unit&rsquo;s operating system could provide.</p>
<table>
<thead>
<tr>
<th>Module</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>NavigationModule</td>
<td>Full featured access to the central navigation component for vehicles</td>
</tr>
<tr>
<td>RoutingModule</td>
<td>Access to routing functionalities for static units as RSUs</td>
</tr>
<tr>
<td>AdHocModule</td>
<td>Communication via ad hoc mode, using WIFI or ITS G5 specific means (e.g. for addressing)</td>
</tr>
<tr>
<td>CellModule</td>
<td>Communication via cellular services (different configuration / addressing modes)</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>Note:</strong> The presented communication modules <code>AdHocModule</code>, <code>CellModule</code> are used for the sending part of a transmission. The message
reception is realized by Application Interfaces provided by the <code>CommunicationApplication</code>.</p>
</blockquote>
<h4 id="application-interfaces">Application Interfaces</h4>
<p>Application interfaces handle call-backs to incoming events via their methods, like <code>onVehicleUpdated()</code>, called by the
application simulator. The following table lists all interfaces usable for application implementation, the type of unit as well as
important other interfaces it implements. Interface specific public methods which have to be implemented by the user are listed in the
&ldquo;Provides&rdquo; column. The elementary interface (<code>Application</code>) provides the methods <code>onStartup()</code>, <code>onShutdown()</code>. Implementation details
are given in
<a href="/mosaic/docs/develop_applications/">
Development of applications
</a>
.</p>
<table>
<thead>
<tr>
<th>Interface</th>
<th>Applicable to</th>
<th>Provides</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Application / AbstractApplication</code></td>
<td><em>all</em></td>
<td><code>onStartup</code>, <code>onShutdown</code></td>
<td>Elementary application class providing an operating system</td>
</tr>
<tr>
<td><code>ConfigurableApplication</code></td>
<td><em>all</em></td>
<td></td>
<td>Basic application class providing an operating system and a configuration, which automatically loaded from a JSON file.</td>
</tr>
<tr>
<td><code>CommunicationApplication</code></td>
<td><em>all</em></td>
<td><code>onMessageReceived</code>, <code>onAcknowledgementReceived</code>, <code>onCamBuilding</code>, <code>onMessageTransmitted</code></td>
<td>All applications that implement some form of V2X communication are to implement this interface.</td>
</tr>
<tr>
<td><code>VehicleApplication</code></td>
<td>vehicle</td>
<td><code>onVehicleUpdated</code></td>
<td>General vehicle funtionality</td>
</tr>
<tr>
<td><code>ElectricVehicleApplication</code></td>
<td>vehicle</td>
<td><code>onBatteryStateUpdated</code>, <code>onChargingRequestRejected</code></td>
<td>Electric vehicle functionality</td>
</tr>
<tr>
<td><code>TrafficSignAwareApplication</code></td>
<td>vehicle</td>
<td><code>onTrafficSignInvalidated</code>, <code>onTrafficSignNoticed</code></td>
<td>Used by vehicles which are aware of traffic signs.</td>
</tr>
<tr>
<td><code>TrafficLightApplication</code></td>
<td>traffic light</td>
<td><code>onTrafficLightGroupUpdated</code></td>
<td>Traffic light functionality</td>
</tr>
<tr>
<td><code>TrafficManagementCenterApplication</code></td>
<td>TMC</td>
<td><code>onInductionLoopUpdated</code>, <code>onLaneAreaDetectorUpdated</code></td>
<td>Traffic management functionality</td>
</tr>
<tr>
<td><code>MosaicApplication</code></td>
<td><em>all</em></td>
<td><code>onSumoTraciResponded</code>, <code>onInteractionReceived</code></td>
<td>Features that involve customized RTI-interactions of MOSAIC</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> A roadside unit (RSU) is the most unit and usually communicates only. Thus, an RSU application implements <code>CommunicationApplication</code>.</p>
<hr>
<h3 id="configuration">Configuration</h3>
<p>The Application simulator is configured in the file <code>&lt;scenario_name&gt;/application/application_config.json</code>:</p>
<pre><code class="language-json">{
&quot;messageCacheTime&quot;: &quot;30s&quot;,
&quot;minimalPayloadLength&quot;: 200,
&quot;encodePayloads&quot;: true,
&quot;navigationConfiguration&quot; : {
&quot;type&quot;: &quot;database&quot;
}
}
</code></pre>
<p>Furthermore, depending on the deployed applications, the applications itself may offer configuration options
in custom configuration files (e.g. <code>ETSIApplication.json</code> or <code>ETSIApplication_veh_0.json</code>).</p>
<hr>
<h2 id="eclipse-mosaic-mapping">Eclipse MOSAIC Mapping</h2>
<p>Closely related to the Application Simulator, the <strong>Mapping</strong> Ambassador is used for the initial choreography of a simulation.
It defines two major aspects for the simulation units:</p>
<ol>
<li>number, properties, position (e.g. of RSUs, traffic lights) or initial routes (of vehicles, simulated in a traffic/vehicle simulator)</li>
<li>specific application(s) to be &ldquo;mapped&rdquo; on the simulation units and simulated in the Application Simulation</li>
</ol>
<p>The JSON based configuration is located in <code>&lt;scenario_name&gt;/mapping/mapping_config.json</code>.</p>
<h3 id="configuration-1">Configuration</h3>
<p>The Mapping configuration is divided into different parts:</p>
<ul>
<li>Pre Definitions of <code>prototypes</code> and <code>deviations</code></li>
<li>Entity Definitions of <code>vehicles</code>, <code>rsus</code>, <code>tls</code> <code>servers</code> and <code>tmcs</code></li>
<li>Advanced Vehicle Definitions (including route generation) in <code>matrixMappers</code></li>
<li>Common Definitions in <code>config</code></li>
</ul>
<h4 id="prototypes">Prototypes</h4>
<p><code>prototypes</code> define models for other objects, which can be reused later in the other sections of the Mapping. This allows reusing the
definition of certain entities such as vehicles or the combination of multiple applications, reducing redundancies and resulting in
shorter Mapping configurations.</p>
<pre><code class="language-json">&quot;prototypes&quot;: [
{
&quot;name&quot;: &quot;CamVehicle&quot;,
&quot;accel&quot;: 2.6,
&quot;decel&quot;: 4.5,
&quot;length&quot;: 5.00,
&quot;maxSpeed&quot;: 70.0,
&quot;applications&quot;: [ &quot;org.eclipse.mosaic.fed.application.app.etsi.VehicleCamSendingApp&quot; ]
}
]
</code></pre>
<p>Prototypes can be created for all types of entities. Next to the list of <code>applications</code> which is available for all types of entities,
vehicle types provide various other parameters to be adjusted.</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Description</th>
<th>Deviation</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>vehicleClass</code></td>
<td>The class of the vehicle, e.g. <code>Car</code>, <code>ElectricVehicle</code>, <code>EmergencyVehicle</code>, <code>Bicycle</code>, <code>HeavyGoodsVehicle</code>, and more.</td>
<td></td>
</tr>
<tr>
<td><code>accel</code></td>
<td>The maximum acceleration of the vehicle in $m/s^2$.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>decel</code></td>
<td>The maximum deceleration of the vehicle in $m/s^2$, e.g. when stopping for traffic lights.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>emergencyDecel</code></td>
<td>The maximum deceleration of the vehicle in $m/s^2$, in order to avoid accidents.</td>
<td></td>
</tr>
<tr>
<td><code>length</code></td>
<td>The length of the vehicle in $m$.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>maxSpeed</code></td>
<td>The maximum speed of the vehicle in $m/s$.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>minGap</code></td>
<td>The minimum gap towards the leader in $m$, i.e. the space in front in a traffic jam.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>sigma</code></td>
<td>The driver&rsquo;s imperfection $[0,1]$.</td>
<td></td>
</tr>
<tr>
<td><code>tau</code></td>
<td>The reaction time (or time headway) of the vehicle in $s$.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>speedFactor</code></td>
<td>This factor is used to determine the speed limit to comply on roads, e.g. <code>1.1</code> would exceed the speed limit by 10%.</td>
<td>Yes</td>
</tr>
<tr>
<td><code>laneChangeMode</code></td>
<td>The lane changing behavior of the vehicle: <code>COOPERATIVE</code>. <code>CAUTIOUS</code>, <code>AGGRESSIVE</code>, <code>PASSIVE</code>, <code>OFF</code></td>
<td></td>
</tr>
<tr>
<td><code>applications</code></td>
<td>The list of applications to map onto this vehicle type.</td>
<td></td>
</tr>
</tbody>
</table>
<p>For the majority of the parameters above (see column &ldquo;Deviation&rdquo;), a normal distribution can be created. In that case, each individual
vehicle spawned with this prototype will be loaded with a random value within this distribution. To achieve this, a separate <code>deviations</code>
attribute must be added to the type:</p>
<pre><code class="language-json">&quot;prototypes&quot;: [
{
&quot;name&quot;: &quot;Car&quot;,
&quot;length&quot;: 5.0,
&quot;maxSpeed&quot;: 70.0,
&quot;deviations&quot;: {
&quot;length&quot;: 1.2,
&quot;maxSpeed&quot;: 5.0
}
}
]
</code></pre>
<p>According to the config above, the basic parameter value conforms to the expected value, and the given value in the <code>deviations</code>
attribute conforms to the $\sigma$ of the Gaussian distribution(meaning for the example of maxSpeed that ~68% of the values will
be located in the interval [65.0, 75.0]). The deviation will be limited to ±2$\sigma$.</p>
<h4 id="entities">Entities</h4>
<p><strong>Vehicles</strong></p>
<p>The <code>vehicles</code>-section is the centerpiece of the Mapping configuration. It defines the departures (times and number),
routes, and types of the vehicles.</p>
<p>Each spawner in this list generates a traffic stream of vehicles on a certain <code>route</code>. The vehicles stream begins at <code>startingTime</code> and
generates vehicles until <code>maxNumberVehicles</code> is reached. The time between two consecutively vehicles is implicitly given by the
<code>targetFlow</code> property, which defines how many vehicles per hour are going to be spawned.</p>
<p>Each vehicle spawner must refer to at least one vehicle type (<code>types</code>). A vehicle type must either refer to a type from the <code>prototypes</code>
section by using its <code>name</code>, or be defined as a completely new vehicle type with all necessary parameters. If more than one vehicle type
is referenced in the <code>types</code> attribute, <code>weight</code>s can be used to specify the ratios to choose between them when loading an individual
vehicle. If no weights are defined, individual vehicle types are assumed to be distributed equally.</p>
<blockquote>
<p>Note: if at least one vehicle type has a weight defined, all types without a defined weight are ignored.</p>
</blockquote>
<pre><code class="language-json">&quot;vehicles&quot;: [
{
&quot;startingTime&quot;: 5.0,
&quot;targetFlow&quot;: 1800,
&quot;maxNumberVehicles&quot;: 120,
&quot;route&quot;: &quot;1&quot;,
&quot;types&quot;: [
{
&quot;name&quot;: &quot;CAMVehicle&quot;,
&quot;weight&quot;: 0.1
},
{
&quot;name&quot;: &quot;NormalVehicle&quot;, // this vehicle has no applications
&quot;applications&quot;: [ ],
&quot;weight&quot;: 0.2
}
]
}
]
</code></pre>
<p>Additional notes:</p>
<ul>
<li>The <code>route</code> refers to a route usually defined in the scenario database file (<code>*.db</code>) of the scenario.</li>
<li>In order to define only one single vehicle to be spawned, the <code>maxNumberVehicles</code> property can be set to <code>1</code>.</li>
<li>By defining the <code>endingTime</code> property, the flow is stopped from being generated when the given simulation time is reached.</li>
<li>By defining the <code>spawningMode</code> to one of the following values, the departure time of the individual vehicles can be adjusted:
<ul>
<li><code>CONSTANT</code> - default case, all vehicles have equal time distance to match <code>target_flow</code>.</li>
<li><code>POISSON</code> - vehicles depart within a Poisson distribution, resulting in a more natural traffic flow.</li>
<li><code>GROW</code> - the flow of departing vehicles increases linear up to <code>target_flow</code>.</li>
<li><code>SHRINK</code> - the flow of departing vehicles decreases linear starting at <code>target_flow</code>.</li>
<li><code>GROW_AND_SHRINK</code> - the flow of departing vehicles increases up to <code>target_flow</code> and decreases afterwards.</li>
</ul>
</li>
<li>By defining the <code>laneSelectionMode</code> to one the following values, the selection of the departure lane can be adjusted:
<ul>
<li><code>DEFAULT</code> - selects the lane for the next vehicle based on the list of given <code>lanes</code> in a roundrobin manner.</li>
<li><code>ROUNDROBIN_HIGHWAY</code> - trucks will be spawned on the rightmost lane, all other vehicles according to <code>DEFAULT</code>.</li>
<li><code>HIGHWAY</code> - trucks will be spawned on the rightmost lane, all other vehicles according to <code>BEST</code>.</li>
<li><code>RANDOM</code> - the vehicle will be placed randomly on one of the available lanes of the road.</li>
<li><code>FREE</code> - the vehicle will be placed on a free lane of the road.</li>
<li><code>BEST</code> - the vehicle will be placed on the best lane of the road, according to the current traffic situation and departure speed.</li>
</ul>
</li>
</ul>
<p><strong>Road Side Units</strong></p>
<p>The <code>rsus</code>-section offers the possibility to define instances of application supported Road Side Units (RSU)s and place them on a
defined position (<code>lat</code>, <code>lon</code> coordinates). Referring to <code>prototype</code> definitions with simply specifying its name in the <code>name</code>
property will automatically fill in relevant properties of the RSU.</p>
<pre><code class="language-json">&quot;rsus&quot;: [
{
&quot;lat&quot;: 52.65027,
&quot;lon&quot;: 13.54500,
&quot;name&quot;: &quot;WeatherServer&quot;,
&quot;applications&quot;: [ &quot;org.eclipse.mosaic.app.tutorial.WeatherServerApp&quot; ]
}
]
</code></pre>
<p><strong>Traffic Lights</strong></p>
<p>In the <code>trafficLights</code>-section, applications can be mapped to traffic light groups. Usually, individual traffic lights are part of
traffic light groups to control a whole junction, whereas the junction possesses a certain position. The traffic light groups and
their positions are defined in the simulator specific configuration file (e.g. the *.net.xml for SUMO and *.ttl.json for PHABMACS).
The <code>tlGroupId</code>-property allows mapping of applications to the traffic light groups, referring them by Id.</p>
<p>Alternatively, the definition of the <code>weight</code>-property leads to a random distribution of the referred applications through ALL traffic lights of the
scenario (Note: The weights do not have to add up to 100 or 1). Consequently, all traffic lights will be mapped using the specified
prototypes as soon as one weight differs from zero. So in case you don’t want all traffic lights to have applications running on them you
have to define one traffic light without any applications and add a weight to it. If neither tlGroupId nor weight are defined for an app, the weight will be set to 1.</p>
<pre><code class="language-json">&quot;trafficLights&quot;: [
{
&quot;tlGroupId&quot;: &quot;26704448&quot;,
&quot;applications&quot;: [ &quot;org.eclipse.mosaic.app.tutorial.TrafficLightApp&quot; ]
},
{
&quot;tlGroupId&quot;: &quot;252864802&quot;,
&quot;applications&quot;: [ &quot;org.eclipse.mosaic.app.tutorial.TrafficLightApp&quot; ]
}
]
</code></pre>
<p>For more information, explained for detailed examples with different mapping options regarding traffic lights, please refer to
<a href="/mosaic/docs/building_scenarios/#traffic-lights">
Simulation Scenarios - Traffic Lights
</a>
.</p>
<p><strong>Servers</strong></p>
<p>The <code>servers</code>-array can be used to specify server units, which can be used to communicate with other units via the cell module.
Capacity configurations for servers should be done when enabling the <code>CellModule</code>. Delay and transmission models are configured
in the <code>network.json</code> of the cell module (see
<a href="/mosaic/docs/simulators/network_simulator_cell/">
here
</a>
).</p>
<blockquote>
<p>Note: The <code>group</code> parameter in the mapping configuration has to match with the id in the network configuration in order to
properly function.</p>
</blockquote>
<pre><code class="language-json">&quot;servers&quot;: [
{
&quot;name&quot;: &quot;MyServer&quot;,
&quot;group&quot;: &quot;TestServers&quot;,
&quot;applications&quot;: [ &quot;ServerApp1&quot;, &quot;ServerApp2&quot; ]
}
]
</code></pre>
<p><strong>Traffic Management Centers</strong></p>
<p>The <code>tmc</code>-section offers the possibility to define instances of a Traffic Management Center (TMC). A TMC
provides the possibility to interact with the infrastructure of the road, i.e. retrieving traffic properties
from detectors (e.g. traffic flow), and changing properties from the road (e.g. speed limits).
Additionally, TMCs are an extension of Servers and can be configured in the same way that servers are</p>
<pre><code class="language-json">&quot;tmcs&quot;: [
{
&quot;name&quot;: &quot;HighwayManagement&quot;,
&quot;group&quot;: &quot;TestTmcServers&quot;,
&quot;applications&quot;: [ &quot;com.dcaiti.vsimrti.app.tutorials.highway.HighwayManagementApp()&quot; ],
&quot;inductionLoops&quot;: [ &quot;detector_0&quot;, &quot;detector_1&quot;, &quot;detector_2&quot; ],
&quot;laneAreaDetectors&quot;: [ ]
}
]
</code></pre>
<blockquote>
<p>All unit spawners could be realized in two different ways. The Deterministic Mapping produces the exact same sequence of mapped vehicles
in every simulation run with regard to the given ratios at each point in time the simulation).
The Stochastic Mapping results in a random order of mapped units.</p>
</blockquote>
<h4 id="use-type-distributions-in-complex-traffic-scenarios">Use Type Distributions in Complex Traffic Scenarios</h4>
<p>In the case, you have many vehicle spawners defined and you want to distribute prototypes on those vehicles equally without defining them
again and again, you can use <code>typeDistributions</code>. By doing so, it is very simple to adjust the list of types and weights at only one
place in the configuration file.</p>
<p>Instead of defining an equal list of types and weights for each single vehicle spawner, like in this example:</p>
<pre><code class="language-json">&quot;vehicles&quot;: [
{
&quot;startingTime&quot;: 5.0,
&quot;targetFlow&quot;: 1800,
&quot;maxNumberVehicles&quot;: 120,
&quot;route&quot;: &quot;1&quot;,
&quot;types&quot;: [
{ &quot;name&quot;: &quot;TypeA&quot;, &quot;weight&quot;: 0.1 },
{ &quot;name&quot;: &quot;TypeB&quot;, &quot;weight&quot;: 0.9 }
]
},
{
&quot;startingTime&quot;: 55.0,
&quot;targetFlow&quot;: 1800,
&quot;maxNumberVehicles&quot;: 120,
&quot;route&quot;: &quot;2&quot;,
&quot;types&quot;: [
{ &quot;name&quot;: &quot;TypeA&quot;, &quot;weight&quot;: 0.1 },
{ &quot;name&quot;: &quot;TypeB&quot;, &quot;weight&quot;: 0.9 }
]
}
]
</code></pre>
<p>&hellip; you can use <code>typeDistributions</code> to define the distribution of types for each vehicle once and reuse them:</p>
<pre><code class="language-json">&quot;typeDistributions&quot;: {
&quot;exampleTypeDist&quot; : [
{ &quot;name&quot;: &quot;TypeA&quot;, &quot;weight&quot;: 0.1 },
{ &quot;name&quot;: &quot;TypeB&quot;, &quot;weight&quot;: 0.9 }
]
},
&quot;vehicles&quot;: [
{
&quot;startingTime&quot;: 5.0,
&quot;targetFlow&quot;: 1800,
&quot;maxNumberVehicles&quot;: 120,
&quot;route&quot;: &quot;1&quot;,
&quot;typeDistribution&quot;: &quot;exampleTypeDist&quot;
},
{
&quot;startingTime&quot;: 55.0,
&quot;targetFlow&quot;: 1800,
&quot;maxNumberVehicles&quot;: 120,
&quot;route&quot;: &quot;2&quot;,
&quot;typeDistribution&quot;: &quot;exampleTypeDist&quot;
}
]
</code></pre>
<h4 id="advanced-vehicle-spawners-with-route-generation">Advanced vehicle spawners with route generation</h4>
<p>It is also possible to define and use OD (origin-destination) matrices by adding a ODMatrixMapper to the <code>matrixMappers</code>-list.
Each MatrixMapper consists of a list of <code>points</code>, the vehicle-<code>types</code> to be used and the actual flow-values (<code>odValues</code>) between each
of the points. It is possible to define multiple matrices. This way can achieve distinctively different compositions of the vehicle flows.</p>
<p>The MatrixMapper will be called before the actual execution of the simulation and will generate vehicle-spawners for the flow between
each of the points.</p>
<pre><code class="language-json">
&quot;matrixMappers&quot;: [
{
&quot;points&quot;: [
{
&quot;name&quot;: &quot;CityA&quot;,
&quot;position&quot;: {
&quot;center&quot;: {
&quot;latitude&quot;: 52,
&quot;longitude&quot;: 13
},
&quot;radius&quot;: 1000
}
},
{
&quot;name&quot;: &quot;CityB&quot;,
&quot;position&quot;: {
&quot;center&quot;: {
&quot;latitude&quot;: 48,
&quot;longitude&quot;: 10
},
&quot;radius&quot;: 1000
}
}
],
&quot;types&quot;: [
{
&quot;name&quot;: &quot;CAMVehicle&quot;
}
],
&quot;odValues&quot;: [
[0, 100], //100 vehicles from CityA to CityB
[200, 0] //200 vehicles from CityB to CityA
]
}
]
</code></pre>
<h4 id="common-configuration">Common Configuration</h4>
<p>Next to the specific configuration of prototypes and simulation entities, some general parameters can be adjusted:</p>
<pre><code class="language-json">{
&quot;config&quot;: {
&quot;scaleTraffic&quot; : 1.0,
&quot;start&quot;: 0,
&quot;end&quot;: 500,
&quot;adjustStartingTimes&quot;: false,
&quot;randomizeFlows&quot;: false,
&quot;randomizeStartingTimes&quot; : false,
&quot;randomizeWeights&quot;: false
}
}
</code></pre>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>scaleTraffic</code></td>
<td>Scales the <code>targetFlow</code> of spawned vehicles per hour as well as the <code>maxNumberVehicles</code> by the given factor.</td>
</tr>
<tr>
<td><code>start</code></td>
<td>Adjusts the point in time (in $s$) to start spawning vehicles. Any vehicle spawner with a lower <code>startingTime</code> will be ignored.</td>
</tr>
<tr>
<td><code>end</code></td>
<td>Adjusts the point in time (in $s$) to end spawning vehicles. Any vehicle spawner with a greater <code>startingTime</code> will be ignored.</td>
</tr>
<tr>
<td><code>adjustStartingTimes</code></td>
<td>If set to <code>true</code>, the starting time of each spawner is reduced by the value in <code>start</code>.</td>
</tr>
<tr>
<td><code>randomizeFlows</code></td>
<td>If set to <code>true</code>, the departure time of vehicles within a vehicle spawner is slightly randomized.</td>
</tr>
<tr>
<td><code>randomizeStartingTimes</code></td>
<td>If set to <code>true</code>, the starting time of each vehicle spawner is slightly randomized.</td>
</tr>
<tr>
<td><code>randomizeWeights</code></td>
<td>If set to <code>true</code>, each <code>weight</code> greater than zero is slightly randomized.</td>
</tr>
</tbody>
</table>
<div class="alert alert-tip">
<div>
<p>Read the detailed documentation of the <a href="/docs/mosaic_configuration/mapping_ambassador_config">Mapping Configuration</a>.</p>
</div>
</div>
<h3 id="unit-identifiers">Unit Identifiers</h3>
<p>Every traffic object in Eclipse MOSAIC has a globally unique string identifier. These identifiers are used to identify
a traffic object in Eclipse MOSAIC as well as in different ambassadors. From user’s aspect, these identifiers will be seen in the log files
which are generated after a simulation. The following table explains, which identifier belongs to which traffic object.</p>
<table>
<thead>
<tr>
<th><strong>Traffic Object</strong></th>
<th><strong>Eclipse MOSAIC Internal ID</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Vehicle</strong></td>
<td><code>veh_&lt;seq_nr&gt;</code></td>
</tr>
<tr>
<td><strong>RSU</strong></td>
<td><code>rsu_&lt;seq_nr&gt;</code></td>
</tr>
<tr>
<td><strong>TMC</strong></td>
<td><code>tmc_&lt;seq_nr&gt;</code></td>
</tr>
<tr>
<td><strong>Traffic Light</strong></td>
<td><code>tl_&lt;group_id&gt;</code></td>
</tr>
</tbody>
</table>
<ul>
<li><code>seq_nr</code> is the sequence number of simulated vehicles, RSUs, TMCs, each starting from zero.</li>
<li><code>group_id</code> is the group id of the traffic light.</li>
</ul>
<hr>
<p>##Basic Applications</p>
<p>Eclipse MOSAIC is shipped with several example applications which can be loaded on the vehicles. Next to the applications shipped with
the tutorial scenarios <strong>Barnim</strong> and <strong>Tiergarten</strong>, there are further example applications to be found on our website.</p>
<p>Additionally, we provide an ETSI conform application which implement specific CAM generation rules for vehicles
(<code>org.eclipse.mosaic.fed.application.app.etsi.VehicleCamSendingApp</code>), which is described in the following:</p>
<h4 id="etsi-application-for-vehicles">ETSI Application for vehicles</h4>
<p>This application generates ETSI data for its simulation unit (e.g. heading, position, speed and time for
vehicles). According to its configuration, the application then sends out CAMs to other vehicles in range.
Note that the messages are only send when the time lies between the configured minimum and maximum
interval.</p>
<p>Currently, the default configuration (<code>ETSIApplication.json</code>) for the ETSI application looks like this:</p>
<pre><code class="language-json">{
/* The maximum time offset (here 1 second) of sending CA-messages
* (the offset will be different for every single vehicle to avoid interference) */
&quot;maxStartOffset&quot;: 1000000000,
/* CAMs are sent at most every 1 second */
&quot;minInterval&quot;: 100000000,
/* CAMs are sent at least every 1 second */
&quot;maxInterval&quot;: 1000000000,
/* CAMs are sent when the position of the vehicle changes at least about 4 meters */
&quot;positionChange&quot;: 4,
/* CAMs are sent when the heading of the vehicle changes at least about 4 degrees */
&quot;headingChange&quot;: 4,
/* CAMs are sent when the velocity of the vehicle changes at least about 0.5 m/s */
&quot;velocityChange&quot;: 0.5
}
</code></pre>
<p>The CAMs sent out by this application consist of four parts:</p>
<ul>
<li>Header with generic information</li>
<li>MessageBody</li>
<li>TaggedValue list</li>
</ul>
<p>First of all, generic information like protocol version and creation time stamp are transmitted. Normally
this data set follows a network beacon, already containing data like position and speed. Nevertheless
this functionality must be implemented in the network layer, i.e. in the network simulator. At
the moment this is not supported and is therefore compensated in the next message part, the message
body. The body contains vehicle awareness data, including data like vehicle width, length, position, speed, type and heading.
However, the specification is not completely implemented. Last but not least a message can contain optional data.</p>
</div>
<div class="article-widget">
<div class="post-nav prev-next-pages col-12">
<div class="row">
<div class="post-nav-item col-6">
<div class="meta-nav">Previous</div>
<a href="/mosaic/docs/simulators/" rel="next">Simulators Overview</a>
</div>
<div class="post-nav-item col-6 align-self-end">
<div class="meta-nav">Next</div>
<a href="/mosaic/docs/simulators/traffic_simulator_sumo/" rel="prev">Eclipse SUMO - Simulation of Urban MObility</a>
</div>
</div>
</div>
</div>
</div>
<footer class="site-footer">
<div class="row">
<div class="col-sm-4 mb-3 mb-md-0">
<b>Eclipse MOSAIC</b>
<ul>
<li>
<a href="/mosaic/download/" title="Download Eclipse MOSAIC" >
Download Eclipse MOSAIC
</a>
</li>
<li>
<a href="/mosaic/docs/" title="Documentation" >
Documentation
</a>
</li>
<li>
<a href="/mosaic/tutorials/" title="Tutorials" >
Tutorials
</a>
</li>
<li>
<a href="/mosaic/community/#projects" title="Projects" >
Projects
</a>
</li>
<li>
<a href="/mosaic/publications/" title="Publications" >
Publications
</a>
</li>
</ul>
</div>
<div class="col-sm-4 mb-3 mb-md-0">
<b>Community</b>
<ul>
<li>
<a href="/mosaic/community/" title="Eclipse MOSAIC Community" >
Eclipse MOSAIC Community
</a>
</li>
<li>
<a href="/mosaic/contribution/" title="How to contribute" >
How to contribute
</a>
</li>
<li>
<a href="https://github.com/eclipse/mosaic" title="Github" target="_blank" rel="noopener">
Github
</a>
</li>
<li>
<a href="/mosaic/get_in_contact/" title="Contact &amp; Mailing list" >
Contact & Mailing list
</a>
</li>
</ul>
</div>
<div class="col-sm-4 mb-3 mb-md-0">
<b>Eclipse Foundation</b>
<ul>
<li>
<a href="https://www.eclipse.org/" title="About Eclipse Foundation" target="_blank" rel="noopener">
About Eclipse Foundation
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/privacy.php" title="Privacy Policy" target="_blank" rel="noopener">
Privacy Policy
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/termsofuse.php" title="Website terms of use" target="_blank" rel="noopener">
Website terms of use
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/copyright.php" title="Copyright" target="_blank" rel="noopener">
Copyright
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal" title="Legal" target="_blank" rel="noopener">
Legal
</a>
</li>
</ul>
</div>
</div>
<div class="row justify-content-center mt-3 position-relative">
<p class="powered-by text-center font-italic mb-0 pb-0">
Powered by the
<a href="https://sourcethemes.com/academic/" target="_blank" rel="noopener">Academic theme</a> for
<a href="https://gohugo.io" target="_blank" rel="noopener">Hugo</a>.
<br>
Header image &#169; fanjianhua/ iStock
</p>
</div>
</footer>
</article>
</main>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.6.0/umd/popper.min.js" integrity="sha512-BmM0/BQlqh02wuK5Gz9yrbe7VyIVwOzD1o40yi1IsTjriX/NGF37NyXHfmFzIlMmoSIBXgqDiG1VNU6kB5dBbA==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.4/imagesloaded.pkgd.min.js" integrity="sha512-S5PZ9GxJZO16tT9r3WJp/Safn31eu8uWrzglMahDT4dsmgqWonRY9grk3j+3tfuPr9WJNsfooOR7Gi7HL5W2jw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js" integrity="sha512-Zq2BOxyhvnRFXu0+WE6ojpZLOU2jdnqbrM1hmVdGzyeCa1DgM3X5Q4A/Is9xA1IkbUeDd7755dNNI/PzSf2Pew==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js" integrity="sha512-uURl+ZXMBrF4AwGaWmEetzrd+J5/8NRkWAvJx5sbPSSuOb0bZLqf+tOzniObO00BjHa/dD7gub9oCGMLPQHtQA==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.4.8/mermaid.min.js" integrity="sha512-1tS1YUns336Mtxl+vkaLcADPwE1CPNVy3WEf7nrI7DGMMb6/FAVBgL2IzAWVBkB6vVuK94s2zVoiXcw1QZ9S1g==" crossorigin="anonymous" title="mermaid"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js" integrity="sha512-1LdB3V708w6G4QRl7NsVdTr7MDibyRXr9stQZ+EGjEE0ZPMZkA//ir7kCWmFyxdAJNIRXdR/ZeJmCV0boyiCXw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/java.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/json.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/xml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/shell.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/dos.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.js" integrity="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og==" crossorigin="anonymous"></script>
<script>const code_highlighting = true;</script>
<script>const isSiteThemeDark = false;</script>
<script>
const search_config = {"indexURI":"/mosaic/index.json","minLength":1,"threshold":0.3};
const i18n = {"no_results":"No results found","placeholder":"Search...","results":"results found"};
const content_type = {
'post': "Posts",
'project': "Projects",
'publication' : "Publications",
'talk' : "Talks"
};
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.1/anchor.min.js" integrity="sha512-aZotBPy6dqn8yVaLJwSrkJ+QxuxV695A4dgodAMvTU5JyNi5mhrr+LeaD3GSS+lx1SMFKNs0tu5ZMJEgNZQP2Q==" crossorigin="anonymous"></script>
<script>
anchors.add();
</script>
<script id="search-hit-fuse-template" type="text/x-template">
<div class="search-hit" id="summary-{{key}}">
<div class="search-hit-content">
<div class="search-hit-name">
<a href="{{relpermalink}}">{{title}}</a>
<div class="article-metadata search-hit-type">{{type}}</div>
<p class="search-hit-description">{{snippet}}</p>
</div>
</div>
</div>
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js" integrity="sha512-o38bmzBGX+hD3JHWUFCDA09btWaqrNmoJ3RXLlrysA7PP01Kgs4UlE4MhelE1v5dJR3+cxlR4qQlotsW7jKsnw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js" integrity="sha512-mhbv5DqBMgrWL+32MmsDOt/OAvqr/cHimk6B8y/bx/xS88MVkYGPiVv2ixKVrkywF2qHplNRUvFsAHUdxZ3Krg==" crossorigin="anonymous"></script>
<script type="application/javascript" src="/mosaic/js/academic.min.0992ad8b8d033c3858bb90b03966346a.js"></script>
<script type="application/javascript" src="/mosaic/js/mosaic-wg-cards.js"></script>
<script>
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new window.bootstrap.Tooltip(tooltipTriggerEl)
})
</script>
<div id="modal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cite</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<pre><code class="tex hljs"></code></pre>
</div>
<div class="modal-footer">
<a class="btn btn-outline-primary my-1 js-copy-cite" href="#" target="_blank">
<i class="fas fa-copy"></i> Copy
</a>
<a class="btn btn-outline-primary my-1 js-download-cite" href="#" target="_blank">
<i class="fas fa-download"></i> Download
</a>
<div id="modal-error"></div>
</div>
</div>
</div>
</div>
</body>
</html>