Tire model to be used with custom tire force and moment block in Simulink

66 views (last 30 days)
Hi everyone,
I'm working on a multibody model to simulate the behavior of a prototype vehicle. The model still lacks a working method to represent the tire-ground contact. My vehicle uses very small wheels (unloaded radius = 0.102m), from RC scale vehicle world. I have tried:
-sphere plane contact: it works but is not effective in representing tire behavior
-then I moved to Magic Formula Tire Force and Torque from Multibody/Forces and Torque library. I managed to make it work importing a formula formula sae .tir file. I can not find any Pacejka parameters set for smaller tires. My attempt was then to manually modify the tir file in a reasonable way so that it can represent in a realistic way the behavior of my tires. As soon as I modify a single parameters, the unloaded radius from 0.23 m down to my 0.102m , the simulation fails: Tires penetrates through the road plane rather than establishing the contact.
-custom tire force and moment block with another block representing the tire model (magic formula, pacejka, Fiala, Dugoff): I tried to simplify the simulation as much as possible: a single wheel with tire falling onto the ground vertically. It works with the previous method using formula sae parameters. I tried then to make it work using different models such as Fiala and Dugoff but I was not able to. I do not know exactly how to set this blocks vertical motion setting: external deflection or mapped stiffness and damping. According to this latter choice I will then have to feed different inputs which I am not sure where to take them from: ground displacement (gnd) or fext. You can find attached a screenshot of Dugoff simulation with one single wheel. Am i giving input in the wrong way? There is not much documentation about this blocks and examples
Which is the easiest way to have something working to implement in my model to represent the tire-ground contact? Would you suggest me different approaches or to spend more time trying to implement one of the methods I already tried?
By the way the tires I should use are :

Answers (2)

Mike Sasena
Mike Sasena on 16 Oct 2025 at 12:44
One thing for you to check out in your vehicle model is how you're modeling the ground. You've shown only the tire model here, but it's unclear what the rest of the vehicle model is that calculates the ground height signal (Gnd). If you're using the Vehicle Dynamics Blockset models, there are a few options. You can provide a lookup table for Gnd = f(x,y) for each tire. This is the simplest solution for flat ground simulations. If you have curve surfaces, you could use the Simulation 3D Terrain Sensor block to sense the ground height under each tire directly from an Unreal Engine scene. This gives you a lot of flexibility, but you have to adjust the ray traces to avoid things like missing the events where ground height changes quickly and the tire / ground contact patch gets miscalculated. For example, picture the tire going over a curb, but your ray trace didn't detect the ground height change until after the wheel already went through the curb. Lastly, keep in mind that a Magic Formula tire model is inherently a single point of contact model. There are limits to how well you can model tire / ground interactions that way. Hope that helps.
  2 Comments
Massimiliano
Massimiliano on 16 Oct 2025 at 14:32
Hi Mike thank you so much for your kindness. The ground is modeled as a grid surface, completely flat. Now I'm just trying to get this model to work on a completely flat surface. Is it correct in this case to simply provide a constant 0 value signal as gnd input?
A single point contact model would be enough considering my simulation goal.
Regarding Fiala model could I ask you some more questions?
Using vertical behavior calculated from the radial deflection (which I assume I should take from Custom Tire Force and Torque block as output), where does the model take the values of vertical stiffness and damping of the tire to calculate reaction forces? Instead, using mapped stiffness and damping the model requires Fext as input: on Fiala block documentation I read this is the axle force on vertical direction. Is it correct to take this force as sensed value from the joint connecting the wheel to my suspension?
Again, thank you so much for your help!
Umar
Umar on 16 Oct 2025 at 15:21

Hi @Massimiliano,

Mike indeed provide some good suggestions. Also, great questions! Let me clarify these important points about the Fiala model implementation based on the official MathWorks documentation.

Regarding the flat ground and gnd input:

Yes, for a completely flat surface (grid surface at z=0), you can provide a constant 0 value to the gnd input when using "Mapped stiffness and damping" mode. This tells the tire model that the ground height is always at zero. Make sure your coordinate system is consistent—if your ground plane is at a different height, use that constant value instead.

