激光雷达解析"/>
velodyne32C激光雷达解析
- 首先就是选择single return模式,这样你在解析时就按照single模式进行拆包
- 其次就是选择转速600 rev/min,这样你的分辨率就确定了(即在设置页面设置频率)
- single模式返回如图:
激光雷达的参数,Laser ID不是ring
里面的数字是Laser_id
4.关于大端模式与小端模式:
struct FiringData
{uint16_t flag; //!< 0xFFEE or 0xFFDDuint16_t azimuth; //!< 比例因子 = 0.01degDistanceIntensity points[32]; //!< 32个激光器的距离和光强值
};
struct ScanPacket
{//! 状态类型,仅对HDL-64E有效enum StatusType{HOURS = 72,MINUTES = 77,SECONDS = 83,DATE = 68,MONTH = 78,YEAR = 89,GPS_STATUS = 71,TEMPERATURE = 84,FIRMWARE_VERSION = 86,};FiringData firing_data_blocks[12]; //!< 每帧数据包含12次发射uint32_t timestamp; //!< 从当前小时开始,经历的微秒数,同步到GPS时间/** 返回模式* 0x37=最强回波, 0x38=最后一次回波, 0x39=两次回波*/uint8_t factory_byte1;/** 设备类型* 0x21=HDL-32E, 0x22=VLP-16/Punk LITE, 0x24=Puck Hi-Res* 0x28=VLP-32C, 0x31=Velarray, 0xA1=VLS-128*/uint8_t factory_byte2;uint8_t padding[2]; // 补丁字节,对齐用
};memcpy(&scan_packets_[count], &data, 1206); // 读一个1206一次memcopy很重要 copy151次后 拿走去解析(memocopy共享指针给另一个线程
// 常见电脑是x86架构,因为激光雷达发过来小端格式,你可以直接Memory copy过去
// 要是大端格式读过来的数据不能直接Memory copy
// 比如小端格式存 unsigned int value = ox12345678
usigned char buf[4] ;
buf[3] = 12 buf[2] = 34 buf[1] = 56 buf[0] = 78(低地址存低字节)
// 所以 memcpy 从data[0]低地址中存的低字节开始 1206-> 给 scan_packets_[0]的低地址
// 即 scan_packets_[0]的低地址存低字节,那么
// azimuth = static_cast<float>(firing_data_block.azimuth); // 直接这样给值
速腾聚创激光雷达配置
更多推荐
velodyne32C激光雷达解析
发布评论