// CaptureBasePtr Cc = CaptureBase::emplace<CapturePose>(F1, start_ts + 2*min_time_vote, sen, Vector7d(), Matrix6d());
// CaptureBasePtr Cd = CaptureBase::emplace<CapturePose>(F1, start_ts + 2.5*min_time_vote, sen, Vector7d(), Matrix6d());
// CaptureBasePtr Ce = CaptureBase::emplace<CapturePose>(F1, start_ts + 3*min_time_vote, sen, Vector7d(), Matrix6d());
// for (int i=0; i < min_features_for_keyframe; i++){
// det.id = i;
// FeatureBase::emplace<FeatureApriltag>(Ca, (Vector7d()<<0,0,0,0,0,0,1).finished(), Matrix6d::Identity(), i, det, rep_error1, rep_error2, use_rotation);
// FeatureBase::emplace<FeatureApriltag>(Cc, (Vector7d()<<0,0,0,0,0,0,1).finished(), Matrix6d::Identity(), i, det, rep_error1, rep_error2, use_rotation);
// if (i != min_features_for_keyframe-1){
// FeatureBase::emplace<FeatureApriltag>(Cd, (Vector7d()<<0,0,0,0,0,0,1).finished(), Matrix6d::Identity(), i, det, rep_error1, rep_error2, use_rotation);
// FeatureBase::emplace<FeatureApriltag>(Ce, (Vector7d()<<0,0,0,0,0,0,1).finished(), Matrix6d::Identity(), i, det, rep_error1, rep_error2, use_rotation);
// }
// }
// // CASE 1: Not enough time between origin and incoming
// prc_apr->setOriginPtr(Ca);
// prc_apr->setIncomingPtr(Cb);
// ASSERT_FALSE(prc_apr->voteForKeyFrame());
// // CASE 2: Enough time but still too many features in image to trigger a KF
// prc_apr->setOriginPtr(Ca);
// prc_apr->setLastPtr(Cb);
// prc_apr->setIncomingPtr(Cc);
// ASSERT_FALSE(prc_apr->voteForKeyFrame());
// // // CASE 3: Enough time, enough features in last, not enough features in incoming
// // prc_apr->setOriginPtr(Ca);
// // prc_apr->setLastPtr(Cc);
// // prc_apr->setIncomingPtr(Cd);
// // ASSERT_TRUE(prc_apr->voteForKeyFrame());
// // // CASE 4: Enough time, not enough features in last, not enough features in incoming