Commit Graph

252 Commits

Author SHA1 Message Date
Peter Barker 5b372dae06 AP_AHRS: stop storing gyro drift rate as variable
This is constant and is just folded into whereever it is used.
2021-07-23 09:55:14 +10:00
Andrew Tridgell cd3ac639fe AP_AHRS: added AHRS_GPS_USE=2 for no baro
this allows DCM to use the GPS instead of the baro for height
2021-07-08 07:56:51 +10:00
CallanDaniel 76f5db93dc AP_AHRS: add semaphore around set_home()
added semaphore around set_home() to avoid thread racing
2021-06-23 10:11:02 +09:00
Peter Barker ee0a373b60 AP_AHRS: remove HIL support 2021-06-15 09:47:31 +10:00
Peter Barker 9eeec61cec AP_AHRS: new APIs for takeoff/touchdown expected
timeout handling now in AP_AHRS, and state stored in AHRS and
requested by AP_DAL
2021-06-02 11:13:16 +09:00
Peter Barker ea1884f491 AP_AHRS: remove separate calls to get delta-times for vel and ang 2021-03-13 11:29:29 +11:00
Randy Mackay 62932f884f AP_AHRS: pre_arm_check may skip position checks 2021-01-26 10:46:49 +11:00
Peter Barker 358069df24 AP_AHRS: use ground_course in preference to ground_course_cd 2021-01-26 10:22:28 +11:00
Peter Barker 55cb3e8ef0 AP_AHRS: get airspeed sensor from singleton not AHRS object 2020-12-07 15:57:28 -08:00
Andrew Tridgell dab091a801 AP_AHRS: cope with INS_MAX_INSTANCES below 3 2020-11-10 16:15:45 +11:00
Peter Barker 9d45669a58 AP_AHRS: reuse ins object for multiple calls, simplify delta_t variable 2020-10-20 11:24:34 +11:00
Randy Mackay 1d97416a51 AP_AHRS: replace prearm_healthy with pre_arm_check
Also removes prearm_failure_reason
2020-10-07 11:53:07 +11:00
Andrew Tridgell a4e7c72635 AP_AHRS: removed duplicate implementation of airspeed_estimate() 2020-08-27 20:20:51 +10:00
Harshit Kumar Sankhla b5b3298f0a AP_AHRS: get airspeed estimate from non-primary instances too
with multiple airspeed sensors and airspeed affinity in EKF3,
it is possible to have switched over to a lane not using the
primary airspeed sensor, so AHRS should know which airspeed
sensor to use, i.e, the one being used by the primary lane.
2020-08-27 20:20:51 +10:00
Peter Barker e55057ad5d AP_AHRS_DCM: limit measured airspeed according to WIND_MAX 2020-08-15 18:14:05 +10:00
Randy Mackay b0b78e974b AP_AHRS: add get_quaternion 2020-04-09 19:41:08 +09:00
Peter Hall f6897632f8 AP_AHRS: move to airspeed_estimate with pointer 2020-01-14 22:34:37 -07:00
Randy Mackay fb38db6640 AP_AHRS: resolve compile warning in AP_AHRS_DCM::use_compass 2019-09-05 08:39:10 +10:00
Andrew Tridgell 3dd7e7e83a AP_AHRS: only use enabled IMUs in DCM
honor the INS_USE parameters for DCM
2019-07-07 19:03:01 +10:00
Michael du Breuil 1226eb825a AP_AHRS: Reduce scope of AP_Baro.h 2019-06-27 14:56:21 +10:00
Michael du Breuil 4aa33bec49 AP_AHRS: Remove AP_GPS.h from AP_AHRS.h 2019-06-18 10:02:05 +10:00
Andrew Tridgell 670015b30e AP_AHRS: added const for PersistentData 2019-05-15 15:33:48 +10:00
Andrew Tridgell 74e56ab8cc AP_AHRS: use new persistent_data interface 2019-05-15 15:33:48 +10:00
Andrew Tridgell f7026b854e AP_AHRS: added save/restore of attitude in backup registers 2019-04-22 16:53:35 +10:00
Andrew Tridgell b8605c9ee6 AP_AHRS: save/restore home to backup registers
restore on watchdog reset

