UWB校准(矫正天线延时)

发布时间:2024年01月18日

UWB校准(矫正天线延时)

校准

超宽带(UWB)技术的校准是一个重要的过程,确保设备的测距和定位功能准确无误。UWB设备通过发送和接收短暂的脉冲信号来测量距离,校准过程涉及多个步骤和因素,包括天线延迟、环境因素、硬件异质性等。下面是UWB校准的一般步骤和注意事项:

1. 理解UWB测距原理

  • UWB定位通常通过测量信号传播时间(Time of Flight, ToF)来确定距离。信号从一个设备发送到另一个设备,测量它的传播时间可以计算出距离。这需要非常精确的时间测量。

2. 天线延迟校准

  • 天线延迟是指信号从发射器产生到真正离开天线这段时间内的延迟。同样,接收器端也有类似的延迟。这些延迟需要通过校准来准确地测量和补偿。
  • 校准过程中,你可能需要使用已知距离的标准设备,通过实验测量来确定延迟时间,并在设备中设置相应的延迟值。

3. 环境影响和多径效应

  • UWB信号在不同环境中的传播会受到多种因素的影响,如反射、折射和散射(统称为多径效应)。校准时应考虑到这些环境因素,有时需要在特定环境下进行现场校准。
  • 可以使用算法来识别和消除这些多径效应对测量结果的影响。

4. 硬件异质性

  • 不同的UWB设备之间可能存在硬件差异,这些差异会影响测量的准确性。校准过程中,应该考虑每个设备的特性,并进行个体校准。

5. 校准方法

  • 单点校准:在一个已知距离下校准天线延迟。
  • 双点或多点校准:在多个距离点进行校准,以更精确地确定天线延迟和其他参数。
  • 软件校准:使用算法和统计方法来优化测量结果,比如通过滤波和误差修正算法。

6. 持续校准和监控

  • UWB系统可能会因时间、温度变化等因素导致参数漂移。因此,定期校准和系统性能监控是确保长期准确性的关键。

注意事项:

  • 精确的UWB校准需要专业的设备和技术知识。通常,设备制造商会提供校准指南和工具。
  • 校准过程应在控制的环境中进行,以减少外部干扰。
  • 考虑到UWB设备和应用的多样性,校准策略可能需要根据具体情况进行调整。

UWB校准是一个复杂但至关重要的过程,确保了系统的精确性和可靠性。无论是在初次部署还是日常维护中,适当的校准都是保证系统性能的关键。

矫正天线延时

超宽带(UWB)技术中,矫正天线延时是确保精确距离测量的关键步骤。天线延时是指信号从天线发射器端到接收器端传播的时间延迟。如果不进行矫正,这些延时会导致距离测量的误差。以下是UWB技术中矫正天线延时的步骤和方法:

1. 测量天线延时

  • 实验测量:在已知距离上设置两个UWB设备,通过测量发送和接收信号之间的时间差来确定实际的天线延时。这通常在控制环境中进行,以减少误差。
  • 利用标准设备:使用具有已知天线延时的标准设备作为参考,通过比较来矫正其他设备的天线延时。

2. 设置和调整延时

  • 直接设置:在UWB设备的固件或软件中直接设置天线延时参数。这些参数通常在设备的初始化过程中设置。
  • 动态调整:在运行时根据环境条件或设备性能动态调整天线延时参数。

3. 矫正方法

  • 单点矫正:在一个固定距离上进行天线延时矫正。这是最简单的矫正方法,适用于环境和设备较为稳定的场景。
  • 多点矫正:在多个距离点进行矫正,以获得更广泛和精确的延时矫正。这种方法适用于要求高精度的应用。

4. 软件和算法矫正

  • 时间戳修正:利用算法对收到的信号的时间戳进行修正,考虑天线延时和其他可能的时延因素。
  • 滤波和优化:使用滤波技术和数学优化方法减少误差,提高天线延时矫正的准确性。

5. 考虑环境和设备因素

  • 温度影响:温度变化会影响电子设备的性能,包括天线延时。需要考虑温度对延时的影响,并进行相应的矫正。
  • 硬件差异:即使是同型号的UWB设备,由于制造公差等因素,也会有微小的天线延时差异。每个设备可能都需要单独矫正。

