Skip to main content
Simulator

Why Raising Friction Made Our Robot Turn Worse: The Geometry of Skid-Steer Scrub

We derive why three weeks of friction-coefficient tuning was doomed from the start — in a skid-steer vehicle's turning-ability ratio, both the friction coefficient and the weight cancel out, leaving only contact geometry. With measured data, plus two hard-earned lessons about trusting simulation instrumentation.

WRWIM Robotics Team
·
skid-steervehicle-dynamicstracked-vehiclesimulationphysx

Why Raising Friction Made Our Robot Turn Worse: The Geometry of Skid-Steer Scrub

To improve our tracked robot's simulated turning performance, we ran six friction-coefficient sweeps over three weeks. The result was the same every time: yaw capture would not move. When we raised μ\mu from 0.4/0.3 to 0.9/0.8, turning got worse, not better.

When we finally derived the equations, the reason was plain: the friction coefficient was never in the answer.

This post shares the derivation, the measurements that validate it, and the instrumentation lessons we paid for along the way. The story of how the vehicle itself (a tracked skid-steer with a 600 mm contact patch) is modelled lives in the companion post.

A skid-steer must slide to turn

A car steers by aligning its wheels with their direction of travel — the wheels roll, and lateral slip is near zero. A skid-steer vehicle cannot. Its contacts are fixed to the chassis, so turning forces them to slide sideways. Scrub is not a defect; it is the inherent cost of this steering mechanism.

Geometry makes it precise. When the vehicle yaws at rate ω\omega, only a contact at the same longitudinal coordinate as the instantaneous centre of rotation (ICR) has zero lateral slip. At most one longitudinal station on the patch can be slip-free; every other contact along the 600 mm patch must grind sideways. No amount of friction tuning changes this — it is purely geometric.

The two competing moments

With contact ii carrying normal load NiN_i under friction coefficient μ\mu, the Coulomb friction force has magnitude μNi\mu N_i. In an in-place turn these forces produce two kinds of moment.

The resisting moment — lateral slip friction acting at longitudinal lever arms:

Mresist=iμNixixcM_{\text{resist}} = \sum_i \mu N_i \, |x_i - x_c|

With uniform load over patch length LL this is Mresist=μWL/4M_{\text{resist}} = \mu W L / 4; with all load on the two end stations it is μWL/2\mu W L / 2twice as bad. That factor of two is why load distribution matters, and why we measured ours instead of assuming it (result: 1.27× the ideal).

The driving moment — the differential longitudinal thrust of the two tracks, acting at the track half-gauge b=B/2b = B/2:

Mdrive=iμNib=μWbM_{\text{drive}} = \sum_i \mu N_i \, b = \mu W b

In the ratio, μ\mu and WW cancel

Whether the vehicle can turn in place is decided by the ratio of the two moments:

MdriveMresist=μWbμWL/4=4bL=2BL\frac{M_{\text{drive}}}{M_{\text{resist}}} = \frac{\mu W b}{\mu W L / 4} = \frac{4b}{L} = \frac{2B}{L}

μ\mu cancels. So does WW. A skid-steer vehicle's ability to turn depends neither on how hard its contacts grip nor on how heavy it is — only on where its gripping contacts sit.

That is why six friction sweeps all produced the same result. μ\mu raises drive thrust and scrub resistance together, so it cannot move the ratio. We have not pinned down the exact mechanism by which raising it made things actively worse — but what the equation does establish is that in neither direction is μ\mu the lever that improves turning.

Plugging in our vehicle's numbers:

B=0.510m,L=0.600mMdriveMresist=2BL=1.70B = 0.510\,\text{m}, \quad L = 0.600\,\text{m} \quad\Rightarrow\quad \frac{M_{\text{drive}}}{M_{\text{resist}}} = \frac{2B}{L} = 1.70

Drive moment exceeds scrub resistance by 1.7×, so the vehicle can turn in place — and in simulation it does, at 29–32% of the commanded yaw rate (three independent runs, symmetric in both directions). Its L/B=1.18L/B = 1.18 is actually favourable compared with typical tracked vehicles (1.2–1.8).

The real lever: which contacts grip

If μ\mu is not the lever, what is? The equation answers: the placement of the gripping stations. Concentrating grip near the patch centre shortens the mean scrub arm and raises the ratio.

