* Disable mTECS, but retain code for now
* astyle fw_pos_control_l1
* fw_pos remove pitch_max_special only used by mtecs
* move FW_T_CLMB_MAX to FW TECS param group
* fw_pos initialize tecs_status_s
The cross terms (covariances) are now reset before the variance variance is set.
The vertical velocity state variance following a reset without GPS has been reduced.
IMU corrections were being applied at the wrong time horizon to the EKF states
IMU downsampling rotates the delta velocities into the orientation produced by the last delta angle, but this wasn't consistent with the way the state prediction was using the delta velocity data.
* sdlog2: move from STAT.MainState to COMM.MainState
This fixes a bug where vehicle_system_status and the commander internal
state were conflicting.
This will need adaptations in logging tools.
* sdlog2: don't bother changing STAT.MainState
For compatibility reasons, let's stick to the used log field (but still
fix the bug where the buffer (union) was overwrittern.
in detail:
- in the write method: the following are not necessarily atomic operations:
_last_update = hrt_absolute_time();
_generation++;
- appears_updated() was called with a lock held in some cases, but not
in ioctl
- use the SmartLock class, so that unlock() is not needed before every
return call. Makes it less error prone
This fixes a race condition: uORB::Manager::get_instance() is used in a
multi-thread context, but the singleton initialization was not thread-safe.
Further, this avoids having to check for nullptr every time the singleton
is accessed.
uORB::Manager::initialize() is called when uorb is started. No one else
accesses the singleton before that point, because it is only used in the
orb_* methods, and in muorb. Both require uorb to be started already when
they are used.