Thank you for your great work.
I have some questions about the function "double2vector( )" in which the state does not compensate offset of the state of the first keyframe, i.e. Ps[0] and Rs[0]. However, in VINS-Fusion, this offset is considered which is equal to fixing the first keyframe. If this modification is ok when the GPS is lost?
GVINS:
`void Estimator::double2vector()
{
for (int i = 0; i <= WINDOW_SIZE; i++)
{
Rs[i] = Quaterniond(para_Pose[i][6], para_Pose[i][3],
para_Pose[i][4], para_Pose[i][5]).normalized().toRotationMatrix();
Ps[i] = Vector3d(para_Pose[i][0], para_Pose[i][1], para_Pose[i][2]);
Vs[i] = Vector3d(para_SpeedBias[i][0], para_SpeedBias[i][1], para_SpeedBias[i][2]);
Bas[i] = Vector3d(para_SpeedBias[i][3], para_SpeedBias[i][4], para_SpeedBias[i][5]);
Bgs[i] = Vector3d(para_SpeedBias[i][6], para_SpeedBias[i][7], para_SpeedBias[i][8]);
}
for (int i = 0; i < NUM_OF_CAM; i++)
{
tic[i] = Vector3d(para_Ex_Pose[i][0], para_Ex_Pose[i][1], para_Ex_Pose[i][2]);
ric[i] = Quaterniond(para_Ex_Pose[i][6], para_Ex_Pose[i][3],
para_Ex_Pose[i][4], para_Ex_Pose[i][5]).normalized().toRotationMatrix();
}
VectorXd dep = f_manager.getDepthVector();
for (int i = 0; i < f_manager.getFeatureCount(); i++)
dep(i) = para_Feature[i][0];
f_manager.setDepth(dep);
if (ESTIMATE_TD)
td = para_Td[0][0];
if (gnss_ready)
{
yaw_enu_local = para_yaw_enu_local[0];
for (uint32_t k = 0; k < 3; ++k)
anc_ecef(k) = para_anc_ecef[k];
R_ecef_enu = ecef2rotation(anc_ecef);
}
Thank you for your great work. I have some questions about the function "double2vector( )" in which the state does not compensate offset of the state of the first keyframe, i.e. Ps[0] and Rs[0]. However, in VINS-Fusion, this offset is considered which is equal to fixing the first keyframe. If this modification is ok when the GPS is lost?
GVINS: `void Estimator::double2vector() { for (int i = 0; i <= WINDOW_SIZE; i++) {
}`
VINS: void Estimator::double2vector() { Vector3d origin_R0 = Utility::R2ypr(Rs[0]); Vector3d origin_P0 = Ps[0];