Skip to content
Snippets Groups Projects
  1. Apr 25, 2012
  2. Apr 23, 2012
    • Andrew Tridgell's avatar
      DCM: buffer omega_I changes over 10 seconds · 6d837891
      Andrew Tridgell authored
      this buffers up _omega_I changes in _omega_I_sum over a period of 10
      seconds, applying the slope limit only when _omega_I_sum is
      transferred to _omega_I.
      
      The result is a huge improvement in the ability of _omega_I to track
      gyro drift over the long term.
      6d837891
    • Andrew Tridgell's avatar
      DCM: drop the 'drop z' method · 398a608b
      Andrew Tridgell authored
      the 'drop z' method reduced the impact of noise on omegaI, but it also
      made us more sensitive to errors in accelerometer calibration and
      scaling, as demonstated by the logs from Gabor here:
      
        http://diydrones.com/xn/detail/705844:Comment:834373
      
      Simulation testing shows that the other noise suppression methods
      applied in the DCM code, in particular the slope limiting on omegaI
      the removal of the weighting and the upcoming use of a _omega_I_sum
      buffer have reduced the impact of noise enough that we can now safely
      include z in the acceleration calculation.
      398a608b
  3. Apr 16, 2012
  4. Mar 29, 2012
    • Andrew Tridgell's avatar
      AHRS: fixed error_yaw reporting with 2 MAVLink connections · 071f89df
      Andrew Tridgell authored
      when a user first connects with USB, and later switches to the
      telemetry port without restarting we were getting zero for error_yaw
      in the logs, as AHRS.get_error_yaw() was being called twice.
      
      This ensures we give the last value after the counter is reset
      071f89df
  5. Mar 19, 2012
  6. Mar 11, 2012
  7. Mar 09, 2012
  8. Feb 26, 2012
  9. Feb 25, 2012
  10. Feb 24, 2012
  11. Feb 23, 2012
  12. Feb 22, 2012
  13. Feb 18, 2012
  14. Feb 14, 2012
  15. Jan 13, 2012
  16. Jan 12, 2012
    • Doug Weibel's avatar
      Bug fix for compass. · 62221735
      Doug Weibel authored
      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.
      62221735
  17. Dec 28, 2011
Loading