Anti-Squat and Anti-Dive
When a vehicle accelerates, the load is transferred to the rear thus increasing the load on the rear suspension. This results in compression of rear springs causing the vehicle to squat. During braking load transfers in the opposite direction, towards front resulting in the vehicle diving. Excessive squatting can have a destabilizing effect on the overall dynamics of the vehicle. To reduce this effect the suspension geometry can be designed to incorporate the ‘anti’ characteristics thus reducing the spring compression – called the Anti-squat geometry. Similarly, Anti-dive geometry helps in reducing the front spring compression during braking.
Calculating Anti-Squat

The Anti-squat for a suspension is calculated using the: swing-arm, top chain run, vehicle CG height and the tire contact patches.
Imagine a line drawn from the rear wheel center through the swing arm pivot, and another line drawn along the top chain run. These two lines intersect at some point ahead of the swing arm pivot. Join this point of intersection with the rear tire contact point using a third line. Draw a vertical line from the front tire contact point to intersect the third line at “O”. The height of this point “O” expressed as a percentage of the CG height is the anti-squat value.
Calculating Anti-Dive

The telescopic fork acts like a swing arm with infinite length that extends in a direction normal to the rake angle. Imagine such a line drawn from the wheel center. Draw another line parallel to this but from the tire contact point to intersect with the first line. Drop a vertical from the vehicle CG to intersect both the virtual swing arm and the line from tire contact point.
The portion of this line below the ground/road surface as a percentage of the CG height is the anti-dive. Because this is below the road surface, the value is negative in this case.
Anti-Squat/Dive Output Requests in Two-Wheeler Models


SolverVariable | Purpose | Function |
---|---|---|
CG Height | Measure the overall vehicle CG height | USER(100, 2, {m_road_ref.idstring})
Args: #1: Branch ID. Default = 100. #2: CG coordinate to report. Default = 2 (Z-axis). #3: Reporting frame of reference. Default = Road ref. marker. FUNCTION: GET_CG_LOC |
Caster | Measure the caster angle of the fork | USER(100, {steering_rj.i.idstring},
{m_measure_ref.idstring}) Args: #1: Branch ID. Default = 100. #2: Steering rev. jt. Marker ID. #3: Reporting frame of reference. Default = Vehicle frame reference. FUNCTION: GET_CASTER |
Wheel base | Measure the wheel base of the vehicle | USER(100,
{tire_frnt.att_wheel_orient_marker.idstring},
{tire_rear.att_wheel_orient_marker.idstring}) Args: #1: Branch ID. Default = 100. #2: Front tire force reference marker ID. #3: Rear tire force reference marker ID. FUNCTION: GET_WHEEL_BASE |
Brake bias | Input: Brake bias Front | - |
Driver sprocket rad. | Input: Sprocket radius-front | - |
Driven sprocket rad. | Input: Sprocket radius-rear | - |
Anti-dive | Measure anti-dive | USER(100,
{sa_antidive_input.idstring}) Args: #1: Branch ID. Default = 100. #2: Solver array that holds the inputs required for calculating anti-dive. FUNCTION: GET_ANTI_DIVE |
Anti-squat | Measure anti-squat | USER(100,
{sa_antisquat_input.idstring}) Args: #1: Branch ID. Default = 100. #2: Solver array that holds the inputs required for calculating anti-squat. FUNCTION: GET_ANTI_SQUAT |
- CG Height
- Caster
- Wheel base
- Anti-dive
- Anti-squat