DEV Community

Cover image for Kinewright Wheels: a map, a route, an honest no
Dimon
Dimon

Posted on Originally published at dimonb19a.hashnode.dev

Kinewright Wheels: a map, a route, an honest no

The second Kinewright engine now builds a map of the whole drive from what its sensors have seen, plans a route through it and drives it leg by leg, replanning as the map grows. When there is no way it says so, and this article shows that too: the sealed room, the gap too narrow for the body, the full map, and a door that closes behind it.

What this stage adds

  • A belief map of the whole drive: cells of 0.02 m, each an integer of confidence. A scanner ray through a cell counts against it, a return counts for it: three hits make a cell occupied, nine misses free, with clamps either side. A cell no sensor has looked at is marked never seen. The scanner carves free space; the grid and the beam only mark; the bumper marks with certainty. The map is the scanner's plane.
  • A planner on a 0.04 m copy of the map: an integer A* over a distance field. Cells within 0.156 m of an occupied one are lethal, the body's inscribed radius plus the clearance; the cost falls steeply to 0.26 m and decays to 0.35 m. An unknown cell is passable at a price, one of three declared levels.
  • Replanning on events only: a cell on the route or within 0.26 m of it changes state, a leg ends, ten seconds pass. A new route replaces the old when it is at least an eighth cheaper, never within 0.2 s of the last switch.
  • Two skills over the last stage's go-around. Route-to drives to a lookahead point 0.75 m along the route, each leg a go-around call. Explore drives to the nearest edge of the unknown until none is left.
  • Six results, each a sentence on screen: at the goal; no way, every way out of the known space is closed; no way for this body, with the narrowest gap; stopped trying, after three recoveries without progress; map complete, with the number of rooms; out of time.
  • Trust: a cell seen occupied on three visits with no flip is permanent and never decays; a cell that flipped is changeable and relaxes to unknown out of view. A rebuild is only flagged. Three scenes change between observations, a box appearing, a box vanishing, a door closing and opening, and the map follows within declared latencies.
  • Every decision and observation is a recorded input. A drive replays byte for byte; the map and the decisions are integers, identical on two machines of different architectures.

How it decides

  • The first route is optimistic: unknown cells cost more than free ones, never infinity, so a route to a goal behind walls runs straight through what it has not seen. A scan that shows a wall across it raises an event, and the planner reruns.
  • Two tests say unreachable. Through the known free space, a search from the goal finds no way out; with unknown cells allowed, no route exists either: the goal is sealed. When the two disagree, a point search names the body: the gap is too narrow, and one confirming leg reads its width on the map.
  • A frontier is a free cell beside an unknown one. Explore drives to the nearest reachable frontier; the map is complete on the first decision with none left.
  • A recovery, on a blocked or stalled leg: clear the map within 0.85 m of the shell and replan; then back up 0.30 m; at most three without progress.

Numbers from this stage

  • On the fixture scenes, 18 runs on both shells: no overlap on any tick; 1 431 plans, each on an event, 559 switches, each by the eighth. The goal behind the second wall is reached on all six of its runs; the sealed room and the narrow gap end as no way on both shells; the exploration ends with three rooms.
  • The narrow gap reads 0.24 m on the map and on the planner's copy, against a true 0.25 m and a derived bound of 0.20 to 0.28 m.
  • In the drive shown to the goal behind the wall: the first route at 0.5 s, 2.3 m known free and 4.3 m through unknown; seven replans; the goal at 28.6 s after 77 plans and 282 decisions. The sealed room ends at 9.8 s, the narrow gap at 17.9 s, the exploration at 20.9 s.
  • In the door scene: the way home is planned through the left opening, seen open; the door closes on a tick no sensor sees; the next scan shows it closed, the route replans through the right opening at 8.5 s, and the shell arrives.

What it does not claim, and why

What you see or might expect Why Changes at
The shell knows exactly where it is The rays are placed by the engine's own pose, not an estimate; the map never drifts and is never rebuilt from corrected poses The hardware stage: a pose from scan matching
The low box is not on the map The map is the scanner's plane; a surface lower than the scanner is carved free by its rays and held only by the local map of the last stage while the beam hears it A measured sensor and a real vehicle, later
The door seen closed ends the drive as no way A seal made of changeable cells is a verdict on that decision's belief; waiting for a door to open is not this stage's The moving-objects stage, whose caution policy may wait
The route has 45° corners It is a grid path, 8-connected, up to about 8 % longer than the shortest; pure pursuit inside go-around smooths it A later stage, if the staircase shows
It explores beyond the room Its world is the box of what it has observed plus its goal; a way beyond is found only by exploring a frontier on the box's edge The map that outlives a session, reserved
Nothing moves in the room A change is applied only between observations; no object moves in view The moving-objects stage
The numbers behind trust are validated The visit count, the decay and the rebuild threshold are declared decisions, validated by no source The hardware stage, against a real environment
A route here is safe A route is what declared rules chose on a map built from what models of declared sensors report; no route or stop is called safe Never claimed

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 motion stays kinematic, and nothing is measured.

Top comments (0)