European Urban Canyon: LiDAR-Aided GNSS/INS Post-Processing – Urban Challenges #3

Historic European ‘urban canyons’ – narrow, 3-4 m streets flanked by 10 m facades – can mask GNSS like glassy CBDs, but with different multipath. Using our Darmstadt/Frankfurt dataset, we show why lateral geometry collapses, and how LiDAR-based LOS gating plus tightly coupled GNSS/IMU keep trajectories reliable in these tricky corridors.

Short intro and dataset
For this mini-series we keep one consistent dataset: 20 drive logs, each close to one hour. We drove a normal passenger car in Darmstadt and Frankfurt through forest, city, dense residential, industrial zones, highway, and the high-rise/banking district. Hardware was a geodetic GNSS receiver (Javad Triumph-LS) and a MEMS IMU from ~2013 (Xsens MTi G-700). Processing uses AlgoNav’s tightly-coupled Network-PPK with our mobile VRS (MVRS), fused with IMU, odometry, and motion constraints. All five posts rely on these runs.


What we mean by “European Urban Canyon”

This is not the classic skyline of glass towers. It is historic residential streets built long before cars existed. Houses sit directly at the road edge, sometimes without sidewalks. The street width was basically “two horse carriages can barely pass”.

Many papers use “residential area” to mean wide streets, front yards, and open sky. In that scenario, house shadowing is small; the bigger issue is often roadside trees (see Part 2: Forest). But European old-town streets are different: they are narrow and continuous in height and frontage. The sky is a slit.


A simple geometry example (numbers make it obvious)

From our dataset we have streets where two modern cars cannot pass comfortably. We measured façade-to-façade distances of ~4.0 m, and even 3.60 m in places. House heights are around 10 m (3 floors).

Masking elevation angle (sideways) is roughly:

\theta \approx \arctan!\left(\frac{\text{height}}{\text{half-width}}\right)
  • With width 3.60 m, half-width 1.80 m, height 10 m
    \theta \approx \arctan!\left(\frac{10}{1.8}\right) \approx 80^\circ
    So only satellites very high in the sky are visible sideways.

For comparison, take a “real” urban canyon: 150 m towers with 50 m street width (half-width 25 m):

\arctan!\left(\frac{150}{25}\right) \approx 80.5^\circ

Conclusion: A 3-storey, 3.6 m wide old street can shadow GNSS like a 150 m high-rise canyon. That is why these segments bite, despite looking “low-rise”.


Multipath: different character than glass towers

There is one benefit: old façades (stone, plaster, brick) are less reflective than glass curtain walls. That lowers the amplitude of some multipath and reduces the chance of “only reflections left” when LOS is blocked. Still, reflections exist – balconies, window reveals, shop signs, parked vans, and wet surfaces all play a role. So errors are not gone; they are just less mirror-like than in a modern CBD.


Geometry again: the rank deficiency returns

As in Part 2 (Forest), the main risk is geometry, not just SNR. In narrow streets:

  • Satellites visible along the street (front/back) and overhead dominate.
  • Cross-track (lateral) is weakly observed; the design matrix is near singular in that direction.
  • You can “see” many satellites and still have poor lateral information.

The trap is the same pattern: when a side satellite appears for a second, it seems to fix lateral. But if that single satellite is biased, there is no redundancy sideways to catch it. Classic outlier tests may not flag it. Reliability-first logic (e.g., Minimum Detectable Bias, MDB) should therefore down-weight that lone lateral source when MDB says you could not detect a moderate bias anyway.


When outliers outnumber the inliers

In some tight streets, bad can outnumber good for short intervals – especially if several reflections come from the same façade plane, creating consistent but biased measurements. That consistency is dangerous: it passes simple residual checks because the errors “agree” with each other.

A plain GNSS-only filter can get trapped: it accepts the agreeing reflections, nudges the state laterally, and then struggles to recover when LOS returns.


LiDAR-assisted GNSS cleaning (pre-processing)

This is where a LiDAR helps a lot. If your stack includes a LiDAR (even sparse automotive resolution), you can run visibility gating before the estimator uses the GNSS measurements:

  1. Compute LOS rays from the antenna to each satellite using ephemerides (azimuth/elevation).
  2. Ray-cast through the LiDAR map/point cloud.
  3. If a solid object sits in the LOS cone (façade, wall, truck), mark that satellite as occluded at this epoch.
  4. Drop those GNSS observations entirely (code and phase), because they are likely non-LOS or dominated by reflections.

This single step often shifts the problem from “too many clever outliers” to “fewer, cleaner inliers”, which makes outlier detection far more robust. In very hard segments, this can be the difference between a stable float/fix trajectory and a lateral jump you cannot undo.

User control in AlgoNav: the aggressiveness of LiDAR-based GNSS cleaning is parameterized. You can choose a conservative cone (higher availability, more risk) or a strict cone (higher reliability, fewer usable satellites). It is the usual reliability vs. availability trade-off; in these streets, many operators prefer reliability.


Going further: façade-aware weighting, not just hard rejection

Hard dropping is safe, but sometimes you want to use partial information. Two ideas:

  • Plane detection: Detect façade planes in the LiDAR (RANSAC or similar). With plane normal, satellite direction, and your estimated pose, you can compute whether a reflected path is geometrically plausible and what delay/angle it would imply.
  • Reflection likelihood → weight: Convert that plausibility into a down-weight for the GNSS observation instead of a full reject. Combine with MDB so that if lateral detectability is poor, you cap the weight even more.

This keeps some availability while still protecting the lateral channel, which is the fragile one here.


How tightly-coupled fusion helps

A tightly-coupled GNSS/IMU filter (with odometry and motion constraints) improves three things in these canyons:

  • Short LOS windows (2–3 s) are enough to re-tighten the state because the IMU prediction narrows the integer search space.
  • Cross-track stability is carried by IMU between LOS windows; lateral is updated cautiously when geometry supports it.
  • Consistency checks over time (innovation sequence, bias process models) become stronger than single-epoch tests, reducing the chance of a one-off reflected “hero” satellite pulling the solution.

Practical takeaways

  • Narrow old streets can be as shadowed as CBD canyons. The 3.6 m / 10 m example gives ~80° masking – comparable to 150 m towers with 50 m separation.
  • Geometry is the main enemy. Many satellites ≠ good lateral information. Treat side glimpses with MDB-aware caution.
  • LiDAR gating cleans up the set. LOS checks via ray-casting remove fully blocked satellites before they hurt the filter.
  • Façade-aware weighting lets you keep some availability while avoiding “fixed-but-wrong”.
  • Tightly-coupled fusion accelerates recovery and prevents lateral jumps between short LOS windows.

What this means for your projects

If you operate in European old towns – delivery robots, mapping vans, micro-mobility – expect CBD-level shadowing without the glassy multipath. Bring reliability-first logic (MDB, conservative lateral updates), add LiDAR-based GNSS cleaning, and use tightly-coupled fusion to stitch together short clean windows. That combination keeps trajectories trustworthy and reduces those “how did we jump into the wall?” moments.

This was Part 3 of our five-post series on tough GNSS environments:

  1. Underpasses
  2. Forest
  3. European Urban Canyon (this post)
  4. Tunnels and dense tunnel exits
  5. Urban Canyon (the classic high-rise case)

If you have sample streets or façade scans to share, we’re happy to compare geometry stats and LOS masks. Next up: Tunnels and exits – where lateral goes missing entirely and geometry comes back in a chaotic rush.

Dr. David Becker