Andrew Tridgell
071f89df2e
AHRS: fixed error_yaw reporting with 2 MAVLink connections
...
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
2012-03-29 12:39:53 +11:00
Andrew Tridgell
20941c15c3
Compass: fixed a comment
2012-03-29 12:39:53 +11:00
Andrew Tridgell
79deeef0a0
Compass: added some more comments
...
explain the algorithm a bit more
2012-03-29 12:39:53 +11:00
rmackay9
fd5e1c2f7b
Filter - added FilterWithBuffer typedefs for int32t and uint32 for ease of use
2012-03-28 22:02:52 +09:00
rmackay9
99cdc69110
AP_OpticalFlow - small bug fix to ensure init attempts to read the product id 3 times before giving up
2012-03-28 22:00:57 +09:00
Andrew Tridgell
972bdcfa39
SITL: add magnetic field noise to the simulated compass
2012-03-28 20:55:27 +11:00
Andrew Tridgell
dc127fe749
SITL: ensure we don't run the sitl timer twice
...
this caused problems with random()
2012-03-28 20:55:27 +11:00
Andrew Tridgell
2a011578f9
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
16f094a1c5
ADC: minor fix to the ADC Ch6() code
...
we don't need to add count any more, as floating point maths doesn't
need to round up
2012-03-27 15:37:24 +11:00
Andrew Tridgell
a3d3dd86cf
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
rmackay9
cf1a6f8ab8
APM_RC - moved Force_Out0_Out1, Force_Out2_Out3 and Force_Out6_Out6 to APM_RC parent class because it's already implemented in the APM1 and APM2 child classes anyway
2012-03-25 21:13:31 +09:00
rmackay9
2324be7e68
Filter - added simple LowPassFilter (simple but it's possible to make errors with simple stuff too so might as well have one)
2012-03-25 16:15:25 +09:00
rmackay9
bdda74fd28
Filter - remove obsolete warning from comments re alloc/malloc dangers
2012-03-25 16:14:07 +09:00
rmackay9
dc58c8a905
AP_Baro - change data type size of temperature's average filter to int32_t (was int16_t)
2012-03-24 23:21:11 +09:00
rmackay9
766abb8e6c
AP_OpticalFlow - resolved compile error in example sketch (it could not find DCM.h but it's not required anyway)
2012-03-24 14:47:21 +09:00
Andrew Tridgell
477b31fb0d
Math: added mul_transpose() operation
...
this is equivalent to multiplying by m.transposed(), but is more
efficient
2012-03-23 16:48:52 +11:00
Andrew Tridgell
1b3a7d47bd
AHRS: fixed build of AHRS example
2012-03-22 23:00:45 +11:00
Andrew Tridgell
fb9790e1f4
Math: moved matrix multiple operations to .cpp file
...
this means we only link this in once, rather than for every use of
matrix multiply, which saves us some flash space
We need to be careful not to put large pieces of code in template
headers, as if the operation is used a lot, it costs us a lot of code
space
2012-03-21 10:43:48 +11:00
Andrew Tridgell
ece2aac4b9
Math: fixed the build of the eulers test in SITL
2012-03-21 10:41:55 +11:00
Andrew Tridgell
e93b31c76b
SITL: improve the simulated compass
...
this implements a much more accurate model of a compass using matrix
rotations, instead of trying to calculate components directly
2012-03-21 10:41:55 +11:00
rmackay9
f8ad719825
AC_PID - added more paranoid checking that imax is positive in constructor, operator() and load_gains methods
2012-03-20 11:51:15 +09:00
Andrew Tridgell
aeb010b6e9
AHRS: added AHRS specific MAVLink headers
2012-03-19 17:35:20 +11:00
Andrew Tridgell
07b6f55122
AHRS: added missing AP_AHRS.h
2012-03-19 17:35:20 +11:00
Andrew Tridgell
f1898c3335
DCM: use the new rotate() method from AP_Math
...
this allows us to use a tested and optimised rotation method
2012-03-19 17:29:02 +11:00
Andrew Tridgell
9a40b4b1de
Math: added a test for the rotate() method
2012-03-19 17:29:02 +11:00
Andrew Tridgell
7d155c77b1
Math: added rotate() method to Matrix3f
...
this is the core method used to update the DCM matrix with a gyro
vector. Moving it to AP_Math allows us to have a test for it
2012-03-19 17:29:02 +11:00
Andrew Tridgell
a41281ab7f
Math: added zero() and identity() methods to Matrix3f
2012-03-19 17:29:02 +11:00
Andrew Tridgell
fbe8592d3c
Quaternion: change signs in AP_AHRS_Quaternion
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
df79703ed1
Math: change signs in quaternion library
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
c87b945fd2
Math: allow eulers test to build with AP_Declination library
2012-03-19 17:29:02 +11:00
Andrew Tridgell
39067299a5
Math: fixed build of eulers test on SITL
2012-03-19 17:29:02 +11:00
Andrew Tridgell
b6040878b4
Math: added a function to combine standard rotations
...
this will allow us to have an overall board rotation plus a per-sensor
rotation
2012-03-19 17:29:02 +11:00
Andrew Tridgell
784f08728b
AP_Mount: adapt library for AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
3b43d3f9b9
AHRS: fixup the AHRS test suite for the new framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
fe63e79416
AHRS: adapt the quaternion library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
2d12bdb412
AHRS: adapt the DCM_HIL library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
bf96d05605
AHRS: adapt the DCM library to the AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
e976c70e19
AHRS: rename DCM and Quaternion implementions ready for AHRS class
...
this is the first step to creating a general AHRS class for ArduPilot
2012-03-19 17:29:01 +11:00
Andrew Tridgell
1170893aaa
MAVLink: rename DCM message to AHRS
2012-03-19 17:29:01 +11:00
rmackay9
f3eb15167c
AP_Baro - removed unnecessary 2 element average filtering of pressure (there is a 4 or 5 element average filter in arducopter code itself, two places is messy)
...
- also removed unused _offset_press variable
2012-03-18 15:18:05 +09:00
rmackay9
ed0d1da4f5
AP_Baro - added average filter for temperature to replace broken filter
...
- added average filter (for last two values) for raw pressure
- changed some "long" to int32_t and "unsigned long" to uint32_t
2012-03-18 01:06:02 +09:00
Michael Oborne
42960efe80
sitl cygwin mods
2012-03-15 08:16:50 +08:00
Andrew Tridgell
adcc20e4d3
Quaternion: credit Justin with the initial idea of using Madgwick
...
thanks Justin!
2012-03-13 13:27:45 +11:00
Andrew Tridgell
9a6adb9990
DCM: adjust yaw kp constant down to 0.4
...
this makes the time constant for compass errors closely match the
timing of the older releases - about 10 seconds for a 1 radian change
in heading
2012-03-12 17:49:26 +11:00
Andrew Tridgell
aa408655f8
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
Andrew Tridgell
0e6037322a
AP_Declination: fixed build of test sketch
2012-03-12 17:33:15 +11:00
Amilcar Lucas
a203282779
correct small typos in comments
2012-03-11 21:30:09 +01:00
Andrew Tridgell
42a29169f0
SITL: added pgm_read_byte_far()
2012-03-11 20:59:47 +11:00
Andrew Tridgell
b4d69ef473
AP_Declination: fixed usage of headers
2012-03-11 20:59:47 +11:00
Adam M Rivera
ad3a20b6a3
AP_Declination: Updated comment.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
c390db5d92
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
Adam M Rivera
94d1c48544
AP_Declination: Increased range of supported latitude coordinates.
...
Fixed incorrect type usage to save stack space.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
1709403b87
Added AP_Declination test sketch. I will be improving the test sketch soon.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
3f28184cb0
Added AP_Declination library. It contains the lookup table (lat/lng -> declination) as well as a method that performs the lookup.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Andrew Tridgell
d4aa0a4879
Compass: removed an incorrect comment
2012-03-11 20:07:38 +11:00
Andrew Tridgell
a20f57c59e
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
cc1961b1e8
Math: any euler angle with pitch > 90 is invalid
...
both DCM and quaternion always return pitch in the range -90 to 90
2012-03-11 15:37:07 +11:00
Andrew Tridgell
36e92bf4ba
Quaternion: update for new Quaternion interface
2012-03-11 15:37:07 +11:00
Andrew Tridgell
eea63ecd6e
DCM: update for new Matrix3f interface
2012-03-11 15:37:07 +11:00
Andrew Tridgell
01535a7a21
AP_Math: update the test suite
2012-03-11 15:37:07 +11:00
Andrew Tridgell
6d08e38d5d
AP_Math: made rotation matrices more C++
...
thanks to Adam for the suggestion
2012-03-11 15:37:07 +11:00
Andrew Tridgell
92ada85f49
AP_Math: allow null pointers in Quaternion::to_euler()
...
this matches the Matrix3f method
2012-03-11 15:37:07 +11:00
Andrew Tridgell
18fcb14335
Quaternion: use the new quaternion API
2012-03-11 15:37:07 +11:00
Andrew Tridgell
a9b8c4dd82
AP_Math: re-work quaternion functions to be more C++ like
...
thanks to Adam for the suggestion!
2012-03-11 15:37:07 +11:00
Andrew Tridgell
ea0fb311af
I2C: fixed cr/lf mess
2012-03-11 15:37:07 +11:00
Andrew Tridgell
5203df2cf8
OpticalFlow: adapt optical flow library to new rotation system
2012-03-11 15:37:07 +11:00
Andrew Tridgell
7aa6ba2c86
OpticalFlow: fixed line endings
...
this library was a mixture of dos and unix line endings, which makes
for very messy editing
2012-03-11 15:37:07 +11:00
Andrew Tridgell
3c145ab61c
Compass: update the compass driver to use the new vector.rotate() method
2012-03-11 15:37:07 +11:00
Andrew Tridgell
24a9fe8827
Math: added a test suite for the new rotation methods
2012-03-11 15:37:07 +11:00
Andrew Tridgell
85c3c1d2ea
Math: added vector3.rotate() and matrix3.rotation() methods
...
these operate on a "enum Rotation" which defines a set of standard
rotations. These are much faster than our previous method, plus use
less memory
2012-03-11 15:37:07 +11:00
Andrew Tridgell
a30b03cd0a
SITL: lower the noise and drift levels for general autotest usage
2012-03-10 10:34:34 +11:00
Andrew Tridgell
07e8360970
InertialSensor: fixed HIL build
2012-03-10 10:34:34 +11:00
Andrew Tridgell
6d06d9d070
MAVLink: bring the v1.0 MAVLink in sync with 0.9
2012-03-10 10:34:34 +11:00
Andrew Tridgell
fed5426274
DCM: after some experimentation, raise the ki values a bit
...
this tracks the max gyro drift more accurately
2012-03-10 10:34:34 +11:00
Andrew Tridgell
89b4a9f4ed
Quaternion: use gyro drift value from sensor driver
2012-03-10 10:34:34 +11:00
Andrew Tridgell
fd74414884
Quaternion: go back to the full update_MARG()
...
the separate drift controller is too erratic on yaw hold to be usable
at the moment
2012-03-10 10:34:34 +11:00
Andrew Tridgell
1002bbcbfe
SITL: cleanup the gyro drift calculations
...
use units that are more easily understood
2012-03-10 10:34:34 +11:00
Andrew Tridgell
ad21913605
Quaternion: make the quaternion test more generic
...
works with DCM too
2012-03-10 10:34:33 +11:00
Andrew Tridgell
a889135e78
Quaternion: update to get_gyro_drift() interface
2012-03-10 10:34:33 +11:00
Andrew Tridgell
e0cc9c93a1
Quaternion: removed some unused variables
2012-03-10 10:34:33 +11:00
Andrew Tridgell
b67b0afd10
DCM: separate out the omega_yaw_P from omega_P
...
this cleans up the separation of drift rates and proportional
correction from yaw source and accelerometers, allow the yaw
to run at a different rate to the accel correction
2012-03-10 10:34:33 +11:00
Andrew Tridgell
f4b1dae7cf
IMU: added get_gyro_drift_rate() interface
...
this just calls down to the InertialSensor layer
2012-03-10 10:34:33 +11:00
Andrew Tridgell
f46fba54dc
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
9e07fa3af6
DCM: removed the limit on linear acceleration
...
we get linear accelerations of more than 1g when turning corners
2012-03-10 10:34:33 +11:00
Andrew Tridgell
ab1aec0f77
Quaternion: minor tuning
2012-03-10 10:34:33 +11:00
Andrew Tridgell
e470bf2354
DCM: minor tuning based on testing my quad
2012-03-10 10:34:33 +11:00
Andrew Tridgell
97faa47ba6
SITL: make the yaw match the APM conventions
2012-03-10 10:34:33 +11:00
Andrew Tridgell
d1713bd2fb
SITL: fixed the pwm output on startup
2012-03-10 10:34:33 +11:00
Andrew Tridgell
8b37790bd1
Quaternion: code cleanups and added comments
2012-03-10 10:34:32 +11:00
Andrew Tridgell
f5e5ccff6a
DCM: code cleanup and added more comments
2012-03-10 10:34:32 +11:00
Andrew Tridgell
e2b2c9181e
Quaternion: bumb up gyro drift limit to match DCM
2012-03-10 10:34:32 +11:00
Andrew Tridgell
2b6fae6e16
ADC: removed the ADC level accel smoothing
...
the quaternion code does a better job of handling this noise than this
filter does
2012-03-10 10:34:32 +11:00
Andrew Tridgell
8ad6b5f4d1
Quaternion: separate out drift correction from main updates
2012-03-10 10:34:32 +11:00
Andrew Tridgell
ff4f7ccc65
InertionSensor: update for new Ch6() interface
2012-03-10 10:34:32 +11:00
Andrew Tridgell
d1976449fd
IMU: fixed a warning
2012-03-10 10:34:32 +11:00
Andrew Tridgell
e9f35bfa7f
GPS: expose last_fix_time
2012-03-10 10:34:32 +11:00
Andrew Tridgell
17daa2f31c
Compass: change last_update to be in microseconds
2012-03-10 10:34:32 +11:00
Andrew Tridgell
404a4e4896
ADC: use floats for ADC averaging
...
this costs almost nothing and improved accel/gyro calibration
2012-03-10 10:34:32 +11:00
Andrew Tridgell
4c6afa36cb
DCM: removed update_DCM_fast
...
this combines the functionality of the 'fast' DCM with the normal one,
and also speeds up both the yaw drift correction and the matrix update
code
2012-03-10 10:34:31 +11:00
Andrew Tridgell
2c279639a3
AP_IMU: fixed led flashing in gyro cal
...
thanks Pat!
2012-03-10 10:34:31 +11:00