panaaj / nmeasimulator

NMEA Sentence Generator
129 stars 13 forks source link

Override Speed doesn't work for gpx playback #51

Closed sha-marsig closed 1 year ago

sha-marsig commented 1 year ago

I have a GPX file including waypoints without timestamps. I can load the GPX file and the NMEASimulator detects that the speed must be override. I set 5 knots but the simulator jumps very fast between the waypoints.

I expect the simulator calculates the distance between 2 waypoints and simulate new points between the waypoint with the given speed.

Here is my GPX file: Ship_Test_Route_01_DERSK-DEHAM.zip

panaaj commented 1 year ago

When following a track in a GPX file, the position moves from point to point based on the value set in Send data every (msec) that you have selected in Settings.

As your GPX file contains no timestamps the speed output in the NMEA stream is the value shown on the dashboard (which you can change).

If your GPX file contained timestamps then the speed output in the NMEA stream would be calculated based on the distance between points and the difference in their timestamp.

The "speed" value has no impact on the rate at which the vessel moves from point to point.

sha-marsig commented 1 year ago

Why should the point frequency in the GPX input file have a relation to the outgoing send interval? For me, these are two different things. In case the GPX file doesn't contain timestamps, it would be nice to look on the distance between two points and use the give speed to simulated NMEA frames in between.

Here is my usecase: We create tracks with Google Earth. These tracks (waypoints) will be exported as KML (the only export format on Google Earth) and then converted to GPX. The GPX file is our input file to simulate NMEA frames every second like a GPS receiver. However, since there are no timestamps in the export, we have to specify a speed.

panaaj commented 1 year ago

Why should the point frequency in the GPX input file have a relation to the outgoing send interval? For me, these are two different things.

Regardless of whether it should or shouldn't.... the current operation will output each point in the GPX sequentially at the set interval. This mimics the operation when the values are generated by the simulator, the difference being the values to send are read from the file.

panaaj commented 1 year ago

In case the GPX file doesn't contain timestamps, it would be nice to look on the distance between two points and use the give speed to simulated NMEA frames in between.

For GPX files without timestamps the decision was taken to not link a speed calculation to the output interval as this would potentially generate very high speeds at intervals of 50ms, and trying to guess the interval at which the track was recorded was not considered appropriate, so that's why the speed is manually set in this scenario.

I appreciate there may be some use cases where this does not fit, but as this is a general purpose tool it is not going to try and address all use cases.

sha-marsig commented 1 year ago

Thank you very much for your answer. I understand that not all use cases can be implemented.