Commit Graph

923 Commits

Author SHA1 Message Date
Andrew Tridgell 8920362212 AP_Compass: default SITL compass to having scale factor set 2020-09-20 09:25:57 +10:00
Andrew Tridgell bfa2feb8d8 AP_Compass: fixed build warnings for MSP with AP_Periph 2020-09-15 09:40:03 +10:00
yaapu 5e88a856e9 AP_Compass: support for MSP compass 2020-09-09 06:35:50 +10:00
Andrew Tridgell 37866ec3cf AP_Compass: fixed compass logging when first compass unhealthy
keep logging compasses if any are healthy
2020-09-08 11:01:14 +10:00
Andrew Tridgell c2feebea13 AP_Compass: allow simulation of compass sensor failure 2020-09-08 11:01:14 +10:00
bugobliterator de6b48f922 AP_Compass: set only if changed to save space in param storage 2020-09-02 17:06:05 +10:00
Siddharth Purohit 5cd6175d94 AP_Compass: fix reordering compass devid by priority at boot 2020-08-25 08:30:04 +10:00
Siddharth Purohit bf1a7799f8 AP_Compass: move to using CANManager library 2020-08-19 17:31:09 +10:00
Andrew Tridgell 2a662793c2 AP_Compass: support probing RM3100 on all 4 addresses 2020-08-02 12:25:29 +10:00
Siddharth Purohit f55ee264a7 AP_Compass: reset compass ids not present after compass cal
also implement replacement mechanism for UAVCAN compasses
2020-07-27 19:48:15 +10:00
Andy Piper 88cda25d62 AP_Compass: enable LIS3MDL and friends 2020-06-23 19:59:10 +10:00
Peter Barker 0f2bcea647 AP_Compass: remove use of Vector3 as function 2020-06-16 11:06:47 +10:00
Michael du Breuil f25d20f549 AP_Compass: Only send a single MAG_CAL_* message per poll
this fairly allocates bandwidth between the calibrators
2020-06-16 10:09:14 +10:00
bugobliterator 82480f0a3d AP_Compass: return id of max empty compass state when prio id is 0 2020-06-13 07:52:20 +10:00
Siddharth Purohit c0eb27cc35 AP_Compass: pull compass calibrator out into a separate thread 2020-06-05 09:38:40 +10:00
bugobliterator c914a91be9 AP_Compass: add support for per mag calibration 2020-06-05 09:38:40 +10:00
Andrew Tridgell a0cf4e158a AP_Compass: revert change to RM3100 scale factor and increase scale limit
This reverts the change from #13895 and instead resolves the issue by
increasing the scale factor limit to 1.4

There is an open question as to why some RM3100 compasses show a
different scale factor (by about 1.25 times) to other versions of the
same sensor. As we haven't resolved this properly it seems the correct
thing to do is follow the datasheet but allow for a wider range of
scale factors to cope with the variation between sensors
2020-05-24 15:06:15 +10:00
Andy Piper 63b5711a4d AP_Compass: use a separate slot for the custom compass rotation 2020-05-24 07:46:17 +10:00
Andy Piper f5320e8816 AP_Compass: make sure SITL rotation gets initialized like all the others
don't remove a custom rotation that has already been set
2020-05-21 16:28:27 +10:00
Andrew Tridgell 4a80313fdd AP_Compass: added get_num_enabled()
used by EKF3
2020-05-09 12:33:33 +10:00
Andy Piper b7b2d9a6ce AP_Compass: add support for custom compass rotation via COMPASS_CUS_{ROLL,PIT,YAW}
add reboot required for parameters that need it
disable custom rotation on AP_Periph devices
2020-05-05 09:25:18 +10:00
Andrew Tridgell 66655212b1 AP_Compass: fixed compass ordering bug with AP_Periph
when a user swaps compasses on AP_Periph we want to immediately
replace it. The compass ordering code was rejecting the new compass
and calling panic as it was out of slots. This changes the AP_Compass
ordering so that when we only have a single compass we operate in a
very simple manner where we always accept the first compass found
2020-04-29 18:51:16 +10:00
Andrew Tridgell 660f65e6b8 AP_Compass: use GCS_SEND_TEXT() 2020-04-29 07:36:55 +10:00
Paul Riseborough 8e9dc1c393 AP_Compass: Add accessor function for COMPASS_AUTODEC 2020-04-28 11:42:31 +09:00
Mark Whitehorn 570aa929ca AP_Compass: handle ROTATION_CUSTOM in SITL 2020-04-28 10:57:26 +10:00
Michael du Breuil 9b404669c8 AP_Compass: Skip rotating the mag data when the board orientation is none 2020-04-28 10:37:00 +10:00
Peter Barker c36e06e7fa AP_Compass: add documentation for COFS, compass-learning message 2020-04-14 07:34:59 +10:00
Peter Barker 851d9ae1ef AP_Compass: log message information for MMC3416 2020-04-12 08:36:48 +10:00
Andrew Tridgell dd4cf6ccdd AP_Compass: change RM3100 device ID
changed scale factor means users need to recalibrate
2020-04-08 11:21:51 +10:00
Andrew Tridgell 18c3efc377 AP_Compass: fixed scaling of RM3100
scale factor was off by 200/256, resulting in COMPASS_SCALE of about
1.28

