Vision utils
Temporal merge. All works but the vision part is however not finished yet.
Merge request reports
Activity
mentioned in commit 6a639c76
150 150 { 151 151 processKnown(); 152 152 153 // eventually add more features 154 if (last_ptr_->getFeatureList().size() < params_tracker_->min_features_for_keyframe) 155 { 156 WOLF_TRACE("Adding more features..."); 157 processNew(params_tracker_->max_new_features); This is here to add more features in case there are less than required.
We made it so that we can ramp up the number of features across several captures. It's like a workaround. I would like to not have to resort to these kind of things, but it may happen that we are low on features for a while, and a condition
featureList()->size() < min_ftr_for_kf
invoteForKf()
would fire one new keyframe per capture while the scene is not showing enough features.Auxiliary frames are the solution (temporary KF), but you need to add the frame to the solver in order to make these features work.
Here, everything is based on the assumption of deciding KF (or auxiliary) in
last
. Maybe, this assumption is not fully applicable to the trifocal approach..Edited by Joan Vallvé NavarroIf you run out of features, your problem gets disconnected. Apart from this drawback, the processor is not dead, whenever you (or other processor) create a KF,
processNew()
is called (and sodetectNewFeatures()
).I think that to handle the case in which no new features were detected in
processNew()
, we should add a check after calling it inside theif(voteForKeyFrame()...)
. Then, abort the KF creation if no new features were detected.But, now, this call to
processNew()
is dangerous because is not following the assumptions made in this function: (see comment fromprocessor_tracker_feature.cpp
)/* Rationale: A keyFrame will be created using the last Capture. * First, we work on the last Capture to detect new Features, * When done, we need to track these new Features to the incoming Capture. * At the end, all new Features are appended to the lists of known Features in * the last and incoming Captures. */
Edited by Joan Vallvé NavarroYes I agree it's not so good...
The check inside voteForKf() is insufficient, since it is only done once. If not passed, next time you dont vote and you never test again.
Unless you always vote when there are not enough features, but this destroys the logic of voting.
And waiting for external KFs is not good either because there might not be any other sensor.
Maybe this can be left to any one of the individual processors? I dont know how to tackle everything in the general case.