radiusPosesFiltering default keepLatest=true

git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@1550 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
matlabbe
2014-07-13 17:59:38 +00:00
parent 6e3303654e
commit 16058dcbbe
4 changed files with 30 additions and 13 deletions

View File

@@ -393,7 +393,8 @@ bool RTABMAP_EXP loadTOROGraph(const std::string & fileName,
std::map<int, Transform> RTABMAP_EXP radiusPosesFiltering( std::map<int, Transform> RTABMAP_EXP radiusPosesFiltering(
const std::map<int, Transform> & poses, const std::map<int, Transform> & poses,
float radius, float radius,
float angle); float angle,
bool keepLatest = true);
cv::Mat RTABMAP_EXP create2DMap(const std::map<int, Transform> & poses, cv::Mat RTABMAP_EXP create2DMap(const std::map<int, Transform> & poses,
const std::map<int, pcl::PointCloud<pcl::PointXYZ>::Ptr > & scans, const std::map<int, pcl::PointCloud<pcl::PointXYZ>::Ptr > & scans,

View File

@@ -1793,7 +1793,7 @@ bool loadTOROGraph(const std::string & fileName,
} }
std::map<int, Transform> radiusPosesFiltering(const std::map<int, Transform> & poses, float radius, float angle) std::map<int, Transform> radiusPosesFiltering(const std::map<int, Transform> & poses, float radius, float angle, bool keepLatest)
{ {
if(poses.size() > 1 && radius > 0.0f && angle>0.0f) if(poses.size() > 1 && radius > 0.0f && angle>0.0f)
{ {
@@ -1841,15 +1841,31 @@ std::map<int, Transform> radiusPosesFiltering(const std::map<int, Transform> & p
} }
} }
bool firstAdded = false; if(keepLatest)
for(std::set<int>::iterator iter = cloudIndices.begin(); iter!=cloudIndices.end(); ++iter)
{ {
if(!firstAdded) bool lastAdded = false;
for(std::set<int>::reverse_iterator iter = cloudIndices.rbegin(); iter!=cloudIndices.rend(); ++iter)
{ {
indicesKept.insert(*iter); if(!lastAdded)
firstAdded = true; {
indicesKept.insert(*iter);
lastAdded = true;
}
indicesChecked.insert(*iter);
}
}
else
{
bool firstAdded = false;
for(std::set<int>::iterator iter = cloudIndices.begin(); iter!=cloudIndices.end(); ++iter)
{
if(!firstAdded)
{
indicesKept.insert(*iter);
firstAdded = true;
}
indicesChecked.insert(*iter);
} }
indicesChecked.insert(*iter);
} }
} }
} }

View File

@@ -773,7 +773,7 @@ void PreferencesDialog::resetSettings(QGroupBox * groupBox)
} }
_ui->groupBox_poseFiltering->setChecked(false); _ui->groupBox_poseFiltering->setChecked(false);
_ui->doubleSpinBox_cloudFilterRadius->setValue(0.5); _ui->doubleSpinBox_cloudFilterRadius->setValue(0.1);
_ui->doubleSpinBox_cloudFilterAngle->setValue(30); _ui->doubleSpinBox_cloudFilterAngle->setValue(30);
} }
else if(groupBox->objectName() == _ui->groupBox_logging1->objectName()) else if(groupBox->objectName() == _ui->groupBox_logging1->objectName())

View File

@@ -63,9 +63,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>-530</y> <y>0</y>
<width>709</width> <width>709</width>
<height>1140</height> <height>853</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_16"> <layout class="QVBoxLayout" name="verticalLayout_16">
@@ -86,7 +86,7 @@
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>17</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="page_22"> <widget class="QWidget" name="page_22">
<layout class="QVBoxLayout" name="verticalLayout_29"> <layout class="QVBoxLayout" name="verticalLayout_29">
@@ -371,7 +371,7 @@ Show a yellow background when the number of odometry inliers goes under this thr
<double>0.010000000000000</double> <double>0.010000000000000</double>
</property> </property>
<property name="value"> <property name="value">
<double>0.500000000000000</double> <double>0.100000000000000</double>
</property> </property>
</widget> </widget>
</item> </item>