328 Commits

Author SHA1 Message Date
Daniel Agar
bb465ca5b7
sensor accel/gyro message cleanup
- split out integrated data into new standalone messages (sensor_accel_integrated and sensor_gyro_integrated)
 - publish sensor_gyro at full rate and remove sensor_gyro_control
 - limit sensor status publications to 10 Hz
 - remove unused accel/gyro raw ADC fields
 - add device IDs to sensor_bias and sensor_correction
    - vehicle_angular_velocity/vehicle_acceleration: check device ids before using bias and corrections
2020-01-18 01:15:00 -05:00
kamilritz
1560309687 Checking all used vision data for being finite 2020-01-09 10:36:10 +01:00
kamilritz
90aa4bb852 Support 3d auxvel fusion 2020-01-09 10:36:10 +01:00
kamilritz
a67229e60e Use full variance of vision data 2020-01-09 10:36:10 +01:00
kamilritz
24efc1b79c Set not yet supported estimator_innovations fields to zero 2019-12-05 11:29:29 +01:00
kamilritz
5d0965e83a Log height innovation sensor specific 2019-12-05 11:29:29 +01:00
kamilritz
b73c80428e ECL: Clean velPos logging, deprecate ekf2_innovations msg 2019-12-05 11:29:29 +01:00
Daniel Agar
97c6a28a70 replace unnecessary perf_alloc_once usage 2019-11-30 21:17:15 -05:00
bresch
09c8c8f706 ekf: use PDOP instead of GDOP as TDOP (part of GDOP) is not given by the GNSS receiver 2019-11-27 10:33:27 +01:00
bresch
20705e3c53 ekf2_main: simplify "if true else false" with direct boolean assignment 2019-11-27 10:33:27 +01:00
bresch
f6a72663fa ekf2_main: extract gps mgs fill 2019-11-27 10:33:27 +01:00
bresch
5d6e0587db ekf_main: fill gps gdop topic with pdop (combination of hdop and vdop) 2019-11-27 10:33:27 +01:00
bresch
12177cb33b commander: add pre-flight check and parameter for magnetic field strength 2019-11-25 21:15:55 +01:00
Daniel Agar
a475d71ca9
astyle shift module documentation to bottom of files
- Astyle chokes on the module description strings, so for now we can keep them near the bottom of each file.
2019-11-02 10:58:47 -04:00
Beat Küng
3198610f85 src/platforms: move all headers to platforms/common/include/px4_platform_common
and remove the px4_ prefix, except for px4_config.h.

command to update includes:
for k in app.h atomic.h cli.h console_buffer.h defines.h getopt.h i2c.h init.h log.h micro_hal.h module.h module_params.h param.h param_macros.h posix.h sem.h sem.hpp shmem.h shutdown.h tasks.h time.h workqueue.h; do for i in $(grep -rl 'include <px4_'$k src platforms boards); do sed -i 's/#include <px4_'$k'/#include <px4_platform_common\/'$k/ $i; done; done
for in $(grep -rl 'include <px4_config.h' src platforms boards); do sed -i 's/#include <px4_config.h/#include <px4_platform_common\/px4_config.h'/ $i; done

