Commit Graph

213 Commits

Author SHA1 Message Date
Andrew Tridgell bc2d17e76e AP_Compass: added vector compass setHIL method 2013-12-30 14:35:24 +11:00
Andrew Tridgell c44d8b45ce AP_Compass: auto-select healthy compass 2013-12-09 20:01:42 +11:00
Andrew Tridgell 61f564d7c9 AP_Compass: support motor compensation for multiple compasses
Pair-Programmed-With: Randy Mackay <rmackay9@yahoo.com>
2013-12-09 19:45:31 +11:00
Andrew Tridgell 0a7a935f63 AP_Compass: fixup 2013-12-09 17:54:54 +11:00
Andrew Tridgell c538816825 AP_Compass: support compass health status on multiple compasses 2013-12-09 17:46:41 +11:00
Andrew Tridgell bde89fd4e2 AP_Compass: added compass offsets for 2nd compass 2013-12-09 17:34:07 +11:00
Andrew Tridgell 8a97042fb1 AP_Compass: updates to support multiple compasses 2013-12-09 17:34:07 +11:00
Andrew Tridgell cb16733918 AP_Compass: switched to a vector based interface
this is more consistent with other APIs and makes multi-device support
easier
2013-12-09 17:34:06 +11:00
Randy Mackay 84fdff4cd6 Compass: slightly relax HMC5843 calibration limits
Some users have reported Z axis values as high as 1.33.  Their compasses
seem otherwise health so extending the limits slightly.
2013-11-27 15:36:34 +09:00
Andrew Tridgell 1ccd6bb7ef AP_Compass: don't wait more than 1ms for compass sample
this prevents 5ms delays in compass accumulate
2013-10-08 11:50:54 +11:00
Andrew Tridgell f286369990 AP_Compass: fixed orientation on Linux 2013-10-08 11:50:54 +11:00
Andrew Tridgell 83c942a512 AP_Compass: prevent NULL deref on enable mag while running 2013-10-08 11:50:53 +11:00
Andrew Tridgell da14ad2e2d AP_Compass: neaten up HMC5883 debug 2013-09-28 21:24:02 +10:00
Andrew Tridgell ce7d458855 AP_Compass: added Linux support to the compass test 2013-09-28 21:24:02 +10:00
Andrew Tridgell 6fc5b06043 AP_Compass: fixed some old Serial.print calls 2013-09-28 21:24:02 +10:00
Andrew Tridgell 1243ab9e63 AP_Compass: added HAL_Linux support 2013-09-28 21:24:02 +10:00
Andrew Tridgell 3f0f8dfa62 AP_Compass: removed SMACCM support 2013-09-26 22:38:31 +10:00
Mike McCauley 2fa0c39f3a AP_Compass: added Flymaple orientation 2013-09-24 13:18:35 +10:00
Mike McCauley 4c65c42411 AP_Compass: fixed ARM 32 bit compatibility 2013-09-23 18:10:21 +10:00
Andrew Tridgell 229841052a AP_Compass_PX4: removed MAGIOCSSAMPLERATE call 2013-09-09 18:04:41 +10:00
Andrew Tridgell db14a85fc5 AP_Compass: added more debugging to AP_Compass_PX4 driver
this helps debug compass initialisation issues
2013-09-09 18:04:40 +10:00
Andrew Tridgell b8b72819c1 AP_Compass: ignore COMPASS_ORIENT for internal compass
this means if COMPASS_ORIENT is not 0 and the external compass fails
to start on boot we don't end up with a bad compass orientation
2013-09-07 16:49:51 +10:00
Andrew Tridgell 9320e82ac2 AP_Compass: added in new orientations 2013-08-30 14:19:03 +10:00
Andrew Tridgell fbf79c07f0 AP_Compass: added COMPASS_EXTERNAL option
this allows configuring of a compass as being externally attached
2013-08-30 14:02:09 +10:00
Andrew Tridgell 97b7130bb9 libraries: update license header to GPLv3
we switched to GPLv3 a long time ago, but neglected to update the
per-file license headers
2013-08-30 13:01:39 +10:00
Andrew Tridgell 1ff669eb97 AP_Compass: simplify PX4 compass driver
we can now rely on queueing in the NuttX driver
2013-08-30 13:01:34 +10:00
Andrew Tridgell feac9d1306 AP_Compass: fixed a bug in the tilt compass calculation
The simplification applied a few months ago was incorrect
2013-08-18 21:08:52 +10:00
Tobias ab311d1dd4 AP_Compass: removed comparison out of range compiler warning
uint_ >= 0 (-Wtype-limits)
2013-07-08 14:57:25 +10:00
Andrew Tridgell a6c7bd3612 AP_Compass: fixed rotations for COMPASS_ORIENT
this matches AHRS_ORIENTATION again
2013-07-08 12:17:59 +10:00
Craig@3DR 1a3ed2d80b AP_Compass: Corrected COMPASS_ORIENT Parameter Description 2013-06-26 19:14:24 -07:00
Andrew Tridgell 4007b7b1e9 AP_Compass: fixed indent-tabs-mode 2013-05-30 09:52:30 +10:00
Randy Mackay 80bd458f29 Compass: update parameter description
We do not want people modifying the COMPASS_MOTCT manually
2013-05-11 14:50:36 +09:00
Andrew Tridgell 9a87b3f3c1 AP_Compass: use const on more functions and remove old calculate_heading()
the calculate_heading() based on roll/pitch is not needed anywhere
2013-05-09 09:24:06 +10:00
Andrew Tridgell f78de63a09 AP_Compass: more efficient calculate_heading() implementation
Thanks to piersh for this improvement. See