6. 持续监控和调整

  • 定期校准:随着时间的推移,设备的性能可能会发生变化,定期进行天线延时的校准和矫正是必要的。
  • 实时监控:在一些高精度应用中,可能需要实时监控和调整天线延时。

通过上述步骤和方法,UWB系统可以有效地矫正天线延时,确保距离测量的准确性和系统的可靠性。这对于定位、导航、跟踪等应用至关重要。在实际应用中,选择适合特定场景和要求的矫正方法和策略是非常重要的。

相关函数

dwt_setrxantennadelay(RX_ANT_DLY)dwt_settxantennadelay(TX_ANT_DLY)这两个函数调用主要在以下时刻起作用:

1. 设备初始化或配置阶段

  • 启动时:在UWB设备首次启动或重置时,作为初始化序列的一部分进行设置。这是为了确保在设备开始进行任何通信或测量之前,所有的时间延迟校正已经到位。
  • 配置修改:当设备的工作参数(如工作频率、发射功率等)发生变化,可能需要重新设置天线延时以适应新的工作条件。

2. 校准过程

  • 校准时:在进行系统校准,特别是在测量并确定最佳天线延时值时,这些函数会被调用以更新延时设置。这通常涉及到实际测量和调整,以确保延时值反映了当前的硬件和环境条件。

3. 实时操作中

  • 动态调整:尽管不太常见,但在一些高级应用中,如果UWB设备能够实时监测和评估其性能,它可能会根据环境或其他因素的变化动态地调整天线延时设置。

起作用的时机和影响

  • 影响通信和测距:一旦设置,这些天线延时值就会在UWB设备的所有后续通信和距离测量中起作用。每次设备发送或接收信号时,相关的天线延时都会被考虑在内,以确保时间戳的准确性。
  • 持续效果:设置完成后,除非被再次修改,这些延时值通常会保持有效,影响设备的所有操作周期。

简而言之,dwt_setrxantennadelaydwt_settxantennadelay主要在设备的初始化或配置阶段设置一次,之后它们就在设备的每次操作中持续发挥作用,确保每次测量和通信的时间准确性和可靠性。

作用过程

dwt_setrxantennadelay(RX_ANT_DLY)dwt_settxantennadelay(TX_ANT_DLY)这两个函数调用主要在以下时刻起作用:

1. 设备初始化或配置阶段

  • 启动时:在UWB设备首次启动或重置时,作为初始化序列的一部分进行设置。这是为了确保在设备开始进行任何通信或测量之前,所有的时间延迟校正已经到位。
  • 配置修改:当设备的工作参数(如工作频率、发射功率等)发生变化,可能需要重新设置天线延时以适应新的工作条件。

2. 校准过程

  • 校准时:在进行系统校准,特别是在测量并确定最佳天线延时值时,这些函数会被调用以更新延时设置。这通常涉及到实际测量和调整,以确保延时值反映了当前的硬件和环境条件。

3. 实时操作中

  • 动态调整:尽管不太常见,但在一些高级应用中,如果UWB设备能够实时监测和评估其性能,它可能会根据环境或其他因素的变化动态地调整天线延时设置。

起作用的时机和影响

  • 影响通信和测距:一旦设置,这些天线延时值就会在UWB设备的所有后续通信和距离测量中起作用。每次设备发送或接收信号时,相关的天线延时都会被考虑在内,以确保时间戳的准确性。
  • 持续效果:设置完成后,除非被再次修改,这些延时值通常会保持有效,影响设备的所有操作周期。

简而言之,dwt_setrxantennadelaydwt_settxantennadelay主要在设备的初始化或配置阶段设置一次,之后它们就在设备的每次操作中持续发挥作用,确保每次测量和通信的时间准确性和可靠性。

实际代码中的体现

这段代码是一个用于UWB(超宽带)通信的接收器程序,特别是处理和响应不同类型的消息,计算飞行时间(ToF),并据此计算距离。在这个过程中,天线延时的矫正在测量飞行时间和计算距离时起到了重要作用。下面是详细解释这些天线延时在哪里起作用:

