Fit a Tire Model to Tire Data
Use the fit
method to fit tire model parameters to tire data. The fit
method optimizes parameter values of a tire model to match the tire model response to the target tire data as closely as possible.
First, import tire data. Then, choose a model as the seed for fitting a new tire model parameter set. You can import an existing tire model or create a new tire model from default parameters for the seed model. Finally, fit the tire model parameter sets by specifying the fitType
argument of the fit method. For more information on the fit types available, see fitType.
This example requires the Extended Tire Features for Vehicle Dynamics Blockset™ support package. See Install Support Package.
Note that using a built-in tire model as a seed model is not supported.
Import Tire Data
Build a string array from the TYDEX filenames that contain the tire data.
tirepath = pwd; tydexdir = dir(fullfile(tirepath,"data_tydex_files","*.tdx")); tydexstr = join([{tydexdir.folder}',{tydexdir.name}'],filesep);
Import the tire data into an array of tireData
objects from the files specified in the string array tydexstr
. The length of the tireData
objects array is the same length as the input string array. Data from each file is stored in a tireData
object. For more information on tire data permitted, see Example Tire Data.
td = tireData(tydexstr);
Use the mean
function to preprocess the Fz
data channel to remove noise and variation.
td = mean(td, "Fz");
Create tireModel Object
Create a Magic Formula 6.2 tire model type with default parameters to use as the seed model. Then, name the new model.
tm = tireModel.new("MF"); tm.Name = "New Fitted Model";
Set Dimensions, Nominal Test Conditions, and Model Limits
Manually set the nominal test conditions to match the test data supplied to fit the tire model.
tm.INFLPRES = 262000; tm.NOMPRES = 262000; tm.FNOMIN = 4300;
Manually set the size of the tire tested.
tm.TireSize = "245/45R18";
Specify the fitType
as Dimensions
to automatically set the dimensional properties of the tire to match the test data supplied to the model.
[tm, diffTable] = fit(tm, td, "Dimensions");
View the diffTable
variable to inspect which variables were revised.
diffTable
diffTable=5×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________________ _____________ ___________ __________ ____________ ____________ ____________ ___________________________________
"UNLOADED_RADIUS" 0.3135 0.33454 0.021045 6.7 0 Inf "Free tire radius"
"WIDTH" 0.205 0.235 0.03 14.6 0 Inf "Nominal section width of the tire"
"ASPECT_RATIO" 0.6 0.45 -0.15 -25 0 Inf "Nominal aspect ratio"
"RIM_RADIUS" 0.1905 0.2286 0.0381 20 0 Inf "Nominal rim radius"
"RIM_WIDTH" 0.152 0.2032 0.0512 33.7 0 Inf "Rim width"
Specify the fitType
as Limits
to automatically set the model limits to match the test data supplied to fit the model. Keep the FZMIN parameter value constant when these limits are applied by setting the FixedParameters
argument to FZMIN
.
[tm, diffTable] = fit(tm, td, "Limits", FixedParameters="FZMIN");
View the diffTable
variable to inspect which variables were revised.
diffTable
diffTable=9×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________ _____________ ___________ __________ ____________ ____________ ____________ _______________________________________
"PRESMIN" 10000 2.62e+05 2.52e+05 2520 0 Inf "Minimum valid tire inflation pressure"
"PRESMAX" 1e+06 2.62e+05 -7.38e+05 -73.8 -Inf Inf "Maximum valid tire inflation pressure"
"FZMAX" 12000 6526 -5474 -45.6 -Inf Inf "Maximum allowed wheel load"
"KPUMIN" -1.5 -0.4808 1.0192 -67.9 -Inf Inf "Minimum valid wheel slip"
"KPUMAX" 1.5 0.4811 -1.0189 -67.9 -Inf Inf "Maximum valid wheel slip"
"ALPMIN" -0.7854 -0.3265 0.4589 -58.4 -Inf Inf "Minimum valid slip angle"
"ALPMAX" 0.7854 0.3239 -0.4615 -58.8 -Inf Inf "Maximum valid slip angle"
"CAMMIN" -0.17453 -0.1052 0.06933 -39.7 -Inf Inf "Minimum valid camber angle"
"CAMMAX" 0.17453 0.1052 -0.06933 -39.7 -Inf Inf "Maximum valid camber angle"
Fit Different Parameter Sets
Follow these steps to fit different tire model parameter sets.
Note that this section provides steps for only some of the available parameter sets. You can use these steps to fit all of the available parameter options.
Fit Pure Fx
Parameters
Extract the longitudinal data from the tire data.
longitudinal_data = td([td.TestMethod] == "Longitudinal");
Using the fit
function, set the fitType
argument to "Fx Pure"
, and set the PlotFit
argument to true
to plot the result.
For additional information available for a fit, see Output Arguments.
[tm, diffTable] = fit(tm,longitudinal_data,"Fx Pure",PlotFit=true);
Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance. <stopping criteria details>
View the diffTable
variable to inspect which variables were optimized.
diffTable
diffTable=19×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________ _____________ ___________ ___________ ____________ ____________ ____________ _______________________________________________________________________
"PCX1" 1.579 1.5138 -0.065167 -4.1 -Inf Inf "Shape factor Cfx for longitudinal force"
"PDX1" 1.0422 1.1786 0.13637 13.1 -Inf Inf "Longitudinal friction Mux at Fznom"
"PDX2" -0.08285 -0.040475 0.042375 -51.1 -Inf Inf "Variation of friction Mux with load"
"PDX3" 0 0.070744 0.070744 Inf -Inf Inf "Variation of friction Mux with camber"
"PEX1" 0.11113 0.33671 0.22558 203 -Inf Inf "Longitudinal curvature Efx at Fznom"
"PEX2" 0.3143 -0.49929 -0.81359 -258.9 -Inf Inf "Variation of curvature Efx with load"
"PEX3" 0 0.16845 0.16845 Inf -Inf Inf "Variation of curvature Efx with load squared"
"PEX4" 0.001719 -0.098787 -0.10051 -5846.8 -Inf Inf "Factor in curvature Efx while driving"
"PKX1" 21.687 46.607 24.92 114.9 -Inf Inf "Longitudinal slip stiffness Kfx/Fz at Fznom"
"PKX2" 13.728 0.0040188 -13.724 -100 -Inf Inf "Variation of slip stiffness Kfx/Fz with load"
"PKX3" -0.4098 0.10048 0.51028 -124.5 -Inf Inf "Exponent in slip stiffness Kfx/Fz with load"
"PHX1" 0.00021615 -0.00098607 -0.0012022 -556.2 -Inf Inf "Horizontal shift Shx at Fznom"
"PHX2" 0.0011598 0.00048149 -0.00067831 -58.5 -Inf Inf "Variation of shift Shx with load"
"PVX1" 2.0283e-05 0.049022 0.049002 2.4159e+05 -Inf Inf "Vertical shift Svx/Fz at Fznom"
"PVX2" 0.00010568 -0.0070436 -0.0071492 -6765 -Inf Inf "Variation of shift Svx/Fz with load"
"PPX1" -0.3485 -0.3485 0 0 -Inf Inf "Linear influence of inflation pressure on longitudinal slip stiffness"
⋮
Fit Pure Fy
Parameters
Extract the lateral data from the tire data.
lateral_data = td([td.TestMethod] == "Lateral");
Using the fit
function, set the fitType
argument to "Fy Pure"
, and set the PlotFit
argument to true
to plot the result.
For additional information available for a fit, see Output Arguments.
[tm, diffTable] = fit(tm,lateral_data,"Fy Pure",PlotFit=true);
Feasible point with lower objective function value found, but optimality criteria not satisfied. See output.bestfeasible.. Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance. <stopping criteria details>
View the diffTable
variable to inspect which variables were optimized.
diffTable
diffTable=27×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________ _____________ ___________ __________ ____________ ____________ ____________ ________________________________________________
"PCY1" 1.338 1.4654 0.12741 9.5 -10 10 "Shape factor Cfy for lateral forces"
"PDY1" 0.8785 1.0893 0.21083 24 -10 10 "Lateral friction Muy"
"PDY2" -0.06452 -0.12473 -0.060214 93.3 -10 10 "Variation of friction Muy with load"
"PDY3" 0 2.282 2.282 Inf -10 10 "Variation of friction Muy with squared camber"
"PEY1" -0.8057 -1.4972 -0.69154 85.8 -10 10 "Lateral curvature Efy at Fznom"
"PEY2" -0.6046 -1.9654 -1.3608 225.1 -10 10 "Variation of curvature Efy with load"
"PEY3" 0.09854 0.033615 -0.064925 -65.9 -10 10 "Zero order camber dependency of curvature Efy"
"PEY4" -6.697 -7.2457 -0.54872 8.2 -10 10 "Variation of curvature Efy with camber"
"PEY5" 0 9.9948 9.9948 Inf -10 10 "Variation of curvature Efy with camber squared"
"PKY1" -15.324 -32.06 -16.736 109.2 -75 0 "Maximum value of stiffness Kfy/Fznom"
"PKY2" 1.715 1.8477 0.1327 7.7 -10 10 "Load at which Kfy reaches maximum value"
"PKY3" 0.3695 0.4936 0.1241 33.6 -10 10 "Variation of Kfy/Fznom with camber"
"PKY4" 2.0005 1.5746 -0.42589 -21.3 -10 10 "Curvature of stiffness Kfy"
"PKY5" 0 -9.9925 -9.9925 -Inf -10 10 "Peak stiffness variation with camber squared"
"PKY6" -0.8987 -1.084 -0.18526 20.6 -10 10 "Fy camber stiffness factor"
"PKY7" -0.23303 -0.49034 -0.25731 110.4 -10 10 "Vertical load dependency of camber stiffness"
⋮
Fit Combined Fx
Parameters
Extract the combined data from the tire data.
combined_data = td([td.TestMethod] == "Combined");
Using the fit
function, set the fitType
argument to "Fx Combined"
, and set the PlotFit
argument to true
to plot the result.
For additional information available for a fit, see Output Arguments.
[tm, diffTable] = fit(tm,combined_data,"Fx Combined",PlotFit=true);
Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance. <stopping criteria details>
View the diffTable
variable to inspect which variables were optimized.
diffTable
diffTable=7×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________ _____________ ___________ __________ ____________ ____________ ____________ __________________________________________________
"RBX1" 13.046 17.581 4.5354 34.8 0 100 "Slope factor for combined slip Fx reduction"
"RBX2" 9.718 24.406 14.688 151.1 0 100 "Variation of slope Fx reduction with kappa"
"RBX3" 0 160.23 160.23 Inf 0 500 "Influence of camber on stiffness for Fx combined"
"RCX1" 0.9995 -1.5487 -2.5482 -254.9 -Inf Inf "Shape factor for combined slip Fx reduction"
"REX1" -0.4403 1.0381 1.4784 -335.8 -10 10 "Curvature factor of combined Fx"
"REX2" -0.4663 0.059464 0.52576 -112.8 -5 5 "Curvature factor of combined Fx with load"
"RHX1" -9.968e-05 0.0030419 0.0031416 -3151.6 0 1 "Shift factor for combined slip Fx reduction"
Fit Mx
Parameters
Using the fit
function, set the fitType
argument to "Mx"
, use the combined
data, and set the PlotFit
argument to true
to plot the result.
For additional information available for a fit, see Output Arguments.
[tm, diffTable] = fit(tm, lateral_data,"Mx",PlotFit=true);
Solver stopped prematurely. fmincon stopped because it exceeded the function evaluation limit, options.MaxFunctionEvaluations = 9.000000e+03.
View the diffTable
variable to inspect which variables were optimized.
diffTable
diffTable=11×8 table
Parameter Initial Value Final Value Difference % Difference Lower Bounds Upper Bounds Parameter Description
_________ _____________ ___________ __________ ____________ ____________ ____________ _________________________________________________
"QSX1" -0.007764 -0.00045692 0.0073071 -94.1 -5 5 "Vertical shift of overturning moment"
"QSX2" 1.1915 -1.0992 -2.2907 -192.2 -5 5 "Camber induced overturning couple"
"QSX3" 0.013948 0.45152 0.43757 3137.1 -5 5 "Fy induced overturning couple"
"QSX4" 4.912 1.8783 -3.0337 -61.8 -20 20 "Mixed load lateral force and camber on Mx"
"QSX5" 1.02 2.231 1.211 118.7 -5 5 "Load effect on Mx with lateral force and camber"
"QSX6" 22.83 4.6628 -18.167 -79.6 -20 20 "B-factor of load with Mx"
"QSX7" 0.7104 2.0829 1.3725 193.2 -5 5 "Camber with load on Mx"
"QSX8" -0.023393 -3.0458 -3.0224 12920 -5 5 "Lateral force with load on Mx"
"QSX9" 0.6581 -0.088189 -0.74629 -113.4 -5 5 "B-factor of lateral force with load on Mx"
"QSX10" 0.2824 1.0029 0.72052 255.1 -5 5 "Vertical force with camber on Mx"
"QSX11" 5.349 8.6277 3.2787 61.3 0 20 "B-factor of vertical force with camber on Mx"
Continue Fitting Parameter Sets
Use the steps established in the preceding sections to continue fitting the model using the remaining fit types.
Plot Fitted Tire Model Response
After fitting all available fit types, use the plot
method to plot the results and compare to the original default model.
plot([tm,tireModel.new("MF")],Data=td);