The problem
A white cane finds things about a metre in front of you. That’s the range. A bollard in the middle of the sidewalk, a construction barrier, a parked scooter, a person walking straight at you: everything past that first metre, you meet by walking into it. Phones with real depth sensors exist, but most people don’t own one, and that hardware costs money that the people who need it most often don’t have.
So the question I got stuck on: can a plain phone camera do this job? Not “sort of.” Safely enough that someone would trust it.
And “this job” is really two questions that have to be answered together. What is that thing, and how far away is it. Either one alone is nearly useless. Both halves had to be built.
How far away: the idea
A single camera has no depth. A small pole nearby and a big pole far away make almost the same picture. Most projects in this space solve that by choosing one clever method and living with how often it’s wrong.
AYNKAN doesn’t choose. It runs three completely different methods at the same time:
-
Geometry. If I know roughly how tall a person is, and I can see how many pixels tall they look, similar triangles gives me the distance. Fast and simple. It also falls apart the moment something isn’t a standard height. A kid. Someone crouching.
-
A depth model. A neural network that looks at the image and estimates what’s near and what’s far. Strong up close, shaky further out.
-
The map. This is the part I’d defend hardest. A city already has a known 3D shape: building footprints from OpenStreetMap, ground elevation from public lidar scans. So if I know where the phone is and which way it’s pointing, I can trace a line out from the exact pixel where an object touches the ground, and find where that line lands on ground I already have mapped. The map becomes a third distance sensor. Almost nobody does this.
The point isn’t that any one of them is good. The point is that they’re wrong in different places. When geometry is confused, the depth model usually isn’t. When the map goes unreliable near the horizon, the other two hold. AYNKAN weighs each one by how much it deserves to be trusted right now, and combines them. The three individual guesses jump all over the place. The final answer doesn’t. That gap is the whole result.
What it is: the half I nearly underestimated
“Something is three metres ahead” is close to useless. You need “a pole is three metres ahead,” because what you do next depends entirely on what the thing is. You walk around a pole. You stop for a person. You ignore a mailbox on the far side of the road.
So AYNKAN has to recognise things too, and this is where I found the result that surprised me most.
Off-the-shelf recognition models are trained on huge piles of ordinary internet photos. They’re excellent at dogs, cars, sofas, aeroplanes. I measured how one does on the things a blind pedestrian actually needs warning about, and it couldn’t put a name to 44% of them. Every single pole, which is the second most common object in the whole dataset. Every trash can. The entire bollard-and-cone family, which the accessibility research says are among the highest-value things to warn someone about.
It couldn’t put a name to 44% of them.
That isn’t really a flaw in the model. It’s a gap in what the world bothered to label. Nobody assembling a general-purpose vision dataset cared about bollards, because sighted people step around them without noticing. The objects that matter most to the people I’m building this for are exactly the ones nobody taught a computer the word for.
The fix was teaching the model the missing vocabulary from a small handful of examples. Bollards went from being found 0% of the time to being found most of the time.
One result I’m quietly proud of: across all that testing, it never once mistook a static object for a person. That’s the confusion that actually matters. A person might step into your path, a pole won’t, and it didn’t make that mistake once.
The two halves also aren’t as separate as they look. The geometry method needs to know what something is before it can estimate how far, because it works from expected height. If AYNKAN can’t name a pole, it can’t measure a pole either. Naming and measuring are one loop, not two features.
The part I care about most: it’s allowed to refuse
When the inputs aren’t trustworthy, AYNKAN does not produce a number. Phone tilted badly, object half out of frame, tracking dropped: in cases like those it says “I can’t measure this,” and it names which reason. There are eight of those named refusals in the system.
That sounds like a weakness. It’s the opposite. If a blind person is trusting this thing with their body, a confident wrong distance is far more dangerous than silence. Producing a number is the easy part. Knowing when your number is garbage is the hard part, and it’s what the whole architecture is built around.
Same reasoning behind the confidence intervals. AYNKAN never just says “3.2 metres.” It says 3.2 metres, and here is the range it’s 90% confident about.
FIG. 1 — ASYMMETRIC CONFIDENCE RANGE
There’s a statistical method behind that which makes the 90% a checked promise rather than a feeling. When conditions get worse, the interval widens honestly instead of quietly lying.
It has to sound right, not look right
The user can’t see a screen, so the entire interface is audio. Which direction something is in = which ear it’s louder in. How far away = how fast it beeps. Something closing on you = the beeping speeds up. And “I don’t know” is deliberately built to sound like it’s inside your head rather than out in the world, so anything you hear positioned in space is about the world, and anything unpositioned is the system talking about itself.
Then there’s the problem nobody warns you about. The first honest version fired hundreds of alerts a minute. Completely unusable. You can’t walk through that. So there’s a whole layer that decides what actually earns the right to be heard, and every single thing it silences gets logged with a reason. Otherwise “fewer alerts” is trivially cheatable by just alerting less.
Where it is now
The whole thing runs. So far only on public street footage. This fall I’m collecting real data on real Kingston sidewalks. That’s the step that moves it from “works on someone else’s dataset” to “works.” Then the RESNA Student Design Competition 2027, and a paper.
Fully open source.