# How much RTK fix do your outdoor robots keep under tree canopy? Field data and a test design

**URL:** <https://discourse.openrobotics.org/t/how-much-rtk-fix-do-your-outdoor-robots-keep-under-tree-canopy-field-data-and-a-test-design/59222>\
**Category:** ROS General\
**Created:** [October 26, 2026, 6:08pm UTC](https://discourse.openrobotics.org/t/how-much-rtk-fix-do-your-outdoor-robots-keep-under-tree-canopy-field-data-and-a-test-design/59222 "2026-10-26T18:08:02Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eviewgnss](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/eviewgnss/32/35706_2.png) [@Eviewgnss](https://discourse.openrobotics.org/u/Eviewgnss)\
**Post date:** [October 26, 2026, 6:08pm UTC](https://discourse.openrobotics.org/t/how-much-rtk-fix-do-your-outdoor-robots-keep-under-tree-canopy-field-data-and-a-test-design/59222/1 "2026-10-26T18:08:02Z")

</div>

For those of you running outdoor robots (lawn mowers, orchard or vineyard platforms, campus AMRs), how much RTK fix do you actually keep under tree canopy?

We recently went through a field test that logged several RTK receivers side by side under roadside trees, and I thought the numbers, and their limits, might be useful here.

**What was logged** (all at about 10 Hz, viewed in RTKPLOT):

- Half sky + rain, 21.9 km baseline, about 61 min
- Under trees + rain, 16.4 km baseline, about 39 min
- Under trees + network RTK, 1.99 km baseline, about 61 min

**What the status bars showed:**

- In both long-baseline sessions, three of four record groups (Septentrio mosaic-X5 / mosaic-H based receivers) held **100% fixed (Q=1)** for the whole session.
- One record group dropped to **83.3%** (half sky) and **88.5%** (under trees) fixed, with the rest float or DGPS. The ground track shows jumps of tens of centimetres when that happens.
- On the 1.99 km network RTK session, both record groups held 100%.

**What it can’t tell you:** there was no ground truth and no raw observation data, the sessions changed canopy, baseline, correction source and weather all at once, and there was one unit per position. So it’s a status comparison, not an accuracy ranking. A fixed flag doesn’t prove the position was right.

**If you’re evaluating receivers for a robot that works under trees,** this is the test design we’d recommend:

1. Same site, baseline and correction source; cross open-sky/under-canopy with dry/wet, three or more repeats each
2. A known control point or a long static baseline as truth
3. Log raw observations so every receiver can be reprocessed with the same RTKLIB settings
4. At least two units per model; log heading at the same time on dual-antenna setups
5. Report RMS and 95th percentile, time to first fix and availability, not only fix ratio, after decimating to 1 Hz

On the ROS side, the [septentrio\_gnss\_driver](https://github.com/septentrio-gnss/septentrio_gnss_driver) publishes the solution status, so you can log fix state alongside your localization output and see exactly where under the canopy your EKF starts leaning on odometry.

The full write-up with all 36 figures and per-screenshot readings is here: [RTK fix ratio under tree canopy and rain](https://gnss-solutions.com/rtk-fix-ratio-under-tree-canopy-rain-field-review/)

I’d be interested to hear what others see in practice: do you gate your localization on fix status, or blend float solutions with a larger covariance?

_Disclosure: I work with Eview GNSS, which makes receivers based on Septentrio modules. Test data was supplied by the test team and is used with permission._

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [October 26, 2026, 8:22pm UTC](https://discourse.openrobotics.org/t/how-much-rtk-fix-do-your-outdoor-robots-keep-under-tree-canopy-field-data-and-a-test-design/59222/2 "2026-10-26T20:22:30Z")

</div>

I’m eager to see others’ experiences.

For your writeup, I think a must add is the type of antennas you used. Are they calibrated? Are they 2/3/4-band? Are they multifeed? Do they have a choke ring? These are all parameters that pull both the price and performance up quite a lot. Also, to some extent, cables and connectors matter, too.

In our experiments with Mosaic-H (either eval kit or Ardusimple), the height of the antennas above ground seems to make quite a lot of difference (at least without choke ring). Our robots carry antennas as low as 50 cm above ground, and that seems to be about the limit. I remember one test when just moving the antnenna 2 cm lower got C/N0 10 points down for most signals. It seems that car rooftops are especially good in this regard 🙂 My working theory is that as you’re getting closer to the ground, multipath effects are both stronger and closer to the direct signal, which makes correlating the signal much harder. But I’m no radio guy =)

In general, with Mosaic-H and helical antennas, we got float most of the time under trees, or single/DGPS.
