zm0612/eskf-gps-imu-fusion

Correct函数中符号问题?

Closed this issue · 1 comments

博主,你好,这份代码思路清晰,给了我很大的帮助。但还是有些地方不明白,在Correct函数中有如下两个问题:
1、Y_ = pose_.block<3,1>(0,3) - curr_gps_data.position_ned;
测量误差为什么是估计值减去测量值?
2、计算输出结果时,EliminateError();函数中:
pose_.block<3,1>(0,3) = pose_.block<3,1>(0,3) - X_.block<3,1>(INDEX_STATE_POSI, 0);//因为
velocity_ = velocity_ - X_.block<3,1>(INDEX_STATE_VEL, 0);
Eigen::Matrix3d C_nn = Sophus::SO3d::exp(X_.block<3,1>(INDEX_STATE_ORI, 0)).matrix();
pose_.block<3,3>(0,0) = C_nn * pose_.block<3,3>(0,0);
gyro_bias_ = gyro_bias_ - X_.block<3,1>(INDEX_STATE_GYRO_BIAS, 0);
accel_bias_ = accel_bias_ - X_.block<3,1>(INDEX_STATE_ACC_BIAS, 0);
为什么是减号,我看《Quaternion kinematics for the error-state Kalman filter》这篇论文,说最终状态的输出是主成分分量加上误差项,但此处为什么是减号?

zm0612 commented

你好,之前这里确实写错了,应该是加上误差,公式在建模的时候使用的是加,最终矫正的时候,也应该使用加。目前这个问题已经进行了修复。感谢你指正!