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.

IWR6843AOPEVM: 如何使用mmwave sdk的相关函数获取点云数据?具体操作流程是怎样的?官方的out of box工程点云效果不太行

Part Number: IWR6843AOPEVM

目前我已经能够进行雷达配置 并且能够获取ADCBuf的原始数据 如果要通过硬件加速器实现点云数据的获取 该如何进行?

  • 步骤如下:

    1. 配置雷达参数2. 初始化数据采集3. 接收雷达数据4. 数据处理5. 生成点云数据

  • 配置参数用mmwave库 原始数据采集用adcbuf 后面的信号处理应该用哪些SDK里面的库?

  • 为您写一段demo,请参考

    #include <ti/drivers/adcbuf/ADCBuf.h>
    #include <ti/common/mmwave_error.h>
    #include <ti/control/mmwave/mmwave.h>
    
    // 定义一些全局变量
    #define NUM_SAMPLES 1024
    
    #pragma DATA_SECTION(gAdcData, ".l1data");
    int16_t gAdcData[NUM_SAMPLES];
    
    #pragma DATA_SECTION(gOutData, ".l1data");
    float gOutData[NUM_SAMPLES];
    
    // 初始化 mmWave 设备
    void init_mmWave_device() {
        // 初始化 mmWave 控制器
        MMWave_init();
    
        // 配置雷达传感器参数
        MMWave_Params mmwaveParams;
        MMWave_Params_init(&mmwaveParams);
    
        // 配置 ADCBuf 参数
        ADCBuf_Params adcBufParams;
        ADCBuf_Params_init(&adcBufParams);
    
        // 打开 ADCBuf 驱动
        ADCBuf_Handle adcBufHandle = ADCBuf_open(0, &adcBufParams);
        if (adcBufHandle == NULL) {
            // 处理错误
            // ...
        }
    
        // 打开 mmWave 设备
        MMWave_Handle mmWaveHandle;
        mmWaveHandle = MMWave_open(0, &mmwaveParams, NULL);
    
        if (mmWaveHandle == NULL) {
            // 处理错误
            // ...
        }
    
        // 配置 mmWave 设备
        // ...
    
        // 启动 mmWave 设备
        MMWave_start(mmWaveHandle);
    }
    
    // 从 ADCBuf 中获取原始数据
    void acquire_raw_data(ADCBuf_Handle adcBufHandle) {
        // 配置 ADCBuf 参数
        ADCBuf_Conversion conversion;
        ADCBuf_Conversion_init(&conversion);
    
        // 配置 ADCBuf 转换参数
        conversion.arg = (uintptr_t)NULL;
        conversion.samples = gAdcData;
        conversion.sampleCount = NUM_SAMPLES;
    
        // 执行 ADCBuf 转换
        int_fast16_t retVal;
        retVal = ADCBuf_convert(adcBufHandle, &conversion);
        if (retVal != ADCBuf_STATUS_SUCCESS) {
            // 处理错误
            // ...
        }
    }
    
    // 进行信号处理
    void signal_processing() {
        // 添加信号处理代码
        // 将原始数据处理为点云数据
        // ...
    
        // 示例:简单地将 ADC 数据转换为浮点数
        for (int i = 0; i < NUM_SAMPLES; i++) {
            gOutData[i] = (float)gAdcData[i];
        }
    }
    
    int main(void) {
        // 初始化 mmWave 设备
        init_mmWave_device();
    
        // 获取原始数据
        acquire_raw_data(adcBufHandle);
    
        // 进行信号处理
        signal_processing();
    
        // 关闭 mmWave 设备
        MMWave_close(mmWaveHandle);
    
        return 0;
    }