DEV Community

Cover image for Kinewright Wheels: one rover, eight senses
Dimon
Dimon

Posted on Originally published at dimonb19a.hashnode.dev

Kinewright Wheels: one rover, eight senses

The second Kinewright engine now carries the senses of a small rover through a room of static obstacles. It sees; it does not yet avoid, and that is the next stage. This article shows what the fourth accepted stage adds, how a sense is modelled, and every limitation still in place.

What this stage adds

  • A scene: four walls, a tall post, a thin post, a low box, a tall box and a wall turned 30°, all static, every size declared in metres. No obstacle stops a shell: the motion stays kinematic, a shell driven into a box passes through it, and a contact report names the overlap on every tick it lasts.
  • A rig on the four-wheel-steer shell, beside its profile: a single-zone time-of-flight cone and an 8 × 8 grid, an ultrasonic beam, a 360° scanning range-finder, a radar of up to three targets with their radial speed, two bumpers, wheel encoders and an inertial unit. Eight models of seven sensors.
  • Every sensor has a rate, a latency, blind cases and seeded noise, and reports integers in its own units: millimetres, counts, bits.
  • Every observation is a recorded input of the drive's journal. A drive replays headless two ways, through the controller and from the frames, byte for byte in separate processes, with the same records on Windows and macOS.
  • One observing behaviour, a stub: hold 0.30 m/s while the beam reads clear, rest from the tick a reading of 0.50 m or less arrives, and rest before the first reading, because an unseen way is not a clear way. On the committed drive it stops 0.469 m short of the low box.
  • Every trail is drawn from the pivot axle, the point that never slips sideways, so the hook at a turn's exit is gone. The steering motion's own shape is the next stage's first item.

How a sense is modelled

  • Rays in closed form against faces, tops and the ground, the nearest crossing within range; a sample is taken on the frame of its tick and emitted its latency later, and the scanner casts each beam from its own tick's pose.
  • The status comes from the true value, so noise never invents a return and never loses one. Noise is a counter-based stream, a pure function of the seed, the sensor and the sample's index, exact on every JavaScript engine, with no clock anywhere.
  • Every figure is estimated from the public datasheets of the sensor's class, attributed to no single part. Nothing is measured.

Numbers from this stage

  • Rates: cone 30 Hz, grid 15 Hz, beam 15 Hz, scanner 6 Hz, radar 10 Hz, bumpers and inertial unit 120 Hz, encoders 60 Hz.
  • Noise, one standard deviation: cone 2 mm plus 0.4 % of range; grid 3 mm plus 0.5 %; beam 2 mm plus 0.2 %; scanner 1 %; radar 0.03 m, 1.5° and 0.03 m/s; encoders one count, 0.2 mm of rolling.
  • The beam loses its echo past 7.5° to a wall; the cones are pitched up by their own half-angle, so neither reads the ground.
  • In the drive shown: the beam hears the low box from two metres while the cone above it reads the far wall at 3.6 m; the radar tracks three targets at once, each closing at the shell's own speed.
  • In the turn, at 0.43 m/s and full lock, the inertial unit reads a yaw rate of 92°/s: the engine's own 1.6 rad/s on a 0.27 m radius. The outer wheels' counts pull ahead of the inner ones.
  • 25 fixtures and three drives are pinned by platform-stable roots; traced figures sit within 1.9·10⁻¹⁴ of their closed forms.

What it does not claim, and why

What you see or might expect Why Changes at
The shell drives through the box No collision response: kinematics only; the report names the overlap The avoidance stage, built on these senses
A real sensor would read this Models of declared figures from datasheet classes; no optics, acoustics or electromagnetics A measured sensor, on hardware, much later
Dark or soft surfaces, a corner's ghost echo, a thin object between two rays No surface property, no multipath; the cones are sampled by bundles, not integrated over their field The hardware stage; multipath is not scheduled
The other shell shows up on the scan A shell is not an obstacle to another shell's sensors The moving-objects stage
A sensor fails, drops out or drifts No faults, no drift, no temperature The faults stage; calibration later
The encoders count exactly the distance Pure rolling, no slip: traction needs a dynamics provider Not a Wheels stage
The steering snaps from full lock to straight The steering rate is one declared clamp with no bound on its change The next stage, as a declared bound with its own question

Two assumptions sit under everything here, as before: the honesty bound of the kinematic model and the tip threshold, both announced when crossed and never simulated. This stage adds no third one; the senses sit above the kinematics, not under it.

Top comments (0)