Giter Club home page Giter Club logo

mosaic's Introduction

Eclipse MOSAIC Essentials -
The Simulation Suite for Connected and Automated Mobility

License Made with java Size
Build Jenkins Build

Eclipse MOSAIC is a multi-scale simulation framework in the field of smart and connected mobility. It allows coupling simulators from various domains towards a comprehensive simulation tool. Data exchange and time management is implemented by the Runtime Infrastructure (RTI), which is the heart of MOSAIC. Simulation models are coupled to the RTI using HLA inspired interfaces; Each simulator is wrapped into a "Federate" object which is linked to an "Ambassador" which is directly coupled with the RTI. Currently, the following simulators are coupled with the MOSAIC RTI:

  • MOSAIC Application (application simulation)
  • Eclipse SUMO (traffic simulation)
  • OMNeT++ (communication simulation)
  • ns-3 (communication simulation)
  • MOSAIC Cell Simulator (cellular communication simulation)
  • MOSAIC Simple Network Simulator (communication simulation)
  • MOSAIC Environment (environment and event simulation)
  • MOSAIC Output Generator (evaluation and visualization)

The project is a Maven based multi-module project and has its child modules organized in three main categories:

  • rti - MOSAIC RTI: modules providing the runtime infrastructure API and implementation
  • lib - MOSAIC Libraries: mathematics, spatial, routing, utilities, communication models, and data exchange
  • fed - MOSAIC Ambassadors/Federates: simulators and couplings which integrate simulation models to Eclipse MOSAIC

Attribution

If you use our simulation framework for your own research, we would be glad if the following reference is included in any published work for which Eclipse MOSAIC has been used:

K. Schrab, M. Neubauer, R. Protzmann, I. Radusch, S. Manganiaris, P. Lytrivis, A. J. Amditis “Modeling an ITS Management Solution for Mixed Highway Traffic with Eclipse MOSAIC." IEEE Transactions on Intelligent Transportation Systems, pp. 1 - 11, Print ISSN: 1524-9050, Electronic ISSN: 1558-0016, DOI: 10.1109/TITS.2022.3204174

Documentation

View our website at eclipse.dev/mosaic for detailed documentation and many tutorials to get started with Eclipse MOSAIC. For a quick start on building and running the code in this repository, just jump to the bottom section of this README file.

The Essential Edition of Eclipse MOSAIC

This repository contains the Essential edition of Eclipse MOSAIC, which includes the runtime infrastructure, the core libraries, and various implementations of simulators or couplings to existing ones. All features included in this version of Eclipse MOSAIC are sufficient for most use-cases in the field of smart and connected mobility. Additional simulators and assessment features are provided by Fraunhofer FOKUS on a commercial basis.

Related Repositories

  • Eclipse SUMO is coupled directly using the TraCI interface. We recommend using the SUMO release 1.20.0.
  • The coupling to ns-3 is realized by a federate implementation which can be found in our MOSAIC Addons repository. We currently support ns-3 version 3.36.1.
  • The coupling to OMNeT++ is implemented in a very similar manner. The corresponding federate implementation can be found in our MOSAIC Addons repository. We currently support OMNeT++ version 5.5 in combination with the INET framework in version 4.1.
  • We created the Berlin SUMO Traffic (BeST) scenario which provides 2.2 million vehicle trips in 24h for Berlin, Germany. The scenario is fully compatible with the latest release of MOSAIC.

Contact

Any questions regarding Eclipse MOSAIC can be asked, discussed, and found in the Discussion section here at GitHub.

For further questions we are available via [email protected]

Prerequisites

For a successful build you need the following software to be installed:

  • Maven 3.1.x or higher.
  • Java 11, 17, or 21 - We recommend using the Adoptium OpenJDK (aka Eclipse Temurin).
  • SUMO 1.20.0 - Older versions > 1.2.0 are most probably supported, but not tested. The environment variable SUMO_HOME should be configured properly.

Build

Eclipse MOSAIC is a Java base project using Apache Maven for build and dependency management.

Once installed, you can build Eclipse MOSAIC using the following command:

mvn clean install

This command executes all tests as well. In order to skip test execution, the following command succeeds:

mvn install -DskipTests

After building, a MOSAIC bundle including a start script and all necessary configurations is located in the bundle\target directory.

After extracting this bundle to an arbitrary path, Eclipse MOSAIC can be executed using:

mosaic.sh -s HelloWorld
mosaic.bat -s HelloWorld 

Besides, the simulation can also be started in your IDE using the main method in org.eclipse.mosaic.starter.MosaicStarter.

License

Eclipse MOSAIC is licensed under the Eclipse Public License Version 2.

Contributing

Before starting with contributions, please see CONTRIBUTING information.

mosaic's People

Contributors

fabmax avatar felixlutz avatar fhilg avatar funkuchen avatar iwillitried avatar kschrab avatar ninabohm avatar paguos avatar realmaxneu avatar rprotzmann avatar schwepmo avatar thonag avatar vogtfa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mosaic's Issues

Having problem while trying to install OMNeT++

  • I have checked that this bug has not yet been reported by someone else.

Description

I tried to install OMNeT++ to use alongside with Eclipse MOSAIC through this guide:
https://eclipse.dev/mosaic/docs/simulators/network_simulator_omnetpp/#installation-for-users

when I run this command:
./omnet_installer.sh
--installation-type USER
--omnetpp /path/to/omnetpp-5.5.1-src.tgz
--inet /path/to/inet-4.1.1-src.tgz
--federate /path/to/omnetpp-federate-23.1.zip

I get asked about some dependencies:

Are the following dependencies installed on the system?
Libraries:
libprotobuf-dev >= 3.7.0
libxml2-dev
Programs:
unzip
tar
bison
flex
protoc
gcc
python
y Yes
X No, abort installation

And I have both python2 and python3 but it says:
ERROR 'python' required, but it's not installed. Please install the package (sudo apt-get install for Ubuntu/Debian) and try again.

I can't understand why it still asks me about it.
(in the tutorial above the actual command executes ./omnet_install.sh, but the real file is ./omnet_installer.sh. It would be nice if someone corrected this too).

Steps to reproduce

The following lines are executed on my terminal (zsh):
cd /bin/fed/omnetpp
chmod +x omnet_installer.sh
./omnet_installer.sh
--installation-type USER
--omnetpp /path/to/omnetpp-5.5.1-src.tgz
--inet /path/to/inet-4.1.1-src.tgz
--federate /path/to/omnetpp-federate-23.1.zip
y

Workaround

I did try to install python via terminal with apt, didn't work

Affected modules

...

System information

  • Eclipse MOSAIC version: Latest
  • Operating System: Linux Mint 21.2 Cinnamon
  • JDK version/vendor: openjdk version "11.0.22" 2024-01-16
  • SUMO version: Eclipse SUMO sumo Version 1.12.0

Update to ETSI TS 102 637-2 (CAM) and ETSI TS 103 831 v2.1.1 (DENM)

Description

By approaching to Mosaic V2X application, I've noticed the Technical Specification ETSI TS 102 637-2 used for specifying awareness CAM messages refers to an old specification (V1.2.1 - 2011-03). This applies also for the AwarenessData entity which refers to ETSI EN 302 637-2 v1.3.1 (2014-09). The same reasoning applies to DENM, IVI, SPATM. Is there any interest in upgrading the data format? If not, would it be possible to have some hints on the approach to be used?

...

Affected modules

MOSAIC-OBJECTS => V2X
...

Proposed solution

Update message format to ETSI EN 302 637-2 to V1.4.1 (2019-01) for CAM
Update message format to ETSI TS 103 831 v2.1.1 for DENM
Update IVI and SPATM data to recent standards.
...

The POM for org.eclipse.mosaic:mosaic-application:jar:24.1-SNAPSHOT is missing, no dependency information available

  • I have checked that this bug has not yet been reported by someone else.

Description

...

Steps to reproduce

...1. cd to "mosaic-main\app\tutorials\highway-management"
2. run "mvn clean install"
3. failed

Workaround

...
image

Affected modules

...

System information

  • **Eclipse MOSAIC version:the newest MOSAIC source code from github ...
  • **Operating System:windows 11 ...
  • **JDK version/vendor:17 ...
  • **SUMO version:1.20.0 ...

Having problems with protoc and protobuf

  • I have checked that this bug has not yet been reported by someone else.

Description

I'm getting errors on the ==== Building omnetpp-federate-LIBRARY (debug) ==== part of the installation
i think it's bacause of my protoc version but I'm not sure.

this is one of the error messages I'm getting

