Skip to content

Commit

Permalink
publish release v1.3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
teasit committed Jun 17, 2022
1 parent 829fd08 commit de36ff5
Show file tree
Hide file tree
Showing 80 changed files with 247 additions and 1,419 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
MFTyreToolApp_resources/
MagicFormulaTyreTool_resources/
*.asv
slprj/
*.mltbx
Expand Down
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "src/mftyre-matlab-library"]
path = src/mftyre-matlab-library
url = git@github.com:teasit/mftyre-matlab-library.git
[submodule "src/magic-formula-tyre-library"]
path = src/magic-formula-tyre-library
url = https://github.com/teasit/magic-formula-tyre-library
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Changelog

- new: most app settings are now stored persistently across sessions
- new: menu bar overhaul (split "App" menu into multiple menus), should help keep menu complexity moderate with upcoming features
- new: app and code renaming due to conflicts with existing trademark
- documentation and screenshots updated
- fix: event-listener lifecycling issues fixed
70 changes: 35 additions & 35 deletions MFTyreToolApp.prj → MagicFormulaTyreTool.prj
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<deployment-project plugin="plugin.apptool" plugin-version="1.0">
<configuration build-checksum="3068110024" file="C:\Users\Tom\Documents\mftyre-tool-matlab\MFTyreToolApp.prj" location="C:\Users\Tom\Documents\mftyre-tool-matlab" name="MFTyreToolApp" target="target.mlapps" target-name="Package App">
<param.appname>MFTyreToolApp</param.appname>
<configuration build-checksum="555520072" file="C:\Users\Tom\Documents\mftyre-tool-matlab\MagicFormulaTyreTool.prj" location="C:\Users\Tom\Documents\mftyre-tool-matlab" name="MagicFormulaTyreTool" target="target.mlapps" target-name="Package App">
<param.appname>MagicFormulaTyreTool</param.appname>
<param.authnamewatermark>Tom Teasdale</param.authnamewatermark>
<param.email>[email protected]</param.email>
<param.company />
<param.icon>${PROJECT_ROOT}\MFTyreToolApp_resources\icon_24.png</param.icon>
<param.icon>${PROJECT_ROOT}\MagicFormulaTyreTool_resources\icon_24.png</param.icon>
<param.icons>
<file>${PROJECT_ROOT}\MFTyreToolApp_resources\icon_48.png</file>
<file>${PROJECT_ROOT}\MFTyreToolApp_resources\icon_24.png</file>
<file>${PROJECT_ROOT}\MFTyreToolApp_resources\icon_16.png</file>
<file>${PROJECT_ROOT}\MagicFormulaTyreTool_resources\icon_48.png</file>
<file>${PROJECT_ROOT}\MagicFormulaTyreTool_resources\icon_24.png</file>
<file>${PROJECT_ROOT}\MagicFormulaTyreTool_resources\icon_16.png</file>
</param.icons>
<param.summary>Create, fit and evaluate MF-Tyre model with a convenient MATLAB GUI.</param.summary>
<param.summary>MATLAB GUI for Magic Formula Tyre Modeling</param.summary>
<param.description />
<param.screenshot>${PROJECT_ROOT}\assets\img\MFTyreTool_Screenshot_Main.jpg</param.screenshot>
<param.version>1.3.0</param.version>
<param.screenshot>${PROJECT_ROOT}\assets\img\App_Screenshot_Main.jpg</param.screenshot>
<param.version>1.3.1</param.version>
<param.products.name>
<item>MATLAB</item>
<item>Optimization Toolbox</item>
Expand Down Expand Up @@ -41,7 +41,7 @@
<param.output />
</unset>
<fileset.main>
<file>${PROJECT_ROOT}\src\MFTyreTool.m</file>
<file>${PROJECT_ROOT}\src\MagicFormulaTyreTool.m</file>
</fileset.main>
<fileset.depfun>
<file>${PROJECT_ROOT}\src\+events\FitterMeasurementsLoadedEventData.m</file>
Expand Down Expand Up @@ -88,34 +88,34 @@
<file>${PROJECT_ROOT}\src\+ui\TyrePlotCurvesPanel.m</file>
<file>${PROJECT_ROOT}\src\+ui\TyrePlotFrictionEllipsePanel.m</file>
<file>${PROJECT_ROOT}\src\about.json</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+exceptions\EmptyMeasurement.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+exceptions\FitterFailed.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+exceptions\NoMeasurementForFitMode.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\+equations\Fx.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\+equations\Fx0.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\+equations\Fy.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\+equations\Fy0.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\eval.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\FitMode.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\Fitter.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\getFitParamNames.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\Model.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\Parameter.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\ParameterFittable.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\+v62\Parameters.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+mftyre\Model.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tir\TyrePropertiesFileCreator.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tir\TyrePropertiesFileReader.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\ConstantParameter.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\MeasuredParameter.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\Measurement.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\Metadata.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\Parameter.m</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\Parser.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+exceptions\EmptyMeasurement.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+exceptions\FitterFailed.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+exceptions\NoMeasurementForFitMode.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\+equations\Fx.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\+equations\Fx0.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\+equations\Fy.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\+equations\Fy0.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\eval.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\FitMode.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\Fitter.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\getFitParamNames.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\Model.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\Parameter.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\ParameterFittable.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\+v62\Parameters.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+magicformula\Model.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tir\TyrePropertiesFileCreator.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tir\TyrePropertiesFileReader.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\ConstantParameter.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\MeasuredParameter.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\Measurement.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\Metadata.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\Parameter.m</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\Parser.m</file>
</fileset.depfun>
<fileset.resources>
<file>${PROJECT_ROOT}\assets</file>
<file>${PROJECT_ROOT}\src\mftyre-matlab-library\src\+tydex\+parsers</file>
<file>${PROJECT_ROOT}\src\magic-formula-tyre-library\src\+tydex\+parsers</file>
</fileset.resources>
<fileset.package />
<build-deliverables>
Expand Down
File renamed without changes.
53 changes: 22 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
# MF-Tyre MATLAB Tool
# Magic Formula Tyre Tool

