Fixed laser scans not saved when Mem/BinDataKept is false (they are still required for scan matching)

This commit is contained in:
matlabbe
2016-10-31 14:29:32 -04:00
parent f07bb17442
commit 276992d654

View File

@@ -3586,10 +3586,13 @@ Signature * Memory::createSignature(const SensorData & data, const Transform & p
} }
else else
{ {
// just compress user data // just compress user data and laser scan (scans can be used for local scan matching)
rtabmap::CompressionThread ctUserData(data.userDataRaw()); rtabmap::CompressionThread ctUserData(data.userDataRaw());
rtabmap::CompressionThread ctLaserScan(laserScan);
ctUserData.start(); ctUserData.start();
ctLaserScan.start();
ctUserData.join(); ctUserData.join();
ctLaserScan.join();
s = new Signature(id, s = new Signature(id,
_idMapCount, _idMapCount,
@@ -3600,8 +3603,8 @@ Signature * Memory::createSignature(const SensorData & data, const Transform & p
data.groundTruth(), data.groundTruth(),
stereoCameraModel.isValidForProjection()? stereoCameraModel.isValidForProjection()?
SensorData( SensorData(
cv::Mat(), ctLaserScan.getCompressedData(),
LaserScanInfo(), LaserScanInfo(maxLaserScanMaxPts, data.laserScanInfo().maxRange(), data.laserScanInfo().localTransform()),
cv::Mat(), cv::Mat(),
cv::Mat(), cv::Mat(),
stereoCameraModel, stereoCameraModel,
@@ -3609,8 +3612,8 @@ Signature * Memory::createSignature(const SensorData & data, const Transform & p
0, 0,
ctUserData.getCompressedData()): ctUserData.getCompressedData()):
SensorData( SensorData(
cv::Mat(), ctLaserScan.getCompressedData(),
LaserScanInfo(), LaserScanInfo(maxLaserScanMaxPts, data.laserScanInfo().maxRange(), data.laserScanInfo().localTransform()),
cv::Mat(), cv::Mat(),
cv::Mat(), cv::Mat(),
cameraModels, cameraModels,