diff --git a/src/processor/processor_loop_closure_icp.cpp b/src/processor/processor_loop_closure_icp.cpp
index 32ab4591793761c22f430398b8e7994283fcdede..cd3e809f405ee5b40ee252d21a9420d33c06b42b 100644
--- a/src/processor/processor_loop_closure_icp.cpp
+++ b/src/processor/processor_loop_closure_icp.cpp
@@ -1,5 +1,6 @@
 #include "laser/processor/processor_loop_closure_icp.h"
 #include "laser/sensor/sensor_laser_2d.h"
+#include "core/math/covariance.h"
 
 using namespace wolf;
 using namespace laserscanutils;
@@ -8,7 +9,8 @@ namespace wolf{
 // Constructor
 ProcessorLoopClosureIcp::ProcessorLoopClosureIcp(ParamsProcessorLoopClosureIcpPtr _params) :
     ProcessorBase("ProcessorLoopClosureIcp", 2, _params),
-    params_loop_closure_icp_(_params)
+    params_loop_closure_icp_(_params),
+    key_frames_skipped_(0)
 {
     icp_tools_ptr_ = std::make_shared<ICP>();
 }
@@ -218,6 +220,10 @@ CapturesAligned ProcessorLoopClosureIcp::bestCandidate(std::map<double, Captures
 }
 FactorBasePtr ProcessorLoopClosureIcp::emplaceFeatureAndFactor(CapturesAligned &_captures_aligned)
 {
+    assert(_captures_aligned.align_result.valid == 1);
+    if (not isCovariance(_captures_aligned.align_result.res_covar))
+        _captures_aligned.align_result.res_covar = 1e-4 * Eigen::Matrix3d::Identity();
+
     auto ftr = FeatureBase::emplace<FeatureICPAlign>(_captures_aligned.capture_own,
                                                      _captures_aligned.align_result);
     return FactorBase::emplace<FactorRelativePose2dWithExtrinsics>(ftr,