Peter Dürr
5988900044
Add getters for a few private variables of the EstimatorInterface
...
* For testing it is useful to have access to more internal states
* For the same reason I also promote the const FILTER_UPDATE_PERIOD_MS to
public
2017-08-14 12:02:03 +02:00
Peter Dürr
a2ed0a76f9
Make the destructor of EstimatorInterface virtual
...
* This is a sane choice (and should arguably always be done for classes with
virtual methods to avoid undefined behavior)
* It is required for wrapping the EstimatorInterface with SWIG (without virtual
destructor, deriving from the EstimatorInterface leads to
-Werror=delete-non-virtual-dtor).
2017-08-14 12:02:03 +02:00
Paul Riseborough
cc5db74d1b
EKF: Add true airspeed accessor
2017-08-07 09:19:48 +10:00
Paul Riseborough
e1fe5b2229
Revert "Revert "Split get_terrain_vert_pos() into valid and get_vpos""
2017-07-19 17:52:35 +10:00
Paul Riseborough
c887b02f21
Revert "Split get_terrain_vert_pos() into valid and get_vpos"
2017-07-19 17:33:48 +10:00
ChristophTobler
eae0522dc2
split into get_terrain_valid and get_terrain_vert_pos
2017-07-17 16:42:42 +02:00
Paul Riseborough
d446f66105
EKF: Add a fixed wing mode with setter function
2017-07-08 11:13:40 +02:00
Paul Riseborough
eb1e73ec81
Merge pull request #283 from PX4/ekf_matrix_cleanup
...
EKF matrix typedef cleanup
2017-07-03 21:02:24 +10:00
Daniel Agar
c44488fdb8
EKF matrix typedef cleanup
2017-06-19 11:10:01 -04:00
Paul Riseborough
c48b879843
Merge pull request #276 from CarlOlsson/feature/only_update_mag_states
...
EKF: Add feature to use the mag to only update the mag states
2017-06-14 11:04:14 +10:00
Paul Riseborough
fed4a9bc5a
EKF: add vertical position derivative output
...
Add calculation of a vertical position derivative to the output predictor. This will have degraded tracking relative to the EKF states, but the velocity will be closer to the first derivative of the position and reduce the effect inertial prediction errors on control loops that are operating in a pure velocity feedback mode.
Move calculation of IMU offset angular rate correction out of velocity accessor and into output predictor.
Provide separate accessor for vertical position derivative.
2017-06-12 10:45:46 +10:00
CarlOlsson
871ebb251b
EKF: Changed get_control_mode to coyp 32 bits
2017-06-01 11:02:56 +02:00
CarlOlsson
be16406b35
EKF: Add feature to use the mag to only update the mag states
2017-05-26 11:29:21 +02:00
Daniel Agar
3919d60f66
ekf2 initialization fixes
2017-04-24 18:56:50 -04:00
Paul Riseborough
c607941e2f
EKF: Allow external setting of air density for multi-rotor drag fusion
2017-04-16 13:07:12 +02:00
Paul Riseborough
3758c5a09d
EKF: down-sample drag specific force data
2017-04-16 13:07:12 +02:00
Paul Riseborough
465b145929
EKF: Add multi-rotor drag model for wind estimation
2017-04-16 13:07:12 +02:00
Paul Riseborough
0d7e7e9d81
EKF: Don't use EKF origin in GPS drift check calculation
...
The GPS drift calculations need to be able to run independently of the EKF origin.
2017-04-12 13:11:34 +02:00
Paul Riseborough
040639837e
EKF: Use common timeout test for reporting deadreckoning
...
Use a parameter to set the time-out threshold
Use a class variable for the time-out flag
Clean up comments
2017-03-15 07:57:38 +01:00
Paul Riseborough
5fb24c3032
EKF: Reduce EKF prediction delta time jitter
...
Make the target EKF rate an integer multiple of the IMU rate. This slightly increases the average prediction time step for the EKF from just over 10msec to 12msec, but the variation reduces significantly which makes filter tuning more deterministic.
Improve the algorithm used to adjust the collection time criteria to reduce jitter in the correction.
2017-03-10 10:14:06 +01:00
Paul Riseborough
8070691aa4
EKF: Add accessor function for velocity accuracy
2017-02-25 21:17:01 +01:00
Paul Riseborough
d6abf3f2e4
EKF: add accessor function for local position accuracy
2017-02-25 21:17:01 +01:00
Paul Riseborough
b7d0b3c4d0
EKF: Improve naming of WGS-84 accuracy accessor function
2017-02-25 21:17:01 +01:00
Paul Riseborough
d22599b440
EKF: Add reporting of inertial dead-reckoning status
2017-02-25 21:17:01 +01:00
Daniel Agar
2750961be6
c++11 initialization cleanup ( #237 )
2017-02-05 13:05:10 -05:00
Lorenz Meier
453bde73f8
ECL: Simplify / correct estimator interface
2017-01-15 10:17:41 +01:00
Daniel Agar
d668a2d798
clang-tidy performance-unnecessary-value-param
2017-01-14 16:26:25 -08:00
Paul Riseborough
934890c2df
EKF: Add validity flag to ekf origin reporting
...
Flag is false until the origin has been initialised
2016-12-28 00:56:09 +01:00
Paul Riseborough
5ad329b641
EKF: Fix variable names to match convention
2016-11-07 22:23:12 +11:00
Paul Riseborough
d5b398ddb1
EKF: Minimise data buffer lengths
...
Saves RAM and reduces output predictor errors by using the smallest data buffer length that meets time delay and update rate requirements.
2016-11-07 09:06:45 +11:00
CarlOlsson
12aeaafbd3
adopted estimator_interface.h
2016-11-05 12:19:01 +01:00
Paul Riseborough
b10b0184c5
EKF: Add IMU vibration calculation and reporting
...
Add calculation and reporting of IMU delta angle and velocity coning and high frequency vibration
2016-10-19 21:46:55 +11:00
Paul Riseborough
352750e5d1
EKF: publish ekf solution status summary data
2016-10-06 09:02:29 +02:00
Paul Riseborough
744b79c1b2
EKF: Publish innovation test ratios
2016-10-06 09:02:29 +02:00
Paul Riseborough
65762e5998
EKF: publish output predictor tracking errors
2016-10-03 14:13:07 +11:00
Youssef Demitri
168d9add76
added getter function for wind states
2016-07-22 12:33:41 +02:00
Roman Bapst
bec1a6831e
added method to get gyro bias
...
Signed-off-by: Roman Bapst <roman@px4.io>
2016-06-21 14:13:47 +02:00
Roman Bapst
670c6ca019
change state reset information interface for more convenient handling
...
on firmware side
2016-06-06 13:22:20 +02:00
Paul Riseborough
6a55d908c5
EKF: replace reset event times with event counters
...
Using a 64bit integer was unnecessary given it was only being used to detect a new reset event.
2016-06-01 17:13:00 +10:00
Paul Riseborough
70f76e1a6c
EKF: publish innovation consistency check fail status
2016-06-01 17:13:00 +10:00
Paul Riseborough
e371a303a9
EKF: publish the quaternion reset event
2016-06-01 17:13:00 +10:00
Paul Riseborough
b2e432e211
EKF: publish position and velocity reset data
2016-06-01 17:13:00 +10:00
Paul Riseborough
733862f649
EKF: move the reset status struct to the Ekf class
...
This protects it from being modified externally
2016-06-01 17:13:00 +10:00
Paul Riseborough
4237269fab
EKF: add struct to capture state reset events
2016-06-01 17:13:00 +10:00
Paul Riseborough
65da9173b9
EKF: capture innovation checks and reset events in separate variables
...
rename the innovation check status class variable and remove the reset flags from it.
2016-06-01 17:13:00 +10:00
Paul Riseborough
8125717bf5
EKF: remove un-used airspeed health class variable
...
Airspeed rejection now is captured in _sensor_fault_status
2016-06-01 17:13:00 +10:00
Paul Riseborough
388e500180
EKF: remove un-used magnetometer health class variable
...
replaced by _sensor_health_status
2016-06-01 17:13:00 +10:00
Paul Riseborough
106482b078
EKF: add structure to capture innovation test failures and state resets
2016-06-01 17:13:00 +10:00
Paul Riseborough
d5b5cb5899
EKF: improvements to observation collection
...
Remove unnecessary function calls
Remove un-used functions
Apply a consistent maximum safe data rate check for all observation inputs
2016-05-26 13:27:08 +10:00
Carl Olsson
0fafc49a49
fixed typos ( #147 )
2016-05-22 17:40:43 +02:00
waltjohnson
7c158aa59b
Addressed C99 compiler issues of initializing variables in header and unused included statements.
2016-05-19 09:58:18 -06:00
Paul Riseborough
81469d6621
EKF: Add position, height and velocity reset for EV aiding
2016-05-14 21:17:29 +10:00
Paul Riseborough
3a0fcd03d7
EKF: Add interfaces and variables to use ext vision data
2016-05-14 21:17:29 +10:00
Paul Riseborough
481c624975
EKF: Remove use of vehicle arm status
...
Use single externally set in-air status for all decisions
2016-05-10 10:23:08 +10:00
Paul Riseborough
3cdf56e57c
Merge pull request #122 from CarlOlsson/airspeed_fix
...
fixed_airspeed_healthy_bug
2016-05-09 10:24:22 +10:00
CarlOlsson
ee7d7aeb8a
fixed_airspeed_healthy_bug
2016-05-08 18:30:37 +02:00
Paul Riseborough
c66ed7b662
EKF: Add interface method for filter fault status
2016-05-07 21:18:00 +10:00
Paul Riseborough
020b87933e
EKF: replace fault status struct with a union to facilitate logging
2016-05-07 21:11:16 +10:00
Paul Riseborough
fe9f88a8b4
EKF: test new derivation
...
Use direct attitude parameterisation
Discard scale factors
Add accel bias
2016-05-05 21:23:03 +10:00
Paul Riseborough
10bf05e9a6
EKF: publish the vertical position offset
2016-04-22 08:30:46 +10:00
Lorenz Meier
9487eac505
Merge pull request #98 from priseborough/pr-ekf2StatusReporting
...
EKF: improve reporting of filter status
2016-04-20 11:44:02 +02:00
Roman Bapst
99fc61c27c
ekf2 airspeed fusion:
...
- finished logic for fusion
- fixed bug where previous control status was set in the wrong location
2016-04-19 09:53:31 +02:00
Paul Riseborough
31bf342fc1
EKF: publish GPS check status
2016-04-19 17:38:22 +10:00
Paul Riseborough
6fa13c7806
EKF: publish control mode status
2016-04-19 17:37:27 +10:00
Roman Bapst
60abf07bee
added function to return accelerometer bias
2016-04-18 17:52:16 +02:00
Roman Bapst
f32303de69
added function to return accelerometer bias
2016-04-18 17:00:17 +02:00
Paul Riseborough
e10093854a
EKF: correct outputs for IMU offset
2016-04-12 11:14:31 +10:00
CarlOlsson
81fc086b76
adopted ekf_interface.h
2016-03-30 17:01:03 +02:00
Paul Riseborough
6b2e2dba90
EKF: Add GPS height option and improve height recovery
2016-03-16 10:40:51 +11:00
Paul Riseborough
dca186c6e8
EKF: Add required declarations for optical flow
2016-03-11 11:03:43 +11:00
mcsauder
f9e3db0504
Move variable initializations from header file to constructor to allow C99 compliance.
2016-03-02 08:42:38 +01:00
Paul Riseborough
cd0cac066a
EKF: Calculate and publish horizontal and vertical position accuracy
...
This calculation takes into account the uncertainty of the origin.
Dead reckoning status is also published
2016-02-25 10:38:07 +11:00
Paul Riseborough
a30830a7a9
EKF: Scale position observation noise with GPS quality
...
This allows the filter to adapt to variations in GPs quality.
The range of adjustment in observation noise is limited to the range between a lower limit set by the GPS observation noise parameter and an upper limit set by the no-aiding observation noise.
2016-02-25 10:16:32 +11:00
mcsauder
6c96f45f08
Remove whitespace differences with upstream for pull request.
2016-02-23 19:49:27 -07:00
mcsauder
fad1c87631
Merge upstream and resolve merge conflicts.
2016-02-23 19:29:30 -07:00
mcsauder
72243c4a84
Resolve tab/space differences with upstream master.
2016-02-18 03:28:40 -07:00
mcsauder
437f6ca5fb
Moved initialization to object constructors to allow C99 compiler compatibility.
2016-02-18 03:21:04 -07:00
bugobliterator
263c48d089
EKF: remove dependecies and allow ekf to be built as standalone shared lib
2016-02-17 17:33:18 -08:00
Paul Riseborough
9017e077f8
EKF: Publish the magnetic declination we wish to save for next startup
2016-02-14 22:01:53 +01:00
Roman
ad978c642f
estimator interface:
...
added flag for in_air status of vehicle
2016-02-14 20:43:22 +01:00
Roman
ce0ddc0207
-added comments
...
-removed unused print functions
-removed false _imu_time_last variable (correct is _time_last_imu)
2016-02-14 09:49:26 +01:00
Paul Riseborough
3f81eb7d1b
EKF: fix formatting
2016-02-04 17:15:03 +11:00
Paul Riseborough
7de1d39ce4
EKF: Improve use of position and velocity observation noise parameters
...
Fix bug where noise parameters were not being squared when calculating the observation variance.
Use GPS reported speed accuracy to set velocity observation noise and use the parameter to set the minimum.
2016-02-03 18:15:38 +11:00
bugobliterator
d79e12dfa1
EKF: fix code style
2016-01-31 00:12:16 -08:00
bugobliterator
8200ef4d17
EKF: allocate and unallocate buffer more robustly
2016-01-31 00:12:16 -08:00
bugobliterator
c6249a2825
EKF: change estimator base class name to estimation interface
2016-01-31 00:12:07 -08:00