TOF测距原理(4)-双边TOF误差分析

1. 公式推导

        双边TOF与双向TOF计算两次TOF的平均值不同,双边TOF是基于单边TOF测量,修正了设备之间的时钟相对偏差,双边TOF流程如下:

        计算公式如下:

d = \frac{R_a-D_b*k}{2}*c\\ \ \\ k=\frac{R_a+Da}{D_b+R_b}

        在上式中若系数k=1则双边TOF计算公式与单边TOF计算公式一致,系数k为设备时钟的相对偏差系数,可通过上面两次发送时间与两次接收时间的比值计算得到。

2. 误差推导

        对双边TOF距离公式进行整理:

d = \frac{R_a-D_b*k}{2}*c\\ \ \\ k=\frac{R_a+Da}{D_b+R_b}

        整理后:

d = \frac{c}{2}*(R_a-D_b*\frac{R_a+Da}{D_b+R_b})\\ \ \\ d = \frac{c}{2}*(R_a-\frac{D_bR_a+D_bDa}{D_b+R_b})\ \ \ \\ d = \frac{c}{2}*(\frac{R_aD_b+R_aR_b-D_bR_a-D_bDa}{D_b+R_b})\\ \ \\ d = \frac{c}{2}*(\frac{R_aR_b-D_bDa}{D_b+R_b})\\

        此时仍然设定误差模型为:

\hat{R_a}=(1+e_a)*Ra\\ \ \\ \hat{D_b}=(1+e_b)*D_b\\ \ \\ \hat{R_b}=(1+e_b)*Rb\\ \ \\ \hat{D_a}=(1+e_a)*D_a

        测量值TOF:

\hat{d} = \frac{c}{2}*(\frac{\hat{R_a}\hat{R_b}-\hat{D_b}\hat{Da}}{\hat{D_b}+\hat{R_b}})\\ \ \\ \hat{d} = \frac{c}{2}*(\frac{(1+e_a)R_a(1+e_b)R_b-(1+e_b)D_b(1+e_a)D_a}{(1+e_b)D_b+(1+e_b)R_b})\\ \ \\ \hat{d} = \frac{c}{2}*(\frac{(1+e_a)R_aR_b-D_b(1+e_a)D_a}{D_b+R_b})\\ \ \\ \hat{d} = \frac{c}{2}*(\frac{e_a(R_aR_b-D_bD_a)}{D_b+R_b}) + \frac{c}{2}*(\frac{R_aR_b-D_bD_a}{D_b+R_b})\\ \ \\ \hat{d} = e_ad+d

        测量误差:

e=\hat{d}-d \\ \ \\ e = (e_ad+d) -d\\ \ \\ e=e_ad\\

3. 误差结果分析

        最终双边TOF误差仅仅存在一项,该项与单边TOF的误差的第一项相等,这部分误差与实际的距离与设备A时钟误差的绝对值相关,这部分对总的误差贡献极小,如真实距离为100米,时钟误差为20ppm(无线通信基本要求),那么这部分误差最大仅为100*20ppm约为0.2厘米,几乎可以忽略不计。这也是为什么双边TOF的测量误差理论上是最小的,在时钟精度较低下也能得到较小的测量误差。

4. 另外一种双边TOF方案

        上面的双边TOF是基于单边TOF联合设备间的时钟偏差构建距离计算公式

d = \frac{c}{2}*(\frac{R_aR_b-D_bDa}{D_b+R_b})\\

,这与一些UWB芯片提供的双边TOF距离计算公式不同,如DW1000芯片的双边TOF通过下面公式计算得到:

        在DW1000官方文档中双边TOF计算公式为:

d = c*(\frac{R_aR_b-D_bDa}{D_b+R_b+D_a+R_a})\\

        在在双向TO中F存在以下关系:

d = \frac{R_a-D_b}{2}*c\\ \ \\ d = \frac{R_b-D_a}{2}*c \ \\

        将上述两个式子分别相减整理后得到:

R_a+D_a=R_b+D_b

        将上式带入官方双边TOF公式后,仍然可得到:

d = \frac{c}{2}*(\frac{R_aR_b-D_bDa}{D_b+R_b})\\d = \frac{c}{2}*(\frac{R_aR_b-D_bDa}{D_a+R_a})\\

        与基于单边TOF联合设备间的时钟偏差构建双边距离计算公式完全一样,最终误差结果也完全一样。

5. 总结

        双边TOF测量基于单边TOF测量模型,并修正了设备之间的相对频偏,使得最终测量的理论误差极小,可做到在工程上可忽略不计,虽然双边TOF带来了更小的测量误差但是由于需要通过两次发送来估计设备的相对时钟偏差这也带来了更长的测量时长,降低了无线上的系统测量容量。

### TOF(飞行时间)中的直方图算法TOF传感器中,通过测量光脉冲发射到接收之间的时间差来计算距离。为了提高测距精度并减少环境噪声的影响,通常采用基于直方图的方法处理接收到的数据。 #### 直方图构建原理 当激光器发出短脉冲信号后,在不同延迟时间内记录反射回来的光强度形成一系列采样点。这些离散化的数据可以被整理成一个时间间隔分布表——即所谓的“直方图”。每个bin代表特定时间段内的计数值[^1]。 对于每一个像素位置p(x,y),其对应的深度d可以通过寻找最大峰值所在的位置t_max获得: \[ d(p)=\frac{c}{2} \cdot t_{max}(p) \] 其中\( c \)表示光速常量。 #### 噪声抑制技术 实际应用中不可避免会遇到各种类型的干扰源,因此需要采取措施增强系统的鲁棒性。一种常见做法是在累积多个周期后的平均化操作基础上进一步引入阈值过滤机制去除异常高的尖峰;另一种则是利用双边滤波器平滑曲线的同时保持边缘特征不变。 ```python import numpy as np def tof_histogram(data, bins=256): """ 构建TOF直方图 参数: data : ndarray 输入的一维或多维数组形式原始ToF数据. bins : int 统计区间数量,默认为256. 返回: hist : ndarray 计算得到的距离直方图. """ # 将输入data转换为一维向量以便统计 flat_data = data.flatten() # 创建指定范围内的均匀划分区间 bin_edges = np.linspace(0., 1.e-7 * (bins - 1), num=bins) # 使用numpy.histc函数快速求解频数分布 counts, _ = np.histogram(flat_data, bins=bin_edges) return counts def find_peak(hist): """查找直方图中最显著的峰值""" peak_index = np.argmax(hist) return peak_index ``` 上述Python代码实现了基本的TOF直方图创建功能以及简单的峰值检测逻辑。需要注意的是这只是一个简化版本,在真实场景下可能还需要考虑更多因素如温度补偿、多路径效应校正等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值