# RadarDataDemo **Repository Path**: csyangbinbin/RadarDataDemo ## Basic Information - **Project Name**: RadarDataDemo - **Description**: 演示如何处理记录的雷达数据 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 雷达存储数据格式说明 ##### 数据存储文件内容分为两个主要部分: - 文件头 - 存储的数据 ##### 1.文件头主要保存文件的相关信息,如版本号、记录时间等,其定义如下 ```c++ typedef struct RDS3H_RecordFileHead { uint8_t magicNumber[5]; //文件头标记(固定为RDS3H) uint16_t version; //文件格式版本号 uint8_t radarID[16]; //记录的雷达ID uint8_t radarStream; //雷达视频通道 uint8_t tmMin; //记录开始的时间(下同), 分钟 - [0, 59] uint8_t tmHour; //小时 - [0, 23] uint8_t tmMday; //天 - [1, 31] uint8_t tmMon; //月 - [1, 12] uint16_t tmYear; //年 uint32_t recordDurationSec; //记录持续时间(单位:秒) }RDS3H_RecordFileHead_t; ``` ##### 2.存储的数据由多个Item组成,每个Item由三部分组成: - Item的长度 (此Item类型的长度+实际存储数据的长度) - Item的类型 (2字节标记实际存储的数据的类型) - 实际存储的数据 ###### 数据记录Item的头部定义: ```c++ typedef struct RDS_ItemHead { uint16_t itemLength; //Item内容长度 uint16_t itemTag; //Item的标签 }RDS_ItemHead; ``` > 存储数据分为多个类型,每种不同类型使用不同的Tag进行区分 (1)雷达回波数据 Item类型标志为0x0001 ```C++ define RDS_ITEM_TAG_RADAR_SPOKE_DATA (0x0001) ``` 雷达在扫描过程中,每一圈产生2048条扫描线,每条扫描线采样1024个点,每个采样点使用4比特进行量化。 ```c++ //每个雷达方位扫描线的信息数据 typedef struct RDS3H_SpokeHeader { int64_t timeMSFromEpoch; //时间戳(相对于1970-01-01T00:00:00.000(UTC)流逝的毫秒值) uint16_t sequenceNumber; //扫描线序列号 uint16_t nOfSamples; //扫描线中的采样数量 uint8_t bitsPerSample; //每个采样使用的比特数,一般为4比特量化 uint32_t rangeCellSize_mm; //每个range-cell的距离(单位:毫米) uint32_t rangeCells; //当前扫描线的range-cell的数量 uint16_t spokeAzimuth; //当前扫描线的角度(取值0~4095,代表0~360度的扫描范围) uint16_t spokeCompass; //当前的船首向(Heaing方向 ,取值0~4095,代表0~360度的扫描范围 ) uint8_t trueNorth; //与雷达连接的罗经使用的正北类型(1~真北, 0~磁北) uint8_t compassValid; //罗经数据是否有效(1~有效, 0~无效) uint32_t sampleRange_mm; //每个采样的物理距离(单位:毫米) uint32_t spokeRange_mm; //当前扫描线的物理距离(单位:毫米) }RDS3H_SpokeHeader_t; //每个雷达扫描线数据定义 typedef struct RDS3H_Spoke{ RDS3H_SpokeHeader_t header; //扫描线数据信息 uint8_t data[SAMPLES_PER_SPOKE / 2]; //扫描线采样点数据 } RDS3H_Spoke_t; ```