# Double wishbone suspension: hardpoints and kinematics

> How a double wishbone (SLA, double A-arm) suspension works, which hardpoints set camber gain, roll center and bump steer, and a worked example geometry you can open in opensus.

A double wishbone suspension locates the upright with two A-shaped arms, an upper and a lower, each hinged to the chassis on two inner pivots and joined to the upright by one ball joint. The lengths and angles of the two arms set how the wheel cambers and where the roll center sits; a tie rod (or toe link at the rear) sets toe and bump steer. Unequal-length arms with a shorter upper arm are often called **SLA** (short-long arm).

## The hardpoints

| Point | Name in opensus | What it controls |
|---|---|---|
| Upper arm front and rear inner pivots | `ucaFront`, `ucaRear` | Upper arm's pivot axis: front-view arm angle, anti geometry in side view |
| Upper ball joint | `ucaOuter` | Upper arm length; with the lower ball joint, the steering axis |
| Lower arm front and rear inner pivots | `lcaFront`, `lcaRear` | Lower arm's pivot axis |
| Lower ball joint | `lcaOuter` | Lower arm length; scrub radius and kingpin inclination |
| Tie rod inner and outer | `tieInner`, `tieOuter` | Steering arm, Ackermann, bump steer |
| Wheel centre | `wheelCentre` | Track and wheel position on the upright |

The opensus double wishbone template also has a **pushrod and rocker** driving the coilover, and a sway bar on the rocker. See all point names in the [import format](/docs/import-format/).

## How it moves

In the front view, each arm's ball joint swings on an arc about its inner pivot axis. Extend the two arms until they meet: that point is the **front-view instant center**. At that instant the upright rotates about it, which sets:

- **Camber gain**: the shorter the distance from the instant center to the contact patch, the faster the wheel cambers with travel. See [camber gain](/docs/camber-gain/).
- **Roll center height**: the line from the contact patch through the instant center crosses the centreline at the roll center. See [roll center](/docs/roll-center/).

## Worked example

This is the geometry the metric pages use. Every number below comes from opensus and can be checked by hand on those pages. Coordinates are mm, left front corner, [ISO 8855](/docs/coordinates/).

| Point | X | Y | Z |
|---|--:|--:|--:|
| Upper arm inner pivots | ±100 | 280 | 330 |
| Upper ball joint | -15 | 530 | 340 |
| Lower arm inner pivots | ±100 | 200 | 150 |
| Lower ball joint | 5 | 550 | 120 |
| Tie rod inner / outer | -70 | 200 / 550 | 150 / 120 |
| Wheel centre | 0 | 600 | 228 |

| Result | Value |
|---|--:|
| Front-view instant center | 1206 mm inboard of the centreline, 271 mm high |
| [Roll center](/docs/roll-center/) height | 89.9 mm |
| Roll center movement | -1.32 mm per mm of bump |
| [Camber gain](/docs/camber-gain/) | -0.317° per 10 mm of bump |
| [Bump steer](/docs/bump-steer/) | 0.000° over ±25 mm |
| [Kingpin inclination and caster](/docs/scrub-radius/) | 5.19° each |
| [Scrub radius](/docs/scrub-radius/) | 39.1 mm |
| [Mechanical trail](/docs/scrub-radius/) | 15.9 mm |

The tie rod is parallel to the lower arm and its inner end sits on the lower arm's pivot axis, so it swings exactly with the lower ball joint: that is why bump steer is zero.

## Design notes

- **Upper arm shorter than the lower** makes the outside wheel gain negative camber as it compresses in a corner, offsetting body roll. Equal, parallel arms keep camber constant relative to the body, so the wheel leans with the body instead.
- **Inner pivot heights** move the roll center: raising the lower arm's inner pivots by 10 mm raises it by about 25 mm in this example. See [setting roll center height](/docs/how-to/set-roll-center-height/).
- **Tilting the pivot axes in side view** creates anti-dive and anti-squat. See [anti-dive and anti-squat](/docs/anti-dive-anti-squat/).
- **The tie rod** must follow the arms' motion or the wheel steers over bumps. See [reducing bump steer](/docs/how-to/reduce-bump-steer/).

[Open in opensus](https://opensus.app/app/?design=%7B%22name%22%3A%22Docs%20example%3A%20double%20wishbone%22%2C%22front%22%3A%7B%22type%22%3A%22doubleWishbone%22%2C%22camber%22%3A0%2C%22toe%22%3A0%2C%22points%22%3A%7B%22ucaFront%22%3A%5B100%2C280%2C330%5D%2C%22ucaRear%22%3A%5B-100%2C280%2C330%5D%2C%22ucaOuter%22%3A%5B-15%2C530%2C340%5D%2C%22lcaFront%22%3A%5B100%2C200%2C150%5D%2C%22lcaRear%22%3A%5B-100%2C200%2C150%5D%2C%22lcaOuter%22%3A%5B5%2C550%2C120%5D%2C%22tieInner%22%3A%5B-70%2C200%2C150%5D%2C%22tieOuter%22%3A%5B-70%2C550%2C120%5D%2C%22wheelCentre%22%3A%5B0%2C600%2C228%5D%7D%7D%7D)

Source: https://opensus.app/docs/double-wishbone/ (last updated 2026-11-07)