# Conflicts:
#	libraries/AP_AHRS/AP_AHRS_DCM.cpp
2019-04-22 16:53:35 +10:00
Pierre Kancir 54bc960ca3 AP_AHRS: move check_latlng to Location 2019-04-08 12:56:01 -07:00
Pierre Kancir 701c5dd4c0 AP_AHRS: move location_update to Location and rename to offset_bearing 2019-04-06 09:10:28 +11:00
Tom Pittenger a577223ac6 AP_AHRS: rename dataflash to logger 2019-03-28 16:40:57 +11:00
Andrew Tridgell 2ffded4dd7 AP_AHRS: implement get_velocity_NED() for DCM 2019-03-19 14:39:04 +11:00
Michael du Breuil 2ed1757353 AP_AHRS: Remove unused uptime 2019-03-19 11:42:54 +11:00
Peter Barker 3889c91974 AP_AHRS: use enum class for AltFrame enumeration 2019-03-19 10:31:18 +11:00
Dr.-Ing. Amilcar do Carmo Lucas 44ab1cf14b AP_AHRS: replace location_offset() and get_distance() function calls with Location object member function calls
This allows removing duplicated code
2019-02-28 11:44:09 +11:00
Peter Barker 6fd687e861 AP_AHRS: retry sending home/origin if it fails 2019-02-26 14:01:41 +11:00
Peter Barker 3959780999 AP_AHRS: ensure home is always stored in ALT_FRAME_ABSOLUTE 2019-02-26 10:35:39 +11:00
Peter Barker ab9c084179 AP_AHRS: add sanity checks for home location being set 2019-02-15 08:28:45 +11:00
Peter Barker 2e403bfd52 AP_AHRS: make setting of home boolean in preparation for sanity checks 2019-02-15 08:28:45 +11:00
Peter Barker b416bc603e AP_AHRS_DCM: adjust for location flags being moved out of union 2019-01-16 11:45:29 +11:00
Andrew Tridgell 09dde518df AP_AHRS: fixed dead-reckoning groundspeed vector
this is essential for RTL in planes on GPS loss
2018-11-19 07:32:20 +11:00
Michael du Breuil 4852562ec7 AP_AHRS: Suppress clearing non-trival type warning 2018-10-30 16:17:03 -07:00
Peter Barker e29dbbf158 AP_AHRS: notify and log home changes 2018-10-16 10:55:13 +11:00
Andrew Tridgell de02cb9c8b AP_AHRS: fixed synthetic airspeed to be along +ve X axis
this prevents us from thinking we have +ve airspeed when flying
backwards with no pitot tube
2018-09-14 19:28:29 +10:00
Andrew Tridgell 9897bf6127 AP_AHRS: support locked access to AHRS data 2018-08-25 15:44:36 +10:00
Andrew Tridgell 5b0b9ef962 AP_AHRS: don't do yaw correction in DCM while calibrating compass
this avoids applying bad compass yaw, and helps the compass
calibration code
2018-07-18 16:07:19 +10:00
Peter Barker 3cbb88ae20 AP_AHRS: split home-set and home-locked state 2018-05-29 14:38:45 +10:00
Peter Barker 1dabcc473d AP_AHRS: use ins singleton 2018-03-16 00:37:35 -07:00
Peter Barker 024b29858d AP_AHRS: use baro singleton 2018-03-08 21:20:05 -08:00
Peter Barker e15442355a AP_AHRS: use GPS singleton 2017-12-27 00:58:02 +00:00
khancyr 2732226664 AP_AHRS: use direct assignation and correct some style 2017-12-18 22:43:59 +00:00
khancyr dae636b39e AP_AHRS: correct some constcorrectness 2017-12-18 22:43:59 +00:00
Andrew Tridgell 1f9a3dd1bd AP_AHRS: improved init attitdue in DCM
this tries harder to get a good IMU sample for the initial attitude
estimate. I have seen cases of bad IMU data on startup and this makes it
much less likely
2017-12-12 11:39:38 +11:00
priseborough fa5534502a AP_AHRS: Update to match AP_GPS interface change 2017-06-21 11:44:45 +01:00
Eugene Shamaev 5c080ce875 AP_AHRS: calculation and reporting of AOA and SSA 2017-04-19 20:48:42 +10:00
Andrew Tridgell a11dca5229 AP_AHRS: added optional skip_ins_update to AHRS::update()
avoid the ins update if already done in copter fast_loop()
2017-04-03 13:04:11 +09:00
Peter Barker 4ed7fb154f AP_AHRS: supply missing get_relative_position_D_home
Simply returns the baro altitude (like EKF does if it lacks
position)
2017-02-24 21:13:08 +11:00
Mathieu OTHACEHE 152edf7189 Global: remove mode line from headers
Using a global .dir-locals.el file is a better alternative than
reincluding the same emacs header in every file of the project.
2016-10-24 09:42:01 -02:00
Jonathan Challinger a03fa2d3cf AP_AHRS: use exact matrix for trim rotations 2016-10-13 10:02:13 +11:00
masierra 8fc494cfcd AP_AHRS_DCM: changed estimate to use prev values for dir & vel 2016-06-06 15:26:51 -07:00
Ricardo de Almeida Gonzaga 2bf9aa94ad AP_AHRS: Fix typos 2016-05-13 19:20:06 -03:00
dgrat 6d3b491c02 AP_Math: Replace is_equal with a type safe template function
It makes sense to consider also other floating point types.
2016-05-10 11:41:26 -03:00
dgrat 41661f815f AP_Math: Replace the pythagorous* functions with a variadic template
The new function can deal with a variable number of function parameters.
Additionally, I renamed the functions to norm(), because this is the
standard name used in several other projects.
2016-05-10 11:41:26 -03:00
Caio Marcelo de Oliveira Filho 55e61538b3 AP_AHRS_DCM: use millis/micros/panic functions 2015-11-20 12:28:45 +09:00
Lucas De Marchi da86e29c27 AP_AHRS: remove check for AVR CPUs
Remove the checks for HAL_CPU_CLASS > HAL_CPU_CLASS_16 and
HAL_CPU_CLASS >= HAL_CPU_CLASS_75. Corresponding dead code will be
removed on separate commits.
2015-11-04 12:14:14 +11:00
Andrew Tridgell 79d85f7e10 AP_AHRS: wait for up to 10 samples to get a valid accel vector
the initial accel vectors can be invalid
2015-10-21 09:09:11 +11:00
Jonathan Challinger c35605fa04 AP_AHRS_DCM: align tilt during initialization 2015-10-21 08:34:02 +11:00
Gustavo Jose de Sousa 84f811fe76 AP_AHRS: use compass get_{field,offsets}() functions
Both functions are equivalent, so we're going to simply use
get_{field,offsets}() instead of get_{field,offsets}_milligauss().
2015-10-15 19:56:00 +09:00
Andrew Tridgell 06c0ad987e AP_AHRS: fixed divide by zero in SITL
fixes issue#2875
2015-09-24 16:49:22 +10:00
Andrew Tridgell 0677c2c80c AP_AHRS: run astyle for formatting 2015-09-23 17:31:00 +10:00
Staroselskii Georgii 4b948f5bb1 AP_AHRS: make DCM use milligauss 2015-09-09 10:38:16 +10:00
Randy Mackay 7f46cc9059 AHRS_DCM: integrate INS use_accel 2015-08-19 16:44:19 +09:00
Gustavo Jose de Sousa 54d5277842 AP_AHRS: standardize inclusion of libaries headers
This commit changes the way libraries headers are included in source files:

 - If the header is in the same directory the source belongs to, so the
 notation '#include ""' is used with the path relative to the directory
 containing the source.

 - If the header is outside the directory containing the source, then we use
 the notation '#include <>' with the path relative to libraries folder.

