Commit Graph

13 Commits

Author SHA1 Message Date
Doug Weibel 622217357c Bug fix for compass.
This is a fix for an interesting bug when a DCM matrix reset was added to the ground start.  This bug only showed up if (A) a ground start were performed after an air start or due to use of the "Calibrate Gryo" action, (B) if the current orientation were sufficiently different from 0/0/0, and (C.) if the particular magnetometer had sufficiently large offsets.  Why did resetting the DCM matrix to 0/0/0 pitch/roll/yaw at ground start cause a bug?  The magnetometer offset nulling determines the proper offsets for the magnetometer by comparing the observed change in the magnetic field vector with the expected change due to rotation as calculated from the rotation in the DCM matrix.  This comparison is made at 10Hz, and then filtered with a weight based on the amount of rotation to estimate the offsets. Normally it would take considerable time at normal in-flight rotation rates for the offset estimate to converge. 

If a DCM matrix reset occurs when the offset nulling algorithm is up and running, the algorithm sees the DCM reset as a instantaneous rotation, however the magnetic field vector did not change at all.  Under certain conditions the algorithm would interpret this as indicating that the offset(s) should be very large.  Since the "rotation" could also have been large the filter weighting would be large and it was possible for a large erroneous estimate of the offset(s) to be made based on this single (bad) data point.

To fix this bug methods were added to the compass object to start and stop the offset nulling algorithm.  Further, when the algorithm is started, it is set up to get fresh samples.  The DCM matrix reset method now calls these new methods to stop the offset nulling before resetting the matrix, and resume after the matrix has been reset.
2012-01-12 14:44:24 -07:00
Jason Short 7bef298a46 cleanup - removed unused functions, made pressure reading Float to avoid extra cast 2012-01-04 09:28:36 -08:00
Randy Mackay c39ebde9de ArduCopter - init_compass - fixed HIL build issue 2011-12-31 12:29:54 +09:00
Jason Short 9f7aae5945 removed unused function
Simplified the baro init filter
2011-12-29 23:02:01 -08:00
Randy Mackay ff66a3417c OptFlow - initial support for APM2 (there are still problems) including adding ability to set Chip Select pin.
Other unrelated changes are:
a) fixed typo in 'esitmate_velocity' to 'estimate_velocity'.
b) moved init_compass from system.pde to sensors.pde which seemed consistent with other sensors.
2011-12-30 12:06:31 +09:00
Pat Hickey 67436d7ff2 ArduCopter: Get barometer data in terms of AP_Baro interface
* Major change: Log.pde Log_Write_Control_Tuning has changed significantly
* MS5611 has no concept of RawPres and _offset_press
* Log the get_pressure() instead. (If we don't trust the barometer, what's the point?)
2011-12-11 15:21:10 -08:00
Randy Mackay 62a7b19600 Arducopter, RangeFinder - added SONAR_TYPE parameter and properly support the XL (default), LV and long distance XL (aka XLL) sonar types 2011-12-11 16:40:59 +09:00
Andrew Tridgell 87d5581046 ArduCopter: use specific sized data types in a lot of places
this will make the Desktop build more consistent with the real AVR
build, and also with a future ARM build
2011-11-08 11:05:36 +11:00
Andrew Tridgell 661b6c4508 merged the GCS updates from ArduPlane to ArduCopter
this removes all the non-MAVLink GCS options, and simplifies the HIL
and GCS code a lot. It also adds async sending of low priority GCS
text messages.
2011-10-11 20:53:43 +11:00
Jason Short 3b4743ef03 changed PI Library to take Float for DeltaTime
Changed timing to be more accurate in main loop. Still need to switch to micros(). Left that for Tridge. This gets rid of six floating point calcs *250. Nice!
2011-09-19 14:02:42 -07:00
Jason Short 4425e72034 Added Piezo Support, code from Oliver. 2011-09-18 17:12:28 -07:00
Jason Short 3d307c9fde Added low voltage code flashing code. 2011-09-16 18:56:51 -07:00
Andrew Tridgell be8864f424 renamed top level directories
ArduCopterMega -> ArduCopter
added archives directory for old code
2011-09-09 11:27:41 +10:00