confirm that all motion are initialized and initially tracked
This commit is contained in:
+1806
-1844
File diff suppressed because it is too large
Load Diff
@@ -143,16 +143,16 @@ public:
|
||||
boost::unique_lock<boost::mutex> lock(ekf_mut_);
|
||||
filter_->predict(x,y,theta,1e-9*time.toNSec());
|
||||
};
|
||||
//Camera frame z forward, x right, y down -> right hands (pitch counts from x)correct
|
||||
//Camera frame z back, x right, y down -> left hands (pitch counts from x)correct
|
||||
//Notice T_F_W is the position of the first frame with respect to the new frame while they are looking at one feature
|
||||
std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5> UpdateSvo(double x/*in camera frame*/,double z/*in camera frame*/,double pitch/*in camera frame*/) {
|
||||
boost::unique_lock<boost::mutex> lock(ekf_mut_);
|
||||
filter_->correct(x,z,-1.0*pitch);
|
||||
filter_->correct(x,z,pitch);
|
||||
Eigen::Matrix<double,3,3> cov;
|
||||
cov<<filter_->cov_(0,0),filter_->cov_(0,1),filter_->cov_(0,2),
|
||||
filter_->cov_(1,0),filter_->cov_(1,1),filter_->cov_(1,2),
|
||||
filter_->cov_(2,0),filter_->cov_(2,1),filter_->cov_(2,2);
|
||||
return std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5>(cov,vio::SE2_5(filter_->state_(0),filter_->state_(1),-1.0*(filter_->state_(2))));
|
||||
return std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5>(cov,vio::SE2_5(filter_->state_(0),filter_->state_(1),(filter_->state_(2))));
|
||||
};
|
||||
std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5> get_location(){
|
||||
boost::unique_lock<boost::mutex> lock(ekf_mut_);
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
cov<<filter_->cov_(0,0),filter_->cov_(0,1),filter_->cov_(0,2),
|
||||
filter_->cov_(1,0),filter_->cov_(1,1),filter_->cov_(1,2),
|
||||
filter_->cov_(2,0),filter_->cov_(2,1),filter_->cov_(2,2);
|
||||
return std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5>(cov,vio::SE2_5(filter_->state_(0),filter_->state_(1),-1.0*(filter_->state_(2))));
|
||||
return std::pair<Eigen::Matrix<double,3,3>,vio::SE2_5>(cov,vio::SE2_5(filter_->state_(0),filter_->state_(1),(filter_->state_(2))));
|
||||
}
|
||||
size_t cmd_syn_count_=0;
|
||||
size_t imu_syn_count_=2;
|
||||
|
||||
@@ -222,7 +222,7 @@ FrameHandlerBase::UpdateResult FrameHandlerMono::processFrame()
|
||||
new_frame_->T_f_w_.se2().translation().y()-init_f.second.se2().translation().y(),
|
||||
fabs(new_frame_->T_f_w_.pitch()-init_f.second.pitch()));
|
||||
#endif
|
||||
if((init_f.second.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm()>0.1 ||
|
||||
if((init_f.second.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm()>0.5 ||
|
||||
fabs(new_frame_->T_f_w_.pitch()-init_f.second.pitch())>0.25*M_PI_2 || sfba_n_edges_final<4){
|
||||
new_frame_=last_frame_;
|
||||
return RESULT_FAILURE;
|
||||
@@ -301,7 +301,7 @@ bool FrameHandlerMono::needNewKf()
|
||||
new_frame_->T_f_w_.se2().translation().x(),new_frame_->T_f_w_.se2().translation().y(),new_frame_->T_f_w_.pitch(),
|
||||
closest_kfs.se2().translation().x(),closest_kfs.se2().translation().y(),closest_kfs.pitch());
|
||||
#endif
|
||||
if(fabs(closest_kfs.pitch()-new_frame_->T_f_w_.pitch()) > 0.43 || fabs((closest_kfs.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm())>0.2)return true;
|
||||
if(fabs(closest_kfs.pitch()-new_frame_->T_f_w_.pitch()) > 0.43 || fabs((closest_kfs.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm())>0.15)return true;
|
||||
return false;
|
||||
}
|
||||
void FrameHandlerMono::UpdateIMU(double* value,const ros::Time& time){
|
||||
|
||||
Reference in New Issue
Block a user