Transitional headers for submodules are added (px4_{defines,log,time}.h)
2019-10-30 11:48:47 +01:00
Daniel Agar
9f4258f6ff clang-tidy: partially fix hicpp-explicit-conversions 2019-10-28 10:50:31 -04:00
Mathieu Bresciani
549fb0d5de
ekf2_main - Add optical flow innovation pre-flight check (#13036)
* ekf2: Add FirstOrderLpf and InnovationLpf classes for innovation lowpass filtering

* ekf2: use InnovLpf filter class in preflight checks

* ekf2: move selection of yaw test limit for pre-flight check in function

* ekf2: Move pre-flight checks into separate function

* ekf2: use static constexpr insetead of inline for sq (square) function

* ekf2: Split pre-flight checks in separate functions
Also use the same check for all the innovations:
innov_lpf < test and innov < 2xtest

* ekf2: Add optical flow pre-flight check

* ekf2: Combine FirstOrderLpf and InnovationLpf in single class

* ekf2: check vel_pos_innov when ev_pos is active as well

* ekf2: transform InnovationLpf into a header only library and pass the
spike limit during the update call to avoid storing it here

* ekf2: Static and const cleanup
- set spike_lim constants as static constexpr, set innovation
- set checker helper functions as static
- rename the mix of heading and yaw as heading to avoid confusion

* ekf2: use ternary operator in selectHeadingTestLimit instead of if-else

* ekf2: store intermediate redults in const bool flags. Those will be used for logging

* ekf2: set variable const whenever possible

* ekf2: create PreFlightChecker class that handle all the innovation
pre-flight checks.
Add simple unit testing
Use bitmask instead of general flag to have more granularity

* PreFlightChecker: use setter for the innovations to check instead of sending booleans in the update function
This makes it more scalable as more checks will be added

* ekf: Use booleans instead of bitmask for ekf preflt checks
Rename "down" to "vert"
2019-10-22 16:22:42 +02:00
Daniel Agar
35398e05ca
perf counter cleanup (mostly intervals)
Some of these perf counters were useful during initial development, but realistically aren't needed anymore, some are redundant when we can now see the average interval from `work_queue status` and some of them simply aren't worth the cost at higher rates.
2019-10-21 18:54:17 -04:00
kamilritz
a4e035d338 Add param to choose vision observation noise source 2019-10-15 16:06:37 +01:00
Daniel Agar
3c623af903 ekf2: move to WQ with uORB callback scheduling 2019-10-02 19:44:46 -04:00
Daniel Agar
c8e59c4e39 parameter_update use uORB::Subscription consistently 2019-09-29 10:49:03 -04:00
kritz
190c817a9e ekf2: update to latest ecl version [continued] (#13023)
* ekf2: update to latest ecl version

Includes compatibility changes for renamed variables.

* ekf2: Add write of odometry velocity data

Co-Authored-By: kritz <kritz@ethz.ch>

* ekf2: Modify parameters to enable control of vision velocity fusion

* ekf2: Update to latest ecl with timestamp messages
2019-09-26 10:21:53 +02:00
kritz
7427768e70 ECL reference frame alignment fix (#12771)
* Fix EKF frame alignemen in ECL

* Remove empty lines

* Add initalization for ev_odom

* Only use yaw covariance for angErr

* Improve frame naming in comments

* Use copyTo

* Add aligned as suffix

* Add missing vehicle_visual_odometry_aligned
2019-09-23 14:24:52 -04:00
Nico van Duijn
549a962553 EKF2: move handling of invalid range into ECL (#12988)
* ekf2: Move handling of invalid range finder data inside ecl library

The ecl library EKF is able to use vehicle motion and in-air status to better determine when the default on-ground range finder reading can be used.
The description for the EKF2_MIN_RNG parameter has been updated to make its use clearer.
2019-09-19 11:29:34 +02:00
Matthias Grob
fa13f63db6 ekf2: temporarily hardcode new quality information to unkown
until priseborough's and nicovanduijn's pr #12950
2019-09-18 22:01:36 -04:00
Julian Kent
2d4ecab3b0 Remove unsafe access to .data() and _data in Matrix 2019-09-18 22:01:36 -04:00
Silvan Fuhrer
ff6577ce5f EKF and AirspeedSelector: publish multiple wind estimate topic instances and log them all
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2019-09-01 14:05:06 -04:00
Silvan Fuhrer
07895cd3b6 Airspeed Selector: resolve conflics for wind estimate topic publishing after rebase
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2019-08-09 10:55:05 +02:00
Silvan Fuhrer
cedf14e2ba Airspeed Selector: repurpose wind estimator into an airspeed (selection, validation) module.
This new airspeed module does:
  -runns an airspeed validator for every airspeed sensor present, which checks measurement validity and estimates an airspeed scale
  -selects another airspeed sensor if for the current one a failure is detected
  -estimates airspeed with groundspeed-windspeed if no valid airspeed sensor is present
  -outputs airspeed_validated topic

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2019-08-09 10:55:05 +02:00
Daniel Agar
a917f22b65
sensors: create vehicle_acceleration module (#12597) 2019-08-07 05:05:48 -04:00
Daniel Agar
2ad12d7977
sensors: create vehicle_angular_velocity module (#12596)
* split out filtered sensor_gyro aggregation from mc_att_control and move to wq:rate_ctrl
2019-08-06 12:55:25 -04:00
RomanBapst
2c74216028 ekf2: fixed calculation of static pressure error
Signed-off-by: RomanBapst <bapstroman@gmail.com>
2019-06-27 18:11:53 +02:00
Timothy Scott
a134da6e12 Removed is_rotor_wing, replaced with vehicle_type 2019-06-13 10:04:26 +02:00
Daniel Agar
79d4c09d59
uORB::Publication simplify and cleanup
- base class is now template
 - drop linked list
 - virtualization no longer required
2019-06-12 08:48:19 -04:00
Daniel Agar
3796dda209 ekf2 move most orb subscriptions to uORB::Subscription 2019-06-06 08:22:15 +02:00
Beat Küng
5d6cc7d033 ekf2: reduce GPS initialization time for SITL from 10s to 0.5s
Speeds up SITL startup.
2019-05-28 10:45:38 +02:00
Matthias Grob
269d077fae ekf2: only check ground effect if it's configured 2019-04-30 12:34:28 +02:00
Roman
f034d2da19 ekf2: fixed bug in baro ground effect triggering logic
- when either terrain data was temporarily not valid (flying at high
distance to the ground) or the vehicle was not close to the ground
(_param_ekf2_gnd_max_hgt) the ekf switched to using the land detector
ground effect flag.

Signed-off-by: Roman <bapstroman@gmail.com>
2019-04-30 12:34:28 +02:00
bresch
986c1a37d1 Parameter update - Rename variables in modules/ekf2
using parameter_update.py followed by a make format
2019-04-03 15:38:50 +02:00
Elia Tarasov
b3bb625c71 add parameter to set ground effect distance 2019-03-21 10:07:12 +01:00
Elia Tarasov
04a486f13d enable ground effect zone when land detector is updated 2019-03-21 10:07:12 +01:00
Elia Tarasov
0c24aa6149 enable ground effect zone when valid terrain estimate is available 2019-03-21 10:07:12 +01:00
Matthias Grob
aa36fa2dfd replace camel case by snake case.
Co-Authored-By: EliaTarasov <elias.tarasov@gmail.com>
2019-03-21 10:07:12 +01:00
Elia Tarasov
84d9820baa remove EKF2_GND_EFF_EN flag and use condition EKF2_GND_EFF_DZ > 0 instead 2019-03-21 10:07:12 +01:00
Elia Tarasov
5fa0a647e5 add parameter to enable/disable ground effect zone 2019-03-21 10:07:12 +01:00
Roman
ecc8a696d0 added ground effect reporting to land detector
Signed-off-by: Roman <bapstroman@gmail.com>
2019-03-21 10:07:12 +01:00
Paul Riseborough
f8ae8ba502 ekf2: Use ecl library with recent bug fixes and enhancements.
Bug Fixes:

https://github.com/PX4/ecl/pull/586 - EKF: fix covariance and output filter buffer initialization
https://github.com/PX4/ecl/pull/590 - EKF: Fix innovation in fuseDeclination()

Enhancements:

https://github.com/PX4/ecl/pull/543 - ekf_helper: add more useful methods to interface with the covariances
https://github.com/PX4/ecl/pull/588 - Add unit tests for DataValidator

Note:

https://github.com/PX4/ecl/pull/543  has required a change to how the state variances are accessed .
2019-03-14 19:25:36 +11:00
Daniel Agar
beca16fa37
ekf2 update setGpsData usage 2019-03-05 23:28:26 -05:00
Paul Riseborough
6e0ca90852 ekf2: Minor parameter description edits 2019-03-05 07:17:09 +01:00
Paul Riseborough
643d8e968b ekf2: style fixes 2019-03-05 07:17:09 +01:00