How to speed up truck handling simulation using Artificial Intelligence?
You can relate to the condition below if you work on optimizing something in which each iteration takes some good amount of time to solve. Either you find a nap time in such case or just stare down at the ground thinking of universe and making patterns out of random stuff on the floor.
I worked on one such case; optimize the handling of a truck model.
The first question that arises is why does it take such long time to solve compared to a car model? And the answer is because it contains 'Leaf Spring suspension'. So, what is a leaf spring and why is it so time consuming to solve?
Image - Leaf Spring Suspension in truck
Image – Discretized model of leaf spring using beams
Below we report how to model such a suspension using a multi body dynamic modelling tool like MotionView/MotionSolve.
We have to start discretizing leaf spring in Leaf's then each leaf into bodies. We have to use beam elements with varying thickness and width to model material behavior. We have to use 3d contacts to model inter leaf contact and friction. Do you see the number of parameters that we have to enter to create 1 leaf spring? It will take a huge amount of time to create one leaf spring before you can put it on a test rig and try to extract a Force-Deflection curve out of it. Can we save time here? Yes, we can
Awesome! We saved a lot of time in generating Force-Deflection curve. Now what next? Off Course! A handling maneuvers. Well, it takes around good 15 minutes to solve 1 maneuver and we have to go through more than 15 of these. On top of that it’s an iterative process Can we save time here? Yes, we can
Let me introduce you to romAI. A machine learning based tool which can provide robust solutions to such problems while saving huge amount of time.
About romAI
This application combines Artificial Intelligence and system modeling techniques to generate from data, reusable continuous dynamic models extremely time-efficient. These models can be used as Reduced-Order Models to speed-up system design and optimization analyses or as foundation for Digital Twins in real-time and control applications like for this challenge.
The tool is mainly made up of:
- A GUI used for the generation of romAI, available in both Altair Compose® and Altair Activate®
- A block which enables the use of the romAI generated, available in Altair Activate®
The romAI block can be used in Altair Activate® directly as well as exported in a licensed FMU or dll for third parties use.
The steps involved in creating a reduced-order model (romAI-based) of a leaf spring suspension are depicted in image below
1. Generate Training Dataset using test rigs in MotionView/MotionSolve
This step requires some questions to be answered before proceeding with generation of training dataset.
What data are we trying to capture in leaf spring suspension? What are the inputs and outputs of a reduced-order model of a leaf spring suspension? And to what extent do we need to test it?
Let's consider the stack of leaves along with the shackle as our system and check the inputs, outputs to this system.
Inputs - The displacement of the axle along X, Y and Z direction
Outputs - Forces along X, Y and Z axis:
- Applied by front eye on chassis at origin of rotational joint with chassis
- Applied by shackle on chassis at origin of rotational joint with chassis
- Applied by bottom leaf on axle
There in total 3 inputs to the system and 9 output from the system.
To create the training dataset, we use the leaf spring test rig in MotionView and perform few tests by moving the axle/jack in X, Y and Z direction. Measure the forces applied by front eye, shackle on chassis and forces applied on axle/jack.
Make sure that the tests you perform contains the real-world scenario (think of the axle movement in case of handling maneuvers like single lane change, constant radius, straight line braking etc.) because the ML model trained on these scenarios cannot produce the result which it has not seen.
Now we have got our training dataset in csv format and now we need to train the romAI model using this dataset
2. Train the romAI model
We found useful to train X, Y, Z components separately
3. Test the romAI model
The testing is done in 3 phases. Along with the testing we will also tweak our romAI model to be fit for use in a handling maneuver:
1. Test the predictions of leaf spring ROM on training dataset (use csv block in Activate). If the results of the super block are close to the outputs, we can create a FMU of this leaf spring ROM to be used inside MotionView for our second testing.
2. This test is done on the same test rig that we used for creating training dataset but using different input signals to check the generalization capability of the ROM.
We run the test by providing motion to axle and compare the output forces. In this phase we can tweak our romAI model by adding some artificial damping to better fit the leaf spring suspension behavior.
3. Use the leaf spring ROM with the additional damping inside a full truck model.
Conclusions
- The performance gain was around 30 times as compared to beam-based leaf spring suspension
- Only 3 tests were needed to create training dataset (approximately 20 mins of training time)
- This process can be automated