This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
De-Jitter COG and SOG on NMEA0143 Network
#1
Question 
Hi

We have an issue with jitter on satellite derived position and speed.  The position is moving (as expected) due to the variation in received signals.  This is also causing an expected jitter in the speed over ground reading.

I note that there is a dejitter plugin for SignalK.

What I would like to do is:
  1. Use the plugin to de-jitter SOG and COG by averaging say 5 secs worth of data.
  2. Pass the de-jittered COG and SOG plus all of the other incoming NMEA sentences to OpenCPN, whilst blocking the original COG and SOG sentences
  3. Pass the de-jittered COG and SOG plus all of the other incoming NMEA sentences to the OpenPlotter NMEA 0143, NMEA 2000 and UDP outputs, whilst blocking the original COG and SOG sentences

Whilst I can see how the de-jittered sentences can be created, I can't see how the sentences sent to OpenCPN and the OpenPlotter outputs can be filtered.  Any help would be greatly appreciated.
Simon,

Electronic Engineer, Hobbyist Software Writer, Yachtmaster Coastal, Powerboat Instructor...
Reply
#2
how do you sugest doing this? opencpn can filter longer.

pypilot has a kalman filter that can combine IMU data with gps. This effectively gives speed and position updates at a higher frequency with much less jitter but it's not really well tested or tuned unfortunately.
Reply
#3
(2025-10-15, 11:14 PM)seandepagnier Wrote: how do you sugest doing this?  opencpn can filter longer.

pypilot has a kalman filter that can combine IMU data with gps.    This effectively gives speed and position updates at a higher frequency with much less jitter but it's not really well tested or tuned unfortunately.

I'm not sure, I had hoped that one could take the input COG and SOG, filter them and then use the filtered version rather than the original.

At present, tied to a quay wall, SOG is saying you're moving at anything between 0 and 1.5 knots depending on the jitter in the incoming satellite feed.  It's making OpenPlotter unusable.
Simon,

Electronic Engineer, Hobbyist Software Writer, Yachtmaster Coastal, Powerboat Instructor...
Reply
#4
If you are stationary but jitter in position is giving you SOG > 0 averaging SOG will only average it, not bring down to zero like it should be.
Reply
#5
(2025-10-17, 11:17 AM)tkurki Wrote: If you are stationary but jitter in position is giving you SOG > 0 averaging SOG will only average it, not bring down to zero like it should be.

True, I think what is actually needed is to filter velocity, then convert to speed. But if that's not feasible, averaging the speed (which should have more components close to zero as the jitter is not white noise) is still better than nothing.
Simon,

Electronic Engineer, Hobbyist Software Writer, Yachtmaster Coastal, Powerboat Instructor...
Reply
#6
Back to your original question: you can use the path mapper plugin to map the original value from the original source to an alternate path and then produce the filtered values with the original path and use signalk to nmea0183 to produce nmea0183 sentences.

If your input data is nmea 0183 you also need to check Suppress nmea0183 event in the connection settings. This will disable the default forwarding of all nmea 0183 inputs to tcp 10110. Then add an alternative output event and use nmea0183-to-nmea0183 to forward the sentences you want passed as is to the standard nmea0183out event that tcp 10110 is also listening on.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)