Mike McCauley
adfcdca074
AP_HAL_FLYMAPLE: Sensor reading improvements
...
I2C speed increased to 400kHz
Accelerometer 8g max, Normal power, 800Hz bandwidth
Gyros: 2000 degrees/sec, 256Hz LPF, 8kHz internal sample rate
2013-09-27 15:45:47 +10:00
Randy Mackay
f7ba0438ef
InertialSensor: remove DMP
...
this saves 3K of flash
2013-09-27 10:43:33 +09:00
Andrew Tridgell
14636e1cdf
AP_InertialSensor: changed num_samples_available() to sample_available()
...
this makes the interface clearer. It also fixes a 3D accel cal bug.
2013-09-27 10:49:00 +10:00
Andrew Tridgell
1ec5cbed81
AP_InertialSensor: removed SMACCM support
2013-09-26 22:38:31 +10:00
Mike McCauley
e4b5d0a3d6
AP_InertialSensor: Final Flymaple orientation fixes
2013-09-25 15:46:07 +10:00
Mike McCauley
276068356e
AP_InertialSensor: Further Flymaple orientation fixes
2013-09-25 15:46:07 +10:00
Mike McCauley
b02dbca9d4
AP_InertialSensor: fix orientation of Flymaple sensors
2013-09-25 15:46:07 +10:00
Mike McCauley
4d10a96077
AP_InertialSensor: Add flymaple support
2013-09-24 13:51:27 +10:00
Andrew Tridgell
770b7b5901
AP_InertialSensor: prevent a lockup in MPU6000 driver
...
thanks to the VRBrain port for noticing this bug.
Failing to get the semaphore is an expected error with the MPU6000, as
we read data both from timer context and mainline code. That means
semaphore conflicts are inevitable. We shouldn't consider them an
error, and shouldn't panic when some arbitrary number of them have
happened since boot.
Instead the wait_for_sample() code checks that we receive new data at
least every 50ms. That is a much safer test.
2013-09-23 22:48:36 +10:00
Andrew Tridgell
4d2bfe1078
AP_InertialSensor: fixed another example build
2013-09-19 21:09:34 +10:00
Andrew Tridgell
e1aa6e3ff1
libraries: fixed examples for no flash_leds() callback
2013-09-19 18:38:28 +10:00
Andrew Tridgell
f8e9d48a76
AP_InertialSensor: removed the flash_leds() callback
...
AP_Notify now handles this
2013-09-19 18:32:19 +10:00
Andrew Tridgell
7b3a674d66
AP_InertialSensor: added set_default_filter() method
2013-09-09 19:18:52 +10:00
Andrew Tridgell
396c4f30d2
AP_InertialSensor_PX4: don't set QUEUEDEPTH
...
the default of 2 samples is fine
2013-09-09 18:04:40 +10:00
Andrew Tridgell
8b80beadc4
PX4: make FMUv2 identify itself differently
...
so we can tell which is which in logs
2013-09-09 18:04:40 +10:00
Andrew Tridgell
ff0f6bcd42
AP_InertialSensor: fixed example build
2013-09-07 21:03:59 +10:00
Andrew Tridgell
5caf2e0ea4
AP_InertialSensor: fixed example build
2013-08-30 13:01:39 +10:00
Andrew Tridgell
65a490c209
AP_InertialSensor: update for new notify API
2013-08-30 13:01:35 +10:00
Randy Mackay
5651bdbe3a
INS: integrate AP_Notify
2013-08-30 13:01:35 +10:00
Andrew Tridgell
e5ad9dbd15
AP_InertialSensor: switch PX4 driver to fixed time per sample model
...
this makes the driver much simpler, and does away with the need for an
accumulate function
2013-08-30 13:01:33 +10:00
Andrew Tridgell
38fe89d661
AP_InertialSensor: switch to non-averaging system for PX4 IMUs
...
always use the latest value, based on a lowpass filter in the driver
2013-08-30 13:01:33 +10:00
Andrew Tridgell
46c5d18585
AP_InertialSensor: disable averaging on FMUv2
...
the new filter from Leonard means we shouldn't average values, and
instead just use the last value
2013-08-30 13:01:33 +10:00
Julian Oes
c3b27629ec
AP_InertialSensor: run PX4 FMUv2 at 800Hz
...
this gives much better noise suppression
2013-08-30 13:01:33 +10:00
Randy Mackay
effc829790
INS: relax accel offset check to 3.5 m/s/s
...
One user, Dusty, has found that even with offsets of 3.1 m/s/s
successful alt hold and loiter are possible
2013-07-13 10:43:07 +09:00
Randy Mackay
20ed00dcc9
AP_InertialSensor: relax accel offset sanity check
2013-06-25 14:19:42 +09:00
Andrew Tridgell
c92069644d
AP_InertialSensor: fixed indent-tabs-mode
2013-05-30 09:52:12 +10:00
Andrew Tridgell
807dbf9786
AP_InertialSensor: fixed a build warning
2013-05-24 11:21:42 +10:00
Andrew Tridgell
59b6118a1d
AP_InertialSensor: fixed parameter markup
2013-05-21 17:02:13 +10:00
Andrew Tridgell
fefbeacf86
AP_InertialSensor: use SEVERITY_USER_RESPONSE for accel cal messages
...
thanks to the suggestion from Kevin
2013-05-09 09:28:25 +10:00
Andrew Tridgell
8f57b72e3f
AP_InserialSensor: fixed example build
2013-05-08 16:45:31 +10:00
Andrew Tridgell
2ddeaa7f4d
AP_InertialSensor: show calibration offsets for success and failure
...
Pair-Programmed-With: Randy Mackay <rmackay9@yahoo.com>
2013-05-08 16:19:06 +10:00
Andrew Tridgell
f3f4b7205c
AP_InsertialSensor: added support for MAVLink user interaction
...
allows APM to ask user to print enter to continue via MAVLink messages
during accel calibration
2013-05-08 16:18:40 +10:00
Andrew Tridgell
99d21854f9
SITL: fixed drift rate limit in simulator
2013-05-04 15:16:35 +10:00
Randy Mackay
42bca90676
INS: add calibrated check
...
Checks is the scaling vector has been updated. Required for pre-arm
checks for ArduCopter
2013-04-22 23:55:53 +09:00
Andrew Tridgell
17d7f1fbe5
AP_InertialSensor: make some interfaces const
2013-04-20 13:52:36 +10:00
Andrew Tridgell
76e20150e9
AP_InertialSensor: ensure parent class is initialised in instance classes
2013-04-12 14:30:35 +10:00
Randy Mackay
86fe79a662
INS: updated MPU6K_FILTER parameter description
2013-04-10 00:14:53 +09:00
Andrew Tridgell
8d992ae615
InertialSensor: added OilPan INS example
2013-04-08 07:07:25 +10:00
Randy Mackay
af13f6795c
INS: switch to global definition of GRAVITY_MSS
...
saves 4 bytes of RAM
2013-04-05 22:57:46 +09:00
Randy Mackay
777c6a308e
AP_InertialNav: use shared GRAVITY_MSS constant
2013-04-05 11:48:41 +09:00
Michael Oborne
87292e0a4a
Init hil accel with gravity
2013-03-31 16:38:48 +08:00
Randy Mackay
318a831b57
INS: set default filter to 20hz for APM2.x and PX4
2013-03-01 19:35:34 +09:00
Randy Mackay
963231a19b
AHRS: fix example sketch to use roll/pitch trim
2013-02-19 18:56:09 +09:00
Randy Mackay
21de9f5f47
AP_InertialSensor: return roll and pitch trim angles
2013-02-19 12:45:44 +09:00
Andrew Tridgell
a63275d284
AP_InertialSensor: expand register range in MPU6000 _dump_registers()
2013-02-13 19:33:40 +11:00
zlite
4800c57fb4
Fixed cosmetic typo in user display message
...
Corrected "it's" to "its". Just one of those grammar things that drives me crazy ;-)
2013-02-06 16:34:33 -08:00
Andrew Tridgell
1121254606
AP_InertialSensor: added filter frequency support to PX4 driver
2013-02-07 11:20:45 +11:00
Andrew Tridgell
5643c371b9
AP_InertialSensor: removed unused new_data_available() and temperature() APIs
2013-02-07 10:23:37 +11:00
Andrew Tridgell
7b1245937c
AP_InertialSensor: always sample at 200Hz in MPU6000
...
this changes the sampling to 200Hz regardless of requested rate, and
it is downsampled inside num_samples_available() using a shift. This
gives better noise resistance in ArduPlane.
This patch also makes it possible to update the filter frequency while
running, which is very useful for bench testing with a vibration
source
2013-02-07 10:23:08 +11:00
Randy Mackay
6f5050a8b9
Copter: minor casting fixup for wp_distance
2013-01-27 11:27:43 +09:00
Randy Mackay
bad81a5113
AP_InertialSensor_MPU6k: remove unnecessary check of sign when receiving fifo packet from dmp
2013-01-27 11:22:39 +09:00
Andrew Tridgell
f60d657f72
AP_InertialSensor: added timer for accumulating samples for PX4
...
this makes the driver much more tolerant of sketch timing errors
2013-01-21 21:51:32 +11:00
Andrew Tridgell
3d0cb755d2
AP_InertialSensor: user a timer to drive data collection on PX4
...
this reduces the chance of missing a sample if the main sketch is a
bit slow
2013-01-21 19:44:01 +11:00
Andrew Tridgell
16d72ca160
AP_InertialSensor: update PX4 driver to use read() method
2013-01-20 22:13:20 +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
d844a1ba3c
AP_InertialSensor: fixed PX4 example build
2013-01-13 21:10:53 +11:00
Andrew Tridgell
d7996acdf7
AP_InertialSensor: added set_board_orientation() method
2013-01-13 17:32:48 +11:00
Andrew Tridgell
6142eac4b4
AP_InertialSensor: simplify get_delta_time() API
...
use a single float return rather than two APIs.
This also changes the MPU6k driver to match the new 2.9 behaviour of
using the MPU6k sample timing instead of micros()
2013-01-11 21:17:21 +11:00
Andrew Tridgell
2fe4656a50
Merge pull request #4 from GaloisInc/master
...
Thanks Pat!
2013-01-10 17:24:59 -08:00
Pat Hickey
910e09fc96
AP_InertialSensor_MPU6000: fix sync/async semaphore usage with new scheduler
2013-01-10 14:12:19 -08:00
Andrew Tridgell
dbad61816b
AP_InertialSensor: only build Oilpan driver on APM1
2013-01-10 21:01:55 +11:00
James Bielman
8e38ef6567
MPU6000: Flip Y and Z axes for SMACCM_HAL.
...
- The accelerometer is upside-down on the PX4FMU vs the APM2.
2013-01-09 11:19:51 -08:00
James Bielman
1309b7332a
MPU6000: Use signed addition when accumulating readings.
...
- Fixes very erratic accel readings on the PX4 board.
2013-01-09 11:19:51 -08:00
Andrew Tridgell
f48790a56e
AP_InertialSensor: poll for new data in num_samples_available()
...
this lowers the latency for new data
2013-01-09 20:31:09 +11:00
Andrew Tridgell
4ab1cddd15
AP_InertialSensor: ensure we always have the SPI semaphore for MPU6k
2013-01-09 20:30:20 +11:00
Andrew Tridgell
b39166b71a
MPU6000: fixed minor timing bug
...
if we miss a sample due to SPI contention we shouldn't update last
sample time
2013-01-07 11:07:29 +11:00
Andrew Tridgell
fd23f6bd33
InertialSensor: added PX4 example sketch
2013-01-04 14:26:14 +11:00
Andrew Tridgell
ae09b31176
AP_InertialSensor: added PX4 gyro/accel driver
2013-01-04 14:25:57 +11:00
James Bielman
d84ba8ef59
Use HAL suspend/resume timer procs rather than atomic.
...
- Preparation for removing begin/end atomic.
2013-01-03 17:33:13 -08:00
Pat Hickey
d808c19c10
AP_InertialSensor_MPU6000: uses new semaphores
...
* some refactoring to fix differences between timerprocess
and non-timerprocess usage
2013-01-03 13:48:07 -08:00
James Bielman
acf05a29ee
AP_InertialSensor_MPU6000: Poll status register if there is no data ready pin.
2013-01-03 13:48:06 -08:00
rmackay9
e594f18b75
AP_InertialSensor: added parameter descriptions
2013-01-02 16:32:43 +09:00
Andrew Tridgell
374af1cd14
build: change from Arduino.mk to apm.mk
2013-01-02 17:29:37 +11:00
Andrew Tridgell
3f6f0b6d79
Oilpan: removed reference to DESKTOP_BUILD
2013-01-02 15:39:41 +11:00
rmackay9
a76aec675a
AP_InertialSensor: resolved compile warning re uninitialised variable
2013-01-02 09:18:03 +11:00
Andrew Tridgell
0adc4afcb5
InertialSensor: add reboot option in MPU6000 test
2012-12-27 21:29:00 +11:00
Andrew Tridgell
212728be34
InertialSensor: ensure MPU6000 is out of sleep mode before configuring
...
the MPU6000 starts in sleep mode, and can take a while to wakeup
2012-12-27 21:28:41 +11:00
Andrew Tridgell
122b8716a7
InertialSensor: added auto reset of MPU6000 on startup failure
...
this works around the problem of the MPU6000 failing to come up on DTR
reset or warm reboot
2012-12-24 07:17:03 +11:00
Andrew Tridgell
44ad850542
InertialSensor: latch the data ready pin high on new data
...
this ensures we don't miss a sample due to another source of delay
2012-12-23 17:46:36 +11:00
Andrew Tridgell
fcb09c3993
InertialSensor: fixed example app for new syntax
2012-12-23 12:49:34 +11:00
Andrew Tridgell
e2edad8a3f
InertialSensor: fixed last sample time in MPU6000
...
we lost this in the final work on the DTR bug
2012-12-23 08:59:35 +11:00
Andrew Tridgell
1a53bc783c
InertialSensor: poll data ready pin instead of an interrupt for MPU6k
2012-12-22 09:16:31 +11:00
Andrew Tridgell
9548e7e79e
InertialSensor: simplify the data_ready interrupt handling
...
this avoids using the defer process code, and fixes a nasty bug that
caused the APM to lockup on reset
2012-12-21 20:01:19 +11:00
Andrew Tridgell
f504e2ec67
InertialSensor: removed sample rate in example
...
not needed any more
2012-12-20 15:16:43 +11:00
Pat Hickey
6437bd3a08
AP_InertialSenor MPU6000 test: fixed for user interact changes
2012-12-20 14:53:23 +11:00
Pat Hickey
9055681b3a
AP_InertialSensor: use AP_InertialSensor_UserInteract
...
* permits polymorphic user interaction, so we can plug in a
pure mavlink interface
2012-12-20 14:53:23 +11:00
Pat Hickey
a2cf47e769
AP_InertialSensor: start implementing UserInteract
...
* untested implementation in terms of BetterStream
2012-12-20 14:53:23 +11:00
Andrew Tridgell
bada70d871
InertialSensor: fixed example build on 1280
2012-12-20 14:53:22 +11:00
Andrew Tridgell
3c0440b0b4
Math: use common degrees() and radians() functions
2012-12-20 14:53:22 +11:00
Andrew Tridgell
7277d4934d
AP_InertialSensor: move constructor into cpp
2012-12-20 14:53:22 +11:00
Andrew Tridgell
b06e072c87
AP_InertialSensor: fixed example build
2012-12-20 14:52:36 +11:00
Pat Hickey
eb530b86e8
move Arduino.mk to /mk/Arduino.mk
2012-12-20 14:52:35 +11:00
Andrew Tridgell
44f860e102
InertialSensor: fixed some compiler warnings
2012-12-20 14:52:35 +11:00
Pat Hickey
b502732249
AP_InertialSensor: rewrite basic code for spi device transactions
...
* I'm not touching that DMP stuff because I'm pretty convinced it should
instead be deprecated
2012-12-20 14:52:32 +11:00
Pat Hickey
a4f41c1d29
AP_InertialSensor: MPU6000 uses scheduler panic
2012-12-20 14:52:31 +11:00
Andrew Tridgell
7d27e420ae
AP_HAL: remove unnecessary Arduino.h includes
2012-12-20 14:52:30 +11:00
Andrew Tridgell
2c1682f310
InertialSensor: use AP_HAL progmem
2012-12-20 14:51:39 +11:00
Andrew Tridgell
c064becf28
AP_InertialSensor: updates for new AP_Param API
2012-12-20 14:51:39 +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
38031edc9d
AP_InertialSensor: removed spurious init() method
2012-12-20 14:51:36 +11:00