-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c4eb920
commit e29e18c
Showing
1 changed file
with
18 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,74 +1,40 @@ | ||
# Modia3D | ||
|
||
[](https://travis-ci.org/ModiaSim/Modia3D.jl) | ||
[](https://ci.appveyor.com/project/MartinOtter/modia3d-jl) | ||
[](http://codecov.io/github/ModiaSim/Modia3D.jl?branch=master) | ||
[](https://ModiaSim.github.io/Modia3D.jl/stable) | ||
[](https://ModiaSim.github.io/Modia3D.jl/latest) | ||
[](https://github.com/ModiaSim/Modia3D.jl/blob/master/LICENSE.md) | ||
[](https://zenodo.org/record/3978914) | ||
|
||
## Modia Platform | ||
[Modia3D](https://github.com/ModiaSim/Modia3D.jl) is a Julia package that integrates a multibody program and 3D shapes for visualization and collision handling into the [Modia Modeling Language](https://github.com/ModiaSim/ModiaLang.jl). It is then, for example, possible to model the 3D mechanical part of a robot with Modia3D and the electrical motors and gearboxes that are driving the joints with the Modia language. Collision handling with elastic response calculation is performed for shapes that are defined with a contact material and have a convex geometry or are approximated by the convex hull of a concave geometry. For more details, see the [Modia3D Tutorial](@ref). | ||
|
||
The *Modia platform* is a prototype system for the next modeling and simulation generation of physical systems described by differential and algebraic equations. It consists currently of the following Julia packages that are all under development (not all are yet publicly available): | ||
The multibody program supports currently tree-structured multibody systems, but does not (yet) support kinematic loops. | ||
|
||
| Package | Description | | ||
|:----------------------------------------------------------|:------------------------------| | ||
| *[Modia](https://github.com/ModiaSim/Modia.jl)* | Equation based modeling | | ||
| *Modiator* | 2D/3D web-app model editor | | ||
| *[Modia3D](https://github.com/ModiaSim/Modia3D.jl)* | 3D geometry and 3D mechanics | | ||
| *[ModiaMedia](https://github.com/ModiaSim/ModiaMedia.jl)* | Thermodynamic property models | | ||
| *Modelia* | [Modelica](https://www.modelica.org/modelicalanguage) model importer | | ||
Example videos: xxx | ||
|
||
## Modia3D | ||
|
||
Modia3D provides 3D geometry to physical systems so that geometrical objects can be | ||
directly accessed and utilized in a model. Functions are provided, for example, to compute the volume, | ||
mass, and inertia of a geometrical object or the distance between two objects. | ||
Furthermore, Modia3D models 3D mechanical systems and are expanded into other domains. | ||
It is possible, for example, to model the 3D mechanical part of a robot with Modia3D and the electrical motors and gearboxes that are driving the joints with Modia [6, 7]. Other examples are utilizing the 3D geometry to model heat flow in buildings or satellites. | ||
## Installation | ||
|
||
Modia3D uses ideas from modern computer game engines to achieve a highly flexible setup of mechanical systems including collision handling. Other features are utilized from multi-body programs, such as support for closed kinematic loops, and elastic response calculation. The underlying mathematical formulation are hybrid Differential Algebraic Equations (DAEs) that are solved with the variable-step solver IDA via the [Sundials.jl](https://github.com/JuliaDiffEq/Sundials.jl) Julia package. | ||
Modia3D is included in [Modia](https://github.com/ModiaSim/Modia.jl) and is available, when Modia was installed. | ||
|
||
Collision handling with elastic response calculation is performed for geometrical objects that are defined with a contact material and have a convex geometry or are approximated by the convex hull of a concave geometry. | ||
Penetration depths and Euclidean distances are computed with the improved Minkowski Portal Refinement (MPR) algorithm [1]. | ||
The details of the contact law are provided in [5] and several examples are discussed in [4a, 4b]. The user's view of Modia3D is introduced in [2] showing the very flexible definition of 3D systems. Some key algorithms are discussed in [3]. The combination of equation-based modeling with domain specific algorithms - in this case 3D dynamics is discussed in [6, 7]. | ||
A more detailed overview of the available features is also given in the [Modia3D documentation](https://ModiaSim.github.io/Modia3D.jl/stable). | ||
A standalone Modia3D version is installed with | ||
|
||
```julia | ||
julia> ]add Modia3D | ||
``` | ||
|
||
## Status | ||
The package has been tested with Julia on Windows 7, via the TravisCL on Linux (x86_64-pc-linux-gnu) and macOS (x86_64-apple-darwin14.5.0) and via the Appveyor CL on Windows. | ||
Modia3D animation can be exported in threejs-json-format and then imported in the open source web app [threejs.org](https://threejs.org/editor/) and use all the features of threejs, for example to export in the widely used glb format (= the binary version of the [glTF](https://www.khronos.org/gltf/) format) and use any glb-viewer (for example 3D-Viewer of Windows 10). | ||
|
||
Note, the collision handling is currently reasonably working for contacts between spheres as well as spheres and boxes. Still improvements are needed. Furthermore, kinematic loops are currently only supported for 2D loops and if they are driven kinematically. The technique to handle kinematic loops for dynamic simulations is demonstrated in the example `include("$(ModiaMath.path)/examples/withoutMacros_withoutVariables/Simulate_PendulumDAE.jl")` and is described in the paper *[Transformation of Differential Algebraic Array Equations to Index One Form](http://www.ep.liu.se/ecp/132/064/ecp17132565.pdf)*. | ||
Additionally, the (free) community or the (commercial) professional version of the [DLR Visualization](http://www.systemcontrolinnovationlab.de/the-dlr-visualization-library/) library is supported that provides online animation (during simulation) and generation of mpg4-videos. To install the free version for *Windows* or for *Linux* perform the following steps: | ||
|
||
Up to now, Modia3D is implemented for functionality and not tuned for efficiency. Therefore, there are no benchmarks yet and in particular no comparison with Modelica models. | ||
|
||
## Documentation | ||
- [**STABLE**](https://ModiaSim.github.io/Modia3D.jl/stable) — *documentation of the last released version.* | ||
- [**LATEST**](https://ModiaSim.github.io/Modia3D.jl/latest) — *in-development version of the documentation.* | ||
|
||
### Publications | ||
|
||
| | Paper or Talk | Conference | DOI or YouTube | | ||
|:---|:--------------|:-----------|:---------------| | ||
| [1] |*[Collision Handling with Variable-Step Integrators](../resources/documentation/CollisionHandling_Neumayr_Otter_2017.pdf)*|[EOOLT 2017, December](http://www.eoolt.org/2017/)|[10.1145/3158191.3158193](https://doi.org/10.1145/3158191.3158193)| | ||
| [2] |*[Component-Based 3D Modeling of Dynamic Systems](http://www.ep.liu.se/ecp/154/019/ecp18154019.pdf)*|[American Modelica Conference 2018, October](https://www.modelica.org/events/modelica2018Americas/index_html)|[10.3384/ECP18154175](https://doi.org/10.3384/ECP18154175)| | ||
| [3] |*[Algorithms for Component-Based 3D Modeling](http://www.ep.liu.se/ecp/157/039/ecp19157039.pdf)*|[13th International Modelica Conference 2019, March](https://modelica.org/events/modelica2019)|[10.3384/ecp19157383](https://doi.org/10.3384/ecp19157383)| | ||
| [4a] |*[Modia3D: Modeling and Simulation of 3D-Systems in Julia](https://proceedings.juliacon.org/papers/10.21105/jcon.00043)*|[JuliaCon 2019, July](https://juliacon.org/2019/)|[10.21105/jcon.00043](https://doi.org/10.21105/jcon.00043)| | ||
| [4b] |*[Modia3D: Modeling and Simulation of 3D-Systems in Julia](https://proceedings.juliacon.org/papers/10.21105/jcon.00043)*|[JuliaCon 2019, July](https://juliacon.org/2019/)|[YouTube](https://www.youtube.com/watch?v=b3WfqXZRKpA)| | ||
| [5] |*Collision Handling with Elastic Response Calculation and Zero-Crossing Functions*|[EOOLT 2019, November](http://www.eoolt.org/2019/)|[10.1145/3365984.3365986](https://doi.org/10.1145/3365984.3365986)| | ||
| [6] |*Modia – Modeling Multidomain Engineering Systems with Julia*|[JuliaCon 2021, July](https://juliacon.org/2021/)|Video comming soon| | ||
| [7] |*Modia – Equation Based Modeling and Domain Specific Algorithms*|[14th International Modelica Conference 2021, September](http://www.modelica.org/)|accepted for publication| | ||
|
||
|
||
## Issues and Contributions | ||
Contributions are welcome, as are feature requests and suggestions. | ||
Please open an [issue](https://github.com/Modia/Modia3D.jl/issues) in this case and also if you encounter problems. | ||
1. Go to [https://visualization.ltx.de/](https://visualization.ltx.de/), provide your contact information and click on *Request download* for *Community Edition*. Afterwards, you get a link to download the library and you need to unzip the file. | ||
2. In your Julia **startup file** (`HOME/.julia/config/startup.jl`) include the environment variable `ENV["DLR_VISUALIZATION"] = "<path-to-library>/Visualization/Extras/SimVis"`. Make sure that the SimVis executable under this directory has execution rights. For example in Linux with command:`chmod ug+x <path-to-library>/Visualization/Extras/SimVis/linux/SimVis` | ||
3. Start Julia and run one of the tests, for example\ | ||
`include("$(Modia3D.path)/test/Basic/PendulumWithBar1.jl")` | ||
|
||
|
||
## Main Developers and License | ||
[Andrea Neumayr](mailto:[email protected]) and [Martin Otter](https://rmc.dlr.de/sr/de/staff/martin.otter/) and [Gerhard Hippmann](mailto:[email protected]) | ||
|
||
[Andrea Neumayr](mailto:[email protected]), | ||
[Martin Otter](https://rmc.dlr.de/sr/de/staff/martin.otter/) and | ||
[Gerhard Hippmann](mailto:[email protected]),\ | ||
[DLR - Institute of System Dynamics and Control](https://www.dlr.de/sr/en) | ||
|
||
License: [MIT (expat)](LICENSE.md) |