-
-
Footlight draws lines on the floor at the person's step length when Parkinson's freezes their feet, then takes them away.
-
The problem: freezing of gait, set off by doorways, turns and narrow gaps. A line on the floor helps many people step again.
-
Setup, once: the carer looks at each place where freezes happen and marks it as a doorway, a turn or a narrow gap.
-
The two spots marked in the living room, seen from above: the gap by the sofa and the turn toward the record player.
-
The main card, and a start hesitation: a pinch anywhere brings the lines up at once, with a soft beat at the set pace.
-
A freeze in the gap by the sofa: lines run square to the opening and on past it. Each crossed line dims.
-
A turn: the beat leads and the marks follow a wide arc, the way physiotherapists teach turning.
-
Today: how many freezes, the longest, the median, and where. Something to bring to the next appointment.
-
Where the lines go, seen from above: first line 22 cm ahead, then one per target step, square through the door or on an arc.
-
One freeze, frame by frame from the engine the Lens runs: lines 0.68 s after the stop, then they fade once the walk is steady.
-
Every done criterion from the design brief is a LEAF scenario that passes in the Lens Studio preview.
-
Why Footlight waits for a stop: on 237 real freezes, trembling alone found too few or raised too many false alarms.
About the project
Inspiration
Many people with Parkinson's describe the same moment: the feet stop as if glued to the floor, usually in a doorway, a narrow gap or halfway through a turn. Freezing of gait affects about 40% of people with Parkinson's, and about 71% after ten years with the disease.
The same person who cannot take one step forward can often step over a line. Physiotherapists teach it, and families stick strips of tape across doorways. Tape has two problems. It is never where the next freeze happens, and because it is always there, it stops working. I wanted the line to appear at the moment of a freeze, in the place of the freeze, and to leave once the walk is steady.
I came to it from the other end of the disease: this summer I worked on dopamine-transporter SPECT scans in DrivenData's DaT challenge, where Parkinson's is a classification problem. Footlight is about what comes years after that diagnosis, in a doorway at home.
What it does
Footlight is a SPECS Lens for people who freeze, and for the person who looks after them.

A freeze in the gap by the sofa, in the Lens Studio preview of SPECS: lines across the floor at the person's step length, running on through the gap.
- Setup, once. The carer looks at each place where freezes happen and marks it: Doorway, Turn left, Turn right or Narrow gap. Each spot becomes a ring on the floor with its name. Two sliders hold the physiotherapist's numbers: step target and beat.
- A freeze in a marked spot. Stopping there after walking brings up amber lines within a second, one per step, from just ahead of the toes. In a gap or a doorway they run square to the opening and carry on past it. A soft beat plays at the set pace. Each crossed line dims, and once the walk is steady the lines fade and the beat stops.
- A turn. The beat leads and stepping marks follow a wide arc, the way physiotherapists teach turning. One AR study found sound helped more than visual cues for turning, so the beat starts first.
- A pinch anywhere. For a start hesitation or any freeze outside a spot, a pinch brings lines up at once, toward where the head points.
- Today. A card lists the session's freezes: how many, the longest, the median, and where. Something to bring to the next appointment.
Nothing shows while the walk is steady.
How I built it
I planned Footlight with the Devpost plan-lens skill, which turned my answers into devpost/design-brief.md: the one spatial moment, placement in centimetres, show rules, the preview stand-ins and five done criteria.
Snap's CLAD agents built the Lens from that brief through the Lens Studio MCP: the scene, Spectacles UI Kit panels, SIK interaction, a generated beat sound, icons and the LEAF scenarios. I then worked from what the preview showed, with design notes and small fixes: panels moved inside the narrow view, the pinch read from SIK hand state, a per-spot cooldown so a second freeze always gets lines, and a Today card rebuilt to be read at a glance.
Every number on the floor comes from plain TypeScript in Assets/Scripts/Core, with no Lens Studio dependency, so the same files run in the Lens and in 17 Node tests:
FreezeDetectorreads head position. A freeze is forward progress stopping after a walk had started: 0.4 s of stillness inside a marked spot is enough, because a false cue there costs nothing.CueGeometryplaces the first line 22 cm ahead of the head's floor point (12 cm to the toes plus a 10 cm gap), then one per target step. Doorway and gap lines snap to the opening's axis; turn marks follow a 55 cm arc.CueSequencerdims crossed lines, fades the rest after 1.5 s of steady walking, and keeps the beat two beats into the fade.

Where the lines go, seen from above, as CueGeometry places them. Left: the person stops 20 cm off-centre before a doorway. The first line is 22 cm ahead, the rest follow at the target step, square to the door and on through it. Right: a left turn, with marks on a 55 cm arc and two lines on the new heading.

One freeze in a doorway, frame by frame, from the same engine the Lens runs. Lines appear 0.68 s after the stop, each crossed line dims, and once the walk is steady the rest fade. The beat runs at 100 per minute and stops two beats into the fade.
Done criteria and tests
All five done criteria pass as LEAF scenarios in the Lens Studio preview:
- Stopping in the doorway spot: lines 0.73 s after stopping, first line 22.00 cm ahead, square through the door.
- Step slider at 60 cm: line spacing 60.0 cm.
- Pinch: first line visible 0.09 s after the pinch registers, beat running.
- Walking on: crossed lines dim, the lines fade, no beat after the fade.
- Today lists the freeze with its duration.
Challenges I ran into
The view is narrow. SPECS shows about 32 x 37 degrees. With eyes level, the nearest floor in view is about 4.8 m away, so lines at the toes need a downward look. The gap and doorway lines continue past the opening where a small glance finds them, the beat needs no view at all, and a chevron points down only when none of the remaining lines is in view. The first build placed the cards at chest height, outside the view; I moved every panel into view space.
Trembling alone is not enough. I tested the freeze index on the public Daphnet dataset (10 people with Parkinson's, 237 annotated freezes), leaving each person out in turn. From a trunk sensor it found 74% of freezes but raised 114 false alarms per hour of walking. With stricter thresholds it raised 5.8 per hour and found 19%. Neither is good enough to put lines on the floor by itself, so Footlight cues on stopped progress inside the spots the carer marks, and the pinch covers the rest.
The preview has no home with a doorway. For the LEAF tests I added a stand-in hallway and bathroom door at real size, labelled as a stand-in and hidden on device. For the walkthrough I used Lens Studio's furnished Sunlit Room, where the carer marks the gap by the sofa and the turn toward the record player in the setup flow.
Accomplishments that I'm proud of
The whole loop works in the preview: setup, a start hesitation, a freeze in a gap, a freeze at a turn and the day's summary, with the lines at the measured step length every time. All five LEAF scenarios pass, 17 Node tests pass, and the Daphnet evaluation counts exactly the dataset's 237 freeze episodes.
What I learned
Good AR for this problem is mostly about when to show nothing. Cues that stay on stop working, so the design work went into the rules for appearing and leaving. Writing the brief before the build made those rules testable: each done criterion became a LEAF scenario. The preview also taught me to check placement in degrees, not centimetres: a card at chest height is invisible on glasses with a 37-degree view.
What's next for Footlight
Trying it on SPECS with people who freeze and their physiotherapists, to answer what the preview cannot: whether the lines read on real floors, how far down people look during a freeze, and whether head-height trembling is measurable during a real freeze. Then spots that persist between sessions, and a summary the carer can share with the care team.
Built With
- clad
- leaf
- lens-studio
- lens-studio-mcp
- specs
- spectacles-interaction-kit
- spectacles-ui-kit
- typescript
- vitest
- world-query
