This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AWR1642:方位角静态热图格式

Guru**** 2595805 points
Other Parts Discussed in Thread: AWR1642

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/602184/awr1642-azimuth-static-heatmap-format

器件型号:AWR1642

你(们)好

我想使用方位角静态 热图来估算所有 RX 天线的目标反射无线电相位、这样我就可以使用相位差来计算更精确的目标到达角。 但我看一下演示文档、 它只是显示以下信息、但我不知道每个范围和虚拟天线的复杂信息序列。 例如、我使用 AWR1642 SRR 配置文件、我从 TLV 元件获取的这些热图的长度为8192字节、因此如果距离 FFT 大小为256、则表示虚拟天线的数量为8。 我的问题是:

(1)热图的数据序列为 R1[0]、R2[0]、R3[0]、R4[0]、R1[1]、R2[1]…… R1[255]、R2[255]、R3[255]、R4[255]、VR1[0]、...... ? 或其他格式?

(2)我得到的热图是4096个复杂信息、0~2047复杂数据有值、但2048 ~4095全为零、这是正确的吗?

(3)如果我想获取距离门指数为100的目标、这是否意味着我可以从 R1的复数[100* 4]、R2的复数[100*4+1]获取的每个天线的相位?  

(4)我能否使用每个天线的不同相位来获取 ASIN (DeltaPhasy* Landa/(2 * pi&d))的目标到达角模式?

方位角静态热图

类型:(MMWDEMO_OUTPUT_MSG_Azimut_STATIC_HEAT_MAP)