[![View MFTyreTool on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://de.mathworks.com/matlabcentral/fileexchange/111375-mftyretool)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/teasit/mftyre-matlab-tool)](https://github.com/teasit/mftyre-matlab-tool/releases/latest)
[![View Tool on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://de.mathworks.com/matlabcentral/fileexchange/111375)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/teasit/magic-formula-tyre-tool)](https://github.com/teasit/magic-formula-tyre-tool/releases/latest)

![Screenshot Analysis Tab with Plots](/assets/img/MFTyreTool_Screenshot_Main.jpg)
![Screenshot Analysis Tab with Plots](/assets/img/App_Screenshot_Main.jpg)

- Interactively fit MF-Tyre models to data
- Interactively fit Magic Formula tyre models to data
- Automatically separate timeseries data into steady-state conditions
- Compare model outputs visually against data
- Load/Save models from/to `.tir` (Tyre Property File)
- Export fitted models parameters as `struct`

This project uses the model functions provided by the
[MF-Tyre MATLAB Library](https://github.com/teasit/mftyre-matlab-library).
[Magic Formula Tyre Library](https://github.com/teasit/magic-formula-tyre-library).
You can export the model parameters to use with said library to simulate tyre behavior in
MATLAB or create models suitable for code-generation in Simulink.

## Motivation

This project originates in my work as a Formula Student member of
[UPBracing](https://formulastudent.uni-paderborn.de/).
The software is designed as an open-source variant to
[Simcenter MF-Tool](https://www.plm.automation.siemens.com/global/en/products/simulation-test/tire-simulation-testing.html)
with accompanying
[open-source equations](https://github.com/teasit/mftyre-matlab-library)
for model evaluation suitable for code-generation.
Especially students in Formula Student / Formula SAE might benefit from an easy-to-use
graphical approach to empirical tyre modeling.
[UPBracing](https://formulastudent.uni-paderborn.de/), where we required
computationally efficient but precise tire models suitable for code-generation.
Especially students in Formula Student / Formula SAE who want to model their tires for
control and estimation algorithms or simply for the purpose of better understanding might
benefit from this tool.

This project would not have been possible without the data provided by the
[Formula SAE Tire Test Consortium (FSAE TTC)](https://www.millikenresearch.com/fsaettc.html)
Expand All @@ -48,18 +45,12 @@ de-identified and obscured data for demonstration purposes.

There are several ways:

- Download latest Release from [MATLAB File Exchange](https://de.mathworks.com/matlabcentral/fileexchange/111375-mftyretool)
- Download latest Release from [GitHub](https://github.com/teasit/mftyre-matlab-tool/releases)
- Download latest Release from [MATLAB File Exchange](https://de.mathworks.com/matlabcentral/fileexchange/111375)
- Download latest Release from [GitHub](https://github.com/teasit/magic-formula-tyre-tool/releases)
- Clone using Git and integrate into your projects using a [Project Reference](https://de.mathworks.com/help/simulink/ug/add-or-remove-a-reference-to-another-project.html)

## Usage

The usage is similar to the one of
[Simcenter MF-Tool](https://www.plm.automation.siemens.com/global/en/products/simulation-test/tire-simulation-testing.html).
In fact, this tool can integrate into the Simcenter MF-Tool workflow by exporting measurements
as TYDEX[^TYDEX-KIT][^Paper-TNO] files (`*.tdx`).
That way, the fitting algorithm of Simcenter MF-Tool can be used instead.

The core workflows are summarized in this flowchart:

```mermaid
Expand All @@ -79,7 +70,7 @@ flowchart TD
InputData --> |.mat / .csv / ...| ParseData;
subgraph tool[ ]
DecideNewOrLoad{Base Model\navailable?}
NewMdl[Create New\nMF-Tyre model];
NewMdl[Create New\nTyre model];
LoadMdl[Load from\n.tir file];
ParseData --> DecideNewOrLoad;
DecideNewOrLoad --> |no| NewMdl;
Expand Down Expand Up @@ -107,39 +98,39 @@ measurement object contains data for only one steady-state condition. This means
one variable is *sweeped* (= *transient*). In case of Formula SAE Tire Test Consortium Data,
two parsers for *Cornering* and *Drive/Brake* MAT files in SI-units are already available.

![Animation Data Import](assets/img/MFTyreTool_Screenshot_DataImport.gif)
![Animation Data Import](assets/img/App_Screenshot_DataImport.gif)

### Fit Model to Data

You can interactively fit your MF-Tyre model to measured test-bench data.
You can interactively fit your Magic Formula tire model to measured test-bench data.
Interactively means, you can cancel the fitting process at any point. The last iteration
will be saved and you can compare the fitted values to the current model values in a
table. You can then choose to append these values to your model.

![Animation Fitting](assets/img/MFTyreTool_Animation_Fitting.gif)
![Animation Fitting](assets/img/App_Animation_Fitting.gif)

![Animation Fitting](assets/img/MFTyreTool_Animation_AppendFitted.gif)
![Animation Fitting](assets/img/App_Animation_AppendFitted.gif)

### Manual Model Editing

You can manually edit the model values in the table. When using the Auto-Refresh feature,
the plot updates automatically to reflect your changes. This helps to get an intuition on
the effects of different parameter values.

![Animation Manual Editing](assets/img/MFTyreTool_Animation_ManualEditing.gif)
![Animation Manual Editing](assets/img/App_Animation_ManualEditing.gif)

### Plot Model against Data

To make sure the fitting process yields a plausible result, you can compare the test-bench
data to your fitted model. If the import process of the measurements worked correctly,
you will be able to select steady-state values from the dropdowns and thereby filter the
data. The MF-Tyre model will then be supplied with the measured inputs for an exact
data. The Magic Formula tire model will then be supplied with the measured inputs for an exact
comparison.

![Animation Plotting](assets/img/MFTyreTool_Animation_Plotting.gif)
![Animation Plotting](assets/img/App_Animation_Plotting.gif)

## Known Issues

- Currently only Fitting of Fx0, Fy0, Fx, Fy is supported
- Only MF-Tyre 6.1.2 (62) is supported.
- Only Magic Formula version 6.1.2 (62) is supported.
- The FSAE TTC parsers might not always work. You might have to create your own parser.
20 changes: 10 additions & 10 deletions MFTyreToolToolboxPackager.prj → ToolboxPackager.prj
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<deployment-project plugin="plugin.toolbox" plugin-version="1.0">
<configuration build-checksum="2416458237" file="C:\Users\Tom\Documents\mftyre-tool-matlab\MFTyreToolToolboxPackager.prj" location="C:\Users\Tom\Documents\mftyre-tool-matlab" name="MFTyreToolToolboxPackager" target="target.toolbox" target-name="Package Toolbox">
<param.appname>MFTyreTool</param.appname>
<configuration build-checksum="4228771701" file="C:\Users\Tom\Documents\mftyre-tool-matlab\ToolboxPackager.prj" location="C:\Users\Tom\Documents\mftyre-tool-matlab" name="ToolboxPackager" target="target.toolbox" target-name="Package Toolbox">
<param.appname>MagicFormulaTyreTool</param.appname>
<param.authnamewatermark>Tom Teasdale</param.authnamewatermark>
<param.email>[email protected]</param.email>
<param.company />
<param.summary>Create, fit and evaluate MF-Tyre models with a convenient MATLAB GUI.</param.summary>
<param.summary>MATLAB GUI for Magic Formula Tyre Modeling</param.summary>
<param.description />
<param.screenshot>${PROJECT_ROOT}\assets\img\MFTyreTool_Screenshot_Main.jpg</param.screenshot>
<param.version>1.3.0</param.version>
<param.output>${PROJECT_ROOT}\MFTyreTool.mltbx</param.output>
<param.screenshot>${PROJECT_ROOT}\assets\img\App_Screenshot_Main.jpg</param.screenshot>
<param.version>1.3.1</param.version>
<param.output>${PROJECT_ROOT}\MagicFormulaTyreTool.mltbx</param.output>
<param.products.name />
<param.products.id />
<param.products.version />
Expand Down Expand Up @@ -46,12 +46,12 @@ tools
assets
slprj
resources
MFTyreToolApp_resources</param.exclude.filters>
MagicFormulaTyreTool_resources</param.exclude.filters>
<param.exclude.pcodedmfiles>true</param.exclude.pcodedmfiles>
<param.examples />
<param.demosxml />
<param.apps>
<file>${PROJECT_ROOT}\MFTyreToolApp.mlappinstall</file>
<file>${PROJECT_ROOT}\MagicFormulaTyreTool.mlappinstall</file>
</param.apps>
<param.registered.apps />
<param.docs />
Expand Down Expand Up @@ -115,14 +115,14 @@ MFTyreToolApp_resources</param.exclude.filters>
<file>${PROJECT_ROOT}\CHANGELOG.md</file>
<file>${PROJECT_ROOT}\doc</file>
<file>${PROJECT_ROOT}\LICENSE</file>
<file>${PROJECT_ROOT}\MFTyreToolApp.mlappinstall</file>
<file>${PROJECT_ROOT}\MagicFormulaTyreTool.mlappinstall</file>
<file>${PROJECT_ROOT}\README.md</file>
</fileset.rootfiles>
<fileset.depfun.included />
<fileset.depfun.excluded />
<fileset.package />
<build-deliverables>
<file location="${PROJECT_ROOT}" name="MFTyreTool.mltbx" optional="false">C:\Users\Tom\Documents\mftyre-tool-matlab\MFTyreTool.mltbx</file>
<file location="${PROJECT_ROOT}" name="MagicFormulaTyreTool.mltbx" optional="false">C:\Users\Tom\Documents\mftyre-tool-matlab\MagicFormulaTyreTool.mltbx</file>
</build-deliverables>
<workflow />
<matlab>
Expand Down
Binary file added assets/img/App_Animation_AppendFitted.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Animation_Fitting.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Animation_ManualEditing.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Animation_Plotting.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Screenshot_DataImport.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Screenshot_Main.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Screenshot_NewModel.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/App_Screenshot_UnfittedModel.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/img/MFTyreTool_Animation_AppendFitted.gif
Binary file not shown.
Binary file removed assets/img/MFTyreTool_Animation_Fitting.gif
Binary file not shown.
Binary file removed assets/img/MFTyreTool_Animation_ManualEditing.gif
Binary file not shown.
Binary file removed assets/img/MFTyreTool_Animation_Plotting.gif
Binary file not shown.
Binary file removed assets/img/MFTyreTool_Screenshot_DataImport.gif
Binary file not shown.
Binary file removed assets/img/MFTyreTool_Screenshot_Main.jpg
Binary file not shown.
Binary file modified doc/GettingStarted.mlx
Binary file not shown.
2 changes: 1 addition & 1 deletion resources/project/ProjectData.type.Info.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<Info Name="MFTyre Creation Tool" />
<Info Name="Magic Formula Tyre Tool" />
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<Info Type="Basic" Visible="1" Icon="" File="tools/publishReleaseMFTyreTool.m" Name="publishReleaseMFTyreTool" />
<Info Type="Basic" Visible="1" Icon="" File="tools/publishRelease.m" Name="Publish Release" />

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit de36ff5

Please sign in to comment.