thanks to Arace for noticing
2020-04-08 11:21:51 +10:00
murata 7ec0cb47a5 AP_Compass: const extern hal reference 2020-04-07 20:45:51 +09:00
Andrew Tridgell 6d42e9502b AP_Compass: fixed unreg compass check for AP_Periph
this fixes detection of compasses on peripherals where
COMPASS_MAX_UNREG_DEV is 0
2020-03-26 18:10:13 +11:00
Peter Barker 0665c379de AP_Compass: correct use of incorrect backend-count macro 2020-03-17 11:25:16 +11:00
Peter Barker 934d05f4ff AP_Compass: correct incorrect and misleading comment 2020-03-11 22:24:36 +11:00
Rishabh cbccdfa8a3 AP_Compass: Alert GCS if user tries to calibrate compass while vehicle is armed 2020-03-03 11:37:19 +11:00
Andrew Tridgell 8f83bf5e80 AP_Compass: fixed in-flight learning for all compasses
after recent changes only first compass was learnt

See
https://discuss.ardupilot.org/t/break-in-latest-master-in-flight-compass-calibration/52602
2020-02-25 12:40:27 +11:00
Siddharth Purohit f00a39af52 AP_Compass: run style script on Compass.cpp 2020-02-19 13:59:53 +09:00
Siddharth Purohit 8d227d401a AP_Compass: modify compass driver to support consistent ordering and hotplugging 2020-02-19 13:59:53 +09:00
Siddharth Purohit defc1b5fcb ArduCopter: add arming message for compass not detected but assigned 2020-02-19 13:59:53 +09:00
Andrew Tridgell 521cf4d6a1 AP_Compass: removed annoying startup messages
these happen due to sensor probing for older configs
2020-02-06 15:25:46 -07:00
Peter Barker cc3f6468e3 AP_Compass: mark some parameters as Calibration parameters 2020-02-04 20:29:09 +11:00
Andrew Tridgell 0ca45059ac AP_Compass: make all semaphores recursive
the cost is very similar and this prevents an easy coding error which
can occur on less used code paths
2020-01-19 20:19:30 +11:00
Andrew Tridgell 4ee6fb9cdf AP_Compass: use take_blocking instead of HAL_SEMAPHORE_BLOCK_FOREVER
this makes for cleaner and smaller code as the failure case is not
needed
2020-01-19 20:19:30 +11:00
Peter Hall c870df0351 AP_Compass: get_time_flying in vehicle 2020-01-14 22:34:37 -07:00
Andrew Tridgell ebceab9aa0 AP_Compass: don't probe for ICM20948 on AP_Periph 2020-01-07 12:37:35 +11:00
Andrew Tridgell 270844745f AP_Compass: limit rotations we try to ROTATION_MAX_AUTO_ROTATION 2020-01-01 16:59:27 +11:00
Pierre Kancir d332773689 AP_Compass: add register to checked ones and remove single-use goto
Also fix comment on TMRC register setting
2019-12-21 09:07:20 +11:00
Pierre Kancir d6563bff7d AP_Compass: probe for RM3100 2019-12-21 09:07:20 +11:00
Andrew Tridgell 09d7e732b7 AP_Compass: added mag_cal_fixed_yaw()
this is a fast compass calibration that uses a yaw value provided by
the user.
2019-12-18 17:20:37 +11:00
Peter Barker 880af0de4a AP_Compass: tidy constructor 2019-12-05 17:38:57 +11:00
Peter Barker 823f2bb217 AP_Compass: make compass_cal_status_t enum class Status within CompassCalibrator 2019-12-05 17:38:57 +11:00
Andrew Tridgell 303030c524 AP_Compass: narrow range of allowed scale factor 2019-12-03 20:48:23 +11:00
Andrew Tridgell 421fbef2a0 AP_Compass: added COMPASS_OPTIONS
this allows user to set that calibration requires GPS lock
2019-12-03 20:48:23 +11:00
Andrew Tridgell 6fd0ca36aa AP_Compass: added estimation of compass scale factor
this adds new COMPASS_SCALE, COMPASS_SCALE2 and COMPASS_SCALE3
parameters, which give the sensor scaling factor. It is used to
compensate for an incorrect scaling in a compass.

