数据集分享 | IWR1642呼吸心跳数据集

本文编辑:@调皮连续波,保持关注调皮哥,获得更多学习内容和建议!

各位大佬好,我是调皮哥,感谢大家的关注。

因为疫情,有的人回不了学校的实验室,因此早在先前我就想为大家采集一些数据,提供给大家做算法分析和验证。

正好,昨天为别人采数据,就多采集了一些。数据放在这里我也没有用,因此就准备分享给大家。具体的雷达参数配置在文件中有说明,数据总共有30个bin文件,有单人、双人的,还增加了男女生、呼吸快慢速进行对比。

文件名如下:

(单人数据全部为成年男性)
one_1.5m_slow_1.bin:单人 1.5米 慢速呼吸 第1组数据
one_1.5m_slow_2.bin:单人 1.5米 慢速呼吸 第2组数据
one_1.5m_slow_3.bin:单人 1.5米 慢速呼吸 第3组数据
one_1.5m_slow_4.bin:单人 1.5米 慢速呼吸 第4组数据
one_1.5m_slow_5.bin:单人 1.5米 慢速呼吸 第5组数据

one_1.5m_common_1.bin :单人 1.5米 正常呼吸 第1组数据
one_1.5m_common_2.bin :单人 1.5米 正常呼吸 第2组数据
one_1.5m_common_3.bin :单人 1.5米 正常呼吸 第3组数据
one_1.5m_common_4.bin :单人 1.5米 正常呼吸 第4组数据
one_1.5m_common_5.bin :单人 1.5米 正常呼吸 第5组数据

one_1.5m_fast_1.bin :单人 1.5米 快速呼吸 第1组数据
one_1.5m_fast_2.bin :单人 1.5米 快速呼吸 第2组数据
one_1.5m_fast_3.bin :单人 1.5米 快速呼吸 第3组数据
one_1.5m_fast_4.bin :单人 1.5米 快速呼吸 第4组数据
one_1.5m_fast_5.bin :单人 1.5米 快速呼吸 第5组数据

one_1m_slow_1.bin:单人 1米 慢速呼吸 第1组数据
one_1m_slow_2.bin:单人 1米 慢速呼吸 第2组数据
one_1m_slow_3.bin:单人 1米 慢速呼吸 第3组数据
one_1m_slow_4.bin:单人 1米 慢速呼吸 第4组数据
one_1m_slow_5.bin:单人 1米 慢速呼吸 第5组数据

one_2m_common_1.bin:单人2米 正常呼吸 第1组数据
one_2m_common_2.bin:单人2米 正常呼吸 第2组数据
one_2m_common_3.bin:单人2米 正常呼吸 第3组数据
one_2m_common_4.bin:单人2米 正常呼吸 第4组数据
one_2m_common_5.bin:单人2米 正常呼吸 第5组数据

(双人数据,两人面向雷达,左边为成年男性,右边为成年女性)
two_1.5m_common_1.bin:双人1.5米 正常呼吸 第1组数据
two_1.5m_common_2.bin:双人1.5米 正常呼吸 第2组数据
two_1.5m_common_3.bin:双人1.5米 正常呼吸 第3组数据
two_1.5m_common_4.bin:双人1.5米 正常呼吸 第4组数据
two_1.5m_common_5.bin:双人1.5米 正常呼吸 第5组数据

注意:
单人数据雷达配置为单发模式(1T4R),双人数据雷达配置为两发模式(2T4R),每次51.2秒(共1024帧),两种模式的雷达参数都一致,只是在2T4R中采用了两个发射天线,仅此而已。

同时,也提供了一个MATLAB Demo程序用于解析数据,关于呼吸心跳的原理可以参考下文:干货 | IWR1642EVM呼吸心跳原始数据采集与仿真分析(含MATLAB代码和数据)。解析后的结果,要优于上述文章,同时也修正了一些之前的错误。

呼吸心跳波形示例:
在这里插入图片描述
在这里插入图片描述

