mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Gui 3d rendering: added default color scheme option, added min and max range options for laser scans
This commit is contained in:
@@ -48,8 +48,8 @@ namespace util3d
|
||||
* operations like computing normals while the scan has already
|
||||
* normals and voxel filtering is not used.
|
||||
*/
|
||||
void RTABMAP_EXP commonFiltering(
|
||||
LaserScan & scan,
|
||||
LaserScan RTABMAP_EXP commonFiltering(
|
||||
const LaserScan & scan,
|
||||
int downsamplingStep,
|
||||
float rangeMin = 0.0f,
|
||||
float rangeMax = 0.0f,
|
||||
@@ -99,6 +99,10 @@ pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_EXP voxelize(
|
||||
const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
|
||||
const pcl::IndicesPtr & indices,
|
||||
float voxelSize);
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_EXP voxelize(
|
||||
const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
|
||||
const pcl::IndicesPtr & indices,
|
||||
float voxelSize);
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_EXP voxelize(
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
|
||||
float voxelSize);
|
||||
@@ -114,6 +118,9 @@ pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_EXP voxelize(
|
||||
pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_EXP voxelize(
|
||||
const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
|
||||
float voxelSize);
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_EXP voxelize(
|
||||
const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
|
||||
float voxelSize);
|
||||
|
||||
inline pcl::PointCloud<pcl::PointXYZ>::Ptr uniformSampling(
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
|
||||
@@ -157,6 +164,13 @@ pcl::IndicesPtr RTABMAP_EXP passThrough(
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::IndicesPtr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
|
||||
const pcl::IndicesPtr & indices,
|
||||
const std::string & axis,
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::IndicesPtr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
|
||||
const pcl::IndicesPtr & indices,
|
||||
@@ -171,6 +185,13 @@ pcl::IndicesPtr RTABMAP_EXP passThrough(
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::IndicesPtr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
|
||||
const pcl::IndicesPtr & indices,
|
||||
const std::string & axis,
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
|
||||
const std::string & axis,
|
||||
@@ -183,6 +204,12 @@ pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_EXP passThrough(
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
|
||||
const std::string & axis,
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
|
||||
const std::string & axis,
|
||||
@@ -195,6 +222,12 @@ pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_EXP passThrough(
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_EXP passThrough(
|
||||
const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
|
||||
const std::string & axis,
|
||||
float min,
|
||||
float max,
|
||||
bool negative = false);
|
||||
|
||||
pcl::IndicesPtr RTABMAP_EXP cropBox(
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
|
||||
|
||||
@@ -753,7 +753,7 @@ SensorData CameraImages::captureImage(CameraInfo * info)
|
||||
}
|
||||
}
|
||||
// filter the scan after registration
|
||||
util3d::commonFiltering(scan, _scanDownsampleStep, 0, 0, _scanVoxelSize, _scanNormalsK, _scanNormalsRadius, _scanForceGroundNormalsUp);
|
||||
scan = util3d::commonFiltering(scan, _scanDownsampleStep, 0, 0, _scanVoxelSize, _scanNormalsK, _scanNormalsRadius, _scanForceGroundNormalsUp);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -3851,7 +3851,7 @@ Signature * Memory::createSignature(const SensorData & data, const Transform & p
|
||||
LaserScan laserScan = data.laserScanRaw();
|
||||
if(!isIntermediateNode && laserScan.size())
|
||||
{
|
||||
util3d::commonFiltering(laserScan,
|
||||
laserScan = util3d::commonFiltering(laserScan,
|
||||
_laserScanDownsampleStepSize,
|
||||
0,
|
||||
0,
|
||||
|
||||
@@ -68,8 +68,8 @@ namespace rtabmap
|
||||
namespace util3d
|
||||
{
|
||||
|
||||
void commonFiltering(
|
||||
LaserScan & scan,
|
||||
LaserScan commonFiltering(
|
||||
const LaserScan & scanIn,
|
||||
int downsamplingStep,
|
||||
float rangeMin,
|
||||
float rangeMax,
|
||||
@@ -78,6 +78,7 @@ void commonFiltering(
|
||||
float normalRadius,
|
||||
bool forceGroundNormalsUp)
|
||||
{
|
||||
LaserScan scan = scanIn;
|
||||
UDEBUG("scan size=%d format=%d, step=%d, rangeMin=%f, rangeMax=%f, voxel=%f, normalK=%d, normalRadius=%f",
|
||||
scan.size(), (int)scan.format(), downsamplingStep, rangeMin, rangeMax, voxelSize, normalK, normalRadius);
|
||||
if(!scan.isEmpty())
|
||||
@@ -256,6 +257,7 @@ void commonFiltering(
|
||||
scan = util3d::adjustNormalsToViewPoint(scan, Eigen::Vector3f(0,0,0), forceGroundNormalsUp);
|
||||
}
|
||||
}
|
||||
return scan;
|
||||
}
|
||||
|
||||
LaserScan rangeFiltering(
|
||||
@@ -415,6 +417,10 @@ pcl::PointCloud<pcl::PointXYZI>::Ptr voxelize(const pcl::PointCloud<pcl::PointXY
|
||||
{
|
||||
return voxelizeImpl<pcl::PointXYZI>(cloud, indices, voxelSize);
|
||||
}
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr voxelize(const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud, const pcl::IndicesPtr & indices, float voxelSize)
|
||||
{
|
||||
return voxelizeImpl<pcl::PointXYZINormal>(cloud, indices, voxelSize);
|
||||
}
|
||||
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr voxelize(const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud, float voxelSize)
|
||||
{
|
||||
@@ -441,6 +447,11 @@ pcl::PointCloud<pcl::PointXYZI>::Ptr voxelize(const pcl::PointCloud<pcl::PointXY
|
||||
pcl::IndicesPtr indices(new std::vector<int>);
|
||||
return voxelize(cloud, indices, voxelSize);
|
||||
}
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr voxelize(const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud, float voxelSize)
|
||||
{
|
||||
pcl::IndicesPtr indices(new std::vector<int>);
|
||||
return voxelize(cloud, indices, voxelSize);
|
||||
}
|
||||
|
||||
template<typename PointT>
|
||||
typename pcl::PointCloud<PointT>::Ptr randomSamplingImpl(
|
||||
@@ -494,6 +505,10 @@ pcl::IndicesPtr passThrough(const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZRGB>(cloud, indices, axis, min, max, negative);
|
||||
}
|
||||
pcl::IndicesPtr passThrough(const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud, const pcl::IndicesPtr & indices, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZI>(cloud, indices, axis, min, max, negative);
|
||||
}
|
||||
pcl::IndicesPtr passThrough(const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud, const pcl::IndicesPtr & indices, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointNormal>(cloud, indices, axis, min, max, negative);
|
||||
@@ -502,6 +517,10 @@ pcl::IndicesPtr passThrough(const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr &
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZRGBNormal>(cloud, indices, axis, min, max, negative);
|
||||
}
|
||||
pcl::IndicesPtr passThrough(const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud, const pcl::IndicesPtr & indices, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZINormal>(cloud, indices, axis, min, max, negative);
|
||||
}
|
||||
|
||||
template<typename PointT>
|
||||
typename pcl::PointCloud<PointT>::Ptr passThroughImpl(
|
||||
@@ -531,6 +550,10 @@ pcl::PointCloud<pcl::PointXYZRGB>::Ptr passThrough(const pcl::PointCloud<pcl::Po
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZRGB>(cloud, axis, min ,max, negative);
|
||||
}
|
||||
pcl::PointCloud<pcl::PointXYZI>::Ptr passThrough(const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZI>(cloud, axis, min ,max, negative);
|
||||
}
|
||||
pcl::PointCloud<pcl::PointNormal>::Ptr passThrough(const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointNormal>(cloud, axis, min ,max, negative);
|
||||
@@ -539,6 +562,10 @@ pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr passThrough(const pcl::PointCloud<p
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZRGBNormal>(cloud, axis, min ,max, negative);
|
||||
}
|
||||
pcl::PointCloud<pcl::PointXYZINormal>::Ptr passThrough(const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud, const std::string & axis, float min, float max, bool negative)
|
||||
{
|
||||
return passThroughImpl<pcl::PointXYZINormal>(cloud, axis, min ,max, negative);
|
||||
}
|
||||
|
||||
template<typename PointT>
|
||||
pcl::IndicesPtr cropBoxImpl(
|
||||
|
||||
Reference in New Issue
Block a user