mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-03 01:50:24 +08:00
ExportCloudsDialog: fixed scan output frame
This commit is contained in:
@@ -2460,16 +2460,14 @@ std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::Indic
|
|||||||
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudWithoutNormals;
|
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudWithoutNormals;
|
||||||
localTransform = Transform::getIdentity();
|
localTransform = Transform::getIdentity();
|
||||||
Eigen::Vector3f viewPoint(0.0f,0.0f,0.0f);
|
Eigen::Vector3f viewPoint(0.0f,0.0f,0.0f);
|
||||||
if(_ui->comboBox_frame->isEnabled() &&
|
if(!data.laserScanInfo().localTransform().isNull())
|
||||||
_ui->comboBox_frame->currentIndex()!=3 &&
|
|
||||||
!data.laserScanInfo().localTransform().isNull())
|
|
||||||
{
|
{
|
||||||
localTransform = data.laserScanInfo().localTransform();
|
localTransform = data.laserScanInfo().localTransform();
|
||||||
viewPoint[0] = localTransform.x();
|
viewPoint[0] = localTransform.x();
|
||||||
viewPoint[1] = localTransform.y();
|
viewPoint[1] = localTransform.y();
|
||||||
viewPoint[2] = localTransform.z();
|
viewPoint[2] = localTransform.z();
|
||||||
}
|
}
|
||||||
cloudWithoutNormals = util3d::laserScanToPointCloudRGB(scan, localTransform);
|
cloudWithoutNormals = util3d::laserScanToPointCloudRGB(scan, localTransform); // put in base frame by default
|
||||||
if(cloudWithoutNormals->size())
|
if(cloudWithoutNormals->size())
|
||||||
{
|
{
|
||||||
if(_ui->doubleSpinBox_voxelSize_assembled->value()>0.0)
|
if(_ui->doubleSpinBox_voxelSize_assembled->value()>0.0)
|
||||||
@@ -2600,20 +2598,14 @@ std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::Indic
|
|||||||
|
|
||||||
if(!info.localTransform().isNull())
|
if(!info.localTransform().isNull())
|
||||||
{
|
{
|
||||||
if(_ui->comboBox_frame->isEnabled() && _ui->comboBox_frame->currentIndex()!=3)
|
viewPoint[0] = localTransform.x();
|
||||||
{
|
viewPoint[1] = localTransform.y();
|
||||||
viewPoint[0] = localTransform.x();
|
viewPoint[2] = localTransform.z();
|
||||||
viewPoint[1] = localTransform.y();
|
localTransform = info.localTransform().inverse();
|
||||||
viewPoint[2] = localTransform.z();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
localTransform = info.localTransform().inverse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is2D = cachedScans.at(iter->first).channels() == 2;
|
bool is2D = cachedScans.at(iter->first).channels() == 2;
|
||||||
cloudWithoutNormals = util3d::laserScanToPointCloudRGB(cachedScans.at(iter->first), localTransform);
|
cloudWithoutNormals = util3d::laserScanToPointCloudRGB(cachedScans.at(iter->first)); // already in base frame
|
||||||
if(cloudWithoutNormals->size())
|
if(cloudWithoutNormals->size())
|
||||||
{
|
{
|
||||||
if(_ui->doubleSpinBox_voxelSize_assembled->value()>0.0)
|
if(_ui->doubleSpinBox_voxelSize_assembled->value()>0.0)
|
||||||
@@ -2678,6 +2670,10 @@ std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::Indic
|
|||||||
{
|
{
|
||||||
cloud = util3d::transformPointCloud(cloud, localTransform.inverse()); // put back in camera frame
|
cloud = util3d::transformPointCloud(cloud, localTransform.inverse()); // put back in camera frame
|
||||||
}
|
}
|
||||||
|
else if(_ui->comboBox_frame->isEnabled() && _ui->comboBox_frame->currentIndex()==3)
|
||||||
|
{
|
||||||
|
cloud = util3d::transformPointCloud(cloud, localTransform.inverse()); // put back in scan frame
|
||||||
|
}
|
||||||
|
|
||||||
clouds.insert(std::make_pair(iter->first, std::make_pair(cloud, indices)));
|
clouds.insert(std::make_pair(iter->first, std::make_pair(cloud, indices)));
|
||||||
points = (int)cloud->size();
|
points = (int)cloud->size();
|
||||||
|
|||||||
Reference in New Issue
Block a user