Drawbacks of the previous method: when writing to the SD card, there are
high delays in the write() call of several 100ms, every now and then. The
frequency and length of these events depend on:
- SD card
- used logger bandwidth
- bandwidth of gps data (RTCM)
Since the whole gps thread was blocked during this period, it lead to
gps timeouts and lost module.
What we do now is: publish an orb topic with queuing. This makes it async
and the logger takes care of buffering. This means it's best to:
- use high logger rate
- use large logger buffer
- reduce logger bandwith by disabling unused topics
This was horribly wrong. Matrix is first cast into a matrix of size NxM (which is supposed to be the size of the result - NOT the starting point) so the transpose result becomes garbage. Instead make "Me" an MxN matrix as the original. Took me a whole evening to figure out this problem. Now my Kalman filter finally returns good results.
* Use variance to control publishing for LPE.
* Don't stop publishing if we have gps/ baro.
* LPE tuning and cleanup.
* Added bias saturation to LPE.
* Added vector enabled low pass filter block.
* Added rk4 integration and pub lowpass to LPE.
* Fix std::abs issue on mac/ reset lowpass on state reset.
* Don't estimate gyro bias when rotating at high speed att_est_q.
* Lowered low pass on position to 5 Hz for LPE.
* Streamline state space update for LPE.
* Added health flags to est2 log.
* Revert to old tuning, more conservative, less faults.
* Formatting.
* Fix for fault message on LPE.
* Added subscription throttling to LPE.
* Formatting.