Some of the advantages of such approach:

 - Only one search path for libraries headers.

 - OSs like Windows may have a better lookup time.
2015-08-11 16:28:42 +10:00
Andrew Tridgell 7e2e78c1af AP_AHRS: protect against zero deltat in DCM
fixes issue #2657
2015-08-05 15:21:00 +10:00
Andrew Tridgell 9c776736c1 AP_AHRS: use delta_velocity and delta_angle in DCM
this prevents an aliasing effect by using the correct delta velocity
time value for each accelerometer sample used
2015-07-30 11:04:31 +10:00
Andrew Tridgell 7a76f72bf5 AP_AHRS: added uptime_ms() interface 2015-05-20 15:22:14 +10:00
Andrew Tridgell 3529e02675 AP_AHRS: if we have 3 gyros then only use first two
the 3rd gyro on a PH2 has a lot more noise as it is not vibration
isolated
2015-05-09 21:00:49 +10:00
Peter Barker 463270e0ee AP_AHRS: avoid FPE when we don't have a compass reading 2015-05-05 15:02:35 +10:00
Andrew Tridgell 4d4a607b80 AP_AHRS: revert AP_Math class change 2015-05-05 13:27:05 +10:00
Tom Pittenger 20f47417d5 AP_AHRS: compiler warnings: apply is_zero(float) or is_equal(float) and float to doubles 2015-05-05 13:26:55 +10:00
Andrew Tridgell 6bfca648b9 AP_AHRS: raise DCM P gains when disarmed for first 20 seconds 2015-04-28 14:07:39 +10:00
Tom Pittenger e28c555889 AHRS_DCM: fix compile warnings re float constants
Also fix example sketch
2015-04-24 12:26:08 +09:00
Paul Riseborough 5184bca87f AP_AHRS: Prevent DCM reporting good tilt error when inverted 2015-04-23 20:35:39 +09:00
Paul Riseborough ea8217bd3a AP_AHRS: Reduce time constant on filtering of DCM error reporting
Reduces time constant from 2 to 1 second to make data more useful for pre-flight alignment checks by the EKF
2015-04-23 20:35:35 +09:00
Andrew Tridgell a0969905ce AP_AHRS: make get_error_rp() and get_error_yaw() const
this makes them usable by multiple consumers, and allows use by EKF
2015-04-21 21:42:17 +10:00
Andrew Tridgell 585a105128 AP_AHRS: use compass->last_update_usec() 2015-03-14 12:31:50 +11:00
Andrew Tridgell 68f64fa11c AP_AHRS: make the healthy() method const 2015-02-01 14:13:52 +11:00
Andrew Tridgell ed0a56cc3c AP_AHRS: cope with the changed semantics of airspeed.use() 2015-01-20 11:27:58 +11:00
Jonathan Challinger 4975cefd84 AP_AHRS_DCM: update _accel_ef_blended 2014-12-05 19:40:06 +09:00
Randy Mackay dffcfb42bc AHRS: add reset_gyro_drift method 2014-10-28 20:25:33 +09:00
Randy Mackay 39c8535223 AHRS_DCM: sanity check AHRS_RP_P and AHRS_YAW_P 2014-10-21 21:41:41 +09:00
Andrew Tridgell 270bac4472 AP_AHRS: make get_position() const
This allows use from within AP_Mission
2014-10-20 08:36:20 +11:00
Andrew Tridgell 4ad643b233 AP_AHRS: use a common function for updating the CD values
this ensures the wrapping of yaw is consistent between the 3 use cases
2014-10-15 13:18:08 +11:00
Andrew Tridgell 63c06ea2af AP_AHRS: fixed calls to DCM in parent class
use_compass() and reset() are common to AP_AHRS_DCM and
AP_AHRS_NavEKF. As AP_AHRS_NavEKF is a child of AP_AHRS_DCM, when we
call use_compass() from within AP_AHRS_DCM we actually end up calling
AP_AHRS_NavEKF::use_compass().

