mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-11 03:59:53 +08:00
MapCloud display: floor and ceiling filtering can be negative
This commit is contained in:
@@ -167,14 +167,14 @@ MapCloudDisplay::MapCloudDisplay()
|
|||||||
"Filter the floor up to maximum height set here "
|
"Filter the floor up to maximum height set here "
|
||||||
"(only appropriate for 2D mapping).",
|
"(only appropriate for 2D mapping).",
|
||||||
this, SLOT( updateCloudParameters() ), this );
|
this, SLOT( updateCloudParameters() ), this );
|
||||||
cloud_filter_floor_height_->setMin( 0.0f );
|
cloud_filter_floor_height_->setMin( -999.0f );
|
||||||
cloud_filter_floor_height_->setMax( 999.0f );
|
cloud_filter_floor_height_->setMax( 999.0f );
|
||||||
|
|
||||||
cloud_filter_ceiling_height_ = new rviz::FloatProperty( "Filter ceiling (m)", 0.0f,
|
cloud_filter_ceiling_height_ = new rviz::FloatProperty( "Filter ceiling (m)", 0.0f,
|
||||||
"Filter the ceiling at the specified height set here "
|
"Filter the ceiling at the specified height set here "
|
||||||
"(only appropriate for 2D mapping).",
|
"(only appropriate for 2D mapping).",
|
||||||
this, SLOT( updateCloudParameters() ), this );
|
this, SLOT( updateCloudParameters() ), this );
|
||||||
cloud_filter_ceiling_height_->setMin( 0.0f );
|
cloud_filter_ceiling_height_->setMin( -999.0f );
|
||||||
cloud_filter_ceiling_height_->setMax( 999.0f );
|
cloud_filter_ceiling_height_->setMax( 999.0f );
|
||||||
|
|
||||||
node_filtering_radius_ = new rviz::FloatProperty( "Node filtering radius (m)", 0.0f,
|
node_filtering_radius_ = new rviz::FloatProperty( "Node filtering radius (m)", 0.0f,
|
||||||
@@ -320,13 +320,13 @@ void MapCloudDisplay::processMapData(const rtabmap_ros::MapData& map)
|
|||||||
cloud = rtabmap::util3d::voxelize(cloud, validIndices, cloud_voxel_size_->getFloat());
|
cloud = rtabmap::util3d::voxelize(cloud, validIndices, cloud_voxel_size_->getFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cloud_filter_floor_height_->getFloat() > 0.0f || cloud_filter_ceiling_height_->getFloat() > 0.0f)
|
if(cloud_filter_floor_height_->getFloat() != 0.0f || cloud_filter_ceiling_height_->getFloat() != 0.0f)
|
||||||
{
|
{
|
||||||
// convert in /odom frame
|
// convert in /odom frame
|
||||||
cloud = rtabmap::util3d::transformPointCloud(cloud, s.getPose());
|
cloud = rtabmap::util3d::transformPointCloud(cloud, s.getPose());
|
||||||
cloud = rtabmap::util3d::passThrough(cloud, "z",
|
cloud = rtabmap::util3d::passThrough(cloud, "z",
|
||||||
cloud_filter_floor_height_->getFloat()>0.0f?cloud_filter_floor_height_->getFloat():-999.0f,
|
cloud_filter_floor_height_->getFloat()!=0.0f?cloud_filter_floor_height_->getFloat():-999.0f,
|
||||||
cloud_filter_ceiling_height_->getFloat()>0.0f && (cloud_filter_floor_height_->getFloat()<=0.0f || cloud_filter_ceiling_height_->getFloat()>cloud_filter_floor_height_->getFloat())?cloud_filter_ceiling_height_->getFloat():999.0f);
|
cloud_filter_ceiling_height_->getFloat()!=0.0f && (cloud_filter_floor_height_->getFloat()==0.0f || cloud_filter_ceiling_height_->getFloat()>cloud_filter_floor_height_->getFloat())?cloud_filter_ceiling_height_->getFloat():999.0f);
|
||||||
// convert back in /base_link frame
|
// convert back in /base_link frame
|
||||||
cloud = rtabmap::util3d::transformPointCloud(cloud, s.getPose().inverse());
|
cloud = rtabmap::util3d::transformPointCloud(cloud, s.getPose().inverse());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user