天线延时的使用

  1. 飞行时间(ToF)计算

    • 在代码中,ToF的计算涉及到多个时间戳,包括poll_rx_ts, resp_tx_ts, final_rx_ts, poll_tx_ts, resp_rx_ts, 和 final_tx_ts。这些时间戳代表了不同阶段的发送和接收时间点。
    • ToF计算使用这些时间戳来确定信号从发送到接收所经历的总时间,但这个时间需要考虑发送和接收天线的固有延时。
  2. 距离计算

    • 计算得到的ToF会乘以光速(SPEED_OF_LIGHT)来计算出实际的距离,但这个距离是原始的,没有考虑天线延时造成的误差。
    • distance_temp = tof * SPEED_OF_LIGHT 这行代码计算了基于ToF的原始距离。
  3. 天线延时矫正应用

    • 在计算最终距离时,代码使用了dwt_getrangebias函数来矫正基于通道(config.chan)和脉冲复发频率(config.prf)的距离偏差,这实际上是在考虑了天线特性和环境因素后对距离的一个修正。
    • distance[msg_f_send.destAddr[0]] = distance_temp - dwt_getrangebias(config.chan,(float)distance_temp, config.prf); 这行代码应用了距离矫正,其中天线延时是距离偏差矫正的一部分。

代码中的相关标记

  • 然而,具体的天线延时值(RX_ANT_DLYTX_ANT_DLY)设置通常在程序的初始化部分,可能在其他文件或设置中定义。在这个具体的代码片段中,没有直接调用dwt_setrxantennadelaydwt_settxantennadelay,但是我们可以假设这些函数在某个地方被调用,以确保天线延时被正确设置和应用于ToF和距离的计算中。

总结

在UWB通信和距离测量中,正确设置和应用天线延时是确保精确测量的关键。虽然在这段代码中没有直接看到dwt_setrxantennadelaydwt_settxantennadelay的调用,它们在初始化设备时设定的值会影响整个测距过程,特别是在计算飞行时间和进行距离矫正时。天线延时的正确设置和矫正,确保了测量结果的准确性和可靠性,对于UWB应用来说至关重要。

代码中的体现

resp_tx_ts = get_tx_timestamp_u64();
                    final_rx_ts = get_rx_timestamp_u64();

                    /* Get timestamps embedded in the final message. */
                    final_msg_get_ts(&msg_f->messageData[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);
                    final_msg_get_ts(&msg_f->messageData[FINAL_MSG_RESP_RX_TS_IDX], &resp_rx_ts);
                    final_msg_get_ts(&msg_f->messageData[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts);

                    /* Compute time of flight. 32-bit subtractions give correct answers even if clock has wrapped. See NOTE 10 below. */
                    poll_rx_ts_32 = (uint32)poll_rx_ts;
                    resp_tx_ts_32 = (uint32)resp_tx_ts;
                    final_rx_ts_32 = (uint32)final_rx_ts;
                    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));

                    tof = tof_dtu * DWT_TIME_UNITS;
                    distance_temp = tof * SPEED_OF_LIGHT;
                    distance[msg_f_send.destAddr[0]] = distance_temp - dwt_getrangebias(config.chan,(float)distance_temp, config.prf);//距离减去矫正系数
#if 0 //如果一个标签可以打开kalman滤波
										distance[msg_f_send.destAddr[0]] =  KalMan(distance[msg_f_send.destAddr[0]]);
#endif

让我们再次分步骤来理解天线延时是如何被矫正的,具体到操作和原理:

1. 理解天线延时:
  • 天线延时是指信号在通过天线(发送或接收)时的固有时间延迟。这包括信号在天线电路中传播的时间,以及可能的任何信号处理延迟。
2. 测量天线延时:
  • 测量方式:通常,天线延时通过实验方法确定。这可能包括设置两个UWB设备在已知固定距离上进行通信,然后测量信号往返时间。通过与理论往返时间进行比较,可以确定天线延时。
  • 提供值:有时,天线的延时值可能直接由设备制造商提供,作为硬件规格的一部分。
