根据这里对这个问题的回答:什么是测量和推断的单位,似乎从 imu 数据源(imu9)读取时间戳时,时间戳可能不是来自基本系统,而是来自其他来源. 是这样吗?
顺便说一句,有没有人幸运地将设备上的时间同步到外部设备,如 ios 或 android 设备?我知道时间是可以设定的,但似乎我总是要等一秒钟。这可能是实际发送时间值、然后处理它并返回响应需要多少个 ble 数据包发送的函数?如果是这样,是否有可能量化该时间差是多少?
更新:
在 1.7 中添加了一种获取 UTC 与相对时间差异的方法。请参阅GET /Time/Detailed -API。
Movesense 传感器有一个时钟源(32kHz 20ppm 晶体稳定低频滴答计数器),运行速度为 1024 滴答/秒。从那里计算“RelativeTime”[ms](重置后的毫秒数)。相对时间从许多传感器测量中作为时间戳返回,并且基于 xtal 稳定时钟,因此它是稳定的。由于特别是 IMU 单元(Acc/Gyro/Magn)采样由 LSM6DSL 的内部 RC 振荡器定时,时间戳的差异可能会有所不同,并且实际采样率是订阅参数中给出的标称值的 +-10%。ECG 样本是准确的,因为该芯片使用来自稳定振荡器的时钟信号。
UTC 时钟是用相对于相对时间的偏移量计算的。因此,在内部,UTC 时钟以毫秒为单位计算,而 API 则以微秒为单位,以防未来硬件具有更好的功能。
执行 PUT /Time 时,传感器使用给定的 UTC 时间计算 UTC 时钟和 RelativeTime 之间的新偏移量并将其投入使用。BLE 上的 PUT 请求需要一些时间,可以通过 PUT-GET 往返来估计。如果需要更准确的设置,可以使用 CustomGATTService 模块 (/Comm/Ble/GattSvc) 来实现更简单的时间设置服务,从而避免所有 MDS/Whiteboard 协议开销。通常 BLE 连接间隔似乎在 45ms-60ms 左右,因此无论如何都会有很多延迟。
当前发布的 Movesense 设备库没有提供一种方便的方法来找出传感器上 UTC 时间和 RelativeTime 之间的关系。然而,即将发布的 1.7 版本(几周后发布)将拥有它并简化多传感器同步。
全面披露:我为 Movesense 团队工作