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.

AWR6843AOPEVM: Transmitting Heatmaps in Overhead 3D People Tracking Demo

Part Number: AWR6843AOPEVM

Tool/software:

Hello Ti Forum,

I would like to transmit a range doppler map in addition to the point cloud in the Overhead 3D People Tracking demo.


When I have a look at the out of the box demo, I see that the range doppler map is extracted in the transmit process as follows:

void MmwDemo_transmitProcessedOutput(UART_Handle uartHandle,
                                     DPC_ObjectDetection_ExecuteResult *result,
                                     MmwDemo_output_message_stats      *timingInfo)
{
    MmwDemo_output_message_header header;
    MmwDemo_GuiMonSel   *pGuiMonSel;
    MmwDemo_SubFrameCfg *subFrameCfg;
    uint32_t tlvIdx = 0;
    uint32_t i;
    uint32_t numPaddingBytes;
    uint32_t packetLen;
    uint8_t padding[MMWDEMO_OUTPUT_MSG_SEGMENT_LEN];
    uint16_t *detMatrix = (uint16_t *)result->detMatrix.data;
    
    ...
    
    UART_writePolling (uartHandle,
           (uint8_t*)&tl[tlvIdx],
           sizeof(MmwDemo_output_message_tl));

    UART_writePolling (uartHandle,
            (uint8_t *) result->azimuthStaticHeatMap,
            result->azimuthStaticHeatMapSize * sizeof(cmplx16ImRe_t));

        tlvIdx++;
        
}

The detMatrix is then transferred to the PC via a TLV.


I have implemented this in my code

tl.type = MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP;
tl.length = sizeof(MmwDemo_output_message_tl) + gMmwMssMCB.heatMapOutFromDSP.dataSize;
memcpy(txBufPtr, (uint8_t*) &tl,
       sizeof(MmwDemo_output_message_tl));
txBufPtr += sizeof(MmwDemo_output_message_tl);

uint16_t *detMatrix = (uint16_t *)gMmwMssMCB.heatMapOutFromDSP.data;

memcpy(txBufPtr, (uint8_t*) &detMatrix,
       gMmwMssMCB.heatMapOutFromDSP.dataSize);
txBufPtr += gMmwMssMCB.heatMapOutFromDSP.dataSize;

But unfortunately, when I look at the transmitted data, it seems that there is no range doppler map stored. Instead some profile information etc. is stored.

(The gMmwMssMCB.heatMapOutFromDSP.dataSize shows a size of 16,384)

(Only a small part of the data, unfortunately I cannot upload the whole file)


I found this post here with more or less the same problem: https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1263500/awr6843aopevm-transmitting-float-data-type-heatmaps-via-uart-in-3d-people-counting-demo

But as far as I can reconstruct the steps, I understand that the address has to be converted to read the data out of the DSS.

uint32_t * heatMapAdd = (uint32_t *)0x20093AF0 - (uint32_t *)0x20000000 + (uint32_t *)0x51000000;
heatData = *heatMapAdd;

I have inserted this code in the handleObjectDetResult function in mss_main.c

Can anyone point me in the right direction as to what the next correct step would be?

Is it possible to extract a range doppler map in the 3D people tracking demo?

Many thanks :)

Best Regards,

Tobias

  • Hi Tobias,

    UART Transmit task is run by the cortex R4, while the range doppler heatmap is computed by the DSP. It seems the transfer of data from DSS domain to MSS is not happening correctly. Also, note that address of L3 RAM from DSP and CR4 are different. Do ensure that the handoff of the detection matrix from DSP side is happening corrtecly

    Regards