51uwb.cn

标题: 为什么计算距离的时候发现Rb会比Da的值小? [打印本页]

作者: Session    时间: 2025-3-24 13:54
标题: 为什么计算距离的时候发现Rb会比Da的值小?

Ra = (double)(resp_rx_ts - poll_tx_ts);
Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);
Da = (double)(final_tx_ts - resp_rx_ts);
Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);

tof_dtu = (int64)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));
这是计算的公式,原则不是应该Ra>Db ; Rb>Da吗?  为什么会出现Rb<Da的情况?

作者: tim32    时间: 2026-5-27 13:49
我也遇到这个问题,用的官方例程,请问解决了吗?
作者: 蓝点无限    时间: 2026-6-18 06:42
这个不一定是异常。Ra/Rb/Da/Db 是四段时间差,不是固定几何边长,也不是要求必须满足 Ra>Db、Rb>Da。

它们来自两端不同的时间戳,受应答延迟、时钟漂移、32 位回绕处理影响,出现 Rb < Da 是可能的。真正要先确认的是:
1. 四个时戳是否都换算到同一单位。
2. 32 位时间戳回绕有没有补偿。
3. 有没有把不同轮次的数据串在一起。

如果 Rb < Da 频繁出现,优先检查 final_rx_ts_32、resp_tx_ts_32 的取值和回绕扩展,而不是先怀疑公式本身。




欢迎光临 51uwb.cn (https://www.51uwb.cn/) Powered by Discuz! X3.3