IWR1443BOOST开箱测试:https://bbs.eeworld.com.cn/thread-1101610-1-1.html
SDK及例程下载:https://bbs.eeworld.com.cn/thread-1102315-1-1.html
XWR14XX 数据路径:https://bbs.eeworld.com.cn/forum.php?mod=post&action=newthread&fid=154
IWR1443 BOOST 的CLI命令:https://bbs.eeworld.com.cn/thread-1104699-1-1.html
一、mmWave检测结果
out_of_box_demo例程的数据处理放在 void MmwDemo_dataPathTask(UArg arg0, UArg arg1) 函数中。其中包含了1D FFT数据处理、2D FFT数据处理、距离偏差测量、CFAR处理、角度估算、数据通过DAT_port输出等。数据处理完后会存储在MmwDemo_DataPathObj(结构体位置 C:\ti\mmwave_sdk_02_01_00_04\packages\ti\demo\xwr14xx\mmw)结构体中,我们就可以在该结构体当中找到需要的数据进行处理。
二、人体位置信息
新建人体位置信息结构体,用于存储检测范围内人体数量及坐标。
#define MY_MAX_OBJ_OUT 100
/*用于存储检测到的人体的坐标*/
typedef struct my_detectedObj_t
{
int32_t x; /*单位毫米*/
int32_t y; /*单位毫米*/
} my_detectedObj;
typedef struct My_DataPathObj_t
{
/*检测到的人体数量*/
uint32_t my_numObjOut;
/*输出人体位置数组*/
my_detectedObj objOut[MY_MAX_OBJ_OUT];
} My_DataPathObj;
三、人体位置检测
在main.c文件,加入自定义头文件
结构体初始化
定义打印信息缓存
新建信息处理函数
其中,int32_t My_DataProcess(MmwDemo_DataPathObj *obj)函数用于把SDK中结构体MmwDemo_DataPathObj的数据通过算法得到人体数量及位置信息,这里就不体现源函数了。当检测范围内有检测到人体是,返回 0,否则为其他值。
在void MmwDemo_dataPathTask(UArg arg0, UArg arg1)函数中,注释掉原数据发送函数MmwDemo_transmitProcessedOutput(gMmwMCB.loggingUartHandle,dataPathObj);,加入自定义的函数My_transmitProcessedOutput(gCLI.cfg.cliUartHandle,dataPathObj);
由于原数据发送函数是通过DATA_port串口输出,注释掉后,DATA_port将不会输出数据。新增的数据数据发送函数由CFG_port串口输出。
重新编译工程并烧入程序。通过串口调试助手就可以查看到检测的信息。
至此,就可以通过mmwave来进行人体位置轨迹跟踪,外接的MCU就可以通过串口接收的信息进行相关的处理。
|