← All posts

Product update3 min read

Off the scanned floor, the route waits instead of ending

Build 268 keeps a route when a step takes the iPhone off the scanned floor. ICIDO says so once, keeps the arrows, and carries on when the floor is back in reach.

Until build 268, one step to the side could end a route in ICIDO. Build 268 changes that. Stepping off the scanned floor now holds the route, and the directions pick up again on their own.

Build 268 went to TestFlight as part of the work on version 1.4. The version on the App Store is 1.3.

Where a route starts

ICIDO finds routes over a grid laid across the scanned floor. Each cell is 12 cm across. The route is found with A*, a standard shortest-path search, run over the grid's floor cells.

The phone's position rarely sits exactly on a walkable cell, so the search starts from the nearest one. That snap has a limit: 12 cells, or 1.44 m. Beyond it there is no starting cell, and no route can be found.

The route is also worked out again about once a second from the live position. So the question "can a route start from here?" is asked over and over during a walk, not once.

One step was enough

A scan only contains the floor the sensor saw. A LiDAR sensor measures the distance to surfaces it has a line of sight to. A corner it never faced, or floor past where scanning stopped, is simply not in the data. So the edge of the scanned floor is not a wall. It is where the data stops, and a person can walk across it without noticing.

Before build 268, one step onto an unscanned patch could put the phone outside that 1.44 m reach. Every search then failed, and the route was cancelled with the message "No walkable path". Someone who can't see the screen had to ask for the route again from nothing, for a step to the side. The same happened when a route was asked for from just off the floor.

Holding instead of cancelling

Build 268 separates two situations that used to end the same way.

The first is being off the floor. When every search fails and there is no walkable cell within reach, the route is now held. The destination and the drawn route are kept. ICIDO shows and says, once: "You've stepped off the scanned floor. Step back onto it to carry on", followed by the destination's name. If no route had started yet, it says the route will start instead.

While the phone stays off the floor, ICIDO skips the searches it knows will fail. Once a walkable cell is back within reach, it works out the route again and carries on by itself.

The second situation is a real dead end. The phone is on the floor, and there is no way to the spot across what was scanned. That still ends the route, with the "No walkable path" message. The message now means only that.

Asking the same question as the router

The off-floor check could have been a separate rule of its own. That risks two answers to one question: the check says a route can start, and the search says it cannot.

Instead, the new check asks the router's own question, with the most permissive settings the router has: is any walkable cell within reach? The reach is one named value, shared with the start snap, so the two cannot drift apart.

A test fixture walks outward from the edge of a floor. At all 41 distances it tries, the check agrees with the full route search, and it stops at 1.4 m.

What else changes while a route is held

Some things that were true for a running route stop being true while it is held, so they changed with it.

  • The distance on the route pill is dropped. While held it would be stale, or "0" before any route existed.
  • "How far now?" answers with the hold sentence. It used to say "You're basically there."
  • At the edge of the map, ICIDO no longer says "Directions stop here" while a route is running, because that sentence is no longer true.

The in-app Help has a new entry, "Stepping off the scanned floor". It describes the hold, and what "No walkable path" means now.

A sentence instead of a restart

None of this changes the map. The floor, the grid and the search are what they were. What changed is what happens at the edge of the data: the route stays, the reason is said once, and the walk carries on when the floor is back underfoot. For someone following the route by ear, that is the difference between a pause and starting over.

Related reading