3. 应用天线延时矫正:
  • 设置延时值:一旦确定了天线延时值,这个值需要被设置到UWB设备中。在你的代码中,这通常是通过在初始化过程中调用特定的函数(如dwt_setrxantennadelaydwt_settxantennadelay)来完成的,但在你提供的代码段中,我们没有看到这些函数的直接调用。
  • 调整计算:在计算飞行时间(ToF)和相应的距离时,软件会根据设置的天线延时值来调整这些计算。具体来说,它会从测量到的原始飞行时间中减去(或加上)天线延时,从而得到矫正后的飞行时间,进一步计算出矫正后的距离。
4. 矫正过程在代码中的体现:
  • 偏差值应用:在你提供的代码中,天线延时矫正主要体现在使用dwt_getrangebias函数计算的偏差值上。这个函数根据配置的通道、预测距离和PRF等参数返回一个偏差值。尽管这个函数名为“range bias”,但通常它考虑了包括天线延时在内的多种因素。
  • 计算修正距离:代码中通过从原始计算距离中减去这个偏差值来修正距离,间接地考虑了天线延时的影响。
5. 为什么称为间接矫正:
  • 间接:之所以说间接,是因为矫正不是在每次通信时直接从信号时间中减去一个单独计算的延时值,而是使用一个预先确定的、综合考虑了多种因素的偏差值。这个偏差值通常在设备初始化时设置,并在所有后续操作中使用。

通过上述步骤,软件确保了飞行时间的计算和相应的距离测量考虑了天线延时,从而提高了测量的准确性。在实际的UWB系统中,准确的矫正对于确保高精度的距离测量至关重要。希望这次解释能让你更清楚地理解天线延时是如何被矫正的。

公式

在这里插入图片描述

这张图展示了在双向测距(TWR)过程中两个设备之间的时间戳交互。设备A和设备B交替发送和接收消息,通过这些消息的发送和接收时间来计算信号的传播时间。下面是对图中所示过程的详细解释:

设备和消息流:
  • 设备A:通常是发起通信的设备,也被称为发起者(Initiator)。
  • 设备B:是响应通信的设备,也被称为应答者(Responder)。
时间戳和时间间隔:
  • ( T r o u n d 1 T_{round1} Tround1?):这是设备A发送第一个消息(通常是轮询消息)到设备B接收并响应(发送回复消息)之间的时间间隔。
  • ( T r e p l y 1 T_{reply1} Treply1?):这是设备B接收轮询消息后到它发送回复消息之间的时间间隔,也就是设备B的处理时间。
  • ( T r o u n d 2 T_{round2} Tround2?):这是设备B发送回复消息到设备A接收并发送最终消息(Final message)的时间间隔。
  • ( T r e p l y 2 T_{reply2} Treply2?):这是设备A接收回复消息后到它发送最终消息的时间间隔,也就是设备A的处理时间。
  • ( T p r o p T_{prop} Tprop?):这是信号实际在空中传播的时间,也就是我们需要计算的时间飞行(Time of Flight, ToF)。在图中,它被表示为从设备A的TX(发射)到设备B的RX(接收),再到设备B的TX(发射)和设备A的RX(接收)的传播时间。
TWR计算过程:
  1. 设备A向设备B发送一个轮询消息。
  2. 设备B在接收到轮询消息后经过一段( T r e p l y 1 T_{reply1} Treply1?)的处理时间,然后发送一个回复消息给设备A。
  3. 设备A接收到回复消息后,同样经过一段( T r e p l y 2 T_{reply2} Treply2?)的处理时间,发送一个最终消息给设备B。
  4. 设备B接收最终消息,并记录时间戳。

通过上述步骤,我们可以获得四个关键的时间戳,这些时间戳可以用来计算两个设备之间的距离。具体的计算方法依赖于( T r o u n d 1 T_{round1} Tround1?), ( T r e p l y 1 T_{reply1} Treply1?), ( T r o u n d 2 T_{round2} Tround2?), 和 ( T r e p l y 2 T_{reply2} Treply2?)的值,结合起来可以通过一系列的数学计算来提取出( T p r o p T_{prop} Tprop?)的值。

总结:

这张图以图形方式表达了在UWB系统中进行双向测距时的关键时间间隔,这些时间间隔是计算两个设备之间距离的基础。通过正确地计算这些时间间隔,并将设备内部处理时间排除,我们可以准确地得到信号的传播时间,从而测量出准确的距离。

