30

我最近知道目录gps.conf中有一个文件/system/etc/。似乎将 NTP_SERVER 值调整到更靠近通常位置的 NTP 服务器可以提高 TTFF。

阅读课堂上的源代码LocationProvider,似乎在启动时,时间是从 NTP 服务器检索并在计算中“注入”的。AFAIK 每个 GPS 卫星都有一个非常精确的原子钟,并且星座中的每一个都与所谓的“GPS 时间”同步。一旦接收器获得 4 颗或更多卫星,它就会(通过某种方法)求解一个方程,其中有四个未知数:x、y、z、b;其中 (x,y,z) 是接收器位置,b 是接收器内部时钟与(正确的)GPS 时间之间的时间差。一旦它得到修复,接收器时钟就会与正确的时间同步。(如果我错了,请纠正我)。

到目前为止,我对 NTP 时间注入的工作方式有一些疑问:

  1. GPS 时间大致是 TAI(国际原子时间)加上偏移量。这两个时间不取决于地球自转,但是 UTC 确实如此。鉴于 NTP 服务器返回 UTC 时间,是否可以从 UTC 时间推断 GPS 时间?
  2. 从较近的服务器检索 NTP 时间如何提高 GPS 时间近似的“质量”?
  3. 假设我们有一个初始 GPS 时间值(以某种方式从 NTP 时间推断),注入是关于什么的?这个时间值是否被认为是正确求解只有 x,y,z 作为未知数的方程?如果是这样,那么第一个修复也只是一个近似值,不是吗?
  4. GPS 时间的更高质量初始近似值如何提高 TTFF?是否因为 NTP 时间质量较低,第一次修复被认为是不可接受的并被丢弃?
  5. 有一个近似的初始位置是否有助于检索下一个正确的修复(比如只听一个 sats 的子集)?
4

3 回答 3

23

好吧,搜索一些维基百科和其他一些来源,让我有一些猜测。

  1. 是的,您可以从 UTC 时间推断 GPS 时间。您只需要知道偏移量,它每 15 秒传输一次,并在大约 18 个月内更改一次。资料来源:维基百科

  2. NTP 不会给你准确的时间。它测量消息从客户端到服务器的时间以及响应从服务器到客户端的时间。然后使用这些时间来计算连接的延迟。然后将其用作接收时间的偏移量。这适用于对称路线。如果路由不对称,则存在错误。所以离服务器越近,不对称的机会和水平就越低,从而降低错误。来源:维基百科

  3. NTP 信号不直接用于获取 GPS 定位。但要获得准确的修复,您需要非常准确的时钟。我们在这里谈论的是纳秒。GPS 卫星确实传输当前 GPS 时间,但即使它以光速传播,也会有一些延迟。GPS接收器无法知道延迟是多少,因此它必须从几个接收到的信号中进行近似。每次接收到传输时,时钟都会变得更加精确。因此,您在开始时拥有的时间越好,您必须接收的时间信号就越少才能获得准确的时钟。资料来源:维基百科

  4. 很好,在 3 中进行了解释。 - 时钟误差越低,近似正确时间所需的信号就越少。

  5. 我在这里几乎没有猜测,但是拥有大概的位置可以帮助您更好地估算与卫星的距离,从而估算延迟。(不确定是否真的使用过。)

我希望它至少有点意义;-)

于 2011-12-07T23:16:51.207 回答
3

我的回答将更多地集中在您问题的 NTP 方面。对于 GPS,我研究了 mirabilos 的评论中提到的这篇 PDF 论文。

根据该文件,对于GPS 接收器的热启动,您需要知道 20 秒以内的时间、100 公里以内的位置、25 米/秒以内的速度以及最多几周前的历书数据。您仍然需要从每颗卫星下载星历数据,这需要 30 秒到 3 分钟,具体取决于 GPS 接收器类型。

对于热启动,您还需要星历数据(它们的有效期为 4 小时)。它们也可通过 A-GPS 获得(见下文)。

NTP 协议使用从原始时间源开始的服务器层次结构 - GPS、原子钟……这称为stratum-0 源。直接连接到此源的 NTP 服务器称为stratum-1。使用它作为上游服务器的服务器是stratum-2,依此类推。即使对于第 1 层服务器(由于 CPU 中断延迟、串行端口延迟、温度振荡器变化),您也需要特殊的调整硬件来实现小于 1 毫秒的错误。

使用普通网络上的普通硬件(例如不饱和的 DSL 链路),您可以获得大约 10 毫秒的准确度。例如,如果 NTP 池的时间精确在 100 毫秒内,则NTP 池认为其服务器有效且足够好。NTP 时间的准确性不取决于您和 NTP 服务器之间的地理位置,而更多地取决于该服务器的层次、质量以及服务器基于网络拓扑的距离。

Android 手机通常知道时间至少在 1 秒以内。通过 GSM 网络的定期时间同步,或者如果数据连接(wifi 或蜂窝)可用,也可以通过 NTP。

对于提到的应用程序FasterGPS - 将您的 NTP 服务器更改为更好的服务器不会帮助您获得更快的 TTFF。为此,您需要在纳秒内获得精确的时间,而这通过 NTP 是不可能的。只有 GPS 芯片本身能够以这种精度跟踪时间。对 android 有更快的 TTFF 有什么帮助是:

  • 您已经在 20 秒内在您的 Android 手机上度过了愉快的时光
  • 通过 Wifi 或 GS​​M 网络获得大致位置(基于传输塔的几公里内)
  • 使用A-GPS - 它通过互联网下载所有 GPS 卫星的年历和星历的新副本,因此您无需从 GPS 卫星下载它(星历需要 30 秒,年历需要 15 分钟)。使用 A-GPS,您可以使用热启动并让 TTFF 低于 10 秒。
于 2015-06-15T08:19:56.467 回答
2

Ian 在他的评论中是正确的,答案与 GPS 接收器的实际工作方式有关。如果接收器对接收器时钟偏差有更准确的估计,接收器将更快地找到解决方案。许多接收器实施依赖于接收器位置和时钟偏差的初始估计的迭代解决方案。如果这些估计值已经接近真实值,那么将需要更少的迭代。这只是 TTFF 会减少的部分原因。还有其他重要因素。如果初始位置和时间估计是好的,

于 2014-04-16T10:10:11.180 回答