diff --git a/include/core/factor/factor_velocity_direction_3d.h b/include/core/factor/factor_velocity_direction_3d.h
index 05cc4e8d0e509d8a430c2f2192a67762fd933194..0704416d721b42d0100298c23728771f0d6bcb41 100644
--- a/include/core/factor/factor_velocity_direction_3d.h
+++ b/include/core/factor/factor_velocity_direction_3d.h
@@ -16,8 +16,12 @@ WOLF_PTR_TYPEDEFS(FactorVelocityDirection3d);
 //class
 class FactorVelocityDirection3d: public FactorAutodiff<FactorVelocityDirection3d,1,3,4>
 {
+    protected:
+        double min_vel_norm_;
+
     public:
         FactorVelocityDirection3d(FeatureBasePtr _ftr_ptr,
+                                  const double& _min_vel_norm,
                                   const ProcessorBasePtr& _processor_ptr,
                                   bool _apply_loss_function,
                                   FactorStatus _status = FAC_ACTIVE) :
@@ -29,7 +33,8 @@ class FactorVelocityDirection3d: public FactorAutodiff<FactorVelocityDirection3d
                                                                 _apply_loss_function,
                                                                 _status,
                                                                 _ftr_ptr->getFrame()->getV(),
-                                                                _ftr_ptr->getFrame()->getO())
+                                                                _ftr_ptr->getFrame()->getO()),
+                min_vel_norm_(_min_vel_norm)
         {
 //            std::cout << "created FactorVelocityDirection3d " << std::endl;
         }
@@ -46,6 +51,12 @@ inline bool FactorVelocityDirection3d::operator ()(const T* const _v, const T* c
     Eigen::Map<const Eigen::Matrix<T,3,1> > v(_v);
     Eigen::Map<const Eigen::Quaternion<T> > q(_q);
 
+    if (v.norm() < min_vel_norm_)
+    {
+        _residuals[0] = T(0);
+        return true;
+    }
+
     //     std::cout << "v: " << v(0) << " "
     //                        << v(1) << " "
     //                        << v(2) << "\n";
diff --git a/include/core/processor/processor_fix_wing_model.h b/include/core/processor/processor_fix_wing_model.h
index 040cdc39b57f6c2604c999ad4a9509c6026fd162..73e7f3cc264ef4078d3855fa5b2080eda1fcdaf8 100644
--- a/include/core/processor/processor_fix_wing_model.h
+++ b/include/core/processor/processor_fix_wing_model.h
@@ -19,6 +19,7 @@ struct ParamsProcessorFixWingModel : public ParamsProcessorBase
 {
         Eigen::Vector3d velocity_local;
         double angle_stdev;
+        double min_vel_norm;
 
         ParamsProcessorFixWingModel() = default;
         ParamsProcessorFixWingModel(std::string _unique_name, const wolf::ParamsServer & _server) :
@@ -26,12 +27,14 @@ struct ParamsProcessorFixWingModel : public ParamsProcessorBase
         {
             velocity_local   = _server.getParam<Eigen::Vector3d> (prefix + _unique_name + "/velocity_local");
             angle_stdev      = _server.getParam<double>          (prefix + _unique_name + "/angle_stdev");
+            min_vel_norm      = _server.getParam<double>         (prefix + _unique_name + "/min_vel_norm");
         }
         std::string print() const override
         {
             return ParamsProcessorBase::print()  + "\n"
                 + "velocity_local: print not implemented\n"
-                + "angle_stdev: " + std::to_string(angle_stdev) + "\n";
+                + "angle_stdev: " + std::to_string(angle_stdev) + "\n"
+                + "min_vel_norm: " + std::to_string(min_vel_norm) + "\n";
         }
 };
 
@@ -46,7 +49,7 @@ class ProcessorFixWingModel : public ProcessorBase
         WOLF_PROCESSOR_CREATE(ProcessorFixWingModel, ParamsProcessorFixWingModel);
 
         virtual ~ProcessorFixWingModel() override;
-        void configure(SensorBasePtr _sensor) override {};
+        void configure(SensorBasePtr _sensor) override;
 
     protected:
 
diff --git a/src/processor/processor_constant_velocity.cpp b/src/processor/processor_constant_velocity.cpp
index 496cbe3cc9c06add95508acb450570e394f6dbf6..dd98e0a93894b70a5966ded73a7fe5ddebb0fb47 100644
--- a/src/processor/processor_constant_velocity.cpp
+++ b/src/processor/processor_constant_velocity.cpp
@@ -27,8 +27,8 @@ ProcessorConstantVelocity::~ProcessorConstantVelocity()
 
 void ProcessorConstantVelocity::configure(SensorBasePtr _sensor)
 {
-    assert(params_processor_->cov_v_rate.rows() == getProblem()->getDim() && "cov_v_rate size is wrong");
-    assert(getProblem()->getFrameStructure().find('V') != std::string::npos && "Processor only works with problems with V");
+    assert(params_processor_->cov_v_rate.rows() == _sensor->getProblem()->getDim() && "cov_v_rate size is wrong");
+    assert(_sensor->getProblem()->getFrameStructure().find('V') != std::string::npos && "Processor only works with problems with V");
 }
 
 void ProcessorConstantVelocity::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
diff --git a/src/processor/processor_fix_wing_model.cpp b/src/processor/processor_fix_wing_model.cpp
index 02ee2d6b949a4906e39ff0ea80e24d9f44f9a3a3..2fab50466750b0b6944bffc34aaca6b5eb6647e5 100644
--- a/src/processor/processor_fix_wing_model.cpp
+++ b/src/processor/processor_fix_wing_model.cpp
@@ -24,8 +24,16 @@ ProcessorFixWingModel::~ProcessorFixWingModel()
 {
 }
 
+void ProcessorFixWingModel::configure(SensorBasePtr _sensor)
+{
+    assert(_sensor->getProblem()->getFrameStructure().find('V') != std::string::npos && "Processor only works with problems with V");
+}
+
 void ProcessorFixWingModel::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
 {
+    if (_keyframe_ptr->getV()->isFixed())
+        return;
+
     // emplace capture
     auto cap = CaptureBase::emplace<CaptureBase>(_keyframe_ptr, "CaptureBase",
                                                  _keyframe_ptr->getTimeStamp(), getSensor());
@@ -38,6 +46,7 @@ void ProcessorFixWingModel::processKeyFrame(FrameBasePtr _keyframe_ptr, const do
     // emplace factor
     auto fac = FactorBase::emplace<FactorVelocityDirection3d>(fea,
                                                               fea,
+                                                              params_processor_->min_vel_norm,
                                                               shared_from_this(),
                                                               false);
 }