#include "pandarGeneral_sdk/pandarGeneral_sdk.h" #define PRINT_FLAG #define PCD_FILE_WRITE_FLAG int frameItem = 0; int saveFrameIndex = 10; std::string saveFileName = "./cloudpoints.csv"; void gpsCallback(int timestamp) { #ifdef PRINT_FLAG printf("gps: %d\n", timestamp); #endif } void lidarCallback(boost::shared_ptr<PPointCloud> cld, double timestamp) { #ifdef PRINT_FLAG printf("timestamp: %lf,point_size: %ld\n", timestamp, cld->points.size()); #endif #ifdef PCD_FILE_WRITE_FLAG frameItem++; pcl::PCDWriter writer; std::string fileName = "PointCloudFrame" + std::to_string(frameItem) + ".pcd"; writer.write(fileName, *cld); if(saveFrameIndex == frameItem) { int Num = cld->points.size(); std::ofstream zos(saveFileName); for (int i = 0; i < Num; i++) { zos << cld->points[i].x << "," << cld->points[i].y << "," << cld->points[i].z << "," << cld->points[i].intensity << "," << cld->points[i].timestamp << "," << cld->points[i].ring << std::endl; } } printf("save frame %d\n",frameItem); #endif } void lidarAlgorithmCallback(HS_Object3D_Object_List* object_t) { HS_Object3D_Object* object; #ifdef PRINT_FLAG printf("----------------------\n"); printf("total objects: %d\n",object_t->valid_size); for (size_t i = 0; i < object_t->valid_size; i++) { object = &object_t->data[i]; printf("id: %u, type: %u\n",object->data.id, object->type); } printf("----------------------\n"); #endif }
时间: 2024-02-04 22:03:08 浏览: 367
这段代码是一个激光雷达数据处理的示例程序,包含三个回调函数:
1. `gpsCallback(int timestamp)`:GPS时间戳回调函数,当接收到激光雷达GPS时间戳数据时,会调用此函数。函数的参数是一个整型变量 `timestamp`,表示接收到GPS时间戳的数值。
2. `lidarCallback(boost::shared_ptr<PPointCloud> cld, double timestamp)`:激光雷达数据回调函数,当接收到激光雷达数据时,会调用此函数。函数的参数是一个指向点云数据的指针 `cld` 和一个双精度浮点数 `timestamp`,分别表示接收到的点云数据和时间戳。函数中包含了一些预处理操作,如输出点云数据的大小、将点云数据写入PCD文件、将点云数据写入CSV文件等。
3. `lidarAlgorithmCallback(HS_Object3D_Object_List* object_t)`:激光雷达目标检测回调函数,当接收到激光雷达目标检测结果时,会调用此函数。函数的参数是一个指向目标检测结果的指针 `object_t`,包含了目标检测结果的一些信息,如目标数量、目标ID、目标类型等。
在这段代码中,还定义了一些宏定义,如 `PRINT_FLAG` 和 `PCD_FILE_WRITE_FLAG`,用于控制程序的输出和写入PCD文件的开关。除此之外,还定义了一些变量,如 `frameItem`、`saveFrameIndex` 和 `saveFileName`,用于保存PCD文件和CSV文件。
需要注意的是,这段代码涉及到的一些类和函数,如 `PPointCloud`、`pcl::PCDWriter`、`std::ofstream` 等,可能需要额外的库支持,具体情况需要根据实际情况而定。
阅读全文