mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-08 04:20:20 +08:00
Tango: fixed MaxOptimizeError value that now is a factor. Docker: updated tango download links
This commit is contained in:
@@ -950,8 +950,8 @@ void CameraTango::mainLoop()
|
||||
info.interval = data.stamp()-previousStamp_;
|
||||
info.transform = previousPose_.inverse() * pose;
|
||||
}
|
||||
info.reg.covariance = cv::Mat::eye(6,6,CV_64FC1) * (firstFrame?9999.0:0.000001);
|
||||
LOGI("Publish odometry message (variance=%f)", firstFrame?9999:0.000001);
|
||||
info.reg.covariance = cv::Mat::eye(6,6,CV_64FC1) * (firstFrame?9999.0:0.0001);
|
||||
LOGI("Publish odometry message (variance=%f)", firstFrame?9999:0.0001);
|
||||
this->post(new OdometryEvent(data, pose, info));
|
||||
previousPose_ = pose;
|
||||
previousStamp_ = data.stamp();
|
||||
|
||||
@@ -95,7 +95,7 @@ rtabmap::ParametersMap RTABMapApp::getRtabmapParameters()
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDOptimizeFromGraphEnd(), std::string("true")));
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kVisMinInliers(), std::string("25")));
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kVisEstimationType(), std::string("0"))); // 0=3D-3D 1=PnP
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDOptimizeMaxError(), std::string("0.1")));
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDOptimizeMaxError(), std::string("1")));
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDProximityPathMaxNeighbors(), std::string("0"))); // disable scan matching to merged nodes
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDProximityBySpace(), std::string("false"))); // just keep loop closure detection
|
||||
parameters.insert(rtabmap::ParametersPair(rtabmap::Parameters::kRGBDLinearUpdate(), std::string("0.05")));
|
||||
@@ -3305,6 +3305,7 @@ bool RTABMapApp::handleEvent(UEvent * event)
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kLoopVisual_matches(), uValue(stats.data(), rtabmap::Statistics::kLoopVisual_matches(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kLoopRejectedHypothesis(), uValue(stats.data(), rtabmap::Statistics::kLoopRejectedHypothesis(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kLoopOptimization_max_error(), uValue(stats.data(), rtabmap::Statistics::kLoopOptimization_max_error(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kLoopOptimization_max_error_ratio(), uValue(stats.data(), rtabmap::Statistics::kLoopOptimization_max_error_ratio(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kMemoryRehearsal_sim(), uValue(stats.data(), rtabmap::Statistics::kMemoryRehearsal_sim(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kLoopHighest_hypothesis_value(), uValue(stats.data(), rtabmap::Statistics::kLoopHighest_hypothesis_value(), 0.0f)));
|
||||
uInsert(bufferedStatsData_, std::make_pair<std::string, float>(rtabmap::Statistics::kMemoryDistance_travelled(), uValue(stats.data(), rtabmap::Statistics::kMemoryDistance_travelled(), 0.0f)));
|
||||
@@ -3322,6 +3323,7 @@ bool RTABMapApp::handleEvent(UEvent * event)
|
||||
int matches = (int)uValue(bufferedStatsData_, rtabmap::Statistics::kLoopVisual_matches(), 0.0f);
|
||||
int rejected = (int)uValue(bufferedStatsData_, rtabmap::Statistics::kLoopRejectedHypothesis(), 0.0f);
|
||||
float optimizationMaxError = uValue(bufferedStatsData_, rtabmap::Statistics::kLoopOptimization_max_error(), 0.0f);
|
||||
float optimizationMaxErrorRatio = uValue(bufferedStatsData_, rtabmap::Statistics::kLoopOptimization_max_error_ratio(), 0.0f);
|
||||
float rehearsalValue = uValue(bufferedStatsData_, rtabmap::Statistics::kMemoryRehearsal_sim(), 0.0f);
|
||||
float hypothesis = uValue(bufferedStatsData_, rtabmap::Statistics::kLoopHighest_hypothesis_value(), 0.0f);
|
||||
float distanceTravelled = uValue(bufferedStatsData_, rtabmap::Statistics::kMemoryDistance_travelled(), 0.0f);
|
||||
@@ -3345,7 +3347,7 @@ bool RTABMapApp::handleEvent(UEvent * event)
|
||||
jclass clazz = env->GetObjectClass(RTABMapActivity);
|
||||
if(clazz)
|
||||
{
|
||||
jmethodID methodID = env->GetMethodID(clazz, "updateStatsCallback", "(IIIIFIIIIIIFIFIFFFIFFFFFF)V" );
|
||||
jmethodID methodID = env->GetMethodID(clazz, "updateStatsCallback", "(IIIIFIIIIIIFIFIFFFFIFFFFFF)V" );
|
||||
if(methodID)
|
||||
{
|
||||
env->CallVoidMethod(RTABMapActivity, methodID,
|
||||
@@ -3366,6 +3368,7 @@ bool RTABMapApp::handleEvent(UEvent * event)
|
||||
rejected,
|
||||
rehearsalValue,
|
||||
optimizationMaxError,
|
||||
optimizationMaxErrorRatio,
|
||||
distanceTravelled,
|
||||
fastMovement,
|
||||
x,
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<string name="pref_key_min_inliers">pref_key_min_inliers</string>
|
||||
<string name="pref_default_min_inliers">25</string>
|
||||
<string name="pref_key_opt_error">pref_key_opt_error</string>
|
||||
<string name="pref_default_opt_error">0.1</string>
|
||||
<string name="pref_default_opt_error">2</string>
|
||||
<string name="pref_key_features_voc">pref_key_features_voc</string>
|
||||
<string name="pref_default_features_voc">200</string>
|
||||
<string name="pref_key_features">pref_key_features</string>
|
||||
@@ -333,7 +333,7 @@
|
||||
<string name="pref_title_min_inliers">Min Inliers</string>
|
||||
<string name="pref_summary_min_inliers">Minimum visual inliers to accept a loop closure.</string>
|
||||
<string name="pref_title_opt_error">Max Optimization Error</string>
|
||||
<string name="pref_summary_opt_error">Reject any loop closures causing error corrections in the map higher than this threshold.</string>
|
||||
<string name="pref_summary_opt_error">Reject any loop closures causing error corrections in the map higher than this factor of the link\'s variance.</string>
|
||||
<string name="pref_title_features_voc">Max Features Extracted (Vocabulary)</string>
|
||||
<string name="pref_summary_features_voc">Extracting more features per image would result in better loop closure hypotheses but more processing time is required.</string>
|
||||
<string name="pref_title_features">Max Features Extracted (Loop Closure)</string>
|
||||
@@ -494,25 +494,29 @@
|
||||
<item>"10"</item>
|
||||
</string-array>
|
||||
<string-array name="pref_opt_error_keys">
|
||||
<item>"1.0 m"</item>
|
||||
<item>"0.5 m"</item>
|
||||
<item>"0.35 m"</item>
|
||||
<item>"0.2 m"</item>
|
||||
<item>"0.1 m"</item>
|
||||
<item>"0.05 m"</item>
|
||||
<item>"0.025 m"</item>
|
||||
<item>"0.01 m"</item>
|
||||
<item>"10x"</item>
|
||||
<item>"9x"</item>
|
||||
<item>"8x"</item>
|
||||
<item>"7x"</item>
|
||||
<item>"6x"</item>
|
||||
<item>"5x"</item>
|
||||
<item>"4x"</item>
|
||||
<item>"3x"</item>
|
||||
<item>"2x"</item>
|
||||
<item>"1x"</item>
|
||||
<item>"Disabled"</item>
|
||||
</string-array>
|
||||
<string-array name="pref_opt_error_values">
|
||||
<item>"1.0"</item>
|
||||
<item>"0.5"</item>
|
||||
<item>"0.35"</item>
|
||||
<item>"0.2"</item>
|
||||
<item>"0.1"</item>
|
||||
<item>"0.05"</item>
|
||||
<item>"0.025"</item>
|
||||
<item>"0.01"</item>
|
||||
<item>"10"</item>
|
||||
<item>"9"</item>
|
||||
<item>"8"</item>
|
||||
<item>"7"</item>
|
||||
<item>"6"</item>
|
||||
<item>"5"</item>
|
||||
<item>"4"</item>
|
||||
<item>"3"</item>
|
||||
<item>"2"</item>
|
||||
<item>"1"</item>
|
||||
<item>"0"</item>
|
||||
</string-array>
|
||||
<string-array name="pref_features_voc_keys">
|
||||
|
||||
@@ -71,6 +71,7 @@ import android.os.Handler;
|
||||
import android.os.Debug;
|
||||
import android.os.IBinder;
|
||||
import android.os.Message;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
@@ -708,6 +709,15 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem
|
||||
String simThr = sharedPref.getString(getString(R.string.pref_key_sim_thr), getString(R.string.pref_default_sim_thr));
|
||||
mMinInliers = sharedPref.getString(getString(R.string.pref_key_min_inliers), getString(R.string.pref_default_min_inliers));
|
||||
mMaxOptimizationError = sharedPref.getString(getString(R.string.pref_key_opt_error), getString(R.string.pref_default_opt_error));
|
||||
float maxOptimizationError = Float.parseFloat(mMaxOptimizationError);
|
||||
if(maxOptimizationError >0 && maxOptimizationError<1)
|
||||
{
|
||||
Log.w(TAG, "Migration of " + getString(R.string.pref_key_opt_error) + " from " + mMaxOptimizationError + " to " + getString(R.string.pref_default_opt_error)) ;
|
||||
SharedPreferences.Editor editor = sharedPref.edit();
|
||||
editor.putString(getString(R.string.pref_key_opt_error), getString(R.string.pref_default_opt_error));
|
||||
editor.commit();
|
||||
mMaxOptimizationError = getString(R.string.pref_default_opt_error);
|
||||
}
|
||||
mMaxFeatures = sharedPref.getString(getString(R.string.pref_key_features_voc), getString(R.string.pref_default_features_voc));
|
||||
String maxFeaturesLoop = sharedPref.getString(getString(R.string.pref_key_features), getString(R.string.pref_default_features));
|
||||
String featureType = sharedPref.getString(getString(R.string.pref_key_features_type), getString(R.string.pref_default_features_type));
|
||||
@@ -1023,6 +1033,7 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem
|
||||
int matches,
|
||||
int rejected,
|
||||
float optimizationMaxError,
|
||||
float optimizationMaxErrorRatio,
|
||||
boolean fastMovement,
|
||||
String[] statusTexts)
|
||||
{
|
||||
@@ -1110,7 +1121,7 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem
|
||||
{
|
||||
if(optimizationMaxError > 0.0f)
|
||||
{
|
||||
mToast.setText(String.format("Loop closure rejected, too high graph optimization error (%.3fm > %sm).", optimizationMaxError, mMaxOptimizationError));
|
||||
mToast.setText(String.format("Loop closure rejected, too high graph optimization error (%.3fm: ratio=%.3f < factor=%sx).", optimizationMaxError, optimizationMaxErrorRatio, mMaxOptimizationError));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1158,6 +1169,7 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem
|
||||
final int rejected,
|
||||
final float rehearsalValue,
|
||||
final float optimizationMaxError,
|
||||
final float optimizationMaxErrorRatio,
|
||||
final float distanceTravelled,
|
||||
final int fastMovement,
|
||||
final float x,
|
||||
@@ -1238,7 +1250,7 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
updateStatsUI(loopClosureId, inliers, matches, rejected, optimizationMaxError, fastMovement!=0, statusTexts);
|
||||
updateStatsUI(loopClosureId, inliers, matches, rejected, optimizationMaxError, optimizationMaxErrorRatio, fastMovement!=0, statusTexts);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ prefix=$1
|
||||
git clone https://github.com/introlab/rtabmap.git rtabmap-tango
|
||||
|
||||
# tango
|
||||
wget https://developers.google.com/tango/downloads/TangoSDK_Ikariotikos_C.zip
|
||||
wget 'https://docs.google.com/uc?authuser=0&id=12rHHkYM5k-UnQn-xGXs9JqYWhSXrgJr3&export=download' -O TangoSDK_Ikariotikos_C.zip
|
||||
unzip -qq TangoSDK_Ikariotikos_C.zip
|
||||
rm TangoSDK_Ikariotikos_C.zip
|
||||
cp -r lib_tango_client_api/include/* $prefix/armeabi-v7a/include/.
|
||||
@@ -19,7 +19,7 @@ cp -r lib_tango_client_api/include/* $prefix/arm64-v8a/include/.
|
||||
cp -r lib_tango_client_api/lib/armeabi-v7a/* $prefix/armeabi-v7a/lib/.
|
||||
cp -r lib_tango_client_api/lib/arm64-v8a/* $prefix/arm64-v8a/lib/.
|
||||
rm -r lib_tango_client_api
|
||||
wget https://developers.google.com/tango/downloads/TangoSupport_Ikariotikos_C.zip
|
||||
wget 'https://docs.google.com/uc?authuser=0&id=1AqVuEVu5284X6OgrGWu12VTrx4pY99Jb&export=download' -O TangoSupport_Ikariotikos_C.zip
|
||||
unzip -qq TangoSupport_Ikariotikos_C.zip
|
||||
rm TangoSupport_Ikariotikos_C.zip
|
||||
cp -r lib_tango_support_api/include/* $prefix/armeabi-v7a/include/.
|
||||
@@ -28,7 +28,7 @@ cp -r lib_tango_support_api/lib/armeabi-v7a/* $prefix/armeabi-v7a/lib/.
|
||||
cp -r lib_tango_support_api/lib/arm64-v8a/* $prefix/arm64-v8a/lib/.
|
||||
cp -r lib_tango_support_api/lib/* rtabmap-tango/app/android/jni/third-party/lib/.
|
||||
rm -r lib_tango_support_api
|
||||
wget https://developers.google.com/tango/downloads/TangoSDK_Ikariotikos_Java.jar
|
||||
wget 'https://docs.google.com/uc?authuser=0&id=1s5iPJ7xiridj9Jj--gCy2XiQFniheVm6&export=download' -O TangoSDK_Ikariotikos_Java.jar
|
||||
mv TangoSDK_Ikariotikos_Java.jar rtabmap-tango/app/android/libs/.
|
||||
|
||||
# resource tool
|
||||
|
||||
Reference in New Issue
Block a user