chichengcn / gici-open

GNSS/INS/Camera Integrated Navigation Library
GNU General Public License v3.0
437 stars 118 forks source link

可见卫星数长时间为0时报错 #46

Closed Orlnette closed 3 months ago

Orlnette commented 3 months ago

池博好,非常感谢您的开源工作,受益匪浅! 使用ros和非ros版本的spp_rrr对数据集5.1进行处理时,都碰到了如下的错误,错误大概发生在5.1的85%位置。 处理5.1之外的其他数据集均未发现这个问题。自行分析了下发现5.1中包含了几段隧道,隧道中可见卫星数急剧下降为0,在报错点前同样经历了几段卫星数为0的状态,但是并没有报错,猜测是不是因为长时间没有卫星,GNSS相关的参数被删除,导致参数id的种类检核失败?

I20240604 14:49:48.486418 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 3.037e+00, Final cost: 5.458e-01, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:48.486930 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:48.558012 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.62246, distance = 1.16276
I20240604 14:49:48.598373 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 1.434e+00, Final cost: 3.031e-01, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:48.652784 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.615621, distance = 1.16706
I20240604 14:49:48.682600 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:48.684845 331166 visual_estimator_base.cpp:321] Rejected 1 landmark outliers. Remaining 27 landmarks.
I20240604 14:49:48.684868 331166 visual_estimator_base.cpp:324] Rejected landmark outlier 387889: residual = 25.222677
I20240604 14:49:48.684885 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 3.547e+00, Final cost: 1.441e+00, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:48.685720 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:48.767984 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.597191, distance = 1.17188
I20240604 14:49:48.867172 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.607505, distance = 1.18365
I20240604 14:49:48.872267 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 2.043e+00, Final cost: 2.464e-01, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:48.962105 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.628629, distance = 1.17259
I20240604 14:49:48.962512 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:49.062629 331164 feature_handler.cpp:208] Select new keyframe by motivation: angle = 0.642403, distance = 1.17758
I20240604 14:49:49.065608 331166 visual_estimator_base.cpp:321] Rejected 2 landmark outliers. Remaining 24 landmarks.
I20240604 14:49:49.065657 331166 visual_estimator_base.cpp:324] Rejected landmark outlier 388113: residual = 10.643174
I20240604 14:49:49.065675 331166 visual_estimator_base.cpp:324] Rejected landmark outlier 388234: residual = 4.336728
I20240604 14:49:49.065691 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 2.493e+00, Final cost: 2.493e+00, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:49.067391 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:49.067574 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:49.067724 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:49.067869 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
I20240604 14:49:49.069849 331166 visual_estimator_base.cpp:321] Rejected 1 landmark outliers. Remaining 23 landmarks.
I20240604 14:49:49.069878 331166 visual_estimator_base.cpp:324] Rejected landmark outlier 388191: residual = 15.560731
I20240604 14:49:49.069897 331166 spp_imu_camera_rrr_estimator.cpp:355] SPP/IMU/Camera RRR: Iterations: 6, Initial cost: 2.355e+00, Final cost: 2.355e+00, Sensor type: 3, Sat number:  0, GDOP: 100.0
I20240604 14:49:49.082489 331166 gnss_estimator_base.h:658] Insufficient satellites! We need at least 5 satellites, but we only have 0!
F20240604 14:49:49.082576 331166 estimator_types.h:357] Check failed: (BackendId::sensorType(id.type()) == BackendId::sensorType(type)) || (BackendId::sensorType(type) == SensorType::IMU) 
*** Check failure stack trace: ***
    @     0x7ffff7862160  google::LogMessage::Fail()
    @     0x7ffff78620a1  google::LogMessage::SendToLog()
    @     0x7ffff78618be  google::LogMessage::Flush()
    @     0x7ffff7865564  google::LogMessageFatal::~LogMessageFatal()
    @     0x7ffff7b4308b  gici::changeIdType()
    @     0x7ffff7b0b9e5  gici::GnssEstimatorBase::eraseClockParameterBlocks()
    @     0x7ffff7c97442  gici::SppImuCameraRrrEstimator::addGnssMeasurementAndState()
    @     0x7ffff7c92651  gici::SppImuCameraRrrEstimator::addMeasurement()
    @     0x7ffff7c54b2e  gici::MultiSensorEstimating::processEstimator()
    @     0x7ffff7c5536e  gici::MultiSensorEstimating::runBackend()
    @     0x7ffff7738df4  (unknown)
    @     0x7ffff7900609  start_thread
    @     0x7ffff7572353  clone
    @              (nil)  (unknown)
chichengcn commented 3 months ago

已修复。这个BUG是由于先调用eraseImuState删除了当前状态,而后调用eraseClockParameterBlocks时状态不存在造成的。