Submitted:
04 June 2025
Posted:
11 June 2025
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Related Work
3. Methodology
3.1. Coordinate Transformation
3.1.1. Rotation Matrix
-
Rotation about the X-axis (pitch)This rotates a point or vector around the X-axis by an angle . It’s used, for instance, to simulate the upper control arm’s pitch motion relative to chassis mounting points.
-
Rotation about the Y-axis (yaw)This rotation is essential to simulate how the wheel steers around a vertical axis, such as when a vehicle turns left or right.
-
Rotation about the Z-axis (roll)This represents rotation about the , often used in modeling chassis roll or wheel tilt caused by lateral forces.
3.1.2. Combine 3D Rotation
- XYZ Order: Common for the Lower Control Arm and other base-mounted parts.
- ZXY Order: Used for parts like the Upper Control Arm where the rotation hierarchy differs.
3.2. Homogeneous Transformation
- Top-left block: the rotation matrix rot
- Top-right block: the translation vector trans
- Bottom row: a row vector
3.2.1. Transformations from Chassis frame to Upper and Lower Control Arm
- ACUCA[] : This constructs the transformation matrix for the upper control arm using the Z-X-Y (rot3DZXY) rotation sequence. This choice reflects a mounting configuration where roll (Z), camber/caster tilt (X), and toe or fore-aft direction (Y) are sequentially applied — often relevant to higher control arms whose mounts might be angled or non-orthogonal to the main chassis frame. The function returns a matrix representing the full pose (position and orientation) of the UCA frame in the chassis coordinate system.
- ACLCA[] : This defines the lower control arm transformation, using the Z-Y-X (rot3D) rotation sequence. This is a standard Euler sequence for typical orthogonal setups, where the LCA is mounted more parallel to the chassis axes. It likewise returns a homogeneous transformation matrix.
3.2.2. Transformations from UCA and LCA frames to Upright frame
- AUCUpright[] : This models the Upper Control Arm to Upright transformation. The transformation employs the Z-X-Y rotation order (rot3DZXY), which works best for systems that rotate first around the Z-axis, then translate along the X-axis, and finally rotate around the Y-axis. The matrix is composed with a translation vector , which specifies the physical mounting position of the upright relative to the UCA.
- ALCUpright[] : This transformation connects the Lower Control Arm to the Upright. It follows the Z-Y-X Euler sequence (rot3D), which is suitable for most mounting configurations where the upright moves vertically with LCA travel while also rotating due to steering input.
- ACRod[] : This transformation defines a rod or link, likely used as a tie rod or pushrod. The rotation is limited to the Y and Z axes, as given by rot3D[0, , ], indicating that the rod pivots only in yaw and roll directions. This reflects typical tie rod behavior—steering left and right while allowing vertical compliance. Again, the translation vector defines the position of this rod base relative to the chassis frame or another reference component.
3.3. Local Frame Point
- Upper Control Arm (UCA) : pUCAinF[] is the inboard (frame) mounting point of the UCA — typically attached to the chassis. pUCAinR[yUCAinR] is a parameterized inboard mounting on a rail, offset in the Y-axis. The parameter allows users to model various mount points. pUCAout[xUCAout, yUCAout] is the he outer (upright) connection point of the UCA in its local frame.
- Tie Rod or Pushrod : pRodin[]: The base point of the rod in its frame (likely attached to the steering rack or chassis). pRodout[xRodout]: The upright-end attachment point of the rod, parameterized by X — commonly used in steering simulations.
- Upright : pUprightU[xUprightU] is the upper pivot point where the UCA connects to the upright. pUprightL[] is the lower pivot point of the upright, often aligned as the origin in its local frame. pUprightS[xUprightS, yUprightS] is a side point on the upright — likely for the tie rod or shock mount.
- Lower Control Arm (LCA) : pLCAinF[] is the inboard (frame) mounting of the LCA. pLCAinR[yLCAinR] is another inboard option along the Y-axis. pLCAout[xLCAout, yLCAout] is the outer joint where the LCA connects to the upright.
3.4. Global Transformation
3.4.1. Global Transformation of UCA Points
- pUCAinFglobal[...] computes the global coordinates of the UCA’s inboard frame mount, i.e., where the UCA attaches to the chassis. ACUCA[...] is the transformation from the chassis frame to the UCA frame. pUCAinF[] is the local point . Their matrix product yields the global position of the UCA’s inboard frame point.
- pUCAinRglobal[...] is a parameterized inboard point that might slide along a rail (e.g., an adjustable mount position on the chassis). pUCAinR[yUCAinR] introduces a Y-axis offset for the inboard mount. The result gives the real-time global position based on chassis parameters and input angle.
- pUCAoutglobal[...] gives the global coordinates of the UCA’s outboard end, where it connects to the upright. The point pUCAout[xUCAout, yUCAout] defines this connection in local frame coordinates. After applying the chassis → UCA transformation, the returned position can be used to define the upright’s upper ball joint position, measure kinematic variables like camber change or virtual swing arm length, and to visualize the actual suspension arm position in space.
3.4.2. Global Transformation of LCA Points
- pLCAinFglobal[...] calculation determines the global (chassis-relative) location of the lower control arm’s (LCA) inboard mount, which serves as the chassis-side pivot point. The transformation applies the origin point of the LCA frame through the LCA-to-chassis transformation matrix.
- pLCAinRglobal[...] is a parameterized inboard mount located along the Y-axis, offset from the LCA’s local origin. The parameter allows users to model different LCA pivot positions, which is useful for creating adjustable or performance-optimized suspension geometries.
- pLCAoutglobal[...] defines the outer pivot point of the LCA in global space. The simulation becomes easier to modify using the inputs and , which control the LCA’s length and orientation in space. The actual spatial position of the lower ball joint becomes available through this function, enabling upright motion analysis, camber studies, and suspension force line calculations.
3.4.3. Global Transformation of Rod Points
- pRodinglobal[...] is the base of the rod undergoes transformation into the global frame during this operation. The point pRodin[] has coordinates in the local coordinate system of the rod. The transformation matrix performs spatial orientation through yaw () and roll (), and applies a spatial offset to describe the rod’s positioning and angular orientation in space.
- pRodoutglobal[...] explain the calculation of this endpoint represents the outer end of the rod, which could potentially connect to the upright. The input specifies the extent and orientation of the rod in its local coordinate system along the X-axis. The output provides the actual global coordinates of this endpoint, enabling calculations for steering angle effects, tie rod length changes during articulation, and contact point tracking with the upright.
3.4.4. Transformations Chaining to Global Upright
4. Constraint
4.1. Upright Constraint Equations
- leftHandSideU : The global position of the upper joint on the upright is defined by this expression. The computation uses pUprightUglobal[...] which internally applies the transformation ACUpright[...] to the local point pUprightU[]. The inputs specify the upright’s orientation and translation through its linkage connection to the LCA.
- rightHandSideU : The global position of the outboard end of the UCA is represented by this expression. The transformation of a local point through the UCA’s chassis-relative transformation is computed by pUCAoutglobal[...]. This result represents the expected global position where the UCA connects to the upright.
-
equationsU = Thread[...] : The Thread function applies element-wise equality to create:This results in three scalar equations: one for the X-coordinate match, one for the Y-coordinate match, and one for the Z-coordinate match.
4.2. Constraint Equation for Upright–Rod Connection
- leftHandSideS : It determines the absolute (global) coordinates of a specific upright point that typically hosts rod connections. The local point pUprightS is defined within the upright’s local coordinate system at coordinates and . The transformation ACUpright is applied in the function pUprightSglobal to convert points from the upright’s frame to the global frame. This point dynamically tracks upright movement, as the upright adjusts its position based on Lower Control Arm (LCA) motion and orientation.
- rightHandSideS : This represents the rod’s outboard end, the point that links to the upright. The function pRodout(x_Rodout) determines the endpoint’s coordinates in the rod’s local reference system. The transformation pRodoutglobal applies rod-specific rotation and translation data relative to the chassis, converting the local coordinates into global space. This transformation enables the system to account for steering angle, mounting position, and suspension travel when evaluating the rod’s position.
-
equationsS = Thread[...] : The system generates three individual scalar equations that maintain the spatial relationship between the two global points :This constraint ensures that the upright side point precisely matches the spatial position of the rod’s outboard end.
5. Visualization Framework
5.1. Position Points for Visualization
-
For the Upper Control Arm (UCA) :
- -
- posUCAinF[, , , tx, ty, tz]
- -
- posUCAinR[, , , tx, ty, tz, yUCAinR]
- -
- posUCAout[, , , tx, ty, tz, xUCAout, yUCAout]
These return the 3D positions of:- -
- The inboard fixed and inboard rail-mounted chassis pivots of the UCA
- -
- The outboard end of the UCA, where it connects to the upright
-
For the Lower Control Arm (LCA) :
- -
- posLCAinF[, , , tx, ty, tz]
- -
- posLCAinR[, , , tx, ty, tz, yLCAinR]
- -
- posLCAout[, , , tx, ty, tz, xLCAout, yLCAout]
These return the 3D coordinates of:- -
- Inboard fixed and adjustable LCA pivots
- -
- The upright-side joint on the LCA
-
For the Upright :
- -
- posUprightS[, , , txu, tyu, xUprightS, yUprightS]
- -
- posUprightU[, , , txu, tyu, xUprightU]
These return:- -
- posUprightS: The side attachment point (e.g., tie rod or damper mount)
- -
- posUprightU: The upper attachment point for the UCA
These functions rely on the composite transformation from chassis → LCA → upright. -
For the Rod (Tie Rod or Pushrod) :
- -
- posRodin[, , txr, tyr, tzr]
- -
- posRodout[, , txr, tyr, tzr, xRodout]
These compute:- -
- The rod’s chassis-side mounting (e.g., steering rack connection)
- -
- The rod’s upright-side endpoint
5.2. Rendering of Suspension System
6. Dynamic Kinematic Solver
7. Conclusion
Author Contributions
Funding
Data Availability Statement
Acknowledgments
Conflicts of Interest
Abbreviations
| Symbol | Description | Type / Unit |
| Rotation angle (pitch) of Upper Control Arm (UCA) in chassis frame | Angle (radians) | |
| Rotation angle (yaw) of UCA in chassis frame, solved dynamically | Angle (radians) | |
| Rotation angle (roll) of UCA in chassis frame | Angle (radians) | |
| Rotation angle (pitch) of Upright in LCA frame, solved dynamically | Angle (radians) | |
| Rotation angle (yaw) of Upright in LCA frame, solved dynamically | Angle (radians) | |
| Rotation angle (roll) of Upright in LCA frame, solved dynamically | Angle (radians) | |
| Yaw angle of tie rod (rod) in chassis frame, solved dynamically | Angle (radians) | |
| Roll angle of tie rod (rod) in chassis frame, solved dynamically | Angle (radians) | |
| Suspension bump angle / deflection used to drive motion (applies to LCA) | Angle (radians) | |
| X-coordinate of the UCA outboard connection in its local frame | Distance (units) | |
| Y-coordinate of the UCA outboard connection in its local frame | Distance (units) | |
| X-coordinate of the LCA outboard connection in its local frame | Distance (units) | |
| Y-coordinate of the LCA outboard connection in its local frame | Distance (units) | |
| X-offset of upright’s upper ball joint in upright local frame | Distance (units) | |
| X-offset of upright’s side connection (tie rod or damper) | Distance (units) | |
| Y-offset of upright’s side connection (tie rod or damper) | Distance (units) | |
| Z-offset of upright’s side connection (if used in 3D placement) | Distance (units) | |
| Y-offset of UCA inboard mount (rail variant) | Distance (units) | |
| Y-offset of LCA inboard mount (rail variant) | Distance (units) | |
| X-translation of UCA frame relative to chassis | Distance (units) | |
| Y-translation of UCA frame relative to chassis | Distance (units) | |
| Z-translation of UCA frame relative to chassis | Distance (units) | |
| X-translation of LCA-to-upright joint in chassis (manipulated input) | Distance (units) | |
| Y-translation of LCA-to-upright joint in chassis | Distance (units) | |
| X-offset of rod mount point in chassis | Distance (units) | |
| Y-offset of rod mount point in chassis | Distance (units) | |
| Z-offset of rod mount point in chassis | Distance (units) | |
| X-length of rod (from inboard to outboard tip) | Distance (units) | |
| pUCAinF[...] | Inboard frame-side point of Upper Control Arm (global) | 3D Position |
| pUCAout[...] | Outboard point of UCA, connects to upright | 3D Position |
| pLCAinF[...] | Inboard chassis-side point of Lower Control Arm (global) | 3D Position |
| pLCAout[...] | Outboard point of LCA, connects to upright | 3D Position |
| pUprightU[...] | Upper upright point where UCA connects | 3D Position |
| pUprightS[...] | Side upright point (tie rod or damper connection) | 3D Position |
| pRodinglobal[...] | Inboard (chassis-mounted) end of rod | 3D Position |
| pRodoutglobal[...] | Outboard (upright-connected) end of rod | 3D Position |
| drawSuspension[...] | Visualization function to render the entire suspension system using all calculated points | Graphics3D |
| solution | Output of NSolve used to extract valid joint angles | List |
| equationsU, equationsS | Constraint equations that ensure connected parts meet at a common point | Equation Set |
| deqs | Merged constraint equations from both UCA and tie rod systems | Equation Set |
| cons | Constraints on angle ranges for physically plausible behavior | Inequality Set |
| NSolve[...] | Numerical solver used to solve nonlinear constraint system | Solver Output |
References
- Dubey, A. D., Verma, S., & Kumar, P. (2022). Analysis of Double Wishbone Suspension System Using MechAnalyzer. In S. Yadav, P. K. Jain, P. K. Kankar, & Y. Shrivastava (Eds.), Advances in Mechanical and Energy Technology (pp. 245–255). Springer, Singapore. [CrossRef]
- Park, H., Langari, R., & Yi, H. (2024). Design and testing of double-wishbone suspension for enhanced outdoor maneuver stability of a six-wheeled mobile robot. Mechatronics, 103, Article 103237. [CrossRef]
- Taneva, S., Ambarev, K., & Penchev, S. (2024). Strength and Frequency Analysis of the Lower Arm of a Double Wishbone Suspension of a Passenger Car. Environment. Technology. Resources. Proceedings of the International Scientific and Practical Conference, 1, 352–357. [CrossRef]
- Sharma, R. (2023). Design and Optimisation of Double Wishbone Suspension for High Performance Vehicles. International Journal of Vehicle Systems Modelling and Testing, 17(2), 185–195. [CrossRef]
- Niu, Z., Jin, S., Wang, R., & Zhang, Y. (2022). Geometry Optimization of a Planar Double Wishbone Suspension Based on Whole-Range Nonlinear Dynamic Model. Proceedings of the Institution of Mechanical Engineers, Part D: Journal of Automobile Engineering, 236(1), 3–14. [CrossRef]
- Avi, A. G., Carboni, A. P., & Stella Costa, P. H. (2021). Multi-objective optimization of the kinematic behaviour in double wishbone suspension systems using genetic algorithm. SAE Technical Paper 2020-36-0154. [CrossRef]
- Shao, Y., Li, G., & Wang, J. (2023). Optimization Design of Double Wishbone Front Suspension Based on Dynamic Simulation. Applied Sciences, 14(5), Article 1812. [CrossRef]
- Arshad, M.W.; Lodi, S.; Liu, D.Q. Multi-Objective Optimization of Independent Automotive Suspension by AI and Quantum Approaches: A Systematic Review. Machines 2025, 13, 204. [CrossRef]
- Upadhyay, P., Deep, M., Dwivedi, A., Agarwal, A., Bansal, P., & Sharma, P. (2020). Design and analysis of double wishbone suspension system. IOP Conference Series: Materials Science and Engineering, 748, 012020. [CrossRef]
- Golightly, D., Pierce, K., Palacin, R., & Gamble, C. (2021). A feasibility assessment of multi-modelling approaches for rail decarbonisation systems simulation. Proceedings of the Institution of Mechanical Engineers, Part F: Journal of Rail and Rapid Transit, 236(2), 115–126. [CrossRef]
- Simpack Multibody Simulation Software. (n.d.). SIMULIA. https://www.3ds.
- Wang, J., & Zhao, Y. (2022). A repelling-screw-based approach for the construction of Jacobian matrices in parallel manipulators. Mechanism and Machine Theory, 170, 104726. [CrossRef]
- Guo, M., De Persis, C., & Tesi, P. (2024). Data-Driven Stabilization of Nonlinear Systems via Taylor’s Expansion. In R. Postoyan, P. Frasca, E. Panteley, & L. Zaccarian (Eds.), Lecture Notes in Control and Information Sciences (pp. 299–315). Springer. [CrossRef]
- Ashtekar, V., & Bandyopadhyay, S. (2021). Forward Dynamics of the Double-Wishbone Suspension Mechanism Using the Embedded Lagrangian Formulation. In D. Sen, S. Mohan, & G. K. Ananthasuresh (Eds.), Mechanism and Machine Science (pp. 843–859). Springer, Singapore. [CrossRef]
- Zhang, B., & Li, Z. (2021). Mathematical modeling and nonlinear analysis of stiffness of double wishbone independent suspension. Journal of Mechanical Science and Technology, 35(12), 5671–5680. [CrossRef]
- Simpack Multibody Simulation Software. (n.d.). SIMULIA. https://www.3ds.com/products/simulia/simpack.
- Adams: The Multibody Dynamics Simulation Solution. (n.d.). Enteknograte. https://enteknograte.com/adams-multibody-dynamics-simulation-solution/.
- Wolfram Research. (n.d.). Symbolic and Numeric Computation. Wolfram U. Retrieved from https://www.wolfram.com/wolfram-u/courses/mathematics/symbolic-numeric-computation-math915/.
- Wolfram Research. (n.d.). Advanced Manipulate Functionality. Wolfram Language Documentation. Retrieved from https://reference.wolfram.com/language/tutorial/AdvancedManipulateFunctionality.
- M. Larcher, D. Stocco, M. Tomasi, and F. Biral. A Symbolic-Numerical Approach to Suspension Kinematics and Compliance Analysis. In: Proceedings of the ASME 2024 International Mechanical Engineering Congress and Exposition. Volume 5: Dynamics, Vibration, and Control, Portland, Oregon, USA, November 17–21, 2024. V005T07A049. ASME. [CrossRef]
- T. Uchida and J. McPhee. Driving Simulator with Double-Wishbone Suspension Using Efficient Block-Triangularized Kinematic Equations. Multibody System Dynamics 28, no. 3 (2012): 331–347. [CrossRef]
- H.-H. Chun and T.-O. Tak. Sensitivity Analysis Using a Symbolic Computation Technique and Optimal Design of Suspension Hard Points. Journal of the Korean Society for Precision Engineering 16, no. 4 (1999): 26–36.
- M. Makita. An Application of Suspension Kinematics for Intermediate Level Vehicle Handling Simulation. JSAE Review 20 (1999): 471–477. [CrossRef]
- K. P. Balike. Kineto-Dynamic Analyses of Vehicle Suspension for Optimal Synthesis. PhD dissertation, Concordia University, 2010.




| System Type | Symbolic Method | Focus Area | Visualization | Interactivity |
|---|---|---|---|---|
| General suspensions [20] | Mixed Symbolic-Numerical | K&C modeling | ✗ | ✗ |
| Double wishbone [21] | Block-triangularization | Real-time dynamics | ✓ (simulator) | Partial |
| Generic link suspensions [22] | Symbolic sensitivity analysis | Design optimization | ✗ | ✗ |
| McPherson [23] | Mathematica-based symbolic kinematics | Static geometry | ✗ | ✗ |
| Double wishbone [24] | Coupled kineto-dynamics | Performance trade-offs | ✗ | ✗ |
| Double wishbone | Full symbolic + numerical solving | Real-time kinematics & visualization | ✓ (3D interactive) | ✓ (live parametric solver) |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