在这里插入图片描述

这张图展示的是双向测距(Two-Way Ranging, TWR)中计算信号传播时间(propagation time, ( \hat{T}_{prop} ))的公式。这个公式是为了从几个不同的时间戳中提取出信号在空中传播的时间。下面是各个变量的含义和公式的解释:

变量定义:
  • ( T r o u n d 1 T_{round1} Tround1? ):第一轮往返的时间,即发起者发送轮询(Poll)消息到接收到应答者响应(Response)消息的时间。
  • ( T r o u n d 2 T_{round2} Tround2? ):第二轮往返的时间,即应答者发送响应消息到发起者发送最终(Final)消息并被应答者接收的时间。
  • ( T r e p l y 1 T_{reply1} Treply1? ):应答者接收轮询消息到发送响应消息的时间。
  • ( T r e p l y 2 T_{reply2} Treply2?):发起者接收响应消息到发送最终消息的时间。
公式解释:

公式中,信号传播时间 ( T ^ p r o p \hat{T}_{prop} T^prop? ) 被计算为:

[ T ^ p r o p = ( T r o u n d 1 × T r o u n d 2 ) ? ( T r e p l y 1 × T r e p l y 2 ) ( T r o u n d 1 + T r o u n d 2 + T r e p l y 1 + T r e p l y 2 ) \hat{T}_{prop} = \frac{(T_{round1} \times T_{round2}) - (T_{reply1} \times T_{reply2})}{(T_{round1} + T_{round2} + T_{reply1} + T_{reply2})} T^prop?=(Tround1?+Tround2?+Treply1?+Treply2?)(Tround1?×Tround2?)?(Treply1?×Treply2?)? ]