资料获取方式点击:代码和数据

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
注:本文假设读者已经了解IWR1642毫米波雷达的基本原理和数据格式。 1. 概述 IWR1642毫米波雷达是一种高精度测距设备,可以用于人体检测、车辆距离测量、地形测量等场景。该雷达输出的数据格式为二进制数据,需要进行复杂的处理才能得到实际的距离和角度信息。因此,设计一个数据预处理模块,对雷达输出的数据进行初步处理,是非常有必要的。 本文将介绍一个基于C++的IWR1642毫米波雷达数据预处理模块的设计。 2. 功能需求 本模块需要完成以下功能: 1. 读取IWR1642毫米波雷达输出的二进制数据; 2. 对读取的数据进行解析,得到距离和角度信息; 3. 将解析后的数据按照一定的格式输出。 3. 设计思路 3.1 数据格式 IWR1642毫米波雷达输出的数据格式如下: | Header | TLV Data | | ------ | -------- | | 32 bit | Variable | 其中,Header是32位的数据头,用于标识数据包的类型。TLV Data是一系列Tag-Length-Value格式的数据。 在本模块中,只需要解析出TLV Data部分的数据即可。具体的解析方法将在下文中介绍。 3.2 数据解析 IWR1642毫米波雷达输出的数据中包含了很多信息,例如距离、角度、信噪比等。本模块只需要解析出距离和角度信息即可。 在数据格式中,每个TLV Data都有一个Tag和Length字段。Tag字段用于标识数据的类型,Length字段用于标识数据的长度。根据IWR1642毫米波雷达数据格式的说明文档可得,距离和角度信息的Tag分别为0x01和0x02。 因此,在解析数据时,只需要找到Tag为0x01和0x02的TLV Data,然后按照长度读取对应的数据即可。 3.3 数据输出 在解析出距离和角度信息后,需要将其按照一定的格式输出。本模块可以将距离和角度信息按照以下格式输出: | Distance | Angle | | -------- | ----- | | float | float | 其中,Distance为距离信息,Angle为角度信息,均为浮点数。 4. 实现 本模块采用C++语言实现,主要包括以下几个部分:数据读取、数据解析和数据输出。 4.1 数据读取 数据读取部分主要负责从文件中读取二进制数据。具体实现如下: ```c++ bool readData(const std::string& filePath, std::vector<uint8_t>& data) { std::ifstream file(filePath, std::ios::binary | std::ios::ate); if (!file.is_open()) { std::cerr << "Failed to open file: " << filePath << std::endl; return false; } std::streamsize size = file.tellg(); file.seekg(0, std::ios::beg); data.resize(size); if (!file.read(reinterpret_cast<char*>(data.data()), size)) { std::cerr << "Failed to read file: " << filePath << std::endl; return false; } return true; } ``` 该函数接收一个文件路径作为输入,返回一个包含读取数据的向量。首先打开文件并获取文件大小,然后根据文件大小调整向量的大小。最后读取数据到向量中。 4.2 数据解析 数据解析部分主要负责解析距离和角度信息。具体实现如下: ```c++ bool parseData(const std::vector<uint8_t>& data, std::vector<float>& distance, std::vector<float>& angle) { const uint8_t DISTANCE_TAG = 0x01; const uint8_t ANGLE_TAG = 0x02; uint32_t index = 0; while (index < data.size()) { uint16_t tag = static_cast<uint16_t>((data[index + 1] << 8) | data[index]); uint16_t length = static_cast<uint16_t>((data[index + 3] << 8) | data[index + 2]); if (tag == DISTANCE_TAG) { for (uint16_t i = 0; i < length; i += 4) { float value = *reinterpret_cast<const float*>(&data[index + 4 + i]); distance.push_back(value); } } else if (tag == ANGLE_TAG) { for (uint16_t i = 0; i < length; i += 4) { float value = *reinterpret_cast<const float*>(&data[index + 4 + i]); angle.push_back(value); } } index += 4 + length; } return true; } ``` 该函数接收一个包含读取数据的向量作为输入,返回距离和角度信息的向量。函数中首先定义了Tag的值,然后遍历数据,查找Tag为0x01和0x02的TLV Data。如果Tag为0x01,则将对应的数据转换为浮点数,并存储到距离信息向量中;如果Tag为0x02,则将对应的数据转换为浮点数,并存储到角度信息向量中。 4.3 数据输出 数据输出部分主要负责将距离和角度信息按照一定的格式输出。具体实现如下: ```c++ void printData(const std::vector<float>& distance, const std::vector<float>& angle) { std::cout << "Distance\tAngle" << std::endl; for (size_t i = 0; i < distance.size(); ++i) { std::cout << distance[i] << "\t\t" << angle[i] << std::endl; } } ``` 该函数接收距离和角度信息的向量作为输入,将其按照一定的格式输出。函数中首先输出表头,然后遍历距离和角度信息向量,将其按照格式输出。 5. 总结 本文介绍了一个基于C++的IWR1642毫米波雷达数据预处理模块的设计。该模块能够读取IWR1642毫米波雷达输出的二进制数据,解析出距离和角度信息,并按照一定的格式输出。该模块可以用于人体检测、车辆距离测量、地形测量等场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

调皮连续波(皮哥)

鼓励调皮哥继续在雷达领域创作!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值