The 3D compass calibration process will set the correct value
automatically, otherwise users can set the value to a known value for
an existing compass
2019-12-03 20:48:23 +11:00
Randy Mackay ecb60955ff AP_Compass: minor comment fix
Co-Authored-By: Peter Barker <pb-gh@barker.dropbear.id.au>
2019-11-26 11:10:06 +11:00
lukezhqin 32f11ba863 AP_Compass: fix thin_samples to avoid comparing sample to itself 2019-11-26 11:10:06 +11:00
Randy Mackay f97cfd1065 AP_Compass: fix calibrator update when step one fails 2019-11-26 11:10:06 +11:00
Randy Mackay 89fa324a2b AP_Compass: rename CompassCalibrator::clear to stop 2019-11-26 11:10:06 +11:00
Randy Mackay 90cfbe01e4 AP_Compass: remove unused calc_mean_squared_residuals 2019-11-26 11:10:06 +11:00
Randy Mackay feb0f141fa AP_Compass: add comments to calibrator 2019-11-26 11:10:06 +11:00
Randy Mackay 09046aec66 AP_Compass: formatting fixes
this should be a non-functional change
2019-11-26 11:10:06 +11:00
Randy Mackay f58b09ebef AP_Compass: constify get_completion_mask and remove use of auto 2019-11-26 11:10:06 +11:00
Randy Mackay 396cec96ee AP_Compass: constify get_orientation 2019-11-26 11:10:06 +11:00
Andrew Tridgell 1fe146c409 AP_Compass: remove expected error
this happens with AK09916 probing on invensense sensor
2019-10-30 15:21:07 +11:00
Andrew Tridgell 513e483821 AP_Compass: disable HIL for AP_Periph
this saves several k of flash
2019-10-24 22:03:43 +11:00
Randy Mackay 01c36fa6aa AP_Compass: LEARN param default to 0 for all vehicles 2019-10-23 17:15:57 +11:00
Vlad-Andrei Dorobantu 83c641c76f AP_Compass: corrected the cause of SIGSEGV signal when running AP_Compass_test 2019-10-19 09:58:42 +11:00
Andrew Tridgell 7ad91fa1c9 AP_Compass: don't show too many params when max compasses 1 2019-10-16 08:58:52 +11:00
Peter Barker 8e412d0885 AP_Compass: adjust for new vehicle base class 2019-10-08 11:26:04 +11:00
murata ec0c49315f AP_Compass: Change direct value to define name 2019-09-24 13:23:24 +10:00
Peter Barker 6193d6cf69 AP_Compass: fix example by instantiating Baro
Baro is required to get location, and Compass tries to get the declination based on current location
2019-09-13 08:54:21 +09:00
Andrew Tridgell 71ad90819e AP_Compass: don't reset SITL compass offsets if set by user
makes for easier EKF compass bias learning testing
2019-09-11 14:22:18 +10:00
Andrew Tridgell df387dc396 AP_Compass: allow rotation of BMM150 compass 2019-09-07 09:53:21 +10:00
Andrew Tridgell 1cb775e2c2 AP_Compass: probe more addresses for IST8310
IST8310 can be on 4 possible i2c addresses
2019-09-07 07:35:54 +10:00
Andrew Tridgell bd0760f9d4 AP_Compass: removed unusued compass probes
now only use probe lists
2019-09-04 16:27:47 +10:00
Andrew Tridgell 3bc8522b54 AP_Compass: added ROTATION_NONE to probes
we no longer use defaults in the headers
2019-09-04 16:27:47 +10:00
Andrew Tridgell f877def909 AP_Compass: removed default rotations for compass probe
this prevents bugs where the force_external and rotation are mixed up
in hwdef.dat causing incorrect rotations
2019-09-04 16:27:47 +10:00
Andrew Tridgell 2a48241ebb AP_Compass: fixed naming of QMC5883L driver
needed for probe using COMPASS macro in hwdef.dat
2019-09-04 16:27:47 +10:00
Andrew Tridgell bcb139f02f AP_Compass: fixed uninitialised CAN device ID bits 2019-08-29 18:37:03 +10:00
Andrew Tridgell f4576ec8f3 AP_Compass: reduce firmware size for AP_Periph 2019-08-27 10:29:56 +10:00
Andrew Tridgell 0ec3f80bbe AP_Compass: enable LIS3MDL on I2C and RM3100 on SPI 2019-08-27 10:29:56 +10:00
Peter Barker 1adda1ccf0 AP_Compass: move automatic declination setting into AP_Compass itself 2019-08-13 10:02:13 +10:00
Peter Barker df01bed14f AP_Compass: take GCS link in place of channel to calibration routines 2019-08-05 09:23:10 +10:00
Michael du Breuil 58dbbd6d0e AP_Compass: Refactor battery current backend 2019-07-14 00:28:00 -07:00
Peter Barker 7b52c41287 AP_Compass: fix example by instantiating serial_manager 2019-07-01 19:11:03 +10:00
Michael du Breuil 9fc954b030 AP_Compass: Reduce scope of BattMonitor include 2019-06-18 10:02:05 +10:00
Andrew Tridgell 7206258587 AP_Compass: use new get_earth_field_ga() API 2019-06-03 12:21:29 +10:00
Andrew Tridgell 38c775e6df AP_Compass: removed old mRoControlZeroF7 config 2019-05-30 15:39:57 +10:00
Andrew Tridgell 481ae22671 AP_Compass: support new sensor config setup 2019-05-30 15:39:57 +10:00
Andrew Tridgell 532b82b3a3 AP_Compass: use DRIVER_HMC5843 to match driver name 2019-05-30 15:39:57 +10:00
Andrew Tridgell ba9b92c4af AP_Compass: rename to EXPECT_DELAY_MS() 2019-05-15 15:33:48 +10:00
Andrew Tridgell ecc6f15dc0 AP_Compass: use EXPECT_DELAY() macro 2019-05-15 15:33:48 +10:00
Andrew Tridgell 9e7929adf6 AP_Compass: removed unusued AP_Common/Semaphore.h 2019-05-15 15:33:48 +10:00
Phillip Kocmoud 1f827004be AP_Compass: Enable AK09916 inside the ICM20948 2019-05-10 15:05:42 +10:00
Pierre Kancir 427a88a1fe AP_Compass: fix AP_Compass_test 2019-05-01 14:17:34 -07:00
Peter Barker bf23f1df67 AP_Compass: move responsibility for logging into library 2019-04-23 10:06:17 +10:00
Peter Barker 0e8722181f AP_Compass: take responsibility for not running cal if armed 2019-04-23 10:06:17 +10:00
Andrew Tridgell 21aee52604 AP_Compass: flag compass cal as long expected delay 2019-04-22 16:53:35 +10:00
Siddharth Purohit 6dc94b0e3d Compass: fix compass orientation for AK09916 on Cube 2019-04-17 06:47:14 +10:00
Peter Barker 5455d27e84 AP_Compass: specify floating point constants
Probably indicates compiler floating-point-constants directive isn't
working
2019-04-05 23:04:17 -07:00