c++ pcl_ros: 如何使用最新的 100 条消息生成点云

c++ pcl_ros: How to generate point cloud with latest 100 messages

我有一个 rostopic,它接收每条消息的单帧 (2D) 点云(带有 x,y 坐标),我需要创建一个 (3D) 点云来连接 最新的 100 帧(在 z 轴上)。目的是始终显示由 最新 100 帧组成的点云,如 FIFO 队列。

我可以在 z 轴上使用 cloud->points.push_back (pcl::PointXYZ(pt.x, pt.y, z)); 方法连接帧。

棘手的部分是达到 100 帧后如何删除最旧的帧? (例如:删除 z 索引为 1 的点)我试图使用方法 points.erase (iterator first, iterator last) 但是,我不知道如何传递 iterator 参数。甚至,如果我能做到的话;如何移动现有点云以从 z=1 开始?感谢对此的任何帮助。

由于 cloud->points 是一个 std::vector,请参阅 std::vector::erase 以获取有关如何传递迭代器参数的示例。