长度:(距离 FFT 大小) x (虚拟天线数)( cmplx16ImRe_t 大小)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chianan Chang、

    来自 ADC 缓冲器的数据取决于在 ADC 配置参数中选择的 IQ 格式选项。 作为 SDK 演示的一部分最终发出的内容可能取决于开箱即用演示代码中所完成的操作。
    我们将就此向您回复。

    您能否进一步解释4步、以实现更高的精度。

    谢谢、
    Vaibhav
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chianan、

    (1)热图的数据序列为 R1[0]、R2[0]、R3[0]、R4[0]、R1[1]、R2[1]…… R1[255]、R2[255]、R3[255]、R4[255]、VR1[0]、...... ? 或其他格式?
    a)是、如果仅使用1个 Tx 和4个 Rx。 如果使用2 Tx 和4 Rx,则上述序列将更改为 R1[0]、R2[0]、R3[0]、R4[0]、R5[0]、R6[0]、R7[0]、R8[0]、R1[1]、.... 您可以在 OOB 演示中第1725行的 DSS_DATA_PATH.c 文件中找到方位角热图的实现。


    (2)我得到的热图是4096个复杂信息、0~2047复杂数据有值、但2048 ~4095全为零、这是正确的吗?
    a)否 这不是预期的。 您应该'nRx x 256'复杂数据样本(nRx 是'多尺寸天线'的数量。 例如、在1Tx、4Rx 中、nRx = 4的情况下。 在2TX、4Rx 中、nRx=8)。 每个复数数据样本由两个16位数(I 和 Q)组成。 请检查位宽和"nRx"是否正确。

    (3)如果我想获取距离门指数为100的目标、这是否意味着我可以从 R1的复数[100* 4]、R2的复数[100*4+1]获取的每个天线的相位?
    a)是、如果您已配置1Tx、4Rx。 在其他情况下、"同步接收器"的数量可能不同。 请注意、"C"语言使用"0 Based indexing"。

    (4)我能否使用每个天线的不同相位来获取 ASIN (DeltaPhasy* Landa/(2 * pi&d))的目标到达角模式?
    a)是的、您可以通过这种方式估算到达角。 但是、如果该距离-速度库中有多个物体、则角度估算可能会出错。 此外、您的精度将受到估算 Δ 相的方式的限制。 如果您对非常精确的角度估算感兴趣、请查找 ROOT-MVDR 或 ROOT-music 等算法。


    此致、
    Anil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,Anil

    感谢您的快速响应。 下面是我使用的配置文件,通道配置15 30 0使用4 RX 和2 TX 天线,这是正确的吗? 因此序列应为 R1[0]、R2[0]、R3[0]、R4[0]、R5[0]、R6[0]、R7[0]、R8[0]、R1[1]、.... 对吗?

    我发送给您的(2)信息错误、我得到 TLV 长度为8192 byte=4096 int = 2048 complex。 因此、如果我有8个 RX (2TX 和4RX)、总长度应该是正确的、但强度是复数[1024]~complexp2043]全部为零。 这意味着、如果我使用 R1[0]、R2[0]、R3[0]、R4[0]、R5[0]、R6[0]、R7[0]、R8[0]、R1[1]、SEQUENCE、 距离库的后半部分将没有数据。

    sensorStop
    FlushCfg
    DfeDataOutputMode 1
    通道配置15 3 0
    ADCfg 2 1.
    AdcbufCfg 0 1 1
    ProfileCfg 0 77 3 56 0 8 1 256 5000 0 10
    线性调频脉冲配置0 0 0 0 0 0 0 0 1
    线性调频脉冲配置1 1 0 0 0 0 2
    帧配置0 1 64 0 100 1 0
    低功耗0 0
    guiMonitor 1 1 1 0 1
    cfarCfg 0 8 4 0 6000
    cfarCfg 1 0 8 4 0 6000
    peakGrouping 1 0 1 224
    multiObjBeamForming 0 0.5
    calibDcRangeSig 0-5 8 256
    sensorStart

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chianan、  

    1) 1)根据您的配置、您是对的-序列应为  R1[0]、R2[0]、R3[0]、R4[0]、R5[0]、R6[0]、R7[0]、R8[0]、R1[1]、...

    2) 2)您发送的配置文件中存在小错误。  

    ProfileCfg 0 77 3 56 0 8 1 256 5000 0 10

    AWR1642的最小 Rx 增益为30dB (不是10dB)。  建议 SRR 应用使用高达44dB 的 Rx 增益。

    ProfileCfg 0 77 3 56 0 8 1 256 5000 0 44  

    除此之外、配置看上去一切正常。  

    3) 3)我使用您的配置检查了距离方位角数据、并看到每帧需要2048个复杂样本。 您能告诉我们您如何收集这些样片吗?

    此致、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,Anil

    感谢您为我更正 RX 增益、我将对其进行修改。

    下面是我收集的用于 解析 TLV 数据包的方位角数据的代码

    案例(int) MessageType.MMWDEMO_OUTPUT_MSG_Azimut_STATIC_HEAT_MAP:

    IF (TLVLength ==(RangeFFTize * VirtualAntenna *2*2*2))

    NewPacket.AzimuthHeatmapFlag = true;
    short[] tmp=new short[RangeFFTSeize * VirtualAntenna * 2*2];
    NewPacket.AzimuthHeatmap = new complex[RangeFFTSeize * VirtualAntenna*2];

    Buffer.BlockCopy (TempBuf、TLV_Start + 8、tmp、0、RangeFFTSeize * VirtualAntenna * 2*2);


    int k;
    对于(k=0;k< RangeFFTize * VirtualAntenna*2;k++)

    NewPacket.AzimuthHeatmap[k]= new complex (tmp[k * 2]、tmp[k*2+1]);



    //Buffer.BlockCopy (TempBuf、PatternIndex + TLV_Start + 8、NewPacket.AzimuthHeatmap、0、RangeFFTize * VirtualAntenn* Marshal.sizeof (ComplexStructure)));

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chianan、

    我对您的代码进行了一些更改。 如果将虚拟天线的数量设置为8、则在计算样本总数时会出现2倍误差。


    RangeFFTSeize = 256;
    VirtualAntenna = 8;//在 TDM MIMO 情况下。

    //总大小由8 x 256 x 4字节给出

    IF (TLVLength ==(RangeFFTize * VirtualAntenna*2*2))

       NewPacket.AzimuthHeatmapFlag = true;
       //样本总数由8 x 256 x 2 Int16给出

       short[] tmp=new short[RangeFFTSeize * VirtualAntenna * 2];
       NewPacket.AzimuthHeatmap = new complex[RangeFFTSeize * VirtualAntenna];
       Buffer.BlockCopy (TempBuf、TLV_Start + 8、tmp、0、RangeFFTSeize * VirtualAntenna * 2 * 2);
       int k;//复数样本总数为8 x 256。

       对于(k=0;k< RangeFFTize * VirtualAntenna;k++)
       {
          NewPacket.AzimuthHeatmap[k]= new complex (tmp[k * 2]、tmp[(k * 2)+1]);
       }

     

    此致、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,Anil

       感谢您让我知道虚拟天线为8并修改代码。 但我知道我设置的虚拟天线是错误的(4)、因此我始终在代码中添加乘法2。 无论如何,我的主要问题是以下,希望大家知道问题是什么。

    我发送给您的(2)信息错误、我得到 TLV 长度为8192 byte=4096 int = 2048 complex。 因此、如果我有8个 RX (2TX 和4RX)、总长度应该是正确的、但奇怪的是复数[1024]~complexp2043]全部为零。 这意味着、如果我使用 R1[0]、R2[0]、R3[0]、R4[0]、R5[0]、R6[0]、R7[0]、R8[0]、R1[1]、SEQUENCE、 距离库的后半部分将没有数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chianan、

    您能否共享两组信息?

    "方位角静态热图"输入的原始8192字节。 (TempBuf 的所有8192字节)。

    2、NewPacket.AzimuthHeatmap (全部2048个复数样本)。

    此致、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,Anil

    我发现我的代码中有一个错误、因此我无法将所有 heapmap 复制到我拥有的数组中。 很抱歉犯了这个错误。 最后、我获得了所有热图信息。 如果目标是具有相同距离和车辆的单个目标、我将检查是否可以使用它来计算更精确的目标角度。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,Anil

    很抱歉再次打扰你。 在我解决代码错误后,我尝试使用 ASIN  (DeltaPhasy* Landa/(2*pi&d)使用相位不同来测量更准确的目标到达角,例如 R1、R2、R3、R4是我从检测目标的方位角静态热图获得的检测目标的相位 (同一范围内有一个小马目标),用于 RX 天线1,2,3,4。 我使用天线的相位不同和相关距离来计算到达角。 但与使用 atan (y/x)计算的角度相比,我无法获得类似的角度(y 和 x 是我从  MmwDemo_detectedObj 获取的 x、y 位置)。 我不确定是否可以使用方位角静态热图获得到达角、因为方位角静态热图是距离指数2D FFT 的 FFT 指数0值。 或者、我需要使用1D FFT 才能获得到达角?

    另一个问题是  root-MVDR 或 root-music。 似乎需要大量计算、您认为 AWR1642的性能是否足够?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chianan、

    您可以使用方位角静态热图获取到达角。 实际上、它是在"Visualizer 图"中使用相同的数据(在3D FFT 之后)计算得出的。 您能否共享代码以找到"降解"?

    如果对象数量受限、C674x DSP 应能够执行 MVDR 和音乐。

    此致、
    Anil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好,Anil
    我使用以下代码从 TLV 数据包获取方位角热图到复杂的 arrayNewPacket.AzimuthHeatmap
    对于(k=0;k< RangeFFTize * VirtualAntenna;k++)

    NewPacket.AzimuthHeatmap[k]= new complex (tmp[k * 2+1]、tmp[k*2]);


    (二
    而 GatNo 是检测到的目标范围指数、我计算到达实际4 RX 天线的信号相位、如下所示
    R1 = NewPacket.AzimuthHeatmap[GatNo * Radar.VirtualAntenna ].Phase;
    R2 = NewPacket.AzimuthHeatmap[GatNo * Radar.VirtualAntenna + 1].Phase;
    R3 = NewPacket.AzimuthHeatmap[GatNo * Radar.VirtualAntenna + 2].Phase;
    R4 = NewPacket.AzimuthHeatmap[GatNo * Radar.VirtualAntenna + 3].Phase;

    然后、我计算相位差并计算以下到达角:
    TmpR1R2 = R1 - R2;TmpR1R3 = R1 - R3;TmpR1R4 = R1 - R4;
    TmpR1R2 = Math.ASIN (TmpR1R2 /(Math.PI))* 180 / Math.PI;
    TmpR1R3 = Math.ASIN (TmpR1R3/(2*Math.PI))* 180 / Math.PI;
    TmpR1R4 = Math.ASIN (TmpR1R4/(3*Math.PI))* 180 / Math.PI;




    另一个问题、您提到"它是使用相同的数据在"Visualizer 图"中计算的"、我不知道您的意思。 您能更清楚地解释一下吗? 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chianan、

    虚拟天线的数量不是8?

    在实验中、您能做这三件事。

    1.使用"角反射器"作为目标。 还要确保测试环境干净。 杂波会显著影响相位测量。
    2.绘制复数的幅度、作为"虚拟天线"和"距离指数"的函数。 理想情况下、在目标的位置、幅度中应该有一个峰值。
    3.将目标直接放置在雷达的对面(方位角为0度)。 确认相位差接近于零。

    TI 拥有一款名为 Visualizer (dev.ti.com/gallery/view/534566/mmWave_Demo_Visualizer/)的工具、可绘制"方位角距离矩阵"。 它使用与您所使用的相同的方位角热图数据。

    此致
    Anil