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.
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.
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)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^\circConclusion: 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”.
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.
As in Part 2 (Forest), the main risk is geometry, not just SNR. In narrow streets:
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.
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.
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:
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.
Hard dropping is safe, but sometimes you want to use partial information. Two ideas:
This keeps some availability while still protecting the lateral channel, which is the fragile one here.
A tightly-coupled GNSS/IMU filter (with odometry and motion constraints) improves three things in these canyons:
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:
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.