Gripping stationsMean scrub armRatiovs current
All 12 wheels (current)0.179 m1.42
Inner 8 (ends slippery)0.093 m2.741.9×
Inner 4 only0.053 m4.863.4×
Single station0(the old 4-contact model)

The last row is the key. With grip at a single station the scrub arm is zero and turning becomes lossless. That is exactly why our old 4-contact model turned "perfectly" — and why its perfection was the error.

Turning while translating: two regimes

With forward speed v0v \neq 0, the ICR moves off the vehicle centreline by R=v/ωR = v/\omega. Comparing RR with the track half-gauge bb splits the behaviour into two regimes.

ConditionGeometryConsequence
R<b\lvert R \rvert < bThe two tracks lie on opposite sides of the ICRThe tracks counter-rotate
R>b\lvert R \rvert > bBoth tracks lie on the same side of the ICRBoth tracks drive the same direction

In the second regime both friction forces saturate at μN\mu N pointing the same way, so the left–right difference — the thing that generates yaw — collapses. For our vehicle, b=0.255mb = 0.255\,\text{m}, so v=0.5,ω=1.0v = 0.5, \omega = 1.0 (turn radius 0.5 m) is already in this regime.

Real rubber tracks cross this boundary gracefully, because rubber builds lateral force progressively with slip. Rigid Coulomb contacts do not — they stick or they slide, so the transition is abrupt. We suspect this is why our simulated vehicle's yaw authority collapses to ~0% while moving, but this is a hypothesis, not yet a measured fact. Two earlier explanations were proposed and both were refuted by measurement — so this time we call a hypothesis a hypothesis.

A sanity check through power

The scrub dissipation power of an in-place turn is

Pscrub=μωWL/4P_{\text{scrub}} = \mu \, \omega \, W L / 4

With measured weight W=1052NW = 1052\,\text{N}, L=0.600mL = 0.600\,\text{m}, and ω=1rad/s\omega = 1\,\text{rad/s}:

μ\muContextPowerShare of installed 1000 W
0.3current sim value47 W5%
0.8rubber on concrete126 W13%

Consistent with tracked vehicles being notoriously power-hungry to steer — a cheap cross-check that the model sits in the right physical regime.

Two instrumentation lessons that cost more than the derivation

Two measurement bugs invalidated substantial work.

1. Wall clock vs simulation clock. Our diagnostic logger timestamped simulator poses (which advance in sim time) with the wall clock. The scene runs at roughly 0.24× real time, so every derived rate came out 3.8× too small — and on top of that error, a conclusion called "the PhysX skid-steer performance ceiling" grew for about three weeks. It was caught only by adding a control condition: a straight-line segment where no physical loss is possible.

2. /joint_states velocities could not be trusted as-is. The road-wheel joints reported a value proportional to longitudinal position rather than a spin rate. The root cause was stray physics:rigidBodyEnabled flags left on nested camera assets.

The standing rule we adopted: no simulated measurement is trusted until it passes a control condition whose answer is known independently.

The next step: measure the real vehicle, not the simulator

The most uncomfortable fact is this: nobody has ever measured the real vehicle's turning performance. There is no turn-radius spec, no maximum yaw rate, no documented constraint on angular velocity while moving. We have been tuning a simulation toward a target that has never been measured — and it is entirely possible the real vehicle is similarly limited.

Fortunately, the measurement is cheap. The encoders sit on the drive motors and are blind to slip, but the gyro measures actual body rotation and knows nothing about wheels. Both topics are published by the stock driver:

slip factor=imu.angular_velocity.zodom.twist.twist.angular.z\text{slip factor} = \frac{\text{imu.angular\_velocity.z}}{\text{odom.twist.twist.angular.z}}

Driving a v×ωv \times \omega grid for about twenty minutes while logging this ratio yields the friction calibration and the vehicle's real turn envelope at the same time. No extra hardware, no motion capture.

Summary

  • A skid-steer vehicle's turning-ability ratio is 2B/L2B/Lonly contact geometry survives; friction and weight cancel. To change turning behaviour, change which contacts grip, not how hard.
  • A skid-steer model that turns perfectly is a signal that its scrub arm is zero — that is, a signal the model is wrong.
  • Never trust a simulated measurement without a control condition. We bought this rule for three weeks of wasted work.
  • When the tuning target itself has never been measured, measuring the real machine is the cheapest next move — cheaper than touching the simulator again.