src/util/ClientServerChannelMessages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
12 | #error This file was generated by a newer version of protoc which is

Steps to reproduce

(commands run on terminal, zsh)
./omnet_installer.sh
--installation-type USER
--omnetpp /path/to/omnetpp-5.5.1-src.tgz
--inet /path/to/inet-4.1.1-src.tgz
--federate /path/to/omnetpp-federate-23.1.zip
y

Workaround

Affected modules

...

System information

  • Eclipse MOSAIC version: Latest
  • Operating System: Linux Mint 21.2 Cinnamon
  • JDK version/vendor: openjdk version "11.0.22" 2024-01-16
  • SUMO version: Eclipse SUMO sumo Version 1.12.0

Matrix3d.multiply(Vector3d) does not match matrix element order

Description

  • The method Matrix3d.multiply(Vector3d) does not match matrix element order
  • Matrix3d.get() and Matrix3d.set() assume Matrx3d.m is in column-major order
  • Matrix3d.multiply(Vector3d) assumes Matrix3d.m is in row-major order

Code Sections

Question about using mosaic scenario-convert.jar file for xx.net.xml — xx.db

  • I have checked that this bug has not yet been reported by someone else.

Description

When I am using my own map instead of the map sourced from osm for mosaic conversion, there will be a situation where using mosaic's scenario-convert.jar to convert xx.net.xml to xx.db cannot recognize the vehicle road, and then cannot Generate mosaic folder from .db file

Steps to reproduce

java -jar scenario-convert.jar --sumo2db -i jinfeng6.net.xml
13:58:14.107 INFO - initializing database
13:58:14.108 INFO - loading database...
13:58:14.293 INFO - success

13:58:14.294 INFO - parsing net file
13:58:14.299 ERROR |- An unexpected error occurred.
java.lang.IllegalStateException: Only UTM projection is supported yet
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.SAXParser.parse(SAXParser.java:276)
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.a.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.core.a.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.core.Starter.main(Unknown Source)
13:58:14.301 ERROR |- Could not load network data from Net File.
java.lang.IllegalStateException: Could not parse network file
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.a.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.core.a.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.core.Starter.main(Unknown Source)
Caused by: java.lang.IllegalStateException: Only UTM projection is supported yet
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.a(Unknown Source)
at com.dcaiti.mosaic.tools.scenarioconvert.importer.sumo.b.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.SAXParser.parse(SAXParser.java:276)
... 4 common frames omitted
13:58:14.301 INFO - no route file for import given, ignoring!
13:58:16.142 INFO - Saving 0 nodes...
13:58:16.143 INFO - Saving 0 ways...
13:58:16.144 INFO - Saving 0 connections...
13:58:16.144 INFO - Saving 0 restrictions...
13:58:16.144 INFO - Saving 0 routes...
13:58:16.144 INFO - Saving 0 roundabouts...
13:58:16.144 INFO - Saving 0 buildings...
13:58:16.145 INFO - Create Indices
13:58:16.326 INFO - Database saved
13:58:16.326 INFO - finished

Workaround

I suspect it may be projParameter="+ proj=tmerc +lat_0=29.51771557134214 +lon_0=106.3252472463716 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +geoidgrids=egm96_15.gtx +vunits=m +no_defs "/> from osm The converted .net.xml file is different, and the one converted in osm is similar to: projParameter="+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"/> So I try Modify the .net.xml. After that, it can be converted to a .db file normally, but there may be some problems with the coordinate deflection, which will affect the subsequent work. At present, I have found that some files in the generated mosaic folder are blank (for example, the scenario_config.json file, so that Unable to proceed to the next step)

Affected modules

Eclipse MOSAIC Configuration Files

System information

  • Eclipse MOSAIC version: eclipse-mosaic-23.0
  • Operating System: Windows11
  • JDK version/vendor: 17.06
  • SUMO version: 1.14.1

Maven Build with JDK21 fails

  • I have checked that this bug has not yet been reported by someone else.

Description

When building MOSAIC with Maven and JDK21, the following error occurs:

Caused by: java.lang.IllegalStateException:

Byte Buddy could not instrument all classes within the mock's type hierarchy

This problem should never occur for javac-compiled classes. This problem has been observed for classes that are:
 - Compiled by older versions of scalac
 - Classes that are part of the Android distribution
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65

This is due to incompatibility of Mockito 3 with JDK21. The proposed solution would be to upgrade to Mockito 5.

