GnssClock 方法 getFullBiasNanos 在每次回调时返回一个递减的数字,而根据定义它应该增加

问题描述 投票:0回答:2

public long getFullBiasNanos ()
类中的方法
GnssClock
定义为:

GPS内部硬件时钟(getTimeNanos())的区别 接收器和自 1980 年 1 月 6 日 0000Z 以来的真实 GPS 时间 纳秒。

所以我假设每次我都会收到 gnss 测量的回调事件(我从中提取 gnss 时钟),这个数字将会增长,因为后续调用在后续时间到达,因此接收到的测量的时间会更大(我们自然会远离 1980 年,而不是走向它)
然而情况似乎并非如此,这是我在应用程序运行时获得的两个读数(第一个和最后一个):(附有日期和时间戳)
第一个是14:11:40

2022-07-06 14:11:40.985 12285-12304/com.example.gnss1 I/aabaab:完整 纳米偏差:-1340320027695657699

最后一次是14:13:40

2022-07-06 14:13:40.040 12285-12304/com.example.gnss1 I/aabaab:已满 纳米偏差:-1340320027695649792

正如你所看到的,在应用程序运行了整整2分钟后,

getFullBiasNanos()
的结果并没有增加,它实际上减少了几千纳秒,而它应该增加数千亿纳秒-秒。
我错过了什么?
先谢谢你了

android android-location android-gps android-gnss real-time-kinematic
2个回答
0
投票

不是完整的解决方案,但可能是其中的一部分:

gnssClock.getTimeNanos()
检索自重启以来直到卫星发出的 gnss 测量值所经过的纳秒数,
gnssClock.getFullBiasNanos()
则检索 GPS 纪元(1980)之间的纳秒数,直到重新启动。
这些值共同创建了从 gps 历元 (1980) 到 gnss 测量结果到达手机的时间。
如果有人对此有更好的理解,请告诉我


0
投票

解释就像getFullBiasNanos的官方文档一样。我想补充的是,这种方法应该反映本地GNSS接收器时钟和GPS时钟之间的相对稳定性。通常,每个 GnssMeasurementsEvent.Callback 之间的持续时间应为 1 秒。如果您记录 GnssMeasurementsEvent(您可以参考 GNSSLogger android 应用程序),

gnssClock.getTimeNanos()
间隔是完美的 1 秒。本地 GNSS 接收器时钟无法达到如此高精度。同时,
gnssClock.getFullBiasNanos()
间隔波动,其值小于1us。结合这两个值,估计的 GPS 时间应具有美国级精度。欢迎更多关于GnssClock的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.