diff --git a/velodyne_pointcloud/include/velodyne_pointcloud/datacontainerbase.hpp b/velodyne_pointcloud/include/velodyne_pointcloud/datacontainerbase.hpp index b0a82c259..ccea34adc 100644 --- a/velodyne_pointcloud/include/velodyne_pointcloud/datacontainerbase.hpp +++ b/velodyne_pointcloud/include/velodyne_pointcloud/datacontainerbase.hpp @@ -124,7 +124,12 @@ class DataContainerBase cloud.height = config_.init_height; cloud.is_dense = static_cast(config_.is_dense); cloud.row_step = cloud.width * cloud.point_step; - cloud.data.resize(scan_msg->packets.size() * config_.scans_per_packet * cloud.point_step); + int data_size = scan_msg->packets.size() * config_.scans_per_packet * cloud.point_step; + // additional space is required for HDL64 S3 + if (!cloud.is_dense && cloud.width == 64) { + data_size = scan_msg->packets.size() * config_.scans_per_packet * cloud.point_step * 2; + } + cloud.data.resize(data_size); // Clear out the last data; this is important in the organized cloud case std::fill(cloud.data.begin(), cloud.data.end(), 0); if (config_.transform) {