Kinewright Wheels: one rover, eight senses
DEV Community

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.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.