blob: 273f8155566d1fe6e368d1cd1a8d9b0def710bbb [file] [log] [blame]
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Simulators Overview | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/</link>
<atom:link href="https://staging.eclipse.org/mosaic/docs/simulators/index.xml" rel="self" type="application/rss+xml" />
<description>Simulators Overview</description>
<generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><lastBuildDate>Sun, 05 May 2019 00:00:00 +0100</lastBuildDate>
<image>
<url>https://staging.eclipse.org/mosaic/images/logo.svg</url>
<title>Simulators Overview</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/</link>
</image>
<item>
<title>Eclipse MOSAIC Application Simulator</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/application_simulator/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/application_simulator/</guid>
<description>&lt;p&gt;The &lt;strong&gt;Application Simulator&lt;/strong&gt; 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.&lt;/p&gt;
&lt;h3 id=&#34;folder-structure&#34;&gt;Folder Structure&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
├─ application
| ├─ YourApplication.jar
| ├─ application_config.json ............. Configuration file for the ambassador.
| └─ &amp;lt;scenario_name&amp;gt;.db .................. Database file for navigation.
└─ mapping
└─ mapping_config.json ................. Configuration file for the ambassador.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This ambassador can be configured with a configuration file. The specific path is
&lt;code&gt;&amp;lt;scenario_name&amp;gt;/application/application_config.json&lt;/code&gt;. However, it is not necessary to provide such file.&lt;/p&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;This simulator does not need to be installed. It is delivered as part of the Eclipse MOSAIC installation package.&lt;/p&gt;
&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;
&lt;p&gt;Each simulation unit (e.g. vehicle, RSU, traffic light ..) can have different applications (depending on their application
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/simulators/application_mapping/&#34;&gt;
Mapping
&lt;/a&gt;
. The applications
for the units are basically compiled JAVA classes, which &lt;strong&gt;extend&lt;/strong&gt; the abstract class &lt;code&gt;AbstractApplication&lt;/code&gt;. Those
classes have to be deployed as pre-compiled JAR files into the &lt;code&gt;application&lt;/code&gt; folder of the simulated scenario.&lt;/p&gt;
&lt;figure id=&#34;figure-overview-of-interaction-between-applications-and-the-units-operating-system-with-its-modules-an-example-v2x-message-propagation-is-presented&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/application_overview.svg&#34; data-caption=&#34;Overview of interaction between applications and the unit&amp;rsquo;s operating system with its modules. An example V2X message propagation is presented.&#34;&gt;
&lt;img src=&#34;../images/application_overview.svg&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
Overview of interaction between applications and the unit&amp;rsquo;s operating system with its modules. An example V2X message propagation is presented.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id=&#34;application-operating-system&#34;&gt;Application Operating System&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;AbstractApplication&lt;/code&gt; possesses a unit-specific &lt;code&gt;OperatingSystem&lt;/code&gt;, 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 &lt;code&gt;slowDown()&lt;/code&gt; for vehicles).&lt;/p&gt;
&lt;p&gt;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 &lt;code&gt;NavigationModule&lt;/code&gt; (Navigation + Routing for
vehicles) / &lt;code&gt;RoutingModule&lt;/code&gt; (Routing-only for static units) and &lt;code&gt;AdHocModule&lt;/code&gt; / &lt;code&gt;CellModule&lt;/code&gt; with APIs dedicated to their purpose.&lt;/p&gt;
&lt;p&gt;The following table lists all modules a unit&amp;rsquo;s operating system could provide.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NavigationModule&lt;/td&gt;
&lt;td&gt;Full featured access to the central navigation component for vehicles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RoutingModule&lt;/td&gt;
&lt;td&gt;Access to routing functionalities for static units as RSUs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AdHocModule&lt;/td&gt;
&lt;td&gt;Communication via ad hoc mode, using WIFI or ITS G5 specific means (e.g. for addressing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CellModule&lt;/td&gt;
&lt;td&gt;Communication via cellular services (different configuration / addressing modes)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The presented communication modules &lt;code&gt;AdHocModule&lt;/code&gt;, &lt;code&gt;CellModule&lt;/code&gt; are used for the sending part of a transmission. The message
reception is realized by Application Interfaces provided by the &lt;code&gt;CommunicationApplication&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;application-interfaces&#34;&gt;Application Interfaces&lt;/h4&gt;
&lt;p&gt;Application interfaces handle call-backs to incoming events via their methods, like &lt;code&gt;onVehicleUpdated()&lt;/code&gt;, 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
&amp;ldquo;Provides&amp;rdquo; column. The elementary interface (&lt;code&gt;Application&lt;/code&gt;) provides the methods &lt;code&gt;onStartup()&lt;/code&gt;, &lt;code&gt;onShutdown()&lt;/code&gt;. Implementation details
are given in
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/develop_applications/&#34;&gt;
Development of applications
&lt;/a&gt;
.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Interface&lt;/th&gt;
&lt;th&gt;Applicable to&lt;/th&gt;
&lt;th&gt;Provides&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Application / AbstractApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;all&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onStartup&lt;/code&gt;, &lt;code&gt;onShutdown&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Elementary application class providing an operating system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ConfigurableApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;all&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Basic application class providing an operating system and a configuration, which automatically loaded from a JSON file.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CommunicationApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;all&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onMessageReceived&lt;/code&gt;, &lt;code&gt;onAcknowledgementReceived&lt;/code&gt;, &lt;code&gt;onCamBuilding&lt;/code&gt;, &lt;code&gt;onMessageTransmitted&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All applications that implement some form of V2X communication are to implement this interface.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VehicleApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;vehicle&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onVehicleUpdated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;General vehicle funtionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ElectricVehicleApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;vehicle&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onBatteryStateUpdated&lt;/code&gt;, &lt;code&gt;onChargingRequestRejected&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Electric vehicle functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TrafficSignAwareApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;vehicle&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onTrafficSignInvalidated&lt;/code&gt;, &lt;code&gt;onTrafficSignNoticed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Used by vehicles which are aware of traffic signs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TrafficLightApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;traffic light&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onTrafficLightGroupUpdated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic light functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TrafficManagementCenterApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;TMC&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onInductionLoopUpdated&lt;/code&gt;, &lt;code&gt;onLaneAreaDetectorUpdated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic management functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MosaicApplication&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;all&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onSumoTraciResponded&lt;/code&gt;, &lt;code&gt;onInteractionReceived&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Features that involve customized RTI-interactions of MOSAIC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A roadside unit (RSU) is the most unit and usually communicates only. Thus, an RSU application implements &lt;code&gt;CommunicationApplication&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The Application simulator is configured in the file &lt;code&gt;&amp;lt;scenario_name&amp;gt;/application/application_config.json&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;messageCacheTime&amp;quot;: &amp;quot;30s&amp;quot;,
&amp;quot;minimalPayloadLength&amp;quot;: 200,
&amp;quot;encodePayloads&amp;quot;: true,
&amp;quot;navigationConfiguration&amp;quot; : {
&amp;quot;type&amp;quot;: &amp;quot;database&amp;quot;
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Furthermore, depending on the deployed applications, the applications itself may offer configuration options
in custom configuration files (e.g. &lt;code&gt;ETSIApplication.json&lt;/code&gt; or &lt;code&gt;ETSIApplication_veh_0.json&lt;/code&gt;).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;basic-applications&#34;&gt;Basic Applications&lt;/h2&gt;
&lt;p&gt;Eclipse MOSAIC is shipped with several example applications which can be loaded on the vehicles. Next to the applications shipped with
the tutorial scenarios &lt;strong&gt;Barnim&lt;/strong&gt; and &lt;strong&gt;Tiergarten&lt;/strong&gt;, there are further example applications to be found on our website.&lt;/p&gt;
&lt;p&gt;Additionally, we provide an ETSI conform application which implement specific CAM generation rules for vehicles
(&lt;code&gt;org.eclipse.mosaic.fed.application.app.etsi.VehicleCamSendingApp&lt;/code&gt;), which is described in the following:&lt;/p&gt;
&lt;h4 id=&#34;etsi-application-for-vehicles&#34;&gt;ETSI Application for vehicles&lt;/h4&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Currently, the default configuration (&lt;code&gt;ETSIApplication.json&lt;/code&gt;) for the ETSI application looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
/* The maximum time offset (here 1 second) of sending CA-messages
* (the offset will be different for every single vehicle to avoid interference) */
&amp;quot;maxStartOffset&amp;quot;: 1000000000,
/* CAMs are sent at most every 1 second */
&amp;quot;minInterval&amp;quot;: 100000000,
/* CAMs are sent at least every 1 second */
&amp;quot;maxInterval&amp;quot;: 1000000000,
/* CAMs are sent when the position of the vehicle changes at least about 4 meters */
&amp;quot;positionChange&amp;quot;: 4,
/* CAMs are sent when the heading of the vehicle changes at least about 4 degrees */
&amp;quot;headingChange&amp;quot;: 4,
/* CAMs are sent when the velocity of the vehicle changes at least about 0.5 m/s */
&amp;quot;velocityChange&amp;quot;: 0.5
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The CAMs sent out by this application consist of four parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Header with generic information&lt;/li&gt;
&lt;li&gt;MessageBody&lt;/li&gt;
&lt;li&gt;TaggedValue list&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
</description>
</item>
<item>
<title>Simulation Entities and Application Mapping</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/application_mapping/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/application_mapping/</guid>
<description>&lt;p&gt;Closely related to the Application Simulator, the &lt;strong&gt;Mapping&lt;/strong&gt; Ambassador is used for the initial choreography of a simulation.
It defines two major aspects for the simulation units:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;number, properties, position (e.g. of RSUs, traffic lights) or initial routes (of vehicles, simulated in a traffic/vehicle simulator)&lt;/li&gt;
&lt;li&gt;specific application(s) to be &amp;ldquo;mapped&amp;rdquo; on the simulation units and simulated in the Application Simulation&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The JSON based configuration is located in &lt;code&gt;&amp;lt;scenario_name&amp;gt;/mapping/mapping_config.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The Mapping configuration is divided into different parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre Definitions of &lt;code&gt;prototypes&lt;/code&gt; and &lt;code&gt;deviations&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Entity Definitions of &lt;code&gt;vehicles&lt;/code&gt;, &lt;code&gt;rsus&lt;/code&gt;, &lt;code&gt;tls&lt;/code&gt; &lt;code&gt;servers&lt;/code&gt; and &lt;code&gt;tmcs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Advanced Vehicle Definitions (including route generation) in &lt;code&gt;matrixMappers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Common Definitions in &lt;code&gt;config&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;prototypes&#34;&gt;Prototypes&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;prototypes&lt;/code&gt; 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.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;prototypes&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;CamVehicle&amp;quot;,
&amp;quot;accel&amp;quot;: 2.6,
&amp;quot;decel&amp;quot;: 4.5,
&amp;quot;length&amp;quot;: 5.00,
&amp;quot;maxSpeed&amp;quot;: 70.0,
&amp;quot;applications&amp;quot;: [ &amp;quot;org.eclipse.mosaic.fed.application.app.etsi.VehicleCamSendingApp&amp;quot; ]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prototypes can be created for all types of entities. Next to the list of &lt;code&gt;applications&lt;/code&gt; which is available for all types of entities,
vehicle types provide various other parameters to be adjusted.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Deviation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vehicleClass&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The class of the vehicle, e.g. &lt;code&gt;Car&lt;/code&gt;, &lt;code&gt;ElectricVehicle&lt;/code&gt;, &lt;code&gt;EmergencyVehicle&lt;/code&gt;, &lt;code&gt;Bicycle&lt;/code&gt;, &lt;code&gt;HeavyGoodsVehicle&lt;/code&gt;, and more.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;accel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The maximum acceleration of the vehicle in $m/s^2$.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;decel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The maximum deceleration of the vehicle in $m/s^2$, e.g. when stopping for traffic lights.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;emergencyDecel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The maximum deceleration of the vehicle in $m/s^2$, in order to avoid accidents.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;length&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The length of the vehicle in $m$.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;maxSpeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The maximum speed of the vehicle in $m/s$.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;minGap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The minimum gap towards the leader in $m$, i.e. the space in front in a traffic jam.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sigma&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The driver&amp;rsquo;s imperfection $[0,1]$.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tau&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The reaction time (or time headway) of the vehicle in $s$.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;speedFactor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;This factor is used to determine the speed limit to comply on roads, e.g. &lt;code&gt;1.1&lt;/code&gt; would exceed the speed limit by 10%.&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;laneChangeMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The lane changing behavior of the vehicle: &lt;code&gt;COOPERATIVE&lt;/code&gt;. &lt;code&gt;CAUTIOUS&lt;/code&gt;, &lt;code&gt;AGGRESSIVE&lt;/code&gt;, &lt;code&gt;PASSIVE&lt;/code&gt;, &lt;code&gt;OFF&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;applications&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The list of applications to map onto this vehicle type.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For the majority of the parameters above (see column &amp;ldquo;Deviation&amp;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 &lt;code&gt;deviations&lt;/code&gt;
attribute must be added to the type:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;prototypes&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;Car&amp;quot;,
&amp;quot;length&amp;quot;: 5.0,
&amp;quot;maxSpeed&amp;quot;: 70.0,
&amp;quot;deviations&amp;quot;: {
&amp;quot;length&amp;quot;: 1.2,
&amp;quot;maxSpeed&amp;quot;: 5.0
}
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;According to the config above, the basic parameter value conforms to the expected value, and the given value in the &lt;code&gt;deviations&lt;/code&gt;
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$.&lt;/p&gt;
&lt;h4 id=&#34;entities&#34;&gt;Entities&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Vehicles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;vehicles&lt;/code&gt;-section is the centerpiece of the Mapping configuration. It defines the departures (times and number),
routes, and types of the vehicles.&lt;/p&gt;
&lt;p&gt;Each spawner in this list generates a traffic stream of vehicles on a certain &lt;code&gt;route&lt;/code&gt;. The vehicles stream begins at &lt;code&gt;startingTime&lt;/code&gt; and
generates vehicles until &lt;code&gt;maxNumberVehicles&lt;/code&gt; is reached. The time between two consecutively vehicles is implicitly given by the
&lt;code&gt;targetFlow&lt;/code&gt; property, which defines how many vehicles per hour are going to be spawned.&lt;/p&gt;
&lt;p&gt;Each vehicle spawner must refer to at least one vehicle type (&lt;code&gt;types&lt;/code&gt;). A vehicle type must either refer to a type from the &lt;code&gt;prototypes&lt;/code&gt;
section by using its &lt;code&gt;name&lt;/code&gt;, or be defined as a completely new vehicle type with all necessary parameters. If more than one vehicle type
is referenced in the &lt;code&gt;types&lt;/code&gt; attribute, &lt;code&gt;weight&lt;/code&gt;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.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: if at least one vehicle type has a weight defined, all types without a defined weight are ignored.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;vehicles&amp;quot;: [
{
&amp;quot;startingTime&amp;quot;: 5.0,
&amp;quot;targetFlow&amp;quot;: 1800,
&amp;quot;maxNumberVehicles&amp;quot;: 120,
&amp;quot;route&amp;quot;: &amp;quot;1&amp;quot;,
&amp;quot;types&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;CAMVehicle&amp;quot;,
&amp;quot;weight&amp;quot;: 0.1
},
{
&amp;quot;name&amp;quot;: &amp;quot;NormalVehicle&amp;quot;, // this vehicle has no applications
&amp;quot;applications&amp;quot;: [ ],
&amp;quot;weight&amp;quot;: 0.2
}
]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Additional notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;route&lt;/code&gt; refers to a route usually defined in the scenario database file (&lt;code&gt;*.db&lt;/code&gt;) of the scenario.&lt;/li&gt;
&lt;li&gt;In order to define only one single vehicle to be spawned, the &lt;code&gt;maxNumberVehicles&lt;/code&gt; property can be set to &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;By defining the &lt;code&gt;endingTime&lt;/code&gt; property, the flow is stopped from being generated when the given simulation time is reached.&lt;/li&gt;
&lt;li&gt;By defining the &lt;code&gt;spawningMode&lt;/code&gt; to one of the following values, the departure time of the individual vehicles can be adjusted:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CONSTANT&lt;/code&gt; - default case, all vehicles have equal time distance to match &lt;code&gt;target_flow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POISSON&lt;/code&gt; - vehicles depart within a Poisson distribution, resulting in a more natural traffic flow.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GROW&lt;/code&gt; - the flow of departing vehicles increases linear up to &lt;code&gt;target_flow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SHRINK&lt;/code&gt; - the flow of departing vehicles decreases linear starting at &lt;code&gt;target_flow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GROW_AND_SHRINK&lt;/code&gt; - the flow of departing vehicles increases up to &lt;code&gt;target_flow&lt;/code&gt; and decreases afterwards.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;By defining the &lt;code&gt;laneSelectionMode&lt;/code&gt; to one the following values, the selection of the departure lane can be adjusted:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DEFAULT&lt;/code&gt; - selects the lane for the next vehicle based on the list of given &lt;code&gt;lanes&lt;/code&gt; in a roundrobin manner.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ROUNDROBIN_HIGHWAY&lt;/code&gt; - trucks will be spawned on the rightmost lane, all other vehicles according to &lt;code&gt;DEFAULT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HIGHWAY&lt;/code&gt; - trucks will be spawned on the rightmost lane, all other vehicles according to &lt;code&gt;BEST&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RANDOM&lt;/code&gt; - the vehicle will be placed randomly on one of the available lanes of the road.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FREE&lt;/code&gt; - the vehicle will be placed on a free lane of the road.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BEST&lt;/code&gt; - the vehicle will be placed on the best lane of the road, according to the current traffic situation and departure speed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Road Side Units&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;rsus&lt;/code&gt;-section offers the possibility to define instances of application supported Road Side Units (RSU)s and place them on a
defined position (&lt;code&gt;lat&lt;/code&gt;, &lt;code&gt;lon&lt;/code&gt; coordinates). Referring to &lt;code&gt;prototype&lt;/code&gt; definitions with simply specifying its name in the &lt;code&gt;name&lt;/code&gt;
property will automatically fill in relevant properties of the RSU.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;rsus&amp;quot;: [
{
&amp;quot;lat&amp;quot;: 52.65027,
&amp;quot;lon&amp;quot;: 13.54500,
&amp;quot;name&amp;quot;: &amp;quot;WeatherServer&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;org.eclipse.mosaic.app.tutorial.WeatherServerApp&amp;quot; ]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Traffic Lights&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;trafficLights&lt;/code&gt;-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 &lt;code&gt;tlGroupId&lt;/code&gt;-property allows mapping of applications to the traffic light groups, referring them by Id.&lt;/p&gt;
&lt;p&gt;Alternatively, the definition of the &lt;code&gt;weight&lt;/code&gt;-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.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;trafficLights&amp;quot;: [
{
&amp;quot;tlGroupId&amp;quot;: &amp;quot;26704448&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;org.eclipse.mosaic.app.tutorial.TrafficLightApp&amp;quot; ]
},
{
&amp;quot;tlGroupId&amp;quot;: &amp;quot;252864802&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;org.eclipse.mosaic.app.tutorial.TrafficLightApp&amp;quot; ]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For more information, explained for detailed examples with different mapping options regarding traffic lights, please refer to
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/building_scenarios/#traffic-lights&#34;&gt;
Simulation Scenarios - Traffic Lights
&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Servers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;servers&lt;/code&gt;-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 &lt;code&gt;CellModule&lt;/code&gt;. Delay and transmission models are configured
in the &lt;code&gt;network.json&lt;/code&gt; of the cell module (see
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/simulators/network_simulator_cell/&#34;&gt;
here
&lt;/a&gt;
).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: The &lt;code&gt;group&lt;/code&gt; parameter in the mapping configuration has to match with the id in the network configuration in order to
properly function.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;servers&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;MyServer&amp;quot;,
&amp;quot;group&amp;quot;: &amp;quot;TestServers&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;ServerApp1&amp;quot;, &amp;quot;ServerApp2&amp;quot; ]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Traffic Management Centers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;tmc&lt;/code&gt;-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&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;tmcs&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;HighwayManagement&amp;quot;,
&amp;quot;group&amp;quot;: &amp;quot;TestTmcServers&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;org.eclipse.mosaic.app.tutorial.HighwayManagementApp(&#39;3&#39;, 3)&amp;quot; ],
&amp;quot;inductionLoops&amp;quot;: [ &amp;quot;detector_0&amp;quot;, &amp;quot;detector_1&amp;quot;, &amp;quot;detector_2&amp;quot; ],
&amp;quot;laneAreaDetectors&amp;quot;: [ ]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;use-type-distributions-in-complex-traffic-scenarios&#34;&gt;Use Type Distributions in Complex Traffic Scenarios&lt;/h4&gt;
&lt;p&gt;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 &lt;code&gt;typeDistributions&lt;/code&gt;. By doing so, it is very simple to adjust the list of types and weights at only one
place in the configuration file.&lt;/p&gt;
&lt;p&gt;Instead of defining an equal list of types and weights for each single vehicle spawner, like in this example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;vehicles&amp;quot;: [
{
&amp;quot;startingTime&amp;quot;: 5.0,
&amp;quot;targetFlow&amp;quot;: 1800,
&amp;quot;maxNumberVehicles&amp;quot;: 120,
&amp;quot;route&amp;quot;: &amp;quot;1&amp;quot;,
&amp;quot;types&amp;quot;: [
{ &amp;quot;name&amp;quot;: &amp;quot;TypeA&amp;quot;, &amp;quot;weight&amp;quot;: 0.1 },
{ &amp;quot;name&amp;quot;: &amp;quot;TypeB&amp;quot;, &amp;quot;weight&amp;quot;: 0.9 }
]
},
{
&amp;quot;startingTime&amp;quot;: 55.0,
&amp;quot;targetFlow&amp;quot;: 1800,
&amp;quot;maxNumberVehicles&amp;quot;: 120,
&amp;quot;route&amp;quot;: &amp;quot;2&amp;quot;,
&amp;quot;types&amp;quot;: [
{ &amp;quot;name&amp;quot;: &amp;quot;TypeA&amp;quot;, &amp;quot;weight&amp;quot;: 0.1 },
{ &amp;quot;name&amp;quot;: &amp;quot;TypeB&amp;quot;, &amp;quot;weight&amp;quot;: 0.9 }
]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;hellip; you can use &lt;code&gt;typeDistributions&lt;/code&gt; to define the distribution of types for each vehicle once and reuse them:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;typeDistributions&amp;quot;: {
&amp;quot;exampleTypeDist&amp;quot; : [
{ &amp;quot;name&amp;quot;: &amp;quot;TypeA&amp;quot;, &amp;quot;weight&amp;quot;: 0.1 },
{ &amp;quot;name&amp;quot;: &amp;quot;TypeB&amp;quot;, &amp;quot;weight&amp;quot;: 0.9 }
]
},
&amp;quot;vehicles&amp;quot;: [
{
&amp;quot;startingTime&amp;quot;: 5.0,
&amp;quot;targetFlow&amp;quot;: 1800,
&amp;quot;maxNumberVehicles&amp;quot;: 120,
&amp;quot;route&amp;quot;: &amp;quot;1&amp;quot;,
&amp;quot;typeDistribution&amp;quot;: &amp;quot;exampleTypeDist&amp;quot;
},
{
&amp;quot;startingTime&amp;quot;: 55.0,
&amp;quot;targetFlow&amp;quot;: 1800,
&amp;quot;maxNumberVehicles&amp;quot;: 120,
&amp;quot;route&amp;quot;: &amp;quot;2&amp;quot;,
&amp;quot;typeDistribution&amp;quot;: &amp;quot;exampleTypeDist&amp;quot;
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;advanced-vehicle-spawners-with-route-generation&#34;&gt;Advanced vehicle spawners with route generation&lt;/h4&gt;
&lt;p&gt;It is also possible to define and use OD (origin-destination) matrices by adding a ODMatrixMapper to the &lt;code&gt;matrixMappers&lt;/code&gt;-list.
Each MatrixMapper consists of a list of &lt;code&gt;points&lt;/code&gt;, the vehicle-&lt;code&gt;types&lt;/code&gt; to be used and the actual flow-values (&lt;code&gt;odValues&lt;/code&gt;) between each
of the points. It is possible to define multiple matrices. This way can achieve distinctively different compositions of the vehicle flows.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;
&amp;quot;matrixMappers&amp;quot;: [
{
&amp;quot;points&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;CityA&amp;quot;,
&amp;quot;position&amp;quot;: {
&amp;quot;center&amp;quot;: {
&amp;quot;latitude&amp;quot;: 52,
&amp;quot;longitude&amp;quot;: 13
},
&amp;quot;radius&amp;quot;: 1000
}
},
{
&amp;quot;name&amp;quot;: &amp;quot;CityB&amp;quot;,
&amp;quot;position&amp;quot;: {
&amp;quot;center&amp;quot;: {
&amp;quot;latitude&amp;quot;: 48,
&amp;quot;longitude&amp;quot;: 10
},
&amp;quot;radius&amp;quot;: 1000
}
}
],
&amp;quot;types&amp;quot;: [
{
&amp;quot;name&amp;quot;: &amp;quot;CAMVehicle&amp;quot;
}
],
&amp;quot;odValues&amp;quot;: [
[0, 100], //100 vehicles from CityA to CityB
[200, 0] //200 vehicles from CityB to CityA
]
}
]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;common-configuration&#34;&gt;Common Configuration&lt;/h4&gt;
&lt;p&gt;Next to the specific configuration of prototypes and simulation entities, some general parameters can be adjusted:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;config&amp;quot;: {
&amp;quot;scaleTraffic&amp;quot; : 1.0,
&amp;quot;start&amp;quot;: 0,
&amp;quot;end&amp;quot;: 500,
&amp;quot;adjustStartingTimes&amp;quot;: false,
&amp;quot;randomizeFlows&amp;quot;: false,
&amp;quot;randomizeStartingTimes&amp;quot; : false,
&amp;quot;randomizeWeights&amp;quot;: false
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;scaleTraffic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scales the &lt;code&gt;targetFlow&lt;/code&gt; of spawned vehicles per hour as well as the &lt;code&gt;maxNumberVehicles&lt;/code&gt; by the given factor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;start&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Adjusts the point in time (in $s$) to start spawning vehicles. Any vehicle spawner with a lower &lt;code&gt;startingTime&lt;/code&gt; will be ignored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;end&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Adjusts the point in time (in $s$) to end spawning vehicles. Any vehicle spawner with a greater &lt;code&gt;startingTime&lt;/code&gt; will be ignored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;adjustStartingTimes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, the starting time of each spawner is reduced by the value in &lt;code&gt;start&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;randomizeFlows&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, the departure time of vehicles within a vehicle spawner is slightly randomized.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;randomizeStartingTimes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, the starting time of each vehicle spawner is slightly randomized.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;randomizeWeights&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt;, each &lt;code&gt;weight&lt;/code&gt; greater than zero is slightly randomized.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentation of the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/mapping_ambassador_config/&#34;&gt;
Mapping Configuration
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;unit-identifiers&#34;&gt;Unit Identifiers&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Traffic Object&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Eclipse MOSAIC Internal ID&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vehicle&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;veh_&amp;lt;seq_nr&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RSU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rsu_&amp;lt;seq_nr&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TMC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tmc_&amp;lt;seq_nr&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traffic Light&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tl_&amp;lt;group_id&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;seq_nr&lt;/code&gt; is the sequence number of simulated vehicles, RSUs, TMCs, each starting from zero.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;group_id&lt;/code&gt; is the group id of the traffic light.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>
<item>
<title>Eclipse SUMO - Simulation of Urban MObility</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/traffic_simulator_sumo/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/traffic_simulator_sumo/</guid>
<description>&lt;p&gt;&lt;strong&gt;Eclipse SUMO&lt;/strong&gt; is a highly portable, microscopic and continuous road traffic
simulation tool. It is designed to handle large road networks faster than real-time and simulates each vehicle
individually.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GNU/Linux and Microsoft Windows&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;EPL-2.0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Website&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href=&#34;https://www.eclipse.org/sumo/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://www.eclipse.org/sumo/
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Supported versions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recommended version:&lt;br&gt;Full support:&lt;br&gt;Limited support:&lt;/td&gt;
&lt;td&gt;1.8.0&lt;br&gt;1.2.0 - 1.8.0&lt;br&gt;1.0.1, 1.1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;a class=&#34;mosaic-btn mosaic-btn-primary&#34; href=&#34;https://sumo.dlr.de/wiki/Downloads&#34; title=&#34;Download Eclipse SUMO&#34;&gt;&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;Download Eclipse SUMO&lt;/a&gt;
&lt;p&gt;Download the SUMO binary bundle or installer from the SUMO website. Linux users may build SUMO from the source code.
Please refer to the
SUMO Wiki for further information.&lt;/p&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;In order to run SUMO with Eclipse MOSAIC you need to make the SUMO binaries available system wide by adding the SUMO
binary folder to your
&lt;code&gt;PATH&lt;/code&gt; environment variable. Alternatively, the environment variable &lt;code&gt;SUMO_HOME&lt;/code&gt; can be used to
define the installation directory of SUMO.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;We recommend using the 64 bit version of SUMO if you want to simulate scenarios with large traffic networks.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;This ambassador can be configured with a configuration file. The specific path is &lt;code&gt;&amp;lt;scenarioName&amp;gt;/sumo/sumo_config.json&lt;/code&gt;.
If no such file exists, the following default configuration options are used:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;updateInterval&amp;quot;: 1000,
&amp;quot;sumoConfigurationFile&amp;quot;: &amp;quot;&amp;lt;scenarioName&amp;gt;.sumo.cfg&amp;quot;,
&amp;quot;exitOnInsertionError&amp;quot;: true,
&amp;quot;additionalSumoParameters&amp;quot;: &amp;quot;--time-to-teleport 0 --seed 100000&amp;quot;,
&amp;quot;subscriptions&amp;quot;: [ &amp;quot;roadposition&amp;quot;, &amp;quot;signals&amp;quot;, &amp;quot;emissions&amp;quot; ],
&amp;quot;subscribeToAllVehicles&amp;quot;: true
}
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentation of the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/sumo_config/&#34;&gt;
SUMO Configuration
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Next to &lt;code&gt;sumo_config.json&lt;/code&gt;, the following configuration files are required for every SUMO simulation scenario:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
└─ sumo
├─ &amp;lt;scenarioName&amp;gt;.net.xml .............. SUMO Network file
├─ &amp;lt;scenarioName&amp;gt;.sumocfg .............. SUMO configuration file
└─ sumo_config.json .................... Ambassador configuraition file]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The SUMO configuration consists of sumo specific config files and the sumo-ambassador configuration
file. The main configuration file name must end with the suffix *.sumocfg, which needs to refer to the network.
The network file is mandatory and can be generated with the &lt;code&gt;scenario-convert&lt;/code&gt; tool provided with Eclipse MOSAIC.&lt;/p&gt;
&lt;div class=&#34;alert alert-warning&#34;&gt;
&lt;div&gt;
&lt;p&gt;When you are coming from SUMO you might notice the missing route file (&lt;code&gt;*.rou.xml&lt;/code&gt;). This is because with Eclipse MOSAIC,
the traffic definition (definition of vehicles, flows, vehicle types) is usually part of the Mapping configuration file. Routes
usually are defined in the Application database. You can however add route files to your scenario and mosaic will handle
all vehicles in coherence.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Vehicle related parameters, such as acceleration, maximum speed, and the like, are configured via the Mapping configuration file. However,
some SUMO specific parameters, like the car following model can only be configured in the &lt;code&gt;sumo_config.json&lt;/code&gt;. For example, if you have
configured a vehicle type called &lt;code&gt;MyVehicle&lt;/code&gt; in the Mapping configuration, you can set specific parameters for this type as following:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
...,
&amp;quot;additionalVehicleTypeParameters&amp;quot;: {
&amp;quot;MyVehicle&amp;quot;: {
&amp;quot;carFollowModel&amp;quot;: &amp;quot;IDM&amp;quot;,
&amp;quot;lcKeepRight&amp;quot;: &amp;quot;10&amp;quot;
},
...
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: All parameters have to be specified as Strings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Further information about SUMO and its configuration can be found in the official SUMO wiki.&lt;/p&gt;
&lt;h3 id=&#34;using-the-sumo-gui-with-eclipse-mosaic&#34;&gt;Using the SUMO GUI with Eclipse MOSAIC&lt;/h3&gt;
&lt;p&gt;It is also possible to use the graphical interface of SUMO in order to visualize and interact with the simulation.
To
achieve this, Eclipse MOSAIC can be configured to start the GUI process of SUMO as the federate rather than the
command
line interface. In order to use the SUMO GUI the file &lt;code&gt;&amp;lt;mosaic&amp;gt;/etc/runtime.json&lt;/code&gt; needs to be edited.
Here, the entry
&lt;code&gt;org.eclipse.mosaic.fed.sumo.ambassador.SumoAmbassador&lt;/code&gt; must be
replaced with
&lt;code&gt;org.eclipse.mosaic.fed.sumo.ambassador.SumoGuiAmbassador&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;Keep in mind to launch Eclipse MOSAIC with the argument &lt;code&gt;-w 0&lt;/code&gt; in order to disable the watchdog timer.
Otherwise, it
would shut down Eclipse MOSAIC if the simulation is paused in the SUMO GUI.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;adding-vehicles&#34;&gt;Adding Vehicles&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;SumoAmbassador&lt;/code&gt; handles vehicles added via Mapping (&lt;em&gt;mapping vehicles&lt;/em&gt;) and via SUMO route files (&lt;em&gt;sumo vehicles&lt;/em&gt;).
There are however some caveats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;mapping vehicles&lt;/em&gt; can drive on routes specified in route files, however &lt;em&gt;sumo vehicles&lt;/em&gt; can&amp;rsquo;t drive on routes specified in the scenario
database&lt;/li&gt;
&lt;li&gt;you can only map applications on &lt;em&gt;sumo vehicles&#39;&lt;/em&gt; vehicle types, however you can work around this limitation by using
different vehicle types for different applications&lt;/li&gt;
&lt;li&gt;Stay away from giving your &lt;em&gt;sumo vehicles&lt;/em&gt; the prefix &lt;code&gt;veh_&lt;/code&gt; since this will most likely lead to your simulation crashing, because
MOSAIC uses this as a prefix internally&lt;/li&gt;
&lt;li&gt;The vehicle types defined in Mapping and defined in route files can&amp;rsquo;t share the same names&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This duality of adding vehicles has some powerful use cases. For example, you can use an existing SUMO scenario and add your own
traffic via MOSAIC and equip all vehicles with applications.&lt;/p&gt;
&lt;h2 id=&#34;deep-dive-route-files--additional-files&#34;&gt;Deep dive: Route Files / Additional Files&lt;/h2&gt;
&lt;p&gt;In SUMO the route files (&lt;code&gt;&amp;lt;..&amp;gt;.rou.xml&lt;/code&gt;) fulfill three main purposes supported by Eclipse MOSAIC:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define vehicle types.&lt;/li&gt;
&lt;li&gt;Define routes for vehicles.&lt;/li&gt;
&lt;li&gt;Define vehicle departures to spawn vehicles with defined types (1.) on defined routes (2.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These definitions can also be done in additional files (&lt;code&gt;&amp;lt;...&amp;gt;.add.xml&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Route and vehicle departure definitions can also be handled by SUMO&amp;rsquo;s &lt;strong&gt;Tr&lt;/strong&gt;affic &lt;strong&gt;C&lt;/strong&gt;ontrol &lt;strong&gt;I&lt;/strong&gt;nterface (TraCI), which is also
the way Eclipse MOSAIC adds them to the simulation. This has the advantage that it can be done at runtime leading to a smaller overhead
before simulation start. Vehicle types however have to be defined in a route file, or an additional file before simulation start,
additional files have the advantage, that they are loaded before route files, which is helpful for our use case.
We write a new additional file (&lt;code&gt;mosaic_types.add.xml&lt;/code&gt;), which contains types specified in Mapping and merges them
with the aforementioned &lt;code&gt;additionalVehicleTypeParameters&lt;/code&gt; (Note: these are not validated in any form). The image below shows
a schematic view of how the configuration files and RTI components interact with each other.
&lt;figure id=&#34;figure-schematic-overview-of-vehicle-type-handling-in-eclipse-mosaic&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/sumo_route_files.svg&#34; data-caption=&#34;Schematic overview of vehicle type handling in Eclipse MOSAIC&#34;&gt;
&lt;img src=&#34;../images/sumo_route_files.svg&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
Schematic overview of vehicle type handling in Eclipse MOSAIC
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
</description>
</item>
<item>
<title>Network Simulator OMNeT&#43;&#43;</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_omnetpp/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_omnetpp/</guid>
<description>&lt;p&gt;&lt;strong&gt;OMNeT++&lt;/strong&gt; is a simulation platform for discrete-event systems. Even though it is primarily targeted at simulating computer networks and
distributed systems, it cannot be used without any extensions for wireless communication. For this kind of simulations, external model frameworks have to be included.
Currently, there are two prominent model frameworks which cover whole model suites for according focus of wireless research.
These are the Mobility Framework and the &lt;strong&gt;INET&lt;/strong&gt; Framework. As INET provides all models necessary for simulating Vehicle-2-X communication,
it is selected for the integration to Eclipse MOSAIC.&lt;/p&gt;
&lt;p&gt;For more information on the &lt;strong&gt;INET&lt;/strong&gt; extension you should look closer on the
&lt;a href=&#34;https://inet.omnetpp.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
website
&lt;/a&gt;
.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GNU/Linux&lt;br&gt;(Windows with mingw)&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GPL, free to use for academic use&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Supported version(s)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OMNeT++ 5.5 &lt;br&gt;INET 4.1&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;http://www.omnetpp.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
http://www.omnetpp.org
&lt;/a&gt;
&lt;br&gt;
&lt;a href=&#34;https://inet.omnetpp.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://inet.omnetpp.org
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;There are two installation types of the MOSAIC OMNeT++ Federate:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Type&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;#installation-for-users&#34;&gt;
USER
&lt;/a&gt;
&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;This installation type addresses those who only want to use the &lt;strong&gt;OMNeT++&lt;/strong&gt; network simulator for simulations.&lt;br&gt;Network configurations can also be adjusted.&lt;br&gt;&lt;br&gt;If you install the federate with this installation type, &lt;strong&gt;OMNeT++ 5.5&lt;/strong&gt; and &lt;strong&gt;INET 4.1&lt;/strong&gt; will automatically be installed inside &lt;code&gt;&amp;lt;mosaic&amp;gt;/bin/fed/omnetpp&lt;/code&gt; during the installation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;#installation-for-developers&#34;&gt;
DEVELOPER
&lt;/a&gt;
&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;The installation for developers addresses those who want to make changes or extend the MOSAIC OMNeT++ Federate.&lt;br&gt;&lt;br&gt;This installation type awaits that &lt;strong&gt;OMNeT++ 5.5&lt;/strong&gt; and &lt;strong&gt;INET 4.1&lt;/strong&gt; are already installed on your system and&lt;br&gt;- &lt;code&gt;PATH&lt;/code&gt; contains &lt;code&gt;/path/to/omnetpp/bin&lt;/code&gt;&lt;br&gt;- &lt;code&gt;LD_LIBRARY_PATH&lt;/code&gt; contains &lt;code&gt;/path/to/omnetpp/lib&lt;/code&gt; and &lt;code&gt;/path/to/inet/src&lt;/code&gt;&lt;br&gt;- &lt;code&gt;C_INCLUDE_PATH&lt;/code&gt; contains &lt;code&gt;/path/to/omnetpp/include&lt;/code&gt; and &lt;code&gt;/path/to/inet/src&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;If you already have &lt;strong&gt;OMNeT++ 5.5&lt;/strong&gt; and &lt;strong&gt;INET 4.1&lt;/strong&gt; installed on your
system, but you simply want to use &lt;strong&gt;OMNeT++&lt;/strong&gt; for simulations with Eclipse MOSAIC without developing further the MOSAIC
OMNeT++ Federate, you may also choose the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/simulators/network_simulator_omnetpp/#installation-for-developers&#34;&gt;
installation for developers
&lt;/a&gt;
to avoid multiple installations of &lt;strong&gt;OMNeT++&lt;/strong&gt; and &lt;strong&gt;INET&lt;/strong&gt; on your system.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;First of all, please make sure that you have the following libraries installed:
&lt;code&gt;unzip&lt;/code&gt;, &lt;code&gt;tar&lt;/code&gt;, &lt;code&gt;bison&lt;/code&gt;, &lt;code&gt;flex&lt;/code&gt;, &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;protoc&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;The installation of the current version of the OMNeT++ Federate was tested with protobuf version 3.7.0.&lt;br&gt;
It is recommended to install this version. Here you receive more information about
&lt;a href=&#34;https://github.com/protocolbuffers/protobuf/blob/master/src/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
how to install protobuf
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Follow the links and download the source code of OMNeT++, INET and the MOSAIC OMNeT++ Federate:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Software&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Version&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;OMNeT++&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;5.5&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;https://omnetpp.org/download/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://omnetpp.org/download/
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;INET&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;4.1&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;https://github.com/inet-framework/inet/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://github.com/inet-framework/inet/releases
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;MOSAIC OMNeT++ Federate&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;21.0&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;
&lt;a href=&#34;https://github.com/mosaic-addons/omnetpp-federate/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://github.com/mosaic-addons/omnetpp-federate/releases
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Available parameters of &lt;code&gt;omnet_installer.sh&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Parameter&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Value&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--installation-type&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;&amp;lt;INSTALLATION_TYPE&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Either &lt;code&gt;USER&lt;/code&gt; or &lt;code&gt;DEVELOPER&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-o&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--omnetpp&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;&amp;lt;PATH_TO_OMNET_TGZ&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Provide the archive containing the OMNeT++ source. You can obtain it from
&lt;a href=&#34;https://omnetpp.org/download/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://omnetpp.org/download/
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--inet&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;&amp;lt;PATH_TO_INET_TGZ&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Provide the archive containing the inet source code. You can obtain it from
&lt;a href=&#34;https://inet.omnetpp.org/Download.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
https://inet.omnetpp.org/Download.html
&lt;/a&gt;
. If not given, the inet-source files are downloaded by this installation script.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--federate&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;&amp;lt;PATH_TO_FEDERATE_ZIP&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Provide the archive containing the OMNeT++-federate and patches for coupling OMNeT++ to Eclipse MOSAIC. If not given, the omnetpp-federate is downloaded by this installation script.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-so&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--skip-omnetpp&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Skip the installation of OMNeT++&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-si&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--skip-inet&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Skip the installation of INET&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-q&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--quiet&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Less output and no interaction required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-j&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--parallel&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;&amp;lt;NUMBER_OF_THREADS&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Enables make to use the given number of compilation threads.&lt;br&gt;Per default your systems maximum is selected automatically.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-u&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--uninstall&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Uninstalls the OMNeT++ federate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;code&gt;-h&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;--help&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Shows this usage screen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;installation-for-users&#34;&gt;Installation for Users&lt;/h4&gt;
&lt;p&gt;Run the installation script (this takes a few minutes):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;cd &amp;lt;mosaic&amp;gt;/bin/fed/omnetpp
chmod +x omnet_installer.sh`
./omnet_install.sh \
--installation-type USER \
--omnetpp /path/to/omnetpp-5.5-src.tgz \
--inet /path/to/inet-4.1-src.tgz \
--federate /path/to/omnetpp-federate-21.0.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the installation type &lt;code&gt;USER&lt;/code&gt; the parameters &lt;code&gt;-o&lt;/code&gt;, &lt;code&gt;-i&lt;/code&gt; and &lt;code&gt;-f&lt;/code&gt; are required.&lt;br&gt;
The installation script should terminate with &lt;code&gt;SUCESS: The MOSAIC OMNeT++ Federate was successfully installed.&lt;/code&gt; otherwise the installation failed.&lt;/p&gt;
&lt;h4 id=&#34;installation-for-developers&#34;&gt;Installation for Developers&lt;/h4&gt;
&lt;p&gt;Run the installation script (this takes a few minutes):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;cd &amp;lt;mosaic&amp;gt;/bin/fed/omnetpp
chmod +x omnet_installer.sh`
./omnet_install.sh \
--installation-type DEVELOPER \
--federate /path/to/omnetpp-federate-21.0.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the installation type &lt;code&gt;DEVELOPER&lt;/code&gt; the parameter &lt;code&gt;-f&lt;/code&gt; is required.&lt;br&gt;
The installation script should terminate with &lt;code&gt;SUCCESS: The MOSAIC OMNeT++ Federate was successfully installed.&lt;/code&gt; otherwise the installation failed.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/extending_mosaic/omnetpp_details/&#34;&gt;
Extending MOSAIC OMNeT++ Federate
&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&#34;omnet-federate-configuration&#34;&gt;OMNeT++ Federate Configuration&lt;/h3&gt;
&lt;p&gt;To use OMNeT++ as network simulator in an Eclipse MOSAIC simulation, open &lt;code&gt;&amp;lt;scenarioName&amp;gt;/scenario_config.json&lt;/code&gt; and enable OMNeT++:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;federates&amp;quot;: {
...
&amp;quot;omnetpp&amp;quot;: true,
...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, when you run this scenario, Eclipse MOSAIC will automatically start the MOSAIC OMNeT++ Federate.&lt;/p&gt;
&lt;p&gt;The main configuration of the MOSAIC OMNeT++ Federate is done within the configuration files &lt;code&gt;omnetpp.ini&lt;/code&gt; and &lt;code&gt;omnetpp_config.json&lt;/code&gt; in the scenario:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
└─ omnetpp
├─ omnetpp.ini ...................... OMNeT++ federate configuration file
└─ omnetpp_config.json .............. Ambassador configuration file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The whole OMNeT++ specific configuration is done via the &lt;code&gt;omnetpp.ini&lt;/code&gt; file. It covers static parts for the
simulator coupling such as the specific Eclipse MOSAIC Event Scheduler and the ScenarioManager. Furthermore,
logging configurations and the typical parameters for the communication layers (MAC, PHY and Radio
Channel) are addressed. The communication parameters are different for vehicles and RSUs. Please refer
to the OMNeT++ documentation on the OMNeT++ homepage for further information about the structure
of the &lt;code&gt;omnetpp.ini&lt;/code&gt; file.&lt;/p&gt;
&lt;h3 id=&#34;installation-in-docker-environment&#34;&gt;Installation in Docker environment&lt;/h3&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;This is an experimental feature. Please refer to our mailing list if you experience any problems.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This guide gives instructions to execute the OMNeT++ federate inside a docker container. If you already installed
OMNeT++ on your machine following the steps before, you can skip this section.&lt;/p&gt;
&lt;p&gt;Docker is a new approach to execute software. More precisely, it &amp;ldquo;wraps software in a complete filesystem
that contains everything it needs to run: code, runtime, system tools, and system libraries&amp;rdquo;. As a result, the
software is executed within a container and its execution does not rely on the environment the container is running in.&lt;/p&gt;
&lt;p&gt;In context of Eclipse MOSAIC, this approach allows to execute OMNeT++ within a docker container. The user does not
need to manually install OMNeT++ and can even run OMNeT++ on Windows hosts.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Docker ≥ 1.13 on your machine.&lt;/li&gt;
&lt;li&gt;To get everything to work, please make sure to execute the following steps depending on your operating system:
&lt;ul&gt;
&lt;li&gt;Windows - In the settings, share the drive where Eclipse MOSAIC is installed on. You may need to restart docker in the reset tab.&lt;/li&gt;
&lt;li&gt;Linux - Make sure your user account belongs to the unix-group &lt;code&gt;docker&lt;/code&gt;. You may need to restart your machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Switch to the location of the Dockerfile in &lt;code&gt;&amp;lt;mosaic&amp;gt;/bin/fed/omnetpp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Execute the following command on command line:&lt;br&gt;
&lt;code&gt;docker build -t omnetpp-federate&lt;/code&gt;.&lt;br&gt;
This could take a while to finish.&lt;/li&gt;
&lt;li&gt;Enter the name of the docker image &lt;code&gt;etc/runtime.json&lt;/code&gt; in the &lt;code&gt;omnetpp&lt;/code&gt;-section into the property &lt;code&gt;dockerImage&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;federates&amp;quot;: [
...
{
&amp;quot;id&amp;quot;: &amp;quot;omnetpp&amp;quot;,
&amp;quot;dockerImage&amp;quot;: &amp;quot;omnetpp-federate&amp;quot;,
...
},
...
]
&lt;/code&gt;&lt;/pre&gt;
</description>
</item>
<item>
<title>Network Simulator ns-3</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_ns3/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_ns3/</guid>
<description>&lt;p&gt;The ns-3 is a discrete-event network simulator that was developed as a replacement for the popular
network simulator 2 (ns-2) and mainly focuses upon improving the core architecture, software integration,
models, and educational components for real-world network devices and protocols. It simulates both
unicast and multicast protocols and is used extensively in research on mobile ad-hoc networks.&lt;/p&gt;
&lt;p&gt;Regardless, ns-2 still remains in active use and will continue to be maintained in the near future. For
Eclipse MOSAIC coupling, only ns-3 will be available.&lt;/p&gt;
&lt;p&gt;Like other network simulators, ns-3 has a relatively steep learning curve, especially compared to GUI-
based simulators. If you have no prior experience with ns-3, we recommend familiarizing yourself with
the ns-3 simulation environment and the ns-3 simulation basics first. The ns-3 documentation can be
found under: &lt;a href=&#34;https://www.nsnam.org/documentation&#34; target=&#34;_blank&#34;&gt;https://www.nsnam.org/documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To take your first steps with ns-3, you might want to download 2 the latest version, build a copy of ns-3 (it
uses the Python-based build-system waf) and take a look at the examples, that are shipped within most
of the ns-3 source code repositories and packages. You might also examine the simulation output and try
to adjust it.&lt;/p&gt;
&lt;p&gt;Typically, a ns-3 user will work under a Linux environment. For those running under Windows, there do
exist environments which simulate the Linux environment to various degrees. The ns-3 project has in the
past (but not presently) supported the Cygwin environment for these users (see &lt;a href=&#34;http://www.cygwin.com&#34; target=&#34;_blank&#34;&gt;http://www.cygwin.com&lt;/a&gt;
for details on downloading). MiniGW is presently not officially supported, however there are also
some people who managed to use it with ns-3. For detailed information of how to set up ns-3, please refer
to their Wiki: &lt;a href=&#34;https://www.nsnam.org/wiki/Installation&#34; target=&#34;_blank&#34;&gt;https://www.nsnam.org/wiki/Installation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more information on how to set up ns-3 with Eclipse MOSAIC, please just refer to the following section. We
prepared an installation script, which manages most of the required work.&lt;/p&gt;
&lt;div class=&#34;alert alert-warning&#34;&gt;
&lt;div&gt;
&lt;p&gt;As stated above, ns-3 is primarily developed on and for GNU/Linux platforms.
Since Windows is such a widely used platform and Cygwin is not a perfect emulation
of any Linux, we highly recommended for non-Linux users to consider the installation of a
Linux virtual machine with a virtual machine environment, such as
&lt;a href=&#34;https://www.vmware.com/products/workstation-player.html&#34; target=&#34;_blank&#34;&gt;VMware&lt;/a&gt; or &lt;a href=&#34;https://www.virtualbox.org/&#34; target=&#34;_blank&#34;&gt;VirtualBox&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Software information&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Developer(s)&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Tom Henderson, Mathieu Lacage, George Riley, Mitch Watrous, Gustavo Carneiro, Tommaso Pecorella and others&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Written in&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;C++ (core) and Python (bindings)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Operating system&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;GNU/Linux FreeBSD Mac OS X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Free software: GNU GPLv2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Website&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;a href=&#34;http://www.nsnam.org/&#34; target=&#34;_blank&#34;&gt;http://www.nsnam.org/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Supported version(s)&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;3.28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;libprotobuf 3.3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;libxml2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;libsqlite3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;Deployed in MOSAIC all-in-one&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;no (and need a patch to link)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;ns3-ambassador-folder-structure&#34;&gt;ns3-ambassador folder structure&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
└─ ns3
├─ ns3_config.json ................. Ambassador configuration file
├─ configTechnologies.xml ...........ns-3 federate configuration file
└─ confWifi.xml .....................ns-3 federate configuration file
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;Eclipse MOSAIC offers support for the current stable release of ns-3 (3.28), that was released in March 2018. Older
versions of ns-3 (prior to 3.28) are not supported. However, also for newer versions we cannot guarantee
the correct operation. The coupling to Eclipse MOSAIC is designed in a manner of minimal code changes on the
ns-3 simulator itself to keep the update capabilities for future versions.&lt;/p&gt;
&lt;h4 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h4&gt;
&lt;p&gt;For GNU/Linux platforms, the minimal requirements to run basic simulations are a &lt;strong&gt;gcc&lt;/strong&gt; or &lt;strong&gt;clang&lt;/strong&gt; compiler
and a &lt;strong&gt;Python&lt;/strong&gt; interpreter. At least you need the following packages to be installed:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Minimum requirement:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc
g++
python
python-dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For a complete list of required packages for different distributions, please refer to the ns-3 installation
guide: &lt;a href=&#34;https://www.nsnam.org/wiki/Installation&#34; target=&#34;_blank&#34;&gt;https://www.nsnam.org/wiki/Installation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please make sure the following libraries are installed before running the installation script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;libxml2&lt;/li&gt;
&lt;li&gt;libsqlite3&lt;/li&gt;
&lt;li&gt;libprotobuf 3.3.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;run-the-installation-script&#34;&gt;Run the installation script&lt;/h4&gt;
&lt;div class=&#34;alert alert-warning&#34;&gt;
&lt;div&gt;
&lt;p&gt;ns-3 requires several packages to be installed on your computer. You will
need to ensure, that all required libraries are present on your system before proceeding. You
may need superuser permissions to install packages.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;alert alert-warning&#34;&gt;
&lt;div&gt;
&lt;p&gt;If your local protobuf version does not fit the required one, the installation
may fail with an error. In that case, you can run the install script with the &lt;code&gt;-p&lt;/code&gt; flag. This will
rebuild the protobuf files during installation and allow it to proceed correctly.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To ease the installation of ns-3 for Eclipse MOSAIC, the installation process has been delegated to an installation
script, that can be found in the associated ns-3 federate folder.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ns3-ambassador federate folder structure:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ mosaic/bin/fed/ns3
└─ ns3
├─ Dockerfile.sh ....................Dockerfile for ns-3 federate
└─ ns3_installer.sh ................ Installation script for ns-3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The ns-3 installation script accomplishes the following tasks:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download ns-3 tarball from the official sources&lt;/li&gt;
&lt;li&gt;Download the ns-3 federate for Eclipse MOSAIC.&lt;/li&gt;
&lt;li&gt;Apply a patch to ns-3 in order to make it work with Eclipse MOSAIC.&lt;/li&gt;
&lt;li&gt;Add the ns-3 federate to the waf build system.&lt;/li&gt;
&lt;li&gt;Configure and build the patched ns-3 with the ns-3 federate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;In order to start the simulation, the following steps need to be performed:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up the &lt;code&gt;confWifi.xml&lt;/code&gt;-file in the scenario folder (see section
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/simulators/network_simulator_ns3/#configuration&#34;&gt;
Configuration
&lt;/a&gt;
). An example confWifi.xml - file is shipped with the Tiergarten scenario.&lt;/li&gt;
&lt;li&gt;For reasonable result logging, the logger-configuration in &lt;code&gt;mosaic/etc/logback.xml&lt;/code&gt; has to be adapted to support the ns-3 ambassador and federate.&lt;/li&gt;
&lt;li&gt;At last ns-3 has to be activated in the &lt;code&gt;mosaic_config.xml&lt;/code&gt; and the simulation can be started.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;installation-in-docker-environment&#34;&gt;Installation in Docker environment&lt;/h3&gt;
&lt;div class=&#34;alert alert-note&#34;&gt;
&lt;div&gt;
&lt;p&gt;This is an experimental feature. Please refer to our mailing list if you experience any problems.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This guide gives instructions to execute the ns-3 federate inside a docker container. If you already installed
ns-3 on your machine following the steps before, you can skip this section.&lt;/p&gt;
&lt;p&gt;Docker is a new approach to execute software. More precisely, it &amp;ldquo;wraps software in a complete filesystem
that contains everything it needs to run: code, runtime, system tools, and system libraries&amp;rdquo;. As a result, the
software is executed within a container and its execution does not rely on the environment the container is running in.&lt;/p&gt;
&lt;p&gt;In context of Eclipse MOSAIC, this approach allows to execute ns-3 within a docker container. The user does not
need to manually install ns-3 and can even run ns-3 on Windows hosts.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Docker ≥ 1.13 on your machine.&lt;/li&gt;
&lt;li&gt;To get everything to work, please make sure to execute the following steps depending on your operating system:
&lt;ul&gt;
&lt;li&gt;Windows - In the settings, share the drive where Eclipse MOSAIC is installed on. You may need to restart docker in the reset tab.&lt;/li&gt;
&lt;li&gt;Linux - Make sure your user account belongs to the unix-group &lt;code&gt;docker&lt;/code&gt;. You may need to restart your machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Switch to the location of the Dockerfile in &lt;code&gt;&amp;lt;mosaic&amp;gt;/bin/fed/ns3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Execute the following command on command line:&lt;br&gt;
&lt;code&gt;docker build -t ns3-federate&lt;/code&gt;.&lt;br&gt;
This could take a while to finish.&lt;/li&gt;
&lt;li&gt;Enter the name of the docker image &lt;code&gt;etc/runtime.json&lt;/code&gt; in the &lt;code&gt;ns3&lt;/code&gt;-section into the property &lt;code&gt;dockerImage&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;federates&amp;quot;: [
...
{
&amp;quot;id&amp;quot;: &amp;quot;ns3&amp;quot;,
&amp;quot;dockerImage&amp;quot;: &amp;quot;ns3-federate&amp;quot;,
...
},
...
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can test the installation of your docker image with the Tiergarten scenario, by activating ns3 in the &lt;code&gt;scenario_config.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The whole ns-3 specific configuration is done via the &lt;code&gt;confWifi.xml&lt;/code&gt; and &lt;code&gt;configTechnologies.xml&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;confWifi.xml:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-xml&#34;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;
&amp;lt;wifi&amp;gt;
&amp;lt;!-- IPv4 address generator --&amp;gt;
&amp;lt;ipConfiguration&amp;gt;
&amp;lt;ip address=&amp;quot;192.168.0.0&amp;quot; mask=&amp;quot;255.255.0.0&amp;quot;/&amp;gt;
&amp;lt;/ipConfiguration&amp;gt;
&amp;lt;!-- Calculate a propagation delay --&amp;gt;
&amp;lt;propagationDelayModel&amp;gt;
&amp;lt;delay model= &amp;quot;ns3::NonePropagationDelayModel&amp;quot;/&amp;gt;
&amp;lt;/propagationDelayModel&amp;gt;
&amp;lt;!-- Modelize the propagation loss through a transmission medium --&amp;gt;
&amp;lt;propagationLossModel&amp;gt;
&amp;lt;loss model= &amp;quot;ns3::FriisPropagationLossModel&amp;quot;/&amp;gt;
&amp;lt;/propagationLossModel&amp;gt;
&amp;lt;wifiConfiguration&amp;gt;
&amp;lt;!-- Create non QoS-enabled MAC layers --&amp;gt;
&amp;lt;wifiMac property=&amp;quot;type&amp;quot; value=&amp;quot;ns3::AdhocWifiMac&amp;quot;/&amp;gt;
&amp;lt;!-- Wifi PHY mode --&amp;gt;
&amp;lt;wifiManager property=&amp;quot;phyMode&amp;quot; value=&amp;quot;OfdmRate54Mbps&amp;quot;/&amp;gt;
&amp;lt;!-- Wifi manager --&amp;gt;
&amp;lt;wifiManager property=&amp;quot;type&amp;quot; value=&amp;quot;ns3::ConstantRateWifiManager&amp;quot;/&amp;gt;
&amp;lt;!-- The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to detect the signal --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;EnergyDetectionThreshold&amp;quot; value=&amp;quot;-81.0&amp;quot;/&amp;gt;
&amp;lt;!-- The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to declare CCA BUSY state --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;CcaMode1Threshold&amp;quot; value=&amp;quot;-99.0&amp;quot;/&amp;gt;
&amp;lt;!-- Transmission gain (dB) --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;TxGain&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;
&amp;lt;!-- Reception gain (dB) --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;RxGain&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;
&amp;lt;!-- Number of transmission power levels available between TxPowerStart and TxPowerEnd included --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;TxPowerLevels&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;
&amp;lt;!-- Maximum available transmission level (dbm) --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;TxPowerEnd&amp;quot; value=&amp;quot;17.0&amp;quot;/&amp;gt;
&amp;lt;!-- Minimum available transmission level (dbm) --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;TxPowerStart&amp;quot; value=&amp;quot;17.0&amp;quot;/&amp;gt;
&amp;lt;!-- Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;RxNoiseFigure&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;
&amp;lt;!-- Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1) --&amp;gt;
&amp;lt;wifiPhy property=&amp;quot;ChannelNumber&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;
&amp;lt;/wifiConfiguration&amp;gt;
&amp;lt;/wifi&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The IP configuration information includes the network address and network mask. The ns-3 propagation
module defines two generic interfaces, namely &lt;strong&gt;PropagationLossModel&lt;/strong&gt; and &lt;strong&gt;PropagationDelayModel&lt;/strong&gt;,
for the modelling of propagation loss respectively propagation delay.&lt;/p&gt;
&lt;p&gt;In the default &lt;code&gt;confWifi.xml&lt;/code&gt;, the Wi-Fi device uses the ns-3 standard propagation delay model
&lt;code&gt;ns3::ConstantSpeedPropagationDelayModel&lt;/code&gt; and the ns-3 standard propagation loss model
&lt;code&gt;ns3::FriisPropagationLossModel&lt;/code&gt;. Radio propagation models in ns-3 can easily be exchanged with
the ns-3 class registration system (see the ns-3 documentation for details). The Wi-Fi configuration
includes additional parameters, like sending power and antenna gain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;configTechnologies.xml:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-xml&#34;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;
&amp;lt;ns3Configuration&amp;gt;
&amp;lt;installers&amp;gt;
&amp;lt;installer type=&amp;quot;ns3::WifiVehicleInstaller&amp;quot; name=&amp;quot;WifiVehicle&amp;quot; file=&amp;quot;confWifi.xml&amp;quot; default=&amp;quot;true&amp;quot; /&amp;gt;
&amp;lt;installer type=&amp;quot;ns3::MobilityModelInstaller&amp;quot; name=&amp;quot;Mobility&amp;quot; default=&amp;quot;true&amp;quot; /&amp;gt;
&amp;lt;/installers&amp;gt;
&amp;lt;/ns3Configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The configuration manager of the ns-3 federate defines, which installer should be loaded for the Wi-Fi
device (refering to the &lt;code&gt;confWifi.xml&lt;/code&gt;) and the mobility model. Usually, you don’t need to take any
changes and simply use the default configuration file, that ships with the ns-3 federate.&lt;/p&gt;
</description>
</item>
<item>
<title>Simple Network Simulator (SNS)</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_sns/</link>
<pubDate>Tue, 30 Jun 2020 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_sns/</guid>
<description>&lt;p&gt;The Simple Network Simulator (SNS) aims to provide simple and fast capabilities for the
transmission of V2X-messages using Ad hoc communication. In order to stay performant the simulator makes abstractions
in certain places. Those abstractions will be discussed later on.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;The SNS offers some configurability regarding the way transmissions are simulated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Main Configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Parameter&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Description&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;type&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Default Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;maximumTtl&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Defines the upper bound for the amount of hops a message can make. (Note: messages can have individual &lt;code&gt;ttl&lt;/code&gt;&amp;rsquo;s)&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;int&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;singlehopRadius&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Fallback radius to be used for transmission, if no radius is defined in the &lt;code&gt;AdhocConfiguration&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;double&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;509.4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;singlehopDelay&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;A delay configuration for the direct communication between two nodes. (
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/extending_mosaic/delay_models/&#34;&gt;
See here
&lt;/a&gt;
)&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Delay&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;`ConstantDelay |&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;singlehopTransmission&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;This contains the transmission configurations for &lt;code&gt;lossProbability&lt;/code&gt; and &lt;code&gt;maxRetries&lt;/code&gt;.&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;CTransmission&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;adhocTransmissionModel&lt;/code&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;A class extending &lt;code&gt;AdhocTransmissionModel&lt;/code&gt;, this will decide the logic for transmissions.&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;AdhocTransmissionModel&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;code&gt;SimpleAdhoc TransmissionModel&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;On default the SNS will use the &lt;code&gt;SimpleAdhocTransmissionModel&lt;/code&gt; with a &lt;code&gt;ConstantDelay&lt;/code&gt; using 0 as delay. This means it usually
makes sense to specify the &lt;code&gt;AdhocTransmissionModel&lt;/code&gt; explicitly and use a more realistic &lt;code&gt;Delay&lt;/code&gt;.
&lt;strong&gt;Example Configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;maximumTtl&amp;quot;: 20,
&amp;quot;singlehopRadius&amp;quot;: 300.5,
&amp;quot;singlehopDelay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleRandomDelay&amp;quot;,
&amp;quot;steps&amp;quot;: 5,
&amp;quot;minDelay&amp;quot;: &amp;quot;1.5 ms&amp;quot;,
&amp;quot;maxDelay&amp;quot;: &amp;quot;2.5 ms&amp;quot;
},
&amp;quot;singlehopTransmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.0,
&amp;quot;maxRetries&amp;quot;: 0
},
&amp;quot;adhocTransmissionModel&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleAdhocTransmissionModel&amp;quot;,
&amp;quot;simpleMultihopDelay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;GammaRandomDelay&amp;quot;,
&amp;quot;minDelay&amp;quot;: &amp;quot;10 ms&amp;quot;,
&amp;quot;expDelay&amp;quot;: &amp;quot;30 ms&amp;quot;
},
&amp;quot;simpleMultihopTransmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.1,
&amp;quot;maxRetries&amp;quot;: 2
}
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentation of the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/sns_config/&#34;&gt;
SNS Configuration
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;transmission-logic&#34;&gt;Transmission Logic&lt;/h2&gt;
&lt;p&gt;SNS differentiates between two types of Ad hoc transmissions, geographically- and topologically-scoped transmissions, which
generally are abbreviated with &lt;em&gt;GeoCast&lt;/em&gt; and &lt;em&gt;TopoCast&lt;/em&gt; respectively.&lt;br&gt;
GeoCasts are limited to &lt;em&gt;BroadCasts&lt;/em&gt;. Accordingly, there is no explicit addressing
of receivers (other than 255.255.255.255), instead a destination area is specified. However, GeoCasts allow for multihop forwarding.&lt;br&gt;
TopoCasts on the other hand use means of IPv4 addressing to transmit messages. Since the SNS was not build to simulate transmissions using complex topology-constructs, TopoCasts
are limited to transmissions with a single hop. However, TopoCasts support &lt;em&gt;BroadCasts&lt;/em&gt; and &lt;em&gt;UniCasts&lt;/em&gt; (we are omitting Anycasts).
Most transmissions in the Ad hoc domain will be some form of Broadcast, meaning every reachable entity is eligible to
receive a message.&lt;/p&gt;
&lt;div class=&#34;svg-wrap mt-1 mb-4&#34;&gt;
&lt;div class=&#34;inner&#34;&gt;
&lt;svg id=&#34;mermaid-1603209753374&#34; width=&#34;100%&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; xmlns:xlink=&#34;http://www.w3.org/1999/xlink&#34; height=&#34;1207.332763671875&#34; style=&#34;max-width: 817.0913696289062px;&#34; viewBox=&#34;0 0 817.0913696289062 1207.332763671875&#34;&gt;&lt;style&gt;#mermaid-1603209753374{font-family:&#34;trebuchet ms&#34;,verdana,arial;font-size:16px;fill:#333;}#mermaid-1603209753374 .error-icon{fill:#552222;}#mermaid-1603209753374 .error-text{fill:#552222;stroke:#552222;}#mermaid-1603209753374 .edge-thickness-normal{stroke-width:2px;}#mermaid-1603209753374 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1603209753374 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1603209753374 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1603209753374 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1603209753374 .marker{fill:#333333;}#mermaid-1603209753374 .marker.cross{stroke:#333333;}#mermaid-1603209753374 svg{font-family:&#34;trebuchet ms&#34;,verdana,arial;font-size:16px;}#mermaid-1603209753374 .label{font-family:&#34;trebuchet ms&#34;,verdana,arial;color:#333;}#mermaid-1603209753374 .label text{fill:#333;}#mermaid-1603209753374 .node rect,#mermaid-1603209753374 .node circle,#mermaid-1603209753374 .node ellipse,#mermaid-1603209753374 .node polygon,#mermaid-1603209753374 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1603209753374 .node .label{text-align:center;}#mermaid-1603209753374 .node.clickable{cursor:pointer;}#mermaid-1603209753374 .arrowheadPath{fill:#333333;}#mermaid-1603209753374 .edgePath .path{stroke:#333333;stroke-width:1.5px;}#mermaid-1603209753374 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1603209753374 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-1603209753374 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-1603209753374 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1603209753374 .cluster text{fill:#333;}#mermaid-1603209753374 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:&#34;trebuchet ms&#34;,verdana,arial;font-size:12px;background:hsl(80,100%,96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1603209753374:root{--mermaid-font-family:&#34;trebuchet ms&#34;,verdana,arial;}#mermaid-1603209753374 flowchart{fill:apa;}&lt;/style&gt;&lt;g&gt;&lt;g class=&#34;output&#34;&gt;&lt;g class=&#34;clusters&#34;&gt;&lt;/g&gt;&lt;g class=&#34;edgePaths&#34;&gt;&lt;g class=&#34;edgePath LS-id1 LE-id2&#34; id=&#34;L-id1-id2&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M239.4164047241211,47L239.4164047241211,72L239.9164047241211,97.5&#34; marker-end=&#34;url(#arrowhead39)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead39&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id2 LE-id3&#34; id=&#34;L-id2-id3&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M195.9271276785066,224.93259795438553L112.671875,302.921875L113.171875,337.921875&#34; marker-end=&#34;url(#arrowhead40)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead40&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id2 LE-id4&#34; id=&#34;L-id2-id4&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M283.9056817697356,224.93259795438553L366.1609344482422,302.921875L366.66093444824224,347.42812499999997&#34; marker-end=&#34;url(#arrowhead41)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead41&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id3 LE-id5&#34; id=&#34;L-id3-id5&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M113.171875,478.6171875L112.671875,512.6171875L112.671875,616.9343719482422&#34; marker-end=&#34;url(#arrowhead42)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead42&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id4 LE-id6&#34; id=&#34;L-id4-id6&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M366.66093444824224,469.1109344482418L366.1609344482422,512.6171875L366.6609344482422,547.6171905517579&#34; marker-end=&#34;url(#arrowhead43)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead43&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id6 LE-id7&#34; id=&#34;L-id6-id7&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M314.730715999631,693.3213409996309L218.50390625,779.2515563964844L218.50390625,914.0421752929688&#34; marker-end=&#34;url(#arrowhead44)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead44&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id6 LE-id8&#34; id=&#34;L-id6-id8&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M418.59115610436135,693.321343895639L513.8179626464844,779.2515563964844L514.3179626464845,814.2515625&#34; marker-end=&#34;url(#arrowhead45)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead45&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id8 LE-id9&#34; id=&#34;L-id8-id9&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M451.77749555523815,1010.2923332017227L360.3570251464844,1106.8327941894531L360.3570251464844,1150.8327941894531&#34; marker-end=&#34;url(#arrowhead46)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead46&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;g class=&#34;edgePath LS-id8 LE-id10&#34; id=&#34;L-id8-id10&#34; style=&#34;opacity: 1;&#34;&gt;&lt;path class=&#34;path&#34; d=&#34;M576.8584356425159,1010.292339503968L667.2789001464844,1106.8327941894531L667.2789001464844,1141.3327941894531&#34; marker-end=&#34;url(#arrowhead47)&#34; style=&#34;fill:none&#34;&gt;&lt;/path&gt;&lt;defs&gt;&lt;marker id=&#34;arrowhead47&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;9&#34; refY=&#34;5&#34; markerUnits=&#34;strokeWidth&#34; markerWidth=&#34;8&#34; markerHeight=&#34;6&#34; orient=&#34;auto&#34;&gt;&lt;path d=&#34;M 0 0 L 10 5 L 0 10 z&#34; class=&#34;arrowheadPath&#34; style=&#34;stroke-width: 1; stroke-dasharray: 1, 0;&#34;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabels&#34;&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(0,0)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;0&#34; height=&#34;0&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;0&#34; height=&#34;0&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id1-id2&#34; class=&#34;edgeLabel L-LS-id1&#39; L-LE-id2&#34;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(112.671875,302.921875)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-33.0859375,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;66.171875&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;66.171875&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id2-id3&#34; class=&#34;edgeLabel L-LS-id2&#39; L-LE-id3&#34;&gt;TopoCast&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(366.1609344482422,302.921875)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-29.46875,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;58.9375&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;58.9375&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id2-id4&#34; class=&#34;edgeLabel L-LS-id2&#39; L-LE-id4&#34;&gt;GeoCast&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(112.671875,512.6171875)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-12.1640625,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id3-id5&#34; class=&#34;edgeLabel L-LS-id3&#39; L-LE-id5&#34;&gt;Yes&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(366.1609344482422,512.6171875)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-12.1640625,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id4-id6&#34; class=&#34;edgeLabel L-LS-id4&#39; L-LE-id6&#34;&gt;Yes&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(218.50390625,779.2515563964844)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-12.1640625,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id6-id7&#34; class=&#34;edgeLabel L-LS-id6&#39; L-LE-id7&#34;&gt;Yes&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(513.8179626464844,779.2515563964844)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-9.3984375,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;18.796875&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;18.796875&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id6-id8&#34; class=&#34;edgeLabel L-LS-id6&#39; L-LE-id8&#34;&gt;No&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(360.3570251464844,1106.8327941894531)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-12.1640625,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;24.328125&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id8-id9&#34; class=&#34;edgeLabel L-LS-id8&#39; L-LE-id9&#34;&gt;Yes&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;edgeLabel&#34; transform=&#34;translate(667.2789001464844,1106.8327941894531)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;g transform=&#34;translate(-9.3984375,-9.5)&#34; class=&#34;label&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; width=&#34;18.796875&#34; height=&#34;19&#34;&gt;&lt;/rect&gt;&lt;foreignObject width=&#34;18.796875&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;&lt;span id=&#34;L-L-id8-id10&#34; class=&#34;edgeLabel L-LS-id8&#39; L-LE-id10&#34;&gt;No&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;nodes&#34;&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id1-28&#34; transform=&#34;translate(239.4164047241211,27.5)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;rect rx=&#34;0&#34; ry=&#34;0&#34; x=&#34;-72.1953125&#34; y=&#34;-19.5&#34; width=&#34;144.390625&#34; height=&#34;39&#34; class=&#34;label-container&#34;&gt;&lt;/rect&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-62.1953125,-9.5)&#34;&gt;&lt;foreignObject width=&#34;124.390625&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;V2X-Transmission&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id2-29&#34; transform=&#34;translate(239.4164047241211,182.7109375)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;polygon points=&#34;85.7109375,0 171.421875,-85.7109375 85.7109375,-171.421875 0,-85.7109375&#34; transform=&#34;translate(-85.7109375,85.7109375)&#34; class=&#34;label-container&#34;&gt;&lt;/polygon&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-65.734375,-9.5)&#34;&gt;&lt;foreignObject width=&#34;131.46875&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Transmission Type&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id3-32&#34; transform=&#34;translate(112.671875,407.76953125)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;polygon points=&#34;70.34765625,0 140.6953125,-70.34765625 70.34765625,-140.6953125 0,-70.34765625&#34; transform=&#34;translate(-70.34765625,70.34765625)&#34; class=&#34;label-container&#34;&gt;&lt;/polygon&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-39.1640625,-19)&#34;&gt;&lt;foreignObject width=&#34;78.328125&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Broadcast&lt;br&gt;or Unicast?&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id4-33&#34; transform=&#34;translate(366.1609344482422,407.76953125)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;polygon points=&#34;60.84140625,0 121.6828125,-60.84140625 60.84140625,-121.6828125 0,-60.84140625&#34; transform=&#34;translate(-60.84140625,60.84140625)&#34; class=&#34;label-container&#34;&gt;&lt;/polygon&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-38.1015625,-9.5)&#34;&gt;&lt;foreignObject width=&#34;76.203125&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Broadcast?&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id5-38&#34; transform=&#34;translate(112.671875,645.9343719482422)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;rect rx=&#34;29&#34; ry=&#34;29&#34; x=&#34;-104.671875&#34; y=&#34;-29&#34; width=&#34;209.34375&#34; height=&#34;58&#34; class=&#34;label-container&#34;&gt;&lt;/rect&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-87.421875,-19)&#34;&gt;&lt;foreignObject width=&#34;174.84375&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Simulate TopoCast using&lt;br&gt;singlehop configuration.&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id6-41&#34; transform=&#34;translate(366.1609344482422,645.9343719482422)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;polygon points=&#34;98.8171875,0 197.634375,-98.8171875 98.8171875,-197.634375 0,-98.8171875&#34; transform=&#34;translate(-98.8171875,98.8171875)&#34; class=&#34;label-container&#34;&gt;&lt;/polygon&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-70.796875,-19)&#34;&gt;&lt;foreignObject width=&#34;141.59375&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Simple transmission&lt;br&gt;model?&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id7-44&#34; transform=&#34;translate(218.50390625,943.0421752929688)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;rect rx=&#34;29&#34; ry=&#34;29&#34; x=&#34;-116.0234375&#34; y=&#34;-29&#34; width=&#34;232.046875&#34; height=&#34;58&#34; class=&#34;label-container&#34;&gt;&lt;/rect&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-98.7734375,-19)&#34;&gt;&lt;foreignObject width=&#34;197.546875&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Simulate transmission using&lt;br&gt;simpleMultihopDelay.&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id8-47&#34; transform=&#34;translate(513.8179626464844,943.0421752929688)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;polygon points=&#34;129.290625,0 258.58125,-129.290625 129.290625,-258.58125 0,-129.290625&#34; transform=&#34;translate(-129.290625,129.290625)&#34; class=&#34;label-container&#34;&gt;&lt;/polygon&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-104.65625,-19)&#34;&gt;&lt;foreignObject width=&#34;209.3125&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Sender directly able to reach&lt;br&gt;destination area?&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id9-50&#34; transform=&#34;translate(360.3570251464844,1170.3327941894531)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;rect rx=&#34;19.5&#34; ry=&#34;19.5&#34; x=&#34;-115.109375&#34; y=&#34;-19.5&#34; width=&#34;230.21875&#34; height=&#34;39&#34; class=&#34;label-container&#34;&gt;&lt;/rect&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-100.234375,-9.5)&#34;&gt;&lt;foreignObject width=&#34;200.46875&#34; height=&#34;19&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Flooding in destination area&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&#34;node default&#34; id=&#34;flowchart-id10-53&#34; transform=&#34;translate(667.2789001464844,1170.3327941894531)&#34; style=&#34;opacity: 1;&#34;&gt;&lt;rect rx=&#34;29&#34; ry=&#34;29&#34; x=&#34;-141.8125&#34; y=&#34;-29&#34; width=&#34;283.625&#34; height=&#34;58&#34; class=&#34;label-container&#34;&gt;&lt;/rect&gt;&lt;g class=&#34;label&#34; transform=&#34;translate(0,0)&#34;&gt;&lt;g transform=&#34;translate(-124.5625,-19)&#34;&gt;&lt;foreignObject width=&#34;249.125&#34; height=&#34;38&#34;&gt;&lt;div xmlns=&#34;http://www.w3.org/1999/xhtml&#34; style=&#34;display: inline-block; white-space: nowrap;&#34;&gt;Greedy Forwarding to reach area,&lt;br&gt;then flooding in destination areay.&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;div class=&#34;desc&#34;&gt;
This flowchart tells how different types of messages are handled internally.
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;topocasts&#34;&gt;TopoCasts&lt;/h3&gt;
&lt;p&gt;The only way of directly addressing entities is a &lt;em&gt;SingleHopUniCast&lt;/em&gt; (see figure below), the sender will try to address an entity
in its transmission range.
&lt;figure id=&#34;figure-singlehopunicast-the-rsu-is-directly-addressing-the-green-vehicle&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/SingleHopUniCast.png&#34; data-caption=&#34;SingleHopUniCast: The RSU is directly addressing the green vehicle.&#34;&gt;
&lt;img src=&#34;../images/SingleHopUniCast.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
SingleHopUniCast: The RSU is directly addressing the green vehicle.
&lt;/figcaption&gt;
&lt;/figure&gt;
The counterpart to that is a &lt;em&gt;SingleHopBroadCast&lt;/em&gt; (see figure below), this form of transmission is commonly used for CAMs (Cooperative Awareness Messages)
and other types of intermediate warning messages to all entities in transmission range.&lt;br&gt;
&lt;figure id=&#34;figure-singlehopbroadcast-the-rsu-is-addressing-all-units-in-transmission-range&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/SingleHopBroadCast.png&#34; data-caption=&#34;SingleHopBroadCast: The RSU is addressing all units in transmission range.&#34;&gt;
&lt;img src=&#34;../images/SingleHopBroadCast.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
SingleHopBroadCast: The RSU is addressing all units in transmission range.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id=&#34;geocasts&#34;&gt;GeoCasts&lt;/h3&gt;
&lt;p&gt;As already explained, GeoCasts do not support direct addressing, so there is no form of UniCast. Instead of addressing
entities, GeoCasts specify a destination area in which a message should be distributed.
The SNS supports two ways to simulate GeoCasts.
A simple but performant model (&lt;code&gt;SimpleAdhocTransmissionModel&lt;/code&gt;) &amp;amp; a fairly realistic model ( &lt;code&gt;SophisticatedAdhocTransmissionModel&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;The simple model assumes a transmission to all entities in the specified area, whereas the delay will be calculated using the configured delay-type and the successful reception will be determined by the uniformly distributed lossProbability.
The figure below depicts this behaviour
&lt;figure id=&#34;figure-simple-geobroadcast-the-rsu-is-sending-to-all-entities-in-the-destination-area-all-arrows-transmissions-will-have-a-uniquely-calculated-delay-or-possible-loss&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/SimpleMultiHop.png&#34; data-caption=&#34;Simple GeoBroadCast: The RSU is sending to all entities in the destination area. All arrows (transmissions) will have a uniquely calculated delay or possible loss.&#34;&gt;
&lt;img src=&#34;../images/SimpleMultiHop.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
Simple GeoBroadCast: The RSU is sending to all entities in the destination area. All arrows (transmissions) will have a uniquely calculated delay or possible loss.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The realistic model accounts for possible transmission failures more accurately. The easiest case is that the sender itself is inside
of the destination area&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; and will start a
&lt;a href=&#34;#flooding-transmission&#34;&gt;
Flooding Transmission
&lt;/a&gt;
within this area (see figure below).
&lt;figure id=&#34;figure-geobroadcast-using-flooding-transmissionflooding-transmission-note-the-area-is-not-limited-to-circles&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/FloodingTransmission.png&#34; data-caption=&#34;GeoBroadCast using Flooding Transmission. Note: the area is not limited to circles.&#34;&gt;
&lt;img src=&#34;../images/FloodingTransmission.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
GeoBroadCast using &lt;a href=&#34;#flooding-transmission&#34;&gt;Flooding Transmission&lt;/a&gt;. Note: the area is not limited to circles.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;In case the sending entity is outside of the destination area, a
&lt;a href=&#34;#approaching-transmission&#34;&gt;
Forwarding Transmission
&lt;/a&gt;
has to
be executed first. This is can also be described as an &lt;em&gt;AnyCast&lt;/em&gt;, since the goal of this transmission is to reach &lt;em&gt;any&lt;/em&gt; entity
inside the destination area. We try to achieve this by building a &amp;ldquo;chain&amp;rdquo; of entities, that will forward the message to the destination
are (see figure below).
&lt;figure id=&#34;figure-forwarding-transmission-by-building-a-chain-of-vehicles&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/ApproachingTransmission.png&#34; data-caption=&#34;Forwarding Transmission, by building a &amp;ldquo;chain&amp;rdquo; of vehicles.&#34;&gt;
&lt;img src=&#34;../images/ApproachingTransmission.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
Forwarding Transmission, by building a &amp;ldquo;chain&amp;rdquo; of vehicles.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The SNS however never uses
&lt;a href=&#34;#approaching-transmission&#34;&gt;
Forwarding Transmissions
&lt;/a&gt;
individually, rather they are combined with a
&lt;a href=&#34;#flooding-transmission&#34;&gt;
Flooding Transmission
&lt;/a&gt;
, which
will simulate a way, that GeaCasts can be implemented in reality. The figure below depicts this behaviour.
&lt;figure id=&#34;figure-forwarding-transmission-followed-by-a-flooding-transmissionflooding-transmission-to-realistically-simulate-geocasts&#34;&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;../images/ApproachingAndFlooding.png&#34; data-caption=&#34;Forwarding Transmission followed by a Flooding Transmission to realistically simulate GeoCasts.&#34;&gt;
&lt;img src=&#34;../images/ApproachingAndFlooding.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;
&lt;figcaption&gt;
Forwarding Transmission followed by a &lt;a href=&#34;#flooding-transmission&#34;&gt;Flooding Transmission&lt;/a&gt; to realistically simulate GeoCasts.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;transmission-models&#34;&gt;Transmission Models&lt;/h2&gt;
&lt;p&gt;As already mentioned in the previous abstracts, the SNS supports different transmission models for different use cases.
Depending on the configuration of the SNS and the type of message send, different models will be used.
The models are located in the package &lt;code&gt;org.eclipse.mosaic.fed.sns.ambassador.model&lt;/code&gt;. This chapter aims to give
a detailed inside in the workings of the models.&lt;/p&gt;
&lt;h3 id=&#34;simpleadhoctransmissionmodel&#34;&gt;&lt;code&gt;SimpleAdhocTransmissionModel&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;This is the most basic of all transmission models and will be your model of choice if you are not interested in completely
accurate transmission results but care for performance. This model will approximate GeoCasts using the defined &lt;code&gt;simpleMultihopDelay&lt;/code&gt;
and &lt;code&gt;simpleMultihopTransmission&lt;/code&gt; parameters.
For TopoCasts the usual &lt;code&gt;singlehopDelay&lt;/code&gt; will be used.
This model only checks, whether a potential receiver is inside the destination area and has enabled Adhoc capabilities.
If those conditions are met it will simulate the transmission by calculating an actual delay value and saving it into a
transmission-result. Such a result holds information of the success of the transmission, the delay-value, the amount of hops,
and the number of attempts. Though the amount of hops will always be 1 for this model.&lt;/p&gt;
&lt;h3 id=&#34;sophisticatedadhoctransmissionmodel&#34;&gt;&lt;code&gt;SophisticatedAdhocTransmissionModel&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;This model offers are more realistic simulation of adhoc transmissions, using an implementation of a greedy-forwarding and flooding
algorithm (see
&lt;a href=&#34;https://en.wikipedia.org/wiki/Geographic_routing&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
here (greedy forwarding)
&lt;/a&gt;
&amp;amp;
&lt;a href=&#34;https://en.wikipedia.org/wiki/Flooding_%28computer_networking%29&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
here (flooding)
&lt;/a&gt;
). For TopoCasts this model behaves very
similarly to the &lt;code&gt;SimpleAdhocTransmissionModel&lt;/code&gt;, since TopoCasts are always configured with only one hop.
For GeoCasts however, this model follows the flowchart above, trying to &amp;ldquo;approach&amp;rdquo; a destination area if it can&amp;rsquo;t be reached directly.&lt;/p&gt;
&lt;h4 id=&#34;approaching-greedy-forwarding&#34;&gt;Approaching (Greedy forwarding)&lt;/h4&gt;
&lt;p&gt;Approaching can be imagined as building a &amp;ldquo;chain&amp;rdquo; of entities to reach an area. However, there is no
guarantee, that even if such a chain exists, it will be found. The way that this chain is build follows the subsequent steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start from the sender and collect all reachable entities.&lt;/li&gt;
&lt;li&gt;Choose out of all reachable entities the one, that is closest to any node in the destination area.&lt;/li&gt;
&lt;li&gt;Use the chosen node and repeat the first step.&lt;/li&gt;
&lt;li&gt;Repeat until either a node inside the destination area is reached, or the TTL (time to live) is exceeded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By always choosing the node with the shortest distance to the destination area, we omit a lot of possible solutions.
Greedy Forwarding isn&amp;rsquo;t optimal, but offers a performant approach for this problem. &amp;ldquo;Face Routing&amp;rdquo;-algorithms will always
find a path if one exists, however this hasn&amp;rsquo;t been implemented yet (feel free to contribute :).
The figure below shows an example of those shortcomings, the message will be send using the green nodes and won&amp;rsquo;t receive the destination
area, even though there is a possible &amp;ldquo;chain&amp;rdquo; using the yellow nodes.&lt;/p&gt;
&lt;div class=&#34;svg-wrap mt-1 mb-4&#34;&gt;
&lt;div class=&#34;inner&#34;&gt;
&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; standalone=&#34;no&#34;?&gt;
&lt;svg
xmlns:dc=&#34;http://purl.org/dc/elements/1.1/&#34;
xmlns:cc=&#34;http://creativecommons.org/ns#&#34;
xmlns:rdf=&#34;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#34;
xmlns:svg=&#34;http://www.w3.org/2000/svg&#34;
xmlns=&#34;http://www.w3.org/2000/svg&#34;
xmlns:sodipodi=&#34;http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd&#34;
xmlns:inkscape=&#34;http://www.inkscape.org/namespaces/inkscape&#34;
width=&#34;100%&#34;
height=&#34;100%&#34;
viewBox=&#34;0 0 1000 1100&#34;
preserveAspectRatio=&#34;xMinYMin meet&#34;
version=&#34;1.1&#34;
id=&#34;svg112&#34;
sodipodi:docname=&#34;shortcomingsApproaching.svg&#34;
inkscape:version=&#34;0.92.4 (5da689c313, 2019-01-14)&#34;&gt;
&lt;metadata
id=&#34;metadata116&#34;&gt;
&lt;rdf:RDF&gt;
&lt;cc:Work
rdf:about=&#34;&#34;&gt;
&lt;dc:format&gt;image/svg+xml&lt;/dc:format&gt;
&lt;dc:type
rdf:resource=&#34;http://purl.org/dc/dcmitype/StillImage&#34; /&gt;
&lt;dc:title&gt;&lt;/dc:title&gt;
&lt;/cc:Work&gt;
&lt;/rdf:RDF&gt;
&lt;/metadata&gt;
&lt;sodipodi:namedview
pagecolor=&#34;#ffffff&#34;
bordercolor=&#34;#000000&#34;
borderopacity=&#34;1&#34;
objecttolerance=&#34;10&#34;
gridtolerance=&#34;10&#34;
guidetolerance=&#34;10&#34;
inkscape:pageopacity=&#34;0&#34;
inkscape:pageshadow=&#34;2&#34;
inkscape:window-width=&#34;2560&#34;
inkscape:window-height=&#34;1377&#34;
id=&#34;namedview114&#34;
showgrid=&#34;false&#34;
inkscape:zoom=&#34;0.54909091&#34;
inkscape:cx=&#34;70.460088&#34;
inkscape:cy=&#34;483.05537&#34;
inkscape:window-x=&#34;1912&#34;
inkscape:window-y=&#34;-8&#34;
inkscape:window-maximized=&#34;1&#34;
inkscape:current-layer=&#34;g110&#34; /&gt;
&lt;defs
id=&#34;defs66&#34;&gt;
&lt;clipPath
id=&#34;EGXEKOJWuGVn&#34;&gt;
&lt;path
id=&#34;svg_1&#34;
d=&#34;m0,0l1673,0l0,1285l-1673,0l0,-1285z&#34;
fill=&#34;none&#34; /&gt;
&lt;/clipPath&gt;
&lt;/defs&gt;
&lt;g
id=&#34;g110&#34;&gt;
&lt;title
id=&#34;title68&#34;&gt;Layer 1&lt;/title&gt;
&lt;path
style=&#34;fill:#ffd700;fill-opacity:0.3&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 460.74242,186.92776 c 0,75.84645 -61.4857,137.33215 -137.33215,137.33215 -75.84645,0 -137.33215,-61.4857 -137.33215,-137.33215 0,-75.84645 61.4857,-137.332153 137.33215,-137.332153 75.84645,0 137.33215,61.485703 137.33215,137.332153 z&#34;
id=&#34;svg_5&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#caab06;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 460.74242,186.92776 c 0,75.84645 -61.4857,137.33215 -137.33215,137.33215 -75.84645,0 -137.33215,-61.4857 -137.33215,-137.33215 0,-75.84645 61.4857,-137.332153 137.33215,-137.332153 75.84645,0 137.33215,61.485703 137.33215,137.332153 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_6&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#ffd700&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;229.62225&#34;
y=&#34;37.811882&#34;
id=&#34;svg_7&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Destination Area&lt;/text&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:none;stroke:#ffffff;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:10&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;229.62225&#34;
y=&#34;37.811882&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_8&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Destination Area&lt;/text&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#978006;stroke:none;stroke-opacity:1;&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;229.62225&#34;
y=&#34;37.811882&#34;
id=&#34;svg_9&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Destination Area&lt;/text&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 529.40849,873.5885 c 0,113.7697 -92.22855,205.9982 -205.99822,205.9982 -113.76968,0 -205.99822,-92.2285 -205.99822,-205.9982 0,-113.76967 92.22854,-205.99822 205.99822,-205.99822 113.76967,0 205.99822,92.22855 205.99822,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_10&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 486.82048,688.91189 c 0,113.76968 -92.22854,205.99822 -205.99822,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76968,0 205.99822,92.22854 205.99822,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_11&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 428.82048,511.91189 c 0,113.76968 -92.22854,205.99822 -205.99822,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76968,0 205.99822,92.22854 205.99822,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_12&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 696.92801,775.58689 c 0,113.76968 -92.2286,205.99821 -205.99825,205.99821 -113.76968,0 -205.99822,-92.22853 -205.99822,-205.99821 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76965,0 205.99825,92.22854 205.99825,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_13&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 846.82051,657.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.76973,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22854,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_14&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 988.82051,527.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.7697,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22857,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_15&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 941.82051,347.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.7697,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22857,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_16&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 783.82051,235.91189 c 0,113.76968 -92.2286,205.99822 -205.99825,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.998223 205.99822,-205.998223 113.76965,0 205.99825,92.228543 205.99825,205.998223 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_17&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#1565c0&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 332.41027,873.5885 c 0,4.97057 -4.02944,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_18&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 332.41027,873.5885 c 0,4.97057 -4.02944,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_19&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#1565c0&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;293.62225&#34;
y=&#34;854.81189&#34;
id=&#34;svg_20&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Sender&lt;/text&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:none;stroke:#ffffff;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:10&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;293.62225&#34;
y=&#34;854.81189&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_21&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Sender&lt;/text&gt;
&lt;text
style=&#34;font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#1565c0;stroke:none;stroke-opacity:1;&#34;
font-size=&#34;20px&#34;
font-style=&#34;normal&#34;
font-weight=&#34;normal&#34;
x=&#34;293.62225&#34;
y=&#34;854.81189&#34;
id=&#34;svg_22&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34;&gt;Sender&lt;/text&gt;
&lt;path
style=&#34;fill:#ffd700&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 649.82231,657.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
id=&#34;svg_23&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 649.82231,657.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_24&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#ffd700&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 791.82231,527.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
id=&#34;svg_25&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 791.82231,527.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_26&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#006633&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 289.82226,688.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_27&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 289.82226,688.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_28&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#993300&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 310.87082,296.76468 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_29&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 310.87082,296.76468 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_30&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#993300&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 415.68715,197.27798 c 0,4.97057 -4.02943,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97057,0 9,4.02944 9,9 z&#34;
id=&#34;svg_31&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 415.68715,197.27798 c 0,4.97057 -4.02943,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97057,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_32&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#993300&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 319.75356,156.41738 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_33&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 319.75356,156.41738 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_34&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#006400&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 231.82226,511.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_35&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 231.82226,511.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_36&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#ffd700&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 499.92976,775.58689 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_37&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 499.92976,775.58689 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_38&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#ffd700&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 744.82231,347.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
id=&#34;svg_39&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 744.82231,347.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_40&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:#ffd700&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 586.82226,235.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
id=&#34;svg_41&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;path
style=&#34;fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10&#34;
inkscape:connector-curvature=&#34;0&#34;
d=&#34;m 586.82226,235.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z&#34;
stroke-miterlimit=&#34;10&#34;
id=&#34;svg_42&#34;
inkscape:export-xdpi=&#34;96&#34;
inkscape:export-ydpi=&#34;96&#34; /&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;div class=&#34;desc&#34;&gt;
This figure depicts a case were the Approaching Transmission wouldn&amp;rsquo;t reach the destination area, even though there is a possible way. (The dashed lines represent the communication range)
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;flooding&#34;&gt;Flooding&lt;/h4&gt;
&lt;p&gt;The implementation of Flooding is fairly equivalent as described on
&lt;a href=&#34;https://en.wikipedia.org/wiki/Flooding_%28computer_networking%29&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;
wikipedia
&lt;/a&gt;
. Each entity forwards the message to all entities
in its communication range. Entities, that already received the message won&amp;rsquo;t receive it again; this is different from many real-life
implementations, where messages are send to all reachable entities except the sender. However, since the simulation has total
knowledge of all simulated entities, it is easier to overcome a lot of the disadvantages, that flooding faces
in real world implementations.&lt;/p&gt;
&lt;h4 id=&#34;implementing-your-own-adhoctransmissionmodel&#34;&gt;Implementing your own &lt;code&gt;AdhocTransmissionModel&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;If the implemented models don&amp;rsquo;t suffice your needs you can easily implement your own.
Create a class extending &lt;code&gt;AdhocTransmissionModel&lt;/code&gt; and implement the abstract methods for sending TopoCasts/GeoCasts.
A possible extension could be to allow for multihop TopoCasts, building an actual topology and transmit your
messages using that topology. Also, the aforementioned &amp;ldquo;Face-Routing&amp;rdquo; could be of interest. Additionally, the calculation
of delays could be made more realistic.&lt;/p&gt;
&lt;h2 id=&#34;accessing-sns-functionality-from-your-applications&#34;&gt;Accessing SNS-functionality from your applications&lt;/h2&gt;
&lt;p&gt;In order for your scenario to enable the SNS follow the steps
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/building_scenarios/scenario_configuration/#communication-simulators-cell-ns3-omnetpp-sns&#34;&gt;
here
&lt;/a&gt;
.
An overview of how to configure AdHoc-modules and usage of the API for Routing and Message-Building functions,
can be found
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/develop_applications/communication/&#34;&gt;
here
&lt;/a&gt;
.&lt;/p&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Or is able to communicate with an entity inside the destination area. &lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
</item>
<item>
<title>Network Simulator Cell</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_cell/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_cell/</guid>
<description>&lt;p&gt;The built-in Eclipse MOSAIC Cell Simulator enables the applications to use cellular network communication.
The simulation of cellular communication in Eclipse MOSAIC consists of two parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Cellular Simulator itself and&lt;/li&gt;
&lt;li&gt;The applications that can communicate over cellular networks in the Application Simulator&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These changes are done in a generic way, making the cellular simulator exchangeable. Users interested
in a different kind of simulation of cellular communication may use other simulators and develop
ambassadors connecting them to Eclipse MOSAIC.&lt;/p&gt;
&lt;p&gt;The Cellular Simulator in the current state consists of three main modules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;UplinkModule&lt;/li&gt;
&lt;li&gt;GeocasterModule&lt;/li&gt;
&lt;li&gt;DownlinkModule&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Geocaster module simulates a mandatory component for ITS communication. It is inspired by
the several architectures from research projects as simTD or CONVERGE to enable ITS use cases over
cellular networks. It mainly takes over the task of an addressing and routing component with geographic
knowledge to support geo-addressing. However, it also supports regular topological addressing.
The Uplink and DownlinkModule are responsible for the transmission simulation. They account for the
aspects of transmission delays, packet losses and available data rates. In this context,Uplink and Downlink
always refer to the direction towards respectively from the Geocaster. For instance, a transmission
from an Internet-based server towards a vehicle would include an Uplink between the server and the
Geocaster and a Downlink between the Geocaster and the vehicle. While the Uplink direction only allows
point-to-point communication (Unicast), the Downlink supports point-to-point (Unicast) as well as
point-to-multipoint (Multicast).&lt;/p&gt;
&lt;h3 id=&#34;cellambassador-folder-structure&#34;&gt;CellAmbassador folder structure&lt;/h3&gt;
&lt;p&gt;The Eclipse MOSAIC Cell simulator can be configured via three distinct configuration files, which can be
found within the scenarios&#39; folder structure:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
└─ cell
├─ cell_config.json ................. Cell ambassador configuration file
├─ network.json ..................... Network configuration file
└─ regions.json ..................... Regions configuration file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The network and regions configuration files are referenced in the cellular ambassador configuration
file.&lt;/p&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentation of the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/cell_network_config/&#34;&gt;
Network
&lt;/a&gt;
and
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/cell_region_config/&#34;&gt;
Regions Configuration
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;This simulator does not need to be installed. It is delivered as part of the Eclipse MOSAIC-installation package.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;We provide a cellular configuration file in the example scenarios of Tiergarten and Barnim. Please note
that in the default configuration of this scenario the Cellular Simulator is deactivated. To activate the
cellular simulator just enable the &lt;code&gt;cell&lt;/code&gt; federate in the &lt;code&gt;scenario_config.json&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;quot;federates&amp;quot;: {
...
&amp;quot;cell&amp;quot;: true,
...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The central configuration for the cellular simulator in the file
&lt;code&gt;&amp;lt;scenarioName&amp;gt;/cell/cell_config.json&lt;/code&gt; could look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-Json&#34;&gt;{
&amp;quot;debugGeocasting&amp;quot;: false,
&amp;quot;visualizeRegions&amp;quot;: true,
&amp;quot;networkConfigurationFile&amp;quot;: &amp;quot;network.json &amp;quot;,
&amp;quot;regionConfigurationFile&amp;quot;: &amp;quot;regions.json &amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;visualizeRegions&lt;/code&gt; option from the &lt;code&gt;cell_config.json&lt;/code&gt; is used to write a KML-file that visualizes the
used cell regions. Google Earth can be used to display it.&lt;/p&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentations of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/cell_network_config/&#34;&gt;
Cell Network Configuration
&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/cell_region_config/&#34;&gt;
Cell Region Configuration
&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;The configuration for the global network in the cellular simulator in the file
&lt;code&gt;&amp;lt;scenarioName&amp;gt;/cell/network.json&lt;/code&gt; could look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;globalNetwork&amp;quot;: {
&amp;quot;uplink&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;ConstantDelay&amp;quot;,
&amp;quot;delay&amp;quot;: &amp;quot;100 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.0,
&amp;quot;maxRetries&amp;quot;: 2
},
&amp;quot;capacity&amp;quot;: 28000000
},
&amp;quot;downlink&amp;quot;: {
&amp;quot;unicast&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;ConstantDelay&amp;quot;,
&amp;quot;delay&amp;quot;: &amp;quot;50 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.0,
&amp;quot;maxRetries&amp;quot;: 2
}
},
&amp;quot;multicast&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;ConstantDelay&amp;quot;,
&amp;quot;delay&amp;quot;: &amp;quot;100 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.0
},
&amp;quot;usableCapacity&amp;quot;: 0.6
},
&amp;quot;capacity&amp;quot;: 42200000
}
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;network.json&lt;/code&gt; also allows setting the fields &lt;code&gt;defaultDownlinkCapacity&lt;/code&gt; and &lt;code&gt;defaultUplinkCapacity&lt;/code&gt;,
which are used if you don&amp;rsquo;t specify any bitrates in your &lt;code&gt;CellConfiguration&lt;/code&gt;s inside your applications.
These values are set to 100 Gigabit by default, so if you aren&amp;rsquo;t interested in capacity/bandwidth observations you can
probably just leave them as is.&lt;/p&gt;
&lt;h3 id=&#34;server-configuration&#34;&gt;Server configuration&lt;/h3&gt;
&lt;p&gt;MOSAIC supports a type of simulation units, called servers. Traffic Management Centers are a specialised type of server.
What differentiates servers from other units is, that
they are treated as having no geographical location and instead are located &amp;ldquo;inside the internet.&amp;rdquo;. This concept omits prior shortcoming,
where one would have to configure RSU&amp;rsquo;s as servers.&lt;br&gt;
Servers are also configured in the &lt;code&gt;network.json&lt;/code&gt; as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;defaultDownlinkCapacity&amp;quot;: &amp;quot;10 Gbps&amp;quot;,
&amp;quot;defaultUplinkCapacity&amp;quot;: &amp;quot;10 Gbps&amp;quot;,
&amp;quot;globalNetwork&amp;quot;: {
[...]
},
&amp;quot;servers&amp;quot;: {
{
&amp;quot;id&amp;quot;: &amp;quot;TestServer&amp;quot;,
&amp;quot;uplink&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;ConstantDelay&amp;quot;,
&amp;quot;delay&amp;quot;: &amp;quot;200 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.5,
&amp;quot;maxRetries&amp;quot;: 2
}
},
&amp;quot;downlink&amp;quot;: {
&amp;quot;unicast&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleRandomDelay&amp;quot;,
&amp;quot;steps&amp;quot;: 5,
&amp;quot;minDelay&amp;quot;: &amp;quot;100 ms&amp;quot;,
&amp;quot;maxDelay&amp;quot;: &amp;quot;200 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.1,
&amp;quot;maxRetries&amp;quot;: 2
}
}
}
},
{
[...]
}
}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: The fields &lt;code&gt;defaultDownlinkCapacity&lt;/code&gt;, &lt;code&gt;defaultUplinkCapacity&lt;/code&gt; are used if you don&amp;rsquo;t define any bitrates for your cell configurations
their default values are 100 Gigabit, so you usually don&amp;rsquo;t need to set them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Servers get their configuration for the delay and retransmission models from the &lt;code&gt;network.json&lt;/code&gt; and the configuration for the
capacity-model has to be made from within an application, by activating the &lt;code&gt;CellModule&lt;/code&gt; and properly setting the bit rates.
This could look as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt; getOs().getCellModule().enable(
new CellModuleConfiguration()
.maxUlBitrate(10000)
.maxDlBitrate(10000)
);
// Alternatively using default values from network.json
getOs().getCellModule().enable();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the CellAmbassador to be able to recognize servers, the &lt;code&gt;group&lt;/code&gt;-field in the mapping must match the &lt;code&gt;id&lt;/code&gt;-field in the &lt;code&gt;network.json&lt;/code&gt;,
this also allows for multiple servers to utilize the same configuration. A &lt;code&gt;mapping_config.json&lt;/code&gt; using the configuration from
above could look as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
...,
&amp;quot;tmcs&amp;quot;: [
{
&amp;quot;group&amp;quot;: &amp;quot;TestServer&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;TestApplication&amp;quot; ],
&amp;quot;inductionLoops&amp;quot;: [ ],
&amp;quot;laneAreaDetectors&amp;quot;: [ ]
}
],
&amp;quot;servers&amp;quot;: [
{
&amp;quot;group&amp;quot;: &amp;quot;TestServer&amp;quot;,
&amp;quot;applications&amp;quot;: [ &amp;quot;TestApplication&amp;quot; ]
}
],
...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Note that all bandwidths are given in bit per second and all delays in nanoseconds, unless explicitly defined differently.
Also, every json configuration goes through a minifier, so comments are allowed in the configuration files. An example
would be the comment before the &lt;code&gt;globalNetwork&lt;/code&gt; option.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;delay-regions&#34;&gt;Delay regions&lt;/h3&gt;
&lt;p&gt;Additionally, the user has the option to define regions with individual delays. This can be used to simulate
areas with bad reception, crowded areas etc.&lt;/p&gt;
&lt;p&gt;The regions should be stored in &lt;code&gt;&amp;lt;scenarioName&amp;gt;/cell/regions.json&lt;/code&gt;. An
example definition for a single region called &lt;code&gt;Ernst-Reuter-Platz&lt;/code&gt; could look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-Json&#34;&gt;{
&amp;quot;regions&amp;quot;:[
{
&amp;quot;id&amp;quot;: &amp;quot;Ernst-Reuter-Platz&amp;quot;,
&amp;quot;area&amp;quot;: {
&amp;quot;nw&amp;quot;: { &amp;quot;lon&amp;quot;:13.3249, &amp;quot;lat&amp;quot;:52.5131 },
&amp;quot;se&amp;quot;: { &amp;quot;lon&amp;quot;:13.3273, &amp;quot;lat&amp;quot;:52.5125 }
},
&amp;quot;uplink&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleRandomDelay&amp;quot;,
&amp;quot;steps&amp;quot;: 4,
&amp;quot;minDelay&amp;quot;: &amp;quot;50 ms&amp;quot;,
&amp;quot;maxDelay&amp;quot;: &amp;quot;200 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.8,
&amp;quot;maxRetries&amp;quot;: 2
},
&amp;quot;capacity&amp;quot;: 28000000
},
&amp;quot;downlink&amp;quot;: {
&amp;quot;unicast&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleRandomDelay&amp;quot;,
&amp;quot;steps&amp;quot;: 3,
&amp;quot;minDelay&amp;quot;: &amp;quot;100 ms&amp;quot;,
&amp;quot;maxDelay&amp;quot;: &amp;quot;200 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;maxRetries&amp;quot;: 2
}
},
&amp;quot;multicast&amp;quot;: {
&amp;quot;delay&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;SimpleRandomDelay&amp;quot;,
&amp;quot;steps&amp;quot;: 3,
&amp;quot;minDelay&amp;quot;: &amp;quot;120 ms&amp;quot;,
&amp;quot;maxDelay&amp;quot;: &amp;quot;220 ms&amp;quot;
},
&amp;quot;transmission&amp;quot;: {
&amp;quot;lossProbability&amp;quot;: 0.8
},
&amp;quot;usableCapacity&amp;quot;: 0.6
},
&amp;quot;capacity&amp;quot;: 42200000
}
}
]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that &lt;code&gt;nw&lt;/code&gt; represents the upper-left (north-west) point of the rectangle and &lt;code&gt;se&lt;/code&gt; the lower-right (southeast).
For further information about the possible options, please refer to the Eclipse MOSAIC API documentation.&lt;/p&gt;
&lt;p&gt;The actual configuration of the uplink and the downlink modules for each region exhibits the identical
format as configuration of the globalNetwork in the &lt;code&gt;network.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When no regions are found, or if a node (a vehicle) is not within a specified region, the globalNetwork
defined in the &lt;code&gt;network.json&lt;/code&gt;-File will be used as the delay model.&lt;/p&gt;
&lt;h3 id=&#34;transmission-simulation&#34;&gt;Transmission simulation&lt;/h3&gt;
&lt;p&gt;One of the most important feature of the cellular simulator is an estimation of the delay experienced
through the transport over the cellular network.&lt;/p&gt;
&lt;p&gt;The cellular simulator offers various modes to estimate the delay of the transmissions. The type of
estimation is specified with by &lt;code&gt;delayType&lt;/code&gt; for the uplink and downlink for each region. You may also refer to the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/extending_mosaic/delay_models/&#34;&gt;
Delay-Chapter
&lt;/a&gt;
.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;delay.type = ’ConstantDelay’&lt;/code&gt;: The message is transmitted with the latency being exactly equal to delay.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delay.type = ’SimpleRandomDelay’&lt;/code&gt;: The latency can assume different (randomly generated and uniformly distributed) values between
&lt;code&gt;minDelay&lt;/code&gt; and &lt;code&gt;maxDelay&lt;/code&gt;. The number of different values is determined by &lt;code&gt;steps&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delay.type = ’GammaRandomDelay’&lt;/code&gt;: A gamma distribution is used to estimate the latency, with $ \alpha $ = 2 and $ \beta $= 2. The
minimal delay &lt;code&gt;minDelay&lt;/code&gt; is added to the result. The curve is fitted so that the maximum likelihood for the delay is exactly equal to
&lt;code&gt;expDelay&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delay.type = ’GammaSpeedDelay’&lt;/code&gt;: This mode closely resembles the GammaRandomDelay. Additionally, a penalty for the velocity with which
the node is moving is calculated. This penalty is then added to the original delay. The GammaRandomDelay and the GammaSpeedDelay are
derived from a measurement campaign during a research project at the DCAITI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The two different modes for the downlink are &lt;code&gt;unicast&lt;/code&gt; and &lt;code&gt;multicast&lt;/code&gt; which are configured separately. Multicast aims to simulate the
features of Multimedia Broadcast Multicast Service (MBMS). The main difference in terms of the transmission for unicast and multicast
is the handling of undeliverable messages. For unicast, the options &lt;code&gt;lossProbability&lt;/code&gt; and &lt;code&gt;maxRetries&lt;/code&gt; are used. Pr is short for
packet retransmit and denotes the probability for a failed delivery and a subsequent retransmit. The maximum number of retries
for the retransmission is configured through the &lt;code&gt;maxRetries&lt;/code&gt;-option. The probability of a successful
retransmit is recalculated on every try.&lt;/p&gt;
&lt;p&gt;In case of multicast the &lt;code&gt;lossProbability&lt;/code&gt; is used as packet loss rate. The value is factored into the delay calculation.
In contrast to the unicast, just one transmission attempt is made for multicast.&lt;/p&gt;
&lt;h3 id=&#34;operation&#34;&gt;Operation&lt;/h3&gt;
&lt;p&gt;Beside the transmission simulation, the Addressing and Routing is the other important aspect of the Cellular Simulator. This task is enabled
by the Geocaster.&lt;/p&gt;
&lt;p&gt;The Geocaster evaluates the message headers for cellular messages, which are created by the communicating applications in the
Application Simulator.&lt;/p&gt;
&lt;p&gt;It supports the following addressing and casting schemes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;[CellTopocast](/docs/develop_applications/communication#cellular-topocast)&lt;/code&gt;&lt;/strong&gt; is the normal unicast, where the Geocaster simply resolves
the single receiver via theIPResolver. Hence, the CellTopocast directly routes the message further. Currently, Topocast doesn&amp;rsquo;t allow
broadcast or anycast addresses, but any transmission protocols (tcp, udp).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;[CellGeoUnicast](/docs/develop_applications/communication#cellular-geocast)&lt;/code&gt;&lt;/strong&gt; addresses every node in the destination area individually.
In this way it takes a geographic address and results in a loop to generate multiple unicasts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;[CellGeoBroadcast](/docs/develop_applications/communication#cellular-geobroadcast)&lt;/code&gt;&lt;/strong&gt;, which is basically MBMS, uses one broadcast to all
nodes in the destined regions.The MBMS uses the different transmission mode of multicast in the downlink. CellGeoUnicast as well as
CellGeoBroadcast require broadcast, but don’t allow tcp (as ack for broadcasts is denied).&lt;/p&gt;
</description>
</item>
<item>
<title>Environment Simulator</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/environment_simulator/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/environment_simulator/</guid>
<description>&lt;p&gt;This ambassador can be configured with a configuration file. The specific path is &lt;code&gt;mosaic/scenarios/&amp;lt;scenarioName&amp;gt;/environment/environment_config.json&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;└─ &amp;lt;scenario_name&amp;gt;
└─ environment
└─ environment_config.json ..................... Environment ambassador configuration file
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;This simulator does not need to be installed. It is delivered as part of the Eclipse MOSAIC-installation package.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;div class=&#34;alert alert-tip&#34;&gt;
&lt;div&gt;
&lt;p&gt;Read the detailed documentation of the
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/docs/mosaic_configuration/environment_config/&#34;&gt;
Environment Configuration
&lt;/a&gt;
.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The root node of the configuration is a list of environment events. Each event require the type of the event, a rectangle area, a
strength and the time window. The following example shows the configuration of an &amp;ldquo;Obstacle&amp;rdquo; event which is valid in the
designated area (Rectangle) during the simulation time between 0 to 2000 seconds:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-json&#34;&gt;{
&amp;quot;events&amp;quot; : [
{
&amp;quot;type&amp;quot;: {
&amp;quot;sensorType&amp;quot;: &amp;quot;OBSTACLE&amp;quot;,
&amp;quot;value&amp;quot;: 1
},
&amp;quot;location&amp;quot;: {
&amp;quot;area&amp;quot;: {
&amp;quot;type&amp;quot;: &amp;quot;Rectangle&amp;quot;,
&amp;quot;a&amp;quot;: {
&amp;quot;latitude&amp;quot;: 52.53654,
&amp;quot;longitude&amp;quot;: 13.42116
},
&amp;quot;b&amp;quot;: {
&amp;quot;latitude&amp;quot;: 52.53435,
&amp;quot;longitude&amp;quot;: 13.42366
}
}
},
&amp;quot;time&amp;quot;: {
&amp;quot;start&amp;quot;: &amp;quot;0 s&amp;quot;,
&amp;quot;end&amp;quot;: &amp;quot;2000 s&amp;quot;
}
}
]
}
&lt;/code&gt;&lt;/pre&gt;
</description>
</item>
<item>
<title>Battery Simulator</title>
<link>https://staging.eclipse.org/mosaic/docs/simulators/battery_simulator/</link>
<pubDate>Sun, 05 May 2019 00:00:00 +0100</pubDate>
<guid>https://staging.eclipse.org/mosaic/docs/simulators/battery_simulator/</guid>
<description>&lt;div class=&#34;alert alert-extended&#34;&gt;
&lt;span class=&#34;extended-icon&#34; style=&#34;background-image: url(/mosaic/img/alert-extended.svg)&#34;&gt;&lt;/span&gt;
&lt;div&gt;
&lt;p&gt;The &lt;strong&gt;Battery Simulator&lt;/strong&gt; is part of
&lt;a href=&#34;https://staging.eclipse.org/mosaic/mosaic/download/#overview&#34;&gt;
MOSAIC Extended
&lt;/a&gt;
.&lt;br&gt;
For further information on licenses, feel free to contact us via &lt;strong&gt;
&lt;a href=&#34;mailto:mosaic@fokus.fraunhofer.de&#34;&gt;
mosaic@fokus.fraunhofer.de
&lt;/a&gt;
&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The MOSAIC Battery Simulator is used to simulate electric vehicles. It takes environment, vehicle
characteristics and the battery itself into account. The main feature of the battery ambassador is that it
can utilize dynamic class loading to use a battery model provided by the user, depending on the given
needs. This also holds true for the environment model and the vehicle model. However, simple models
for vehicles, environment and the battery are provided and will be briefly explained in the following