File tree 1 file changed +14
-1
lines changed
1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -1037,6 +1037,12 @@ std::map<int, Transform> OptimizerG2O::optimize(
1037
1037
int it = 0 ;
1038
1038
UTimer timer;
1039
1039
double lastError = 0.0 ;
1040
+
1041
+ if (!optimizer.solver ()->init ()) {
1042
+ UERROR (" g2o: Error while initializing solver" );
1043
+ return optimizedPoses;
1044
+ }
1045
+
1040
1046
if (intermediateGraphes || this ->epsilon () > 0.0 )
1041
1047
{
1042
1048
for (int i=0 ; i<iterations (); ++i)
@@ -1150,7 +1156,8 @@ std::map<int, Transform> OptimizerG2O::optimize(
1150
1156
}
1151
1157
}
1152
1158
1153
- it += optimizer.optimize (1 );
1159
+ g2o::OptimizationAlgorithm::SolverResult result = optimizer.solver ()->solve (i);
1160
+ ++it;
1154
1161
1155
1162
// early stop condition
1156
1163
optimizer.computeActiveErrors ();
@@ -1163,6 +1170,12 @@ std::map<int, Transform> OptimizerG2O::optimize(
1163
1170
return optimizedPoses;
1164
1171
}
1165
1172
1173
+ if (result == g2o::OptimizationAlgorithm::Fail)
1174
+ {
1175
+ UERROR (" g2o: Solver failed, aborting optimization!" );
1176
+ return optimizedPoses;
1177
+ }
1178
+
1166
1179
double errorDelta = lastError - chi2;
1167
1180
if (i>0 && errorDelta < this ->epsilon ())
1168
1181
{
You can’t perform that action at this time.
0 commit comments