DEV Community

Cover image for Kinewright Wheels: the second engine
Dimon
Dimon

Posted on Originally published at dimonb19a.hashnode.dev

Kinewright Wheels: the second engine

Kinewright has a second engine: Wheels, how a body with exactly four wheels moves. Three stages are accepted, and this article shows what each one proved and every limitation still in place.

What Wheels is

  • Kinematics only: no tyres, no suspension, no physics. Every number here is traced from the engine's own run; nothing is measured.
  • A shell with four wheels that pulls away, holds and changes speed, turns, brakes, stops, parks and manoeuvres in a bounded space.
  • Driven the same way from a keyboard, a scripted scene or a behaviour layer: one intent type, one policy.
  • Every drive is a journal. It replays byte for byte in a separate process, and the same records come out on Linux, Windows and macOS.
  • Same house and same world frame as the human engine; a different engine with a different subject.
  • Not a path planner, not an autonomy stack, not a vehicle simulator, not a controller for real hardware.

Three accepted stages

  • Kinematic baseline (4 September). A shell of exactly the declared dimensions drives in the browser. Changing the wheelbase changes the turning radius by exactly R = L / tan δ, traced within 3·10⁻¹⁴ of the stated value.
  • Capability contract (13 October). Four shells of one small body, front steer, rear steer, four-wheel steer and skid, plus one with the steering locked, run nine manoeuvres from the same start. All 46 shell-and-manoeuvre pairs bind exactly as predicted before the code existed: 32 native, 7 adapted, 2 fallback, 5 unsupported. Turn-in-place is native on the skid shell, becomes a three-point turn on the steered shells, and is refused with the steering locked.
  • Driveable shell (20 October). A person drives the four-wheel-steer and the front-steer shell with W, S, A, D and Space. The keys are mapped onto each profile's declared limits by a written policy. The nine manoeuvres can be invoked, interrupted, resumed and dropped. Steering now turns while rolling; follow-path ends on the drawn pose, parallel-park parks in one reverse run.

Numbers from this stage

  • Small platform: wheelbase 0.257 m. A generic hobby-grade profile; no real platform is named because none was measured.
  • Steering authority keeps lateral acceleration under 0.9 of the kinematic honesty bound: 4.41 m/s² against 4.90.
  • The speed cap binds at full lock from 1.51 m/s on front and rear steer and from 1.08 m/s on four-wheel steer.
  • Parallel park: 0.687300 m back in one reverse run on front steer; the four-wheel-steer shell crabs 0.25 m sideways instead.
  • The committed drive: 1,314 ticks at 120 Hz, about 11 seconds; its 17 key presses are listed in the records.
  • 51 manoeuvre-and-shell pairs at this stage: 35 native, 9 adapted, 2 fallback, 5 unsupported, all predicted before the code.
  • Rolling manoeuvres end within 10⁻⁹ of their closed forms; the worst segment is 1.1·10⁻¹⁴ off.

What it does not claim, and why

What you see or might expect Why Changes at
The shells drive through each other No collisions and no obstacles exist yet The obstacle stage, next on the map
A manoeuvre's first steer from rest happens standing still, and so does the change of lock when it reverses A bounded limitation kept on purpose: steering now rolls inside manoeuvres, not at their start A later stage, not scheduled
The steering goes from full lock to straight in 75 ms, a hard ramp The steering rate is one declared number, an estimate for a hobby servo, with no bound on how fast that rate changes; the trails here follow the rear axle, which never slips sideways, so they show no hook A later stage: the shape of the transition as a declared bound
The skid shell stops to change its curvature Its rolling transition would ramp side speeds under different limits; kept as it was A later stage, not scheduled
A resumed manoeuvre restarts from where the shell stands It does not return to its original goal: that is path planning, which this engine does not do Not planned in this engine
Fast turns look "too easy" Kinematics: no tyre grip, no body roll. The engine announces every frame that crosses the honesty bound instead of simulating it A dynamics provider, not a Wheels stage
Every shell here is the same small body One profile family in these scenes; the paper sedan from the first stage is not here A real platform, once one is measured
Speed can overshoot a falling cap by up to 0.3 m/s The jerk limit lets it; the policy is aimed, not guaranteed, and the frame reports it Kept as a declared limit
The browser and the records differ in the last digit JavaScript engines differ in the last digit of sin and cos at 13 of 233 probe points; 3 of 1,314 ticks differ Kept by contract: bytes within one engine, twelve digits across engines

Two assumptions sit under everything here. The first is the kinematic honesty bound: a kinematic model is honest only while the sideways acceleration in a turn stays under half of what the tyres could hold, 4.9 m/s² at a friction coefficient of 1. The engine announces every frame that crosses that line instead of simulating what happens past it; the line comes from passenger-car studies and has not been checked on small platforms. The second is the tip threshold: a rigid body tips when sideways acceleration exceeds half its track over the height of its centre of mass; real vehicles lean and tip about 15 % earlier. Both are lines where the engine's claims stop, not safety limits.

Top comments (0)