Andrew Tridgell
731f980327
AP_InertialSensor: fixed example build
2014-03-19 12:13:47 +09:00
Jonathan Challinger
e81d2e9584
AP_InertialSensor: Correct out-of-bounds array access that was causing SITL to crash
2014-02-28 17:25:54 +11:00
Andrew Tridgell
2c85a7ba56
AP_InertialSensor: expose get_primary_accel() for use in AHRS
2014-02-27 16:27:46 +11:00
Andrew Tridgell
840f1b9a1e
AP_InertialSensor: make HIL timing more accurate
...
needed for 400Hz replay
2014-02-27 08:10:42 +11:00
Andrew Tridgell
6732d6c79b
AP_InertialSensor: enable get_accel_count() and get_gyro_count() APIs for HIL
2014-02-23 19:10:07 +11:00
Andrew Tridgell
0e18079c47
AP_InertialSensor: allow HIL sensors to support multiple instances
...
this allows log replay to test both sets of sensors on a Pixhawk log
2014-02-23 08:16:33 +11:00
Randy Mackay
33fe778cdd
InertialSensor_PX4: resolve compiler warning
2014-02-21 13:53:34 +09:00
Andrew Tridgell
fe0cb23733
AP_InertialSensor: fixed HIL for 400Hz INS
2014-02-19 10:29:00 +11:00
Mike McCauley
2c94a40310
AP_InertialSensor: AP_InertialSensor_Flymaple Remove unnecessary
...
comment
2014-02-17 05:56:37 +11:00
Mike McCauley
dd6abb49a9
AP_InertialSensor: AP_InertialSensor_Flymaple::healthy() was required after
...
all.
2014-02-17 05:56:37 +11:00
Mike McCauley
0a43cf8c5c
AP_InertialSensor: AP_InertialSensor_Flymaple removed redundant definition of
...
healthy().
2014-02-17 05:56:37 +11:00
Mike McCauley
f7279aa13f
AP_InertialSensor: AP_InertialSensor_Flymaple implement get_gyro_health
...
and get_accel_health.
2014-02-17 05:56:37 +11:00
Andrew Tridgell
f9d0747750
AP_InertialSensor: fixed example build
2014-02-15 06:39:35 +11:00
Andrew Tridgell
3617c65af7
AP_InertialSensor: make HIL treat time like PX4 does
2014-02-15 05:48:20 +11:00
Andrew Tridgell
b1c5f23bbd
AP_InertialSensor: make get_delta_time() const
...
allows use from AP_NavEKF
2014-02-15 05:29:47 +11:00
Randy Mackay
b7565affcd
INS: add support for 400hz for PX4
2014-02-15 05:27:33 +11:00
Andrew Tridgell
a95a3142e0
AP_InertialSensor: use fixed size arrays
...
apparently helps SITL build on MacOS
2014-02-08 19:32:26 +11:00
Andrew Tridgell
045efdb084
AP_InertialSensor: fixed example builds
2014-01-30 13:33:38 +11:00
Andrew Tridgell
58d3729d16
AP_InertialSensor: fixed default health functions
...
this fixes INS on APM1. Thanks to Mike McCauley for noticing this!
2014-01-22 22:08:28 +11:00
Don Gagne
68b3b31499
Param doc typo
2014-01-18 10:18:58 +09:00
Randy Mackay
965e5b2dfd
INS: check for good calibration for 10seconds
...
Shortened gyro calibration commit also halved the total time we would
look for a good gyro calibration. This restores the total time to 10
seconds.
2014-01-17 12:48:11 +09:00
Randy Mackay
1f76ada9dd
INS: shortened gyro calibration
...
Removed delays before calibration, reduced number of samples taken,
widened convergence criteria
2014-01-16 13:40:49 +09:00
Randy Mackay
a400ddeb88
INS: replace APM with vehicle in accel calibrate
2013-12-28 10:41:49 +09:00
Andrew Tridgell
8dd34f8bc4
AP_InertialSensor: fixed example build
2013-12-17 11:51:37 +11:00
Andrew Tridgell
6d39cf5e49
AP_InertialSensor: another attempt at fixing the spurious bad gyro health warnings
...
cope with _get_sample() not being called for a while
2013-12-14 15:47:49 +11:00
Andrew Tridgell
99e2dc87c9
AP_InertialSensor: prevent INS healthy errors while initialising
...
during gyro cal we shouldn't mark the gyro unhealthy
2013-12-13 20:47:24 +11:00
Andrew Tridgell
23a112c5d5
AP_InertialSensor: reduce the number of format string warnings
2013-12-11 17:29:27 +11:00
Andrew Tridgell
433ad19335
AP_InertialSensor: fixed loop limits
...
stops pointless operations
2013-12-11 14:57:13 +11:00
Andrew Tridgell
e54fc6b8e3
AP_InertialSensor: make sure we wait for a sample before update()
2013-12-11 13:50:50 +11:00
Andrew Tridgell
cba0cb963a
AP_InertialSensor: auto-failover to working gyro and accel
2013-12-09 20:02:04 +11:00
Andrew Tridgell
a0688a69d4
AP_InertialSensor: generalise the accel/gyro calibration for N sensors
2013-12-09 17:34:06 +11:00
Andrew Tridgell
d9b6f7f0f7
AP_InertialSensor: implement up to two sensors on PX4
2013-12-09 17:34:05 +11:00
Andrew Tridgell
2753449e75
AP_InertialSensor: added support for multiple accel/gyro devices
...
this makes it possible to ask for the gyro and accel vectors from
secondary INS devices.
2013-12-09 17:34:05 +11:00
Randy Mackay
fd9b115d01
INS: move Product ID to @User Advanced
2013-11-26 22:18:28 +09:00
Andrew Tridgell
71bb462ad0
AP_InertialSensor: use fabsf()
2013-11-15 10:43:10 +11:00
Andrew Tridgell
aef9289476
AP_InertialSensor: added INS_PRODUCT_ID values
2013-11-15 10:43:10 +11:00
Andrew Tridgell
f10a4b04ae
AP_InertialSensor: make PX4 healthy call _get_sample()
...
this prevents a false positive during times like arming where we are
not reading the sensors
2013-11-10 17:03:16 +11:00
Andrew Tridgell
80def01fbe
AP_InertialSensor: fixed semaphore error on startup for MPU6000
2013-11-09 11:26:50 +11:00
Andrew Tridgell
f5299e2e11
AP_InertialSensor: added healthy check for PX4 and HIL
...
used to detect bad accels
2013-11-07 13:53:59 +11:00
Andrew Tridgell
9ecd889e9d
AP_InertialSensor: detect bad MPU6000 SPI transactions and lower bus speed
...
this uses bad data or bad INT_STATUS values from the MPU6000 to detect
the sensor running too fast and lower bus speed
2013-11-07 12:48:17 +11:00
Andrew Tridgell
b98bcbf715
AP_InertialSensor: automatically lower bus speed on mpu6k bad reads
2013-11-07 12:48:16 +11:00
Andrew Tridgell
bdc40cc7df
AP_InertialSensor: try to lower SPI bus speed on errors
2013-11-07 12:48:16 +11:00
Andrew Tridgell
1cd070a2e7
AP_InertialSensor: use const reference returns
...
saves some vector copies
2013-11-04 21:21:42 +11:00
Andrew Tridgell
f4dde44b8d
AP_InertialSensor: SITL doesn't use Oilpan code any more
2013-11-02 21:41:11 +11:00
Mike McCauley
fe6cacf081
AP_InertialSensor: Minor correction to comments in AP_InertialSensor_Flymaple.cpp
2013-10-14 11:34:47 +10:00
Andrew Tridgell
7831113f84
AP_InertialSensor: yield the CPU for the right time in wait_for_sample()
...
this improves timing performance
2013-10-14 08:45:58 +11:00
Andrew Tridgell
8532e2bff8
AP_InertialSensor: fixed timing of PX4 sensor samples
2013-10-13 22:15:50 +11:00
Andrew Tridgell
9833900f91
AP_InertialSensor: run MPU6000 sensor register reads at 8MHz
...
run other register IO at 500kHz
2013-10-13 11:03:08 +09:00
Andrew Tridgell
b3af59cc0c
AP_InertialSensor: don't build L3G4200D example
2013-10-10 09:54:20 +11:00
Andrew Tridgell
a04c056598
AP_InertialSensor: remove unused get_last_sample_time_micros()
2013-10-10 09:54:19 +11:00
Andrew Tridgell
5d685385eb
AP_InertialSensor: use gyro sample count on L3G4200D
...
this gives more even timing in ArduCopter
2013-10-08 19:20:34 +11:00
Andrew Tridgell
6444b0bddd
AP_InertialSensor_L3G4200D: a sample is only available if gyro had a sample
2013-10-08 19:20:34 +11:00
Andrew Tridgell
e5e4cdee18
AP_InertialSensor: added wait_for_sample() API call
...
this waits for a new INS sample to arrive, using whatever method is
most efficient on each INS type
2013-10-08 17:31:15 +11:00
Andrew Tridgell
c17a5e5ed1
AP_InertialSensor: added a small delay in accel calibration
...
allows threads to run on Linux
2013-10-08 11:50:54 +11:00
Andrew Tridgell
12af23bb7c
AP_InertialSensor: added L3G4200D example
2013-10-08 11:50:53 +11:00
Andrew Tridgell
1aabd7155e
AP_InertialSensor: added L3G4200D driver
...
this is for a cheap ebay 10DOF sensor
2013-10-08 11:50:53 +11:00
Mike McCauley
c90c1b9998
AP_InertialSensor: Improvements to Flymaple sensors
...
Fix a bug that caused hang after 71 minutes. Use I2CDriver semaphore.
Remove test for in_accumulate: not needed.
2013-10-04 07:21:55 +10:00
Mike McCauley
9ea1108d4e
AP_InertialSensor: Flymaple filter constructor arguments non non-zero
2013-10-04 07:21:55 +10:00
Andrew Tridgell
dda68bddcb
AP_InertialSensor: updates for AP_HAL::MemberProc
2013-09-30 21:06:42 +10:00
Andrew Tridgell
1191607036
AP_InertialSensor: enable Oilpan on Linux
2013-09-29 00:57:13 +10:00
Andrew Tridgell
cf726c6642
AP_InertialSensor: rename Stub to HIL
...
more consistent with other drivers
2013-09-28 22:04:15 +10:00
Andrew Tridgell
03036c632d
AP_InertialSensor: use new scheduler API
2013-09-28 21:24:03 +10:00
Andrew Tridgell
096660c4f9
AP_InertialSensor: mark flymaple as nobuild
...
won't build with build_examples.sh script
2013-09-27 16:57:13 +10:00
Mike McCauley
e4eef61ec3
AP_InertialSensor: Flymaple sensors improvements
...
Flymaple sensors are now raw sampled at 800Hz, and LowPassFilter2p is used
to filter to the desired filter cutoff frequency.
Flymaple sensor polling is done in the main thread NOT in the timer
interrupts.
2013-09-27 15:45:59 +10:00
Mike McCauley
23429b6b9c
AP_InertialSensor: Flymaple now polls sensors at 800Hz. More changes to
...
come...
2013-09-27 15:45:57 +10:00
Mike McCauley
29bced05bd
AP_InertialSensor: Added examples/Flymaple for testing
2013-09-27 15:45:54 +10:00
Mike McCauley
d11f952ef1
AP_InertialSensor: Formalise and document Flymaple Gyro scaling factor
2013-09-27 15:45:52 +10:00
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
Andrew Tridgell
c9a81d7de6
AP_InertialSensor: fixed sign of 16 bit SPI transfer
...
this gets accels and gyros working again
2012-12-20 14:51:36 +11:00
Pat Hickey
dbcc4fc6a5
AP_InertialSensor: variable wibble
2012-12-20 14:51:36 +11:00
Pat Hickey
9aca19415a
AP_InertialSensor: robust semaphores
2012-12-20 14:51:36 +11:00
Pat Hickey
1019fb45e7
AP_InertialSensor: remove sei in data interrupt handler
2012-12-20 14:51:36 +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
4acf2c8591
AP_InertialSensor: 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
rmackay9
b4e5176e2a
ArduCopter, AP_InertialSensor: restore mpu6k sample rate to 200hz but keep default filtering at 42hz.
2012-12-09 14:27:33 +09:00
rmackay9
8b5f66255e
AP_InertialSensor: add comments to give credit for accel calibration method to Rolfe Schmidt
2012-12-05 09:35:55 +09:00
rmackay9
a92b7f3477
AP_InertialSensor: add comments to give credit for accel calibration method to Rolfe Schmidt
2012-12-05 09:20:31 +09:00
Andrew Tridgell
3b18c57691
AP_InertialSensor: removed axis getters for accel/gyro
...
these were only being used in one place, and in that place were used
incorrectly!
2012-12-04 09:11:55 +11:00
Andrew Tridgell
5e77119377
AP_InertialSensor: fixed stub driver to work correctly with sensors HIL
2012-12-03 23:27:21 +11:00
Andrew Tridgell
b237c0583d
AP_InertialSensor: Added INS_MPU6K_FILTER option
...
this allows the user to select the MPU6000 filtering frequency
2012-11-30 07:15:19 +11:00
Andrew Tridgell
4f868e04cc
AP_InertialSensor: return the example sample count in Oilpan
2012-11-30 07:15:19 +11:00
Andrew Tridgell
089ae0f9f3
AP_InertialSensor: allow specification of sample rate in init() call
...
this lets the caller not need to know the underlying sample rate. They
just ask for what rate updates happen.
This also changes the MPU6k filtering to be less than half the sample
rate
2012-11-30 07:15:18 +11:00
Andrew Tridgell
7ea18d5a61
AP_InertialSensor: fixed example build
2012-11-24 21:08:06 +11:00
rmackay9
74daf73c49
AP_InertialSensor: increase acceptable Z accel offset to be 3.0 G
...
Note: Z offsets do tend to be larger than x and y offsets
2012-11-23 00:34:42 +09:00
Andrew Tridgell
11141d0af0
INS: make it possible to do accel cal on a different serial port
2012-11-21 21:41:34 +11:00
Andrew Tridgell
f843705da3
INS: switch to SREG = oldSREG pattern for interrupt mask/restore
2012-11-20 22:31:23 +11:00
Andrew Tridgell
a7e537d6c0
INS: set the acceptable calibration error equal on all axes
2012-11-20 19:28:49 +11:00
Andrew Tridgell
40fc0feaf9
INS: show calibration values on failure
...
this will help debug bad calibrations
2012-11-20 19:28:15 +11:00
Andrew Tridgell
85e050f16c
INS: get check for send_msg the right way around!
...
I broke this in my previous commit
2012-11-20 19:10:30 +11:00
Andrew Tridgell
fd3993287d
INS: disable accel calibration on the 1280
...
this would put us well over 128k in sketch size
2012-11-20 18:41:04 +11:00
Andrew Tridgell
9c811671f1
INS: make calibrate_accel() return a bool
...
this will allow APM to auto set MANUAL_LEVEL to 1
2012-11-20 18:32:27 +11:00
Andrew Tridgell
152c12c283
INS: fixed raw accel offset for APM1
...
we now get reasonable offset values
2012-11-20 18:32:27 +11:00
Andrew Tridgell
3776e6108f
INS: use vector subtraction to make code clearer
2012-11-20 18:32:27 +11:00
rmackay9
8ccac5da3d
AP_InertialSensor: correct typo to datasheet's filename
2012-11-20 00:37:42 +09:00
rmackay9
d9b4407e64
AP_InertialSensor: changes after review with Tridge.
...
sanity checking added to accelerometer calibration routine.
user feedback is sent using gcs_send_text_fmt instead of Serial.printf.
moved ins parameters to new eeprom number to avoid conflicts with older parameters.
other small changes including renaming of functions and parameters.
2012-11-07 19:21:15 +09:00
rmackay9
49de46a548
AP_InertialSensor: merge in calibration features from IMU library
...
add gauss-newton method of accelerometer calibration
2012-11-07 19:20:27 +09:00
rmackay9
8c6fd340d7
AP_AHRS: added scheduler parameter to init
...
Required by the AP_AHRS_MPU6000 class which needs to disable timed processes that could interfere with it's communication with the mpu6000
2012-09-29 13:51:21 +09:00
rmackay9
41fbb19cf5
AP_InertialSensor_MPU6000: replaced _cs_pin parameter with #define and saved 1 byte of memory
...
Updated ArduCopter, ArduPlane and example sketches in AP_InertialSensor, AP_IMU and AP_AHRS libraries because they no longer need to pass in cs_pin to the constructor
2012-09-28 19:21:59 +09:00
rmackay9
921ab3fe12
ArduCopter: bug fix to DMP initialisation (it was freezing due to SPI bus conflicts)
2012-09-28 18:34:23 +09:00
Andrew Tridgell
7e544e8ead
MPU6k: save 72 bytes of memory
...
the buffer can be on the stack
2012-09-18 13:58:50 +10:00
rmackay9
9f1033dc42
AP_InertialSensor_Stub: added num_samples_available method to fix HIL build
2012-09-10 11:38:13 +09:00
rmackay9
130f3b0030
AP_InertialSensor_MPU6000: move _last_sample_time_micros to capture time data_interrupt was called
2012-09-10 11:38:08 +09:00
rmackay9
7a265dbf61
AP_InertialSensor: use AP_TimerProcess's queue_process to run read from MPU6000 after any currently running processes complete
2012-09-10 11:38:03 +09:00
rmackay9
0a6219695b
AP_InertialSensor: changed read of sensor from MPU6000 to happen immediately
...
This reduces the delay between when data arrives and when it is used
by up to 1ms.
Added num_samples_available method to all InertialSensors to allow
main loop timing to be synced with sensors.
2012-09-10 11:37:33 +09:00
rmackay9
c965963d7b
AP_InertialSensor_MPU6000: bug fix. DMP was being enabled by default so although the results were not being used, this caused a delay in the main loop
2012-08-28 17:02:07 +09:00
uncrustify
ad51ac5e11
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.h
2012-08-21 19:03:14 -07:00
uncrustify
323ab9acf4
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_Oilpan.h
2012-08-21 19:03:14 -07:00
uncrustify
8e5a031987
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_Stub.h
2012-08-21 19:03:14 -07:00
uncrustify
ac3960b3e7
uncrustify libraries/AP_InertialSensor/AP_InertialSensor.h
2012-08-21 19:03:14 -07:00
uncrustify
e6c2616769
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
2012-08-21 19:03:14 -07:00
uncrustify
77729b847f
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_Oilpan.cpp
2012-08-21 19:03:14 -07:00
uncrustify
0c322fb18a
uncrustify libraries/AP_InertialSensor/AP_InertialSensor_Stub.cpp
2012-08-21 19:03:14 -07:00
uncrustify
25eaeff6a8
uncrustify libraries/AP_InertialSensor/examples/MPU6000/MPU6000.pde
2012-08-21 19:03:14 -07:00
Andrew Tridgell
0763bbd1af
MPU6000: fixed some build warnings
2012-08-09 16:19:21 +10:00
Andrew Tridgell
518d6365ff
AP_Param: update remaining libraries for new constructor syntax
2012-08-08 12:11:57 +10:00
rmackay9
5077674043
AP_InertialSensor_MPU6000: another attempt at fixing the SITL build
2012-07-28 17:19:19 +09:00
rmackay9
7683e9d870
AP_InertialSensor_MPU6000: changed DMP memory definition (dmpMem) to const uint8_t to remove SITL compile errors (hopefully)
...
Removed unused 'dump' variable from dmp_load_mem to reduce compiler warnings
2012-07-28 16:33:04 +09:00
rmackay9
48074f4766
AP_InertialSensor_Oilpan: changed initialisation order of parameters to remove compiler warning
2012-07-28 15:22:37 +09:00
rmackay9
6cd0918134
AP_InertialSensor: methods added to access DMP functionality
2012-07-28 14:14:43 +09:00
Jason Short
c9d3ab5413
Oilpan ADC parameters added
...
including a function that configures each Accel Axis
Defaults matching old behavior
Added param group
2012-07-18 22:57:11 -07:00
Andrew Tridgell
acc6adf6e9
MPU6k: removed an unused variable
2012-06-29 21:54:09 +10:00
Craig Elder
69bf5700cd
IMU: expose IMU_PRODUCT_ID as EEPROM Variable
...
this will allow us to log the Product ID in tlogs
2012-05-09 18:30:36 -07:00
Craig Elder
4a1d8b0875
AP_InertialSensor: Return product ID from sensor initialization
...
this exposes the product ID to the IMU Layer
2012-05-09 18:30:36 -07:00
Craig Elder
ed99940bee
MPU6000: Fixed Scaling on Accelerometers Rev C vs Rev D
...
Rev C have non standard scaling factor that is 1/2 of the data sheet
Rev D chips conform to the specification
2012-05-09 18:30:35 -07:00
Andrew Tridgell
2dd655d87d
MPU6k: added suspend/resume on init
2012-05-01 12:06:54 +10:00
Andrew Tridgell
b02ca58901
InertialSensor: fixed HIL build
2012-03-10 10:34:34 +11:00
Andrew Tridgell
9296ac494d
AP_InertialSensor: added a get_gyro_drift_rate() interface
...
this returns the expected max drift rate for the particular type of
gyro being used
2012-03-10 10:34:33 +11:00
Andrew Tridgell
3e960f8ef9
InertionSensor: update for new Ch6() interface
2012-03-10 10:34:32 +11:00
Andrew Tridgell
a9dea35310
AP_InertialSensor: added new_data_available() interface
2012-03-10 10:34:28 +11:00
Randy Mackay
ed19c25a97
Arduino 1.0 - changed all #includes of "WProgram.h", "wiring.h" and "WConstants.h to "Arduino.h".
...
Modified FastSerial's write function to return size_t (number of bytes written).
2012-01-28 12:25:47 +09:00
Andrew Tridgell
e1c9c063a5
MPU6k: don't init the Wire library
...
we don't use Wire any more
2011-12-28 20:41:53 +11:00
Andrew Tridgell
6ca613337b
MPU6000: protect the driver from double initialisation
...
initialising twice can lockup the driver
2011-12-28 16:00:48 +11:00
Andrew Tridgell
18d26dc74e
MPU6000: minor fixes
...
the hardware functions should be private, and cs_pin should be uint8_t
2011-12-28 16:00:48 +11:00
Andrew Tridgell
04daeab7c0
MPU6000: change to 98Hz low pass filter
...
based on recommendation from Pat
2011-12-26 19:17:11 +11:00
Andrew Tridgell
10ca54ef8f
MPU6000: use data ready interrupt to prevent stale data
...
We listen for a data ready interrupt and only read new data in read()
if there is new data
2011-12-26 19:17:11 +11:00
Andrew Tridgell
760aa62c75
fixed the MPU6000 test sketch
2011-12-26 19:17:11 +11:00
Andrew Tridgell
b72f9c2e9f
added MPU6000 test sketch
...
this doesn't work yet - Pat, any idea why?
2011-12-25 12:03:39 +11:00
Andrew Tridgell
f97b405b56
MPU6k: update driver for new ap_proceduce prototype
2011-12-21 23:31:38 +11:00
Andrew Tridgell
bc9e943969
rollover is not a bug
...
subtracting unsigned numbers does the right thing
2011-12-21 23:31:38 +11:00
Andrew Tridgell
97f8d21c1b
added code format markers to AP_InertialSensor library
2011-12-21 23:31:38 +11:00
Andrew Tridgell
d442bad413
Revert "ADC: added an enable_channel() API"
...
This reverts commit dafeac01d8f14162600cf821404ba4072dcae14d.
ADC will be disabled on APM2
2011-12-17 07:29:09 +11:00
Andrew Tridgell
9591317dbc
ADC: added an enable_channel() API
...
enable_channel() must be used before the Ch6() method is called to
enable gathering of data on the required channels
2011-12-16 20:09:40 +11:00
Pat Hickey
f3ad7f3af8
Wire and SPI Init: move to sketch system.pde from libraries
...
* Wire.begin removed from AP_Baro_BMP085::init()
* SPI.begin removed from AP_Baro_MS5611::init()
* SPI.begin removed from AP_InertialSensor_MPU6000::hardware_init()
* Both Wire.begin and SPI.begin added very early in init_ardupilot in
ArduCopter/system.pde and ArduPlane/system.pde
2011-12-11 15:21:10 -08:00
Andrew Tridgell
41caa949ca
fixed InertialSensor stub build
2011-11-25 20:00:18 -08:00
Pat Hickey
d2a0bd35f4
hil-sensors: added stub libraries for InertialSensor and PeriodicProcess
...
* Also added dummy ivar to APM_BMP085_hil
2011-11-25 20:00:18 -08:00
Andrew Tridgell
8245835ea3
desktop: make AP_InertialSensor pure virtual
...
fixed a link error in Desktop build
thanks to Pat for the C++ foo
2011-11-25 20:00:17 -08:00
Pat Hickey
82b48784ef
purple: added AP_InertialSensor library
...
this abstracts the way of getting inertial sensor (gyro and
accelerometer) data for the APM1 and purple hardware. The Oilpan code
is based closely on the old APM1 code
2011-11-25 20:00:16 -08:00