Instead of calculating time offsets between samples, it is easier just
to assume a constant sampling time. Then all samples can be integrated,
and published every forth time the FIFO buffer has been emptied.
The sampling in the sensor happens at 8kHz, the driver empties the
buffer at 1kHz, and publishes (and resets the integration) at 250 Hz.
This adds a second put method to the integrator class. This allows to
integrate with known intervals between samples, rather than based on
timestamps. This makes integrating the samples coming out of the MPU9250
FIFO buffer easier.
* 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.
* Qflight: add intersil sensor driver
* df_isl_wrapper: change driver lib name to isl
* posix-config: add df_isl_wrapper start command to eagle startup
* isl_wrapper: cleanup isl wrapper
* isl: remove unused option -R
* isl: change the driver name to isl29501
* DriverFramework: updated submodule again
This is to get the latest `make fix-style` changes.
* df_isl29501_wrapper: rename wrapper all the way
There was the case where a param was changed on the Linux side but the
change did not get saved on the DSP side because the param was not in
the local list of changed params on the DSP side. On save, the param
index is now refreshed, and param_get is called on all params that have
changed. This is a hacky workaround but resolves the problem for now.
- Make use of the FIFO time offsets provided by the MPU9250 driver.
It allows to use proper dt for the integration.
- Got rid of the unnecessary perf_counters for now.
- Properly use the changed integrator lib.
- Provide integral_dt for ekf2.
The integrator had an untested read mode which did not apply the coning
correction. Instead of keeping two integrals (auto/read) it is now one
and the reset mechanism can be selected by setting the
auto_reset_interval to 0 to disable it or some positive number else.
Also, the integrator could potentially explode if a (single) timestamp
was wrong, so before the last integrated one. This is now caught with a
dt of 0 instead of inf/nan.
The device ID is defined as a uint32_t in the driver and topic but
stored as a int32_t param. It is therefore sufficient if the device ID
is not 0 in order to be valid.
The LED init and Buzzer init messages were only annoying and not helpful
on Snapdragon and SITL. Therefore they are replaced with only developer
printfs.
This fixes an issue where topics where not subscribed to on the Linux
side on Snapdragon. It's a hack until there is a proper fix for the
orb_exists() call.
Most condition bools in the commander are not used anywhere but in the
commander. It therefore makes sense to move them to a different internal
struct and remove them from the vehicle_status message.
Also, the land_detected should be used by all the modules instead of
getting it through the commander and system_status.
The commander used to consume the battery_status topic and write the
contents after some calculations into the system state. Instead, the
calculations now happen in library calls in systemlib/battery.
This moves the battery fields out of the vehicle_status message into the
battery_status topic.
This brought quite some changes in all modules that need battery
information. The current state is compiling but untested.
The MAV_TYPE enum was not in sync with the mavlink specs anymore. It
makes therefore sense to remove the duplication and include the correct
mavlink header file where it is needed.
Also, error counts which are not populated, can be scrapped.
Since the circuit breaker bools are not actually used anywhere else than
in the commander, it is safe to remove them and replace them with local
bools.