b5f0635455 (commitcomment-3171806)
2013-05-09 09:24:06 +10:00
Andrew Tridgell c90d44c121 AP_Compass_HIL: fixed indentation 2013-05-02 21:31:17 +10:00
Andrew Tridgell f72dd560cb AP_Compass: fixed the HIL sensors compass
this sets up good compass values for HIL sensors
2013-05-02 14:59:33 +10:00
Andrew Tridgell 86027f6e0f AP_Compass: fixed PX4 build 2013-05-02 13:00:52 +10:00
Andrew Tridgell af50b652f8 AP_Compass: removed old orientation defines
we now use the rotations in libraries/AP_Math/rotations.h
2013-05-02 12:48:14 +10:00
Andrew Tridgell 217f34e155 AP_Compass: added COMPASS_ORIENT parameter, to support external compasses
this allows the user to configure the compass for any orientation
supported by our rotation library
2013-05-02 12:48:14 +10:00
Andrew Tridgell ba83950fc4 libraries: replace constrain() with constrain_float()
this makes the type much more obvious. Thanks to Tobias for the
suggestion.
2013-05-02 10:25:40 +10:00
Andrew Tridgell 0fce0eb488 AP_Compass_PX4: fixed handling of a saturated compass
a saturated compass is now marked unhealthy, rather than causing the
code to spin waiting for a valid sample. This fixes a problem with
strong magnets causing the main flight loop to stop
2013-05-01 08:54:53 +10:00
Andrew Tridgell 26fa5c40f1 Compass: use const references for some functions 2013-04-22 13:26:49 +10:00
Randy Mackay b8974dec99 Copter: compass learn off by default 2013-04-16 18:47:39 +09:00
Randy Mackay b48864e1ad Copter: allow CH6 tuning of compass declination 2013-04-15 21:50:44 +09:00
Christopher Hrabia 9760cdf2d7 Compass: corrected space 2013-03-18 14:27:49 +09:00
Randy Mackay b8d492b504 Compass: current based compensation added 2013-03-03 23:02:12 +09:00
Randy Mackay e113eb526b Compass: add get_motor_compensation
Remove redundant set_motor_compensation call
2013-03-02 17:53:03 +09:00
Randy Mackay bfb29ce22b Compass: remove virtual functions to save RAM 2013-03-02 00:07:32 +09:00
Randy Mackay 886725291c Compass: enable motor compensation for 1280
Expand motor compenstion vector's range limit
2013-03-02 00:03:29 +09:00
Randy Mackay 8093c98cd3 Compass: add motor compensation to HIL library 2013-03-02 00:03:24 +09:00
Randy Mackay d8515ff85e Compass: basic compensation for motor interference 2013-03-02 00:03:16 +09:00
Andrew Tridgell 80eaa52ed8 AP_Compass: use report timestamp on PX4 for accurate timing 2013-01-22 21:22:01 +11:00
James Bielman 4fa7bb1486 Add AVR compatibility header for missing math.h definitions.
- Define float versions of math functions to the double versions
  on AVR (eg. #define sinf sin).
- These macros appear to be missing in older versions of avr-libs.
- Include AP_Math.h rather than math.h to get these definitions.
2013-01-16 13:52:17 +11:00
James Bielman 5631f865b2 Update floating point calculations to use floats instead of doubles.
- Allows use of hardware floating point on the Cortex-M4.
- Added "f" suffix to floating point literals.
- Call floating point versions of stdlib math functions.
2013-01-16 13:52:01 +11:00
Andrew Tridgell 60a4447a86 AP_Compass: added set_board_orientation() method 2013-01-13 17:32:48 +11:00
Andrew Tridgell 8f424cdf21 AP_Compass: ensure we check we got the semaphore 2013-01-09 20:42:20 +11:00
James Bielman eca1417858 AP_HAL: Add semaphores to I2C driver.
- Guard I2C transactions with this semaphore in the MS5611 and
  HMC5843 drivers.
2013-01-04 15:43:43 -08:00
Andrew Tridgell 26bc278181 AP_Compass: use queue length 10 in PX4 driver
and remove unnecessary poll() call
2013-01-04 20:12:03 +11:00
Andrew Tridgell 741174f5d5 AP_Compass: first cut at a PX4 compass driver 2013-01-04 16:21:24 +11:00
rmackay9 bf77a0f2e4 AP_Compass: added parameter descriptions 2013-01-02 16:08:44 +09:00
Andrew Tridgell 374af1cd14 build: change from Arduino.mk to apm.mk 2013-01-02 17:29:37 +11:00
Andrew Tridgell a180437028 AP_Compass: disable auto-declination on 1280
this saves a few k of flash space
2012-12-20 14:53:23 +11:00
Andrew Tridgell a1187519a8 AP_HAL: use AP_HAL_BOARD_DRIVER in remaining test sketches 2012-12-20 14:52:37 +11:00
Pat Hickey eb530b86e8 move Arduino.mk to /mk/Arduino.mk 2012-12-20 14:52:35 +11:00
Andrew Tridgell 7d27e420ae AP_HAL: remove unnecessary Arduino.h includes 2012-12-20 14:52:30 +11:00
Andrew Tridgell c181498e36 Compass: updates for new AP_Param API 2012-12-20 14:51:38 +11:00
Pat Hickey 475da4eca4 CONFIG_HAL_BOARD - test sketches fixed up, build all passes 2012-12-20 14:51:37 +11:00
Andrew Tridgell b70f7f57ba AP_Compass: restore low speed change on register read failure 2012-12-20 14:51:37 +11:00
Pat Hickey a4f1f6a5db AP_Progmem: fix dependencies for all sketches touched by AP_HAL_AVR 2012-12-20 14:51:28 +11:00
Pat Hickey 53432a1101 AP_Compass: ported to AP_HAL 2012-12-20 14:51:26 +11:00
Pat Hickey 3f1d9d7f69 AP_Param: #include <AP_Param.h> fixups for libraries & sketches
* I mostly went through with grep and added an #include <AP_Param.h> below
  every #include <AP_Common.h>. Not all of these example sketches might
  strictly need AP_Param.
2012-12-20 14:51:19 +11:00
Andrew Tridgell daa4712078 AP_Compass: force I2C speed low in a couple more situations 2012-11-12 11:26:20 +11:00
Andrew Tridgell 8c2dadc12f AP_Compass: print I2C error count in test sketch 2012-11-12 10:28:26 +11:00
Andrew Tridgell 6922dcdea2 Compass: added compass.accumulate() API
this allows us to accumulate mag readings using spare CPU cycles
2012-09-08 10:05:54 +10:00
uncrustify 04e48ef878 uncrustify libraries/AP_Compass/Compass.h 2012-08-21 19:19:51 -07:00
uncrustify 6bc9c5707f uncrustify libraries/AP_Compass/AP_Compass_HMC5843.h 2012-08-21 19:01:34 -07:00
uncrustify f534730fab uncrustify libraries/AP_Compass/AP_Compass_HIL.h 2012-08-21 19:01:21 -07:00
uncrustify 4f9c6bbb19 uncrustify libraries/AP_Compass/AP_Compass_HMC5843.cpp 2012-08-21 19:01:20 -07:00
uncrustify 7840eebaef uncrustify libraries/AP_Compass/Compass.cpp 2012-08-21 19:01:20 -07:00
uncrustify d1190e1ed4 uncrustify libraries/AP_Compass/AP_Compass_HIL.cpp 2012-08-21 19:01:20 -07:00
uncrustify 53ef9e8b9e uncrustify libraries/AP_Compass/examples/AP_Compass_test/AP_Compass_test.pde 2012-08-21 19:01:20 -07:00
rmackay9 9b3ced93ee AP_Compass: fix for mismatching set_initial_location parameters (forgot to change long to int32_t in .cpp file) 2012-08-18 20:41:38 +09:00
rmackay9 71f12fbc9b AP_Compass: replace "long" with "int32_t" 2012-08-18 16:58:16 +09:00
Andrew Tridgell 518d6365ff AP_Param: update remaining libraries for new constructor syntax 2012-08-08 12:11:57 +10:00
Andrew Tridgell e4d28b12e5 Compass: remove the need to call calculate() on the compass object
the new AHRS code doesn't use calculate() and the compass.heading
attribute. Instead it works on the raw magnetometer vector. This
change removes the internal calculate state from the compass object
and instead adds calculate_heading() for use by older code that
doesn't go via AHRS.

This significantly reduces the calculation involved in compass updates

The null offsets enable/disable code is also removed, as it is not
needed now that compass offsets are not linked to the AHRS state.
2012-06-27 16:01:50 +10:00
rmackay9 ef43da9b92 AP_Compass - changed parameter initialisation order to remove compiler warning 2012-04-09 17:37:02 +09:00
Andrew Tridgell 504c53f746 Compass: added COMPASS_AUTODEC option
when this is 1 (which is the default), we will get the declination
automatically via the AP_Declination library

when it is 0 we will use the value configured by the user
2012-03-30 14:25:27 +11:00
Andrew Tridgell 16deefce31 Compass: fixed a comment 2012-03-29 12:39:53 +11:00
Andrew Tridgell 17290836ef Compass: added some more comments
explain the algorithm a bit more
2012-03-29 12:39:53 +11:00
Andrew Tridgell b2d6db9479 Compass: implement noise resistant varient of offset learning
This adds a large amount of noise robustness to the compass offset
learning algorithm, at a cost of 120 bytes of memory. The changes are
based on a long discussion with Bill Premerlani.
2012-03-28 20:55:27 +11:00
Andrew Tridgell a72d4b46b3 Compass: implement Bills new offset nulling algorithm
this seems to work much better than the old algorithm, converging
faster and more accurately. Even better, it has no linkage to DCM, so
no possibility of nasty feedback effects
2012-03-27 15:37:24 +11:00
Andrew Tridgell 7daaadf776 Compass: fixed the order of rotations in the compass driver
this should fix the massive heading issues that people have been
reporting. Please test!
2012-03-12 17:33:15 +11:00
Adam M Rivera fe8c896d69 AP_Declination: Added method set_initial_location
This will set the declination based on lat/lon if the user has
not yet saved one to the EEPROM, OR if they have specified via the
config parameter that they want it to overwrite the declination every
3D fix.

Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Andrew Tridgell d10c4b76ad Compass: removed an incorrect comment 2012-03-11 20:07:38 +11:00
Andrew Tridgell 0da64e98f8 Compass: don't save the orientation to EEPROM
there is no point in saving this, the value is only configurable at
compile time for now, and is always set
2012-03-11 15:37:07 +11:00
Andrew Tridgell cb96dd975f Compass: update the compass driver to use the new vector.rotate() method 2012-03-11 15:37:07 +11:00
Andrew Tridgell 6eff9107ea Compass: change last_update to be in microseconds 2012-03-10 10:34:32 +11:00
Andrew Tridgell 6d356b6c6e Compass: fixed last_update time for HIL compass 2012-03-10 10:34:30 +11:00
rmackay9 fa34ac076e AP_Compass - fixed compile warning 2012-02-29 22:57:35 +09:00
rmackay9 c819a0f68a AP_Compass - fixed small compiler warning to do with order of parameters in constructor 2012-02-29 22:45:49 +09:00