Skip to content
This repository has been archived by the owner on Dec 1, 2021. It is now read-only.

Repository Structure

jsprenger edited this page Jun 22, 2021 · 2 revisions

The open source release of the MOSIM framework has a rather complex structure, as it is containing many different components, projects and programming languages. In general, we have separated the framework in 4 repositories:

  1. MOSIM Core containing the core framework components, but as well basic MMUs, the launcher and the adapters.
  2. MOSIM Services containing code for the different services (e.g. path planning, IK Service, etc.)
  3. MOSIM Demos containing example target engine projects for Unity (and soon Unreal Engine)
  4. MOSIM Tools containing different tools, e.g. for MMU Development

The structure of the Services and Tools repositories is rather simple, as each service and tool has its own project folder. Shared DLLs e.g. of the compiled MMICSharp and MMIUnity projects, but as well the thrift.dll are supposed to be in the respective MMICSharp folder (e.g. here).

The MOSIM Core repository has a more complex structure, we describe in more detail.

MOSIM Core Repository Structure

The core repository consists of four major parts:

  1. Framework
  2. CoSimulation
  3. Launcher
  4. Basic MMUs

Framework

The framework folder contains the central components of the Framework, including support for different programming languages and game engines.

Language Support

The thrift-interface and data-type descriptions are located in the Framework/LanguageSupport/thrift folder. Inside the mmi, the thrift description files are located, while the auto-generated code was placed in the respective language folders (e.g. gen-py, gen-csharp, gen-cpp, etc.). As the core framework gets changed only in major revisions and any change in the thrift definition files has to be tested in detail, we did place the auto-generated code in the repository for easier use.

The language support folder contains additional code for the different programming languages, for example C#. Inside the language-specific folders, the projects to compile the auto-generated code are contained. In addition the language-depending adapters are implemented here and additional helper classes and functionality, which is shared among many tools within the framework, are located here. For C#, these projects generate the MMIStandard.dll library, containing the compiled auto-generated thrift code and the MMICSharp.dll containing the software developed in the CSharp language support.

Engine Support

Currently, only the Unity-Engine support in Framework/EngineSupport/Unity is published and stable. It contains the Unity adapter project. In addition, it contains the MMIUnity project containing different classes and methods for easier use of the MOSIM Framework within Unity. The MMIUnity.TargetEngine projects contain specific components, which are most commonly required in a target project which utilizes the MOSIM framework to execute a simulation. It contains a separate project for editor-related components. The Engine support generates the MMIUnity.dll, MMIUnity.TargetEngine.dll and the MMIUnity.TargetEngine.Editor.dll respectively.

The Engine Support repositories utilize the MMICSharp and MMIStandard projects from the C# language support. In order to avoid multiple versions of the same code, the Visual Studio projects are set up to link to the respective source code.

CoSimulation

The CoSimulation project contains the main CoSimulatior code (MMICoSimulation), as well as a project for a stand-alone CoSimulator (CoSimulationStandalone) and a CoSimulation-MMU (CoSimulation MMU). It utilizes the MMICSharp and MMIStandard projects from the C# language support. In order to avoid multiple versions of the same code, the Visual Studio projects are set up to link to the respective source code.

Launcher

The Launcher project contains code for the Launcher and central registry. It utilizes the MMICSharp and MMIStandard projects from the C# language support. In order to avoid multiple versions of the same code, the Visual Studio projects are set up to link to the respective source code. It is separated into several internal projects, in order to enable the Launcher to run with a graphical user interface in Windows and from console in Windows and Linux.

Basic MMUs

We provide the source code of several simple but effective MMUs in the open-source release. In BasicMMUs/CS-MMUs/CS several MMUs built with C# are provided. Each of the MMUs is in its own folder and all are gathered in the Visual Studio project. In addition, the C#-MMUs utilizes the MMICSharp and MMIStandard projects from the C# language support and the MMIUnity dependencies from the Unity engine support. In order to avoid multiple versions of the same code, the Visual Studio projects are set up to link to the respective source code.

MOSIM Documentation

Introduction

Documentation

Known Issues

Clone this wiki locally