0

这个人类似,我一直在尝试将 GPS 时间从 Pixhawk 获取到 Raspberry Pi 配套计算机中。

在尝试该@vehicle.on_message('SYSTEM_TIME')方法之前,我使用通配符来捕获所有消息并将结果转储到文件中。检查文件,我看到我从 GPS 获得的唯一类型的消息是GPS_RAW_INT。最重要的是,我没有收到SYSTEM_TIME_UTC消息,根据文档,该消息从 GPS 获取 UTC 时间。

现在,使用正常的@vehicle.on_message('SYSTEM_TIME')作品,我得到了一些东西。然而,那是什么东西?文档声称它是:

系统时间是主时钟的时间,通常是主车载计算机的计算机时钟。

好的,我认为“主要车载计算机”是 Pixhawk。但是,如果没有包含它的 GPS 消息,它如何获取时间。GPS_RAW_INT携带任何时间信息。

进一步调查,我编写了以下处理程序:

@vehicle.on_message('SYSTEM_TIME')
def listener(self, name, message):
    rpi_time = time.time()
    mavlink_time = float(message.time_unix_usec)/1000000
    print( str(rpi_time) + " - " + str(mavlink_time) + " = " + str(rpi_time-mavlink_time) )

rpi_time来自 Raspberry Pi 并且是正确的,因为它是由 NTP 在启动时设置的。我想验证mavlink_time(我认为它必须是基于 GPS 的时间)会非常接近。我错了。

多次运行,我注意到,起初,GPS 时间总是提前两秒左右。随着时间的流逝,它落后了。样本输出:

1483754011.89 - 1483754014.72 = -2.83385300636
1483754012.16 - 1483754014.96 = -2.79546308517
1483754012.44 - 1483754015.2 = -2.75652289391
...
1483754154.69 - 1483754044.5 = 110.186414957
1483754173.72 - 1483754044.76 = 128.95413518
1483754184.04 - 1483754045.02 = 139.016195059

在这种情况下,rpi_time(这是正确的)表示已经过去了 172 秒,mavlink_time 声称只有 30 秒。其他试验显示出巨大的变化(差异绝不是固定的)。

所以,我的问题是:

  1. SYSTEM_TIME消息基于什么?实际上,它只能是 GPS(这是 Pixhawk 唯一可用的时间数据),但如果是这样的话......
  2. 为什么它如此不准确,为什么我也没有收到SYSTEM_TIME_UTC消息?
4

1 回答 1

0
  1. 是的,系统时间基于 GPS。

  2. 你在里面做测试吗?GPS 模块一起计算位置、速度和时间。如果它没有一个好的锁,它可能不会产生一个好的时间。

我认为该SYSTEM_TIME_UTC消息已被弃用。

于 2017-01-09T00:56:24.060 回答