IMPORTANT CLARIFICATION - Regarding Fiala's vertical motion settings and input ports:

There's a critical correction needed here. According to the MathWorks documentation, the input port behavior depends on which Vertical Motion setting you choose:

1. "Mapped Stiffness and Damping" (Recommended for your case) * Uses the gnd input port (ground displacement along tire-fixed z-axis) * Vertical motion depends on wheel stiffness and damping, where stiffness is a function of tire sidewall displacement and pressure, and damping is a function of tire sidewall velocity and pressure * You specify the stiffness and damping parameters in the block's parameter dialog * The vertical reaction force is calculated automatically from these parameters * Does NOT use the Fext port

2. "External Deflection" * Uses the RadialDeflct input port. This value is used directly in the effective radius calculation * You provide the tire sidewall deflection directly * Useful when you have an external model calculating deflection

3. "None" * Uses the Fext input port (axle force applied to tire along vehicle-fixed z-axis) * The block passes applied chassis forces directly through to rolling resistance and longitudinal force calculations * You manually provide the vertical force from your suspension * The tire model doesn't calculate vertical dynamics

Now, to answer your specific questions:

"Instead, using mapped stiffness and damping the model requires Fext as input..."

This is incorrect according to the documentation. When Vertical Motion is set to "Mapped stiffness and damping," the Fext port is only enabled when Vertical Motion is set to "None" or "Magic Formula". When using "Mapped Stiffness and Damping," you use the gnd port, not Fext.

" Where does the model take the values of vertical stiffness and damping?"

When using "Mapped Stiffness and Damping," you specify parameters in the block dialog including mapped stiffness (as a function of sidewall deflection and pressure) and mapped damping (as a function of sidewall velocity and pressure). These are configured in the block parameters under the "Vertical" section. My recommendation for your setup would be

1. Set Vertical Motion to "*Mapped Stiffness and Damping*" 2. Connect gnd input to constant 0 (for flat ground at z=0) 3. Configure tire parameters in the block dialog: * Vertical stiffness mapping (deflection vs. pressure table) * Vertical damping mapping (velocity vs. pressure table) * Unloaded Radius: 0.102 m 4. The block will calculate vertical forces automatically—you do NOT need to sense forces from your suspension joint

If you see penetration issues:

  • Increase the vertical stiffness values in your mapped tables
  • Reduce simulation step size (try 1e-4 s fixed-step)
  • Use a stiff solver like ode15s

References: Fiala Wheel 2DOF - MathWorks Documentation

Hope this clears up the confusion! Let me know how it goes. We can wait for second opinion from @Mike as well.

Sign in to comment.


Umar
Umar on 9 Oct 2025 at 20:17

Hi @Massimiliano,

Thank you for sharing your vehicle simulation setup and tire specifications. I've carefully reviewed your Simulink diagram, the tire product details, and researched the relevant MathWorks documentation to do thorough research and provide you with specific recommendations for implementing tire-ground contact for your Jetko King Cobra tires.

Your Tire Specifications

Based on the product link you provided, your tires have: * Outer diameter: ~204mm (radius = 102mm = 0.102m) matches your stated value * Rim diameter: ~135mm * Width: 99mm * Application: Traxxas X-Maxx (1/5 scale RC monster truck)

These are indeed significantly smaller than standard automotive tires used in most Pacejka parameter sets.

Key Findings from Documentation Review

After examining the MathWorks documentation for the Dugoff, Fiala, and Custom Tire Force and Torque blocks, I've identified the primary issue with your current implementation:

Vertical Motion Configuration:

The Dugoff and Fiala Wheel 2DOF blocks offer three vertical motion settings: "None," "Mapped Stiffness and Damping," and "External Deflection." Based on your screenshot, I believe the confusion stems from understanding which inputs correspond to each setting:

1. " None" - Uses the Fext input port (axle force applied to tire along vehicle-fixed z-axis). The block passes applied chassis forces directly through to rolling resistance and longitudinal force calculations.

2. " Mapped Stiffness and Damping" - Vertical motion depends on wheel stiffness and damping, where stiffness is a function of tire sidewall displacement and pressure, and damping is a function of tire sidewall velocity and pressure. This setting requires the gnd input (ground displacement along tire-fixed z-axis).

3. " External Deflection" - The block uses the defined sidewall deflection directly in the effective radius calculation. Uses the RadialDeflct input port.

So, for your simplified single-wheel drop test, I recommend the following steps:

Option 1: Use Dugoff/Fiala with "Mapped Stiffness and Damping" (Recommended)

  • Set the Vertical Motion parameter to "*Mapped Stiffness and Damping*"
  • Connect the gnd input port to your ground height signal (not Fext)
  • Scale the built-in tire parameters proportionally for your 0.102m radius
  • Start with a built-in tire model and scale it down by radius ratio

Option 2: Custom Tire Force and Torque Block

The Custom Tire Force and Torque block computes the interactions and spatial relationships between a tire and the ground surface, allowing you to model a custom tire by using the block outputs to compute tire force and torque, then looping these signals back as inputs. This approach offers more flexibility: * The block provides outputs (normal force, slip angles, contact geometry) for your custom tire model * You compute forces/torques externally and feed them back to the block * For small RC wheels, this allows manual adjustment of all parameters without .tir file constraints

Specific Recommendations for Your Jetko Tires

Estimated Parameters for 204mm Diameter RC Tires:

1. Vertical Stiffness: 150,000 - 300,000 N/m RC tires are softer than automotive tires, but the smaller size increases effective stiffness. Start with 200,000 N/m and adjust if penetration occurs

2. Vertical Damping: 300 - 800 N·s/m Begin with 500 N·s/m

3. Longitudinal Stiffness (Cκ): 50,000 - 80,000 N/unit slip Scale from automotive tire (~150,000 N) by (0.102/0.23) ≈ 0.44 → ~66,000 N

4. Lateral Stiffness (Cα): 40,000 - 70,000 N/rad Similar scaling approach

5. Tire Width: 0.099m (99mm from specifications) 6. Unloaded Radius: 0.102m (as you specified) 7. Loaded Radius: ~0.095m (estimate 7-8% deflection under load)

Step-by-Step Implementation

In your Dugoff block diagram:

  • Change Vertical Motion to "Mapped Stiffness and Damping"
  • Ensure the gnd port receives ground height (0 for flat ground)
  • Remove or disconnect the Fext input (not used in this mode)
  • Set tire parameters as listed above

For the ground plane:

  • Use Simscape Multibody's Brick Solid or Grid Surface for the road
  • Ensure proper spatial reference frame alignment (Z-up convention)

Initial test parameters:

  • Mass: ~0.5 kg (typical for RC monster truck wheel assembly)
  • Drop height: 0.2-0.5m for initial contact testing
  • Gravity: 9.81 m/s²

Troubleshooting Penetration Issues

If the tire still penetrates after making these changes: 1. Increase vertical stiffness to 400,000-500,000 N/m 2. Reduce simulation step size (try fixed-step with 1e-4 seconds) 3. Check solver settings: Use ode15s or ode23t for stiff systems 4. Verify ground height signal is being correctly supplied to gnd port

Why Your .tir File Modification Failed

When you modified the unloaded radius from 0.23m to 0.102m in the Magic Formula .tir file, the penetration likely occurred because:

  • Magic Formula parameters are tightly coupled to tire size
  • Vertical stiffness in the file was still calibrated for the larger tire
  • The effective rolling radius calculation became inconsistent

References:

I recommend starting with Option 1 (Dugoff with Mapped Stiffness and Damping) as it's the most straightforward.

The Dugoff model is particularly suitable for your application since it requires fewer parameters than Magic Formula and is designed for situations where extensive tire data isn't available.

Categories

Find more on Wheels and Tires in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!