This has the effect of disabling the compass in DCM when EKF is active
and EKF has decided not to use the compass. That means that the DCM
yaw (and in fact the whole attitude) can get badly off while EKF is
enabled, making DCM an ineffective fallback if EKF fails.

The fix is to call the specific class versions of use_compass() and
reset()
2014-10-15 10:12:50 +11:00
Randy Mackay 85eee31510 AHRS: rename ekfNotStarted method to initialised
Also created default implementation in AP_AHRS class so AP_AHRS_DCM does
not need to implement it.
2014-10-02 14:40:54 +09:00
priseborough 7cea7c6a18 AP_AHRS : add method to report if EKF is waiting to start 2014-10-02 14:38:29 +09:00
Przemek Lekston ae4814a773 AP_AHRS_DCM.cpp: changed the direction of position projection to ensure correct behavious in crosswind 2014-08-07 12:34:30 +10:00
Andrew Tridgell 6a275372dd AP_AHRS: ensure get_position() fills in flags 2014-07-25 11:40:16 +10:00
Andrew Tridgell b3c1e515dc AP_AHRS: when no accel info available in buffer use current value
this prevents an initialisation error, and is reasonable in flight too

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
2014-05-15 22:19:54 +10:00
Andrew Tridgell 315290029a AP_AHRS: fixed check of accel sensor health
we need to check health of each accelerometer separately
2014-05-15 22:18:56 +10:00
Andrew Tridgell 1a05c27bbb AP_AHRS: added healthy() function
this will be used to report when the AHRS subsystem becomes unhealthy
2014-05-15 21:14:21 +10:00
Andrew Tridgell 4d24a86088 AP_AHRS: prevent a infinity value 2014-04-21 15:37:07 +10:00
Andrew Tridgell f07e4dee52 AP_AHRS: convert to new GPS API 2014-04-01 06:38:24 +11:00