Open Gutsgwh1997 opened 4 years ago
你是运行的时候在这里报错了?还是看代码觉得这里有问题。 这里其实没问题,output_cloud_ptr被reset了,但是在reset之前,input_cloud_ptr的点云被保存在了origin_cloud_ptr里,所以点云并没有丢失。
是我的问题,没有注意到函数体中的第一句代码。我运行时候出现(Assertion cloud.points.size() == cloud.width * cloud.height
failed)错误,问题出现在去畸变后的cloud_pubptr->Publish(),我将此函数的参数改为常引用了。
https://github.com/Little-Potato-1990/localization_in_auto_driving/blob/5b727bc612a5b70070f99c603fc7704d96315fdd/lidar_localization/src/data_pretreat/data_pretreat_flow.cpp#L162 bool DistortionAdjust::AdjustCloud(CloudData::CLOUD_PTR& input_cloud_ptr, CloudData::CLOUD_PTR& output_cloud_ptr) { CloudData::CLOUD_PTR origin_cloud_ptr(new CloudData::CLOUD(*input_cloud_ptr)); output_cloud_ptr.reset(new CloudData::CLOUD()); ... } 这里的输入和输出不能是同一个指针,在里边的函数首先reset了。