Steps to reproduce

mvn clean install with JDK21 in $PATH

Workaround

Use JDK11 or JDK17 to build MOSAIC.

System information

  • Eclipse MOSAIC version: 24.0-SNAPSHOT
  • Operating System: Windows
  • JDK version/vendor: JDK21
  • SUMO version: 1.18.0

VehicleAwarenessData always contains "Car" as VehicleClass, even when sender is configured as "EmergencyVehicle"

Discussed in #170

Originally posted by SafrasIqbal January 13, 2022
Hi There,
I am trying to get the VehicleClass from the CAM VehicleAwarenessData class. I have configured set of Cars and EmergencyVehicle in mapping file. However, it seems always I get the vehicle class as "Car" by default. I just wondering am I missing anything here to get configured value correctly from CAM messages. Thank you in advance for the help.

Mapping:
mapping

Code:

        final Cam Cam = (Cam) msg;

        EncodedPayload encodedMessage = Cam.getPayLoad();
        CamContent decodedCam = encodedMessage.decodePayload();

        if(decodedCam.getAwarenessData() instanceof VehicleAwarenessData ) {
        VehicleAwarenessData decodedAwarenessData = (VehicleAwarenessData) decodedCam.getAwarenessData();        
        getLog().infoSimTime(this, "Processing CAM message class: {} Heading : {}, Direction: {} , From : {}",decodedAwarenessData.getVehicleClass(),decodedAwarenessData.getHeading(),decodedAwarenessData.getDirection(),msg.getRouting().getSource().getSourceName());
        }
```</div>

Ask some questions about the use of SUMO routing

  1. Whether SUMO rou.xml can be retained for direct use in sumocfg?

  2. There are different types of definitions in the routing file. Which types are mainly supported, such as:
    <trip id="sumo_bus_1" depart="18.39" from="2754" to="-75" type="alltype" fromTaz="taz_5" toTaz="taz_22" departLane="free" departSpeed="max"/>

    <trip id="sumo_obu_1" depart="0.3" type="alltype" from="-2984" to="1359" />

<route repeat="900" id="r_0" probability="0.5" edges="759959733#6 -759959732#3 -759959732#2 -759959732#1"/>

<routeDistribution id="allroute"> <route id="rou_1" probability="0.3" edges="1323 2790 311 2789 32"> <route id="rou_2" probability="0.5" edges="326 2417 2992 1346"> <route id="rou_3" probability="0.3" edges="2790 311 2789 326"> <routeDistribution/>

Update third party lib to work out of the box with Arm64 (M1 mac)

  • I have checked that this bug has not yet been reported by someone else.

Description

The current version of the sqllite lib does not run under arm64/M1. This issue has been resolved by sqlite-jdbc. Would it be possible to update the lib?
xerial/sqlite-jdbc#562 (comment)

Steps to reproduce

Download current version of mosaic under arm64 and try to run out of the box.

Workaround

Remove lib/third-party/sqlite-jdbc-3.20.0.jar

Download the current version of sqlite-jdbc from https://github.com/xerial/sqlite-jdbc/releases/tag/3.36.0.1
Add lib/third-party/sqlite-jdbc-3.36.0.1.jar

Affected modules

sqlite-jdbc-3.20.0.jar

System information

  • Eclipse MOSAIC version: 21.0
  • Operating System: MacOS 11.4
  • JDK version/vendor: openjdk 17 2021-09-14 / homebrew
  • SUMO version: 1.9.2

Arch Linux Package and source tarball

Hi,
I'm interested in building an Arch Linux package for MOSAIC, as one already exist in the Arch User Repository (AUR) for sumo but not for MOSAIC (unless I am wrong).

Description

I have an issue closely related to this issue: eclipse-sumo#14228.
Unlike sumo, this repository haves release on GitHub, however, MOSAIC version 23.1 is not displayed in the "Release" tab while:

It looks like source tarball provided from the "Tags" tab and dcaiti.tu-berlin.de are the same for MOSAIC 23.1.

What would be the best practice?
To pull the source tarball from :

  1. https://www.dcaiti.tu-berlin.de/research/simulation/downloads/
  2. Release tab
  3. Tag tab

Best,

Edit: For me, Version 23.1 is displayed as a release in the repository homepage, but not on the "Release" tab, so the last question still holds.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.