The reason for this change is that RPi2 and RPi3 are compatible, and
hopefully all differences coming up can be resolved without ifdefs but
at runtime.
__STDC_FORMAT_MACROS changes the behavior of inttypes.h to allow
defining format macros for printf-like functions. It needs to be defined
before any include is done, otherwise due to include chains and header
guards it may not take effect.
Instead of having to define it everywhere it is used, move the define to the
build system. Also update ecl and DriverFramework submodules to deal with the
changed definitions.
Reason: the value is easier to read & handle (for example plotting). In
most places the value is needed, not the integral.
Note that this breaks the replay format for sdlog2 replay
- voting is now at a central place instead of duplicated within the
estimators
-> this also means that estimators that did not do voting so far,
now have voting, like ekf2
- estimators requiring more than that can still subscribe to the raw
sensors
- allows sensors_combined to be 3 times smaller
- reduces logger, memcpy (cache) & RAM overhead
- all modules requiring only 1 or 2 sensor values now automatically get
the voted result
- this also adds voting to baro
Decreases the message size from 780 to 280 bytes.
In particular, all modules using sensor_combined must use the integral now.
The sensor value can easily be reconstructed by dividing with dt.
Voters now need to be moved into sensors module, because error count and
priority is removed from the topic.
Any module that requires additional data from a sensor can subscribe to
the raw sensor topics.
At two places, values are set to zero instead of subscribing to the raw
sensors (with the assumption that no one reads them):
- mavlink mavlink_highres_imu_t::abs_pressure
- sdlog2: sensor temperatures
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.
* accelsim: add debug output like in gyrosim
* DriverFramework: update submodule
This brings lower CPU usage because of scheduling in us instead of ms.