• Stars
    star
    145
  • Rank 254,144 (Top 6 %)
  • Language
  • Created almost 7 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of Functional Mock-up Interface (FMI) libraries, tools and resources.

Awesome FMI Awesome

A curated list of Functional Mock-up Interface (FMI) libraries, tools and resources.

Functional Mock-up Interface (FMI) is a tool independent standard to support both model exchange and co-simulation of dynamic models. See the official FMI website for the official specification and more information about the FMI standard.

Contents

FMI 2

The latest (as of November 2021) stable release of the FMI specification is 2.0.3, released on 2021-11-17. You can find the text of the FMI specification 2.0.3 at https://github.com/modelica/fmi-standard/releases/tag/v2.0.3. Unless noted otherwise, the tools and libraries listed are compatible with FMI 2.

Libraries

Libraries to import, simulate and export FMUs (Functional Mock-up Units) that support FMI 2.

C

  • FMI Library - C library for import of FMUs. [BSD]
  • FMU SDK - C library for exporting FMUs. [BSD]

C++

  • FMI++ - C++ library for import and export of FMUs. [BSD]
  • FMI4cpp - FMI 2.0 implementation written in modern C++. [MIT]

Python

  • PyFMI - Python package for loading and interacting with FMUs, based on the FMI Library. [LGPL]
  • FMPy - Python package for loading and interacting with FMUs. It supports also the latest System Structure and Parameterization (SSP standard). [BSD]
  • FMI++ Python Interface - Python interface for the FMI++ library. [BSD, BOOST]
  • SimulatorToFMU - Python package that allows to export a memoryless Python-driven simulation program or script as a FMU. [BSD]
  • modestpy - Python package for parameter estimation in FMUs. [BSD]
  • PythonFMU - Framework for exporting Python code as FMUs. [MIT]

Java

  • FMI4j - Java/Kotlin library for dealing with FMUs on the JVM platform. [MIT]
  • javaFMI - Java library for import and export of FMUs. [LGPL3]

MATLAB/Simulink

  • Simulink FMU Importing/Export a Model as a Tool-Coupling FMU - Out-of-the-box official support for FMU import and export (tool coupling) in Simulink. [Commercial]
  • FMI Toolbox for MATLAB/Simulink - Toolbox with support for Simulink FMU Import/Export and MATLAB FMU import. [Commercial]
  • matlab-fmu - MATLAB Toolbox for Windows with support for import of FMUs for Model-Exchange and Co-Simulation as well as the export of MATLAB scripts as FMUs for Co-Simulation, based on the FMI++ library. [BSD]
  • Simulix - A third-party Simulink tool to generate FMUs from Simulink models using the C-API. [GPL3]
  • FMIKit-Simulink - Import and export Functional Mock-up Units with Simulink. [BSD]

Rust

  • rust-fmi - A Rust interface to FMUs (Functional Mock-up Units) that follow the FMI Standard. [APACHE2/MIT]

Julia

  • FMI.jl - Library which integrates FMI and permits load, instantiate, parameterize and simulate FMUs seamlessly inside the Julia programming language. [MIT]
  • FMIFlux.jl - Library which offers the ability to setup NeuralFMUs, put FMUs inside any feed-forward NN topology and get a hybrid model trainable with a standard AD training process. [MIT]

Tools

For the official list of tools that support FMI 2, check http://fmi-standard.org/tools/ .

  • λ-Sim - Tool that converts FMU simulation models into REST APIs. [MIT]
  • FMIGo! - A set of tools for dealing with the FMI and SSP standards. [MIT]
  • FMITerminalBlock - Two way interface between the FMI and IEC 61499-based controllers. [BSD]
  • FMU-proxy - Framework that allows Functional Mock-up Units (FMUs) to be accessed through language independent RPC calls and that permits to transform a co-simulation FMU into a proxified version of the same FMU, so that each FMU can run in a separate process. [MIT]
  • Unity-FMI-Addon - FMI support for Unity, a cross-platform game engine. [BSD]
  • ROS fmi_adapter - FMI support for ROS, a flexible framework for writing robot software. [APACHE2]
  • fmi_adapter_ros2 - FMI support for ROS2, the new version of the Robot Operating System. [APACHE2]

FMI 3

FMI 3.0 was recently released. General information on the FMI 3.0 feature list can be found in https://fmi-standard.org/faq/, and the standard text source can be found at https://github.com/modelica/fmi-standard . You can find the latest, automatically generated version of the FMI 3.0 standard at https://fmi-standard.org/docs/3.0-dev/ .

Warning: FMI 3.0 was recently released, and most of the tools listed in the following they support it only in an experimental way. If you want stable tools, use FMI 2 for the time being.

Some of the projects listed in the previous section also support for FMI 3 :

  • Examples:
    • Reference-FMUs : 3.0 examples FMUs are available, including examples for new co-simulation features such as scheduled co-simulation and early return in co-simulation.
    • PMSFIT/FMI30TestFMUs : Some examples FMUs based on the FMI 3.0 specification are available, including features such as binary variables.
  • Python:
    • fmpy - support for FMI 3.0 is available.
  • Julia:
    • FMI.jl - experimental support for FMI 3.0 is work in progress
  • Simulink:
  • Formal models

Community

Contribute

Contributions are welcome! Read the contribution guidelines first.

License

CC0

More Repositories

1

github-mathjax-firefox

Repo containing packaged version of github-mathjax extention for Firefox
13
star
2

drake-lite-cmake

Reduced (lite) unofficial version of drake (https://drake.mit.edu/) that can be built with CMake.
CMake
11
star
3

gitpod-ubuntu-20.04

Vanilla GitPod Ubuntu 20.04 image.
Dockerfile
7
star
4

traversaro-phd-thesis

Modelling, Estimation and Identification of Humanoid Robots Dynamics: Silvio Traversaro's PhD Thesis.
TeX
6
star
5

gazebo-superbuild

CMake
5
star
6

mujoco-mjx-pixi-example

Example of running the official Mujoco MJX example without Colab with pixi.
Jupyter Notebook
4
star
7

inertial-parameters-identification-redundant-sensors

Repository of simulations related to Dynamic parameters identification in articulated rigid bodies with redundant heterogeneous sensors
MATLAB
3
star
8

awesome-opcua

2
star
9

online-inertial-parameter-estimation

Online Inertial Parameter Estimation software for YARP/iCub
2
star
10

github-actions-brew-update-upgrade-check

Repo that checks if brew update and brew upgrade works correctly in GitHub Actions.
2
star
11

openavcp

Script for scraping and processing data for italian tenders
Python
1
star
12

casellario_imprese_avcp

Casellario Imprese AVCP
Python
1
star
13

gitpod-ubuntu-22.04

Dockerfile
1
star
14

misc

Misc code
Python
1
star
15

ipopt-walking-benchmarks

Simple repo to perform benchmarks on Ipopt for Humanoid Walking problems.
1
star
16

blockrunner

:-)
CMake
1
star
17

homebrew-modelica

Modelica related homebrew formulae.
Ruby
1
star
18

gazebo-command-windows

gazebo command for the version of the Gazebo simulator that on Windows does not provide it.
1
star
19

prova354

prova
CMake
1
star
20

element_nice-research

Jupyter Notebook
1
star
21

dh_coman

Misc files on DH/URDF Coman parameter
C++
1
star