这个公式如何运作的呢?

  1. 分子:( ( T r o u n d 1 × T r o u n d 2 ) ? ( T r e p l y 1 × T r e p l y 2 T_{round1} \times T_{round2}) - (T_{reply1} \times T_{reply2} Tround1?×Tround2?)?(Treply1?×Treply2?) ) 是两轮往返时间的乘积减去两个回复时间的乘积。这样做是为了移除来自设备内部处理的时间,只保留信号在空中传播的时间。

    这张图展示了在双向测距(TWR)过程中两个设备之间的时间戳交互。设备A和设备B交替发送和接收消息,通过这些消息的发送和接收时间来计算信号的传播时间。下面是对图中所示过程的详细解释:

    设备和消息流:

    • 设备A:通常是发起通信的设备,也被称为发起者(Initiator)。
    • 设备B:是响应通信的设备,也被称为应答者(Responder)。

    时间戳和时间间隔:

    • ( T r o u n d 1 T_{round1} Tround1?):这是设备A发送第一个消息(通常是轮询消息)到设备B接收并响应(发送回复消息)之间的时间间隔。
    • ( T r e p l y 1 T_{reply1} Treply1?):这是设备B接收轮询消息后到它发送回复消息之间的时间间隔,也就是设备B的处理时间。
    • ( T r o u n d 2 T_{round2} Tround2?):这是设备B发送回复消息到设备A接收并发送最终消息(Final message)的时间间隔。
    • ( T r e p l y 2 T_{reply2} Treply2?):这是设备A接收回复消息后到它发送最终消息的时间间隔,也就是设备A的处理时间。
    • ( T p r o p T_{prop} Tprop?):这是信号实际在空中传播的时间,也就是我们需要计算的时间飞行(Time of Flight, ToF)。在图中,它被表示为从设备A的TX(发射)到设备B的RX(接收),再到设备B的TX(发射)和设备A的RX(接收)的传播时间。

    TWR计算过程:

    1. 设备A向设备B发送一个轮询消息。
    2. 设备B在接收到轮询消息后经过一段(T_{reply1})的处理时间,然后发送一个回复消息给设备A。
    3. 设备A接收到回复消息后,同样经过一段(T_{reply2})的处理时间,发送一个最终消息给设备B。
    4. 设备B接收最终消息,并记录时间戳。

    通过上述步骤,我们可以获得四个关键的时间戳,这些时间戳可以用来计算两个设备之间的距离。具体的计算方法依赖于( T r o u n d 1 T_{round1} Tround1?), ( T r e p l y 1 T_{reply1} Treply1?), ( T r o u n d 2 T_{round2} Tround2?), 和 ( T r e p l y 2 T_{reply2} Treply2?)的值,结合起来可以通过一系列的数学计算来提取出(T_{prop})的值。

    总结:

    这张图以图形方式表达了在UWB系统中进行双向测距时的关键时间间隔,这些时间间隔是计算两个设备之间距离的基础。通过正确地计算这些时间间隔,并将设备内部处理时间排除,我们可以准确地得到信号的传播时间,从而测量出准确的距离。

  2. 分母:( ( T r o u n d 1 + T r o u n d 2 + T r e p l y 1 + T r e p l y 2 T_{round1} + T_{round2} + T_{reply1} + T_{reply2} Tround1?+Tround2?+Treply1?+Treply2?) ) 是所有时间的总和,用于规范化分子,从而得到单程的传播时间。

    在双向测距(TWR)的上下文中,为了计算信号的单程传播时间,我们不仅要知道信号在空中传播的总时间,还要能够从中分离出单个传播路径的时间。在TWR交互过程中,有两轮通信往返,每一轮都包含了信号的传播时间和设备处理时间。为了提取出纯粹的信号传播时间,我们需要做一些数学上的操作。

    分母的作用在于提供一个规范化的因子,它是以下四个时间段的总和:

    • ( T r o u n d 1 T_{round1} Tround1? ):第一轮从设备A发送轮询消息到设备B接收这一消息的时间。
    • ( T r o u n d 2 T_{round2} Tround2? ):第二轮从设备B响应消息到设备A接收这一响应的时间。
    • ( T r e p l y 1 T_{reply1} Treply1? ):设备B接收轮询消息并处理完毕后响应所花费的时间。
    • ( T r e p l y 2 T_{reply2} Treply2?):设备A接收响应消息并处理完毕后发送最终消息所花费的时间。

    将这些时间段加起来,我们得到了整个TWR交互过程中所有时间的总和。这个总和被用作分母,以便将分子中的时间乘积转换为单程传播时间。分子中的时间乘积表达了信号传播时间和设备处理时间的复合效应,但我们感兴趣的是纯粹的信号传播时间,因此需要进行规范化处理。

    规范化操作的数学逻辑如下:

    • 通过将分子中的时间乘积除以时间总和,我们有效地将总的往返时间调整为一个单程时间。这是因为分子中包含了两次传播时间的乘积,而分母则是两个往返时间加上两个回复时间的总和。
    • 由于在理想情况下,两个回复时间(( T r e p l y 1 T_{reply1} Treply1? ) 和 ( T r e p l y 2 T_{reply2} Treply2? ))相对于往返时间(( T r o u n d 1 T_{round1} Tround1? ) 和 ( T r o u n d 2 T_{round2} Tround2? ))较小,可以认为分母中的总和主要由往返时间组成,从而使我们能够通过这个比例获得单程的传播时间。

    最终,这个计算出的单程传播时间 ( T ^ p r o p \hat{T}_{prop} T^prop? ) 是信号从设备A传播到设备B的时间,它是距离测量的基础。通过这个时间和光速的乘积,我们可以计算出设备A和设备B之间的距离。

  3. 整体公式:通过这种计算方式,我们可以剔除非信号传播时间,如处理或等待时间,只提取出信号实际在空中传播的时间。

物理意义:
  • 在TWR通信中,信号从一个设备发送到另一个设备,然后返回,这个过程中包括了信号的传播时间和设备处理消息的时间。
  • 为了精确测量距离,我们需要提取出纯粹的信号传播时间,并排除任何设备内的延迟。
  • 该公式就是为了提取这个纯粹的传播时间,使得基于时间飞行(ToF)的距离测量更加准确。

通过应用这个公式,我们可以计算出信号的单程传播时间,进而计算出发起者和应答者之间的距离。这是UWB定位和导航系统中精确测距的基础。

文章来源:https://blog.csdn.net/m0_73640344/article/details/135612357
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。