RFOXiA LogoRFOXiA Club
← Back to DevHub

MultiNav Pro+ GNSS - can the 18Hz output feed directly into a Kalman filter?

Revital MarokoJune 15, 2026
Been working on a UAV nav stack and I'm trying to figure out if the 18Hz fix rate on the GNSS module is clean enough to pipe directly into a Kalman filter alongside the IMU data from the sensors module, or if there's enough jitter/noise in the position output that I'd need to pre-filter it first. Specifically wondering about timestamp consistency - like, is the fix interval actually stable at ~55ms, or does it wander depending on satellite geometry or constellation load? That kind of irregularity can really mess with the prediction step if you're not accounting for variable dt.</TITLE>
 
Also curious whether the NMEA output includes proper timing metadata or if I'd need to rely on the host MCU's own clock to timestamp each fix on arrival. For tight sensor fusion that gap actually matters a lot, especially when you're running the IMU at a much higher rate and trying to sync the two streams in post or in real-time. If anyone's already built a fusion pipeline with this combo I'd really love to see how you handled the timing side.
 
One more thing - at 1.5m accuracy spec, is that CEP or RMS? Makes a decent difference for how I set the measurement noise matrix in the filter. I've seen vendors use both without being super clear about it and it always bites me later. Haven't dug into the full datasheet yet so apologies if its in there already.
💬 2 replies👍 0 likes👁 0 views

💬 Want to join this discussion?

Join the Community on RFOXiA Club →

Replies

Peter AdkinsJune 15, 2026
The fix interval does wander a bit in practice - I've seen it drift anywhere from ~53ms to ~60ms depending on constellation load, so I wouldn't assume a fixed dt in your predict step. Honestly I'd just timestamp on arrival and feed the actual elapsed time into the filter rather than assuming 55ms, and the position noise itself is fine to go straight in without pre-filtering as long as your measurement noise matrix is tuned reasonably for the module's CEP spec.
AdamJune 15, 2026
@Revital Maroko @Revital Maroko good questions, and the timing stuff especially is worth getting right before you're deep in the filter tuning.
 
On the fix interval — yeah, it does wander in practice, somewhere in that 53–60ms range depending on constellation load and geometry, so don't hardcode 55ms in your predict step. Just timestamp on arrival with the MCU clock and pass the actual elapsed dt into the filter. It's a small extra step but it'll save you weird drift artifacts that are a pain to diagnose later.
 
On the NMEA timing — the standard sentences include a UTC timestamp field but it's only second-level resolution, so for tight fusion at IMU rates you really want to capture the host-side arrival timestamp as the authoritative timing reference. If you need tighter sync you can look at the PPS pin output if the module exposes one, which gives you a clean 1Hz edge to calibrate your MCU clock against the GNSS timebase — that's usually how people tighten up the IMU/GNSS alignment properly.
 
The 1.5m spec is CEP, which is the 50th percentile circular error — so your measurement noise matrix should account for the fact that you'll see errors beyond that pretty regularly. A common approach is to set R conservatively at something like 2–3x CEP² to cover the tail, then tune from there with logged data.
 
As for piping the position output directly into the filter — position noise is clean enough to go straight in without pre-filtering, as long as your R matrix is reasonably tuned. The IMU data from the sensors module pairs well for the high-rate prediction step, and the GNSS just does the correction updates asynchronously whenever a fix arrives. If you've got a fusion pipeline already running I'd actually be curious what MCU you're on and whether you're doing this onboard or offloading the filter.

💬 Want to join this discussion?

Join the Community on RFOXiA Club →