Project Chrono: Steering mechanism models

Steering mechanism models

The base class ChSteering imposes that any derived steering mechanism class (a steering mechanism template) provide a steering link body to which a steerable suspension can be sonnected (usually through the suspension's tierods).

A derived steering mechanism type defines the bodies, joints, force elements, and topology of a particular type of steering mechanism. All locations are assumed to be provided with respect to a mechanism reference frame (a derived steering mechanism type is free to pick the location and orientation of this frame).

A steering mechanism assembly is attached to a vehicle's chassis by specifying the location and orientation of the mechanism assembly reference frame with respect to the chassis reference frame (see the definition of the ISO reference frame).

A wheeled vehicle may have multiple steering mechanisms, each associated with a different steerable vehicle axle. Similalry, a single steering mechanism may be connected to multiple steerable vehicle axles.

# Pitman arm

This steering mechanism is a four-bar linkage with the steering link body connected to the chassis via the Pitman arm and an idler arm. The Pitman arm body is connected through an universal joint to the steering link and a revolute joint to the chassis. The driver steering input is used to control the angle of the revolute joint. In the Chrono::Vehicle Pitman arm template, the idler arm is modeled using a composite revolute-spherical joint.

See ChPitmanArm and PitmanArm.

The topology of this steering mechanism template is:

The hardpoints are:

A sample JSON file with the specification of a PitmanArm steering mechanism is:

{
"Name": "HMMWV Pitman Arm Steering",
"Type": "Steering",
"Template": "PitmanArm",
"Vehicle-Frame Inertia": false,
"Steering Link":
{
"Mass": 3.681,
"COM": [0.129, 0, 0],
"Moments of Inertia": [0.252, 0.00233, 0.254],
"Products of Inertia": [0, 0, 0],
"Radius": 0.03
},
"Pitman Arm":
{
"Mass": 1.605,
"COM": [0.064, 0.249, 0],
"Moments of Inertia": [0.00638, 0.00756, 0.00150],
"Products of Inertia": [0, 0, 0],
"Radius": 0.02
},
"Revolute Joint":
{
"Location": [0, 0.249, 0],
"Direction": [0, 0, 1],
"Maximum Angle (deg)": 30
},
"Universal Joint":
{
"Location": [ 0.129, 0.249, 0],
"Direction Arm": [0, 0, 1],
"Direction Link": [1, 0, 0]
},
"Revolute-Spherical Joint":
{
"Location Chassis": [0, -0.325, 0],
"Location Link": [0.129, -0.325, 0],
"Direction": [0, 0, 1]
},
"Tierod Locations":
{
"Pitman Side": [0.195, 0.448, 0.035],
"Idler Side": [0.195, -0.448, 0.035]
}
}

# Rack-pinion

The Chrono::Vehicle rack-pinion steering template is a kinematic model of a rack and pinion steering mechanism. The steering link body is connected through a prismatic joint to the chassis. The rack displacement is calculated as:

\[d = r (\alpha_{max} s) \]

where \( r \) is the pinion radius, \( \alpha_{max} \) is the maximum pinion angle, and \( s \in [-1,1] \) is the driver steering input. This displacement is used to control the translation of the steering link.

See ChRackPinion and RackPinion.

The topology of this steering mechanism template is:

The hardpoints are:

A sample JSON file with the specification of a RackPinion steering mechanism is:

{
"Name": "HMMWV Rack-Pinion Steering",
"Type": "Steering",
"Template": "RackPinion",
"Steering Link":
{
"Mass": 9.072,
"COM": 0,
"Inertia": [1, 1, 1],
"Radius": 0.03,
"Length": 0.896
},
"Pinion":
{
"Radius": 0.1,
"Maximum Angle (deg)": 50
}
}

# Rotary arm

The rotary arm steering is a simple lever arm that rotates around an axis. It works with solid bellcrank axles and solid toebar axles. It is often used as steering system for trucks, farm tractors and combine harvesters.

See ChRotaryArm and RotaryArm.

The topology of this steering mechanism template is:

The hardpoints are:

A sample JSON file with the specification of a RotaryArm steering mechanism is:

{
"Name": "UAZBUS Rotary-Arm Steering",
"Type": "Steering",
"Template": "RotaryArm",
"Pitman Arm":
{
"Mass": 5.0,
"Inertia": [0.00638, 0.00756, 0.00150],
"Inertia Products": [0, 0, 0],
"Radius": 0.03,
"Axis of Rotation": [0, 1, 0], // arm-chassis revolute joint
"Point of Rotation": [0.6, 0.5325, 0.4], // location of chassis connection
"Point to Draglink": [0.6, 0.5325, 0.2], // location of draglink connection
"Maximum Angle (deg)": 12.5
}
}