Andrew Tridgell
0c445101ff
FastSerial: added set_blocking_writes() interface
...
this allows us to put a serial port into non-blocking mode, so that
writes that don't fit in the transmit buffer are dropped. This will be
used in flight to prevent stray printf() calls from causing large time
delays in the code
2012-03-30 17:46:20 +11:00
Andrew Tridgell
22ff8cb197
examples: fixed build of some examples with new AP_Declination code
2012-03-30 14:25:27 +11:00
Andrew Tridgell
504c53f746
Compass: added COMPASS_AUTODEC option
...
when this is 1 (which is the default), we will get the declination
automatically via the AP_Declination library
when it is 0 we will use the value configured by the user
2012-03-30 14:25:27 +11:00
Andrew Tridgell
927834106d
AP_Declination: save some more memory by putting the declination keys in progmem
...
there was a comment saying this was too slow, but it actually costs
about 30 usec extra, which is trivial given the full auto declination
call costs 680 usec and its only called once per boot
2012-03-30 14:25:27 +11:00
Andrew Tridgell
70d4280935
AP_Declination: added timing information to declination test
2012-03-30 14:25:27 +11:00
Andrew Tridgell
175352845c
AP_Declination: fixed build under SITL
2012-03-30 14:25:27 +11:00
Adam M Rivera
ca82350f17
AP_Declination_test: Updated test with better print messages.
2012-03-30 14:25:26 +11:00
Adam M Rivera
01b1e58f7d
AP_Declination: Update LUT based on the changes that I made in the LUT generation code. This LUT is the final version that has no truncation.
2012-03-30 14:25:26 +11:00
Adam M Rivera
23f6093f05
AP_Declination: Updated comments to reflect new LUT size.
2012-03-30 14:25:06 +11:00
Adam M Rivera
50791a8b0f
AP_Declination: Removed trailing zero deltas as they have no impact on the final value and only take up extra bytes.
2012-03-30 14:21:58 +11:00
Adam M Rivera
f35e447927
AP_Declination: Updated compressed lookup value table. Located 9 more failure points due to truncation on the packed LUT.
2012-03-30 14:21:58 +11:00
Adam M Rivera
72b70c394c
AP_Declination: Found 7 of the 22 failure points and fixed them. The issue with those 7 was the way I originally packed the value array. The last delta values on some rows were getting truncated. The new number of failures is down to 15 - WIP.
2012-03-30 14:21:58 +11:00
Adam M Rivera
076192db51
AP_Declination: Updated test to run in 5 degree increments. Changed to only print failures and also print total pass vs total fail.
2012-03-30 14:21:58 +11:00
Adam M Rivera
230ca1ddca
AP_Declination: Moved check for y index of zero to after the y index is properly transformed.
2012-03-30 14:21:58 +11:00
Adam M Rivera
e0fa053c79
AP_Declination: The exception signs unpacking logic was incorrect. I was shifting a 1 value left y%8 which would have needed a the signs to be packed right to left. My packed signs byte was packed left to right (left most being the 0 position) so I needed to reverse the shifting.
2012-03-30 14:21:58 +11:00
Adam M Rivera
f66c6e16e4
AP_Declination: In order for the bitwise & operation to work, negative signs need to be represented by 1s instead of 0s. Changed so that negative signs are represented by a 1 in the packed signs array. Updated lookup logic to reflect this change.
2012-03-30 14:21:58 +11:00
Adam M Rivera
d88b9e8ffc
AP_Declination: Updated packed exception signs array. I had the signs packed incorrectly.
2012-03-30 14:21:57 +11:00
Adam M Rivera
036da88174
AP_Declination: Changed test to run in increments of 10 degrees. 1 was too granular.
2012-03-30 14:21:57 +11:00
Adam M Rivera
580b274bde
AP_Declination: Added original array to test sketch. Added loop to validate new compressed array against original in 1 degree steps.
2012-03-30 14:21:57 +11:00
Adam M Rivera
efefc3e4f4
AP_Declination: Moved rows with large spikes in delta to their own unsigned exception rows. The signs are in a separate packed array.
2012-03-30 14:21:57 +11:00
Adam M Rivera
0dcc4e8307
AP_Declination: Implemented Delta Encoding and Run-Length Encoding. Added method to traverse the compressed array and return the lookup value based on the same lat_index/lon_index that was used before.
2012-03-30 14:21:57 +11:00
Adam M Rivera
3a849771bc
AP_Declination: Changed PROGMEM read function to pgm_read_word_far to support the int16_t datatype.
2012-03-30 14:21:57 +11:00
Adam M Rivera
370e56c00a
AP_Declination: Changed datatype to int16_t to support the -90 <-> 90 latitude range.
2012-03-30 14:21:57 +11:00
Adam M Rivera
ae257ad42b
AP_Declination: Reduced the size of the lookup table to support -75 <-> 70 latitude range. This allows the datatype to remain int8_t.
2012-03-30 14:21:57 +11:00
Andrew Tridgell
b549b88e5e
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
16deefce31
Compass: fixed a comment
2012-03-29 12:39:53 +11:00
Andrew Tridgell
17290836ef
Compass: added some more comments
...
explain the algorithm a bit more
2012-03-29 12:39:53 +11:00
rmackay9
2ce597642e
Filter - added FilterWithBuffer typedefs for int32t and uint32 for ease of use
2012-03-28 22:02:52 +09:00
rmackay9
90fcdeadfd
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
10c35e3769
SITL: add magnetic field noise to the simulated compass
2012-03-28 20:55:27 +11:00
Andrew Tridgell
f4c1b6a3c6
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
b2d6db9479
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
9b95d2060a
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
a72d4b46b3
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
b5dbdab81e
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
2b2dbf2a7f
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
39fd24ed14
Filter - remove obsolete warning from comments re alloc/malloc dangers
2012-03-25 16:14:07 +09:00
rmackay9
2d65ec2874
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
d371862fd2
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
a6d66dc45b
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
f4d1295a4b
AHRS: fixed build of AHRS example
2012-03-22 23:00:45 +11:00
Andrew Tridgell
fe55a76335
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
17fbb8ea26
Math: fixed the build of the eulers test in SITL
2012-03-21 10:41:55 +11:00
Andrew Tridgell
90c3d230d9
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
24a471ff8f
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
9f4becbacf
AHRS: added AHRS specific MAVLink headers
2012-03-19 17:35:20 +11:00
Andrew Tridgell
9e6c18cca4
AHRS: added missing AP_AHRS.h
2012-03-19 17:35:20 +11:00
Andrew Tridgell
4f82134a5e
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
17f7292fe9
Math: added a test for the rotate() method
2012-03-19 17:29:02 +11:00
Andrew Tridgell
c16b353ea7
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
31e566475b
Math: added zero() and identity() methods to Matrix3f
2012-03-19 17:29:02 +11:00
Andrew Tridgell
c53b320e00
Quaternion: change signs in AP_AHRS_Quaternion
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
d948a28e7c
Math: change signs in quaternion library
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
af9ce0cfc9
Math: allow eulers test to build with AP_Declination library
2012-03-19 17:29:02 +11:00
Andrew Tridgell
72a761170b
Math: fixed build of eulers test on SITL
2012-03-19 17:29:02 +11:00
Andrew Tridgell
58a68c89d9
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
8ae0ea7e37
AP_Mount: adapt library for AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
79b9be8b1a
AHRS: fixup the AHRS test suite for the new framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
f8087d3c67
AHRS: adapt the quaternion library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
8dcf82b433
AHRS: adapt the DCM_HIL library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
d4bb068d5b
AHRS: adapt the DCM library to the AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
9d75ffeba1
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
55ed84526a
MAVLink: rename DCM message to AHRS
2012-03-19 17:29:01 +11:00
rmackay9
01cc5fe938
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
7560242721
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
bae5f98666
sitl cygwin mods
2012-03-15 08:16:50 +08:00
Andrew Tridgell
00c1c6f108
Quaternion: credit Justin with the initial idea of using Madgwick
...
thanks Justin!
2012-03-13 13:27:45 +11:00
Andrew Tridgell
13dac4a93a
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
7daaadf776
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
c08fd50542
AP_Declination: fixed build of test sketch
2012-03-12 17:33:15 +11:00
Amilcar Lucas
6e9ffb4249
correct small typos in comments
2012-03-11 21:30:09 +01:00
Andrew Tridgell
b337441ec5
SITL: added pgm_read_byte_far()
2012-03-11 20:59:47 +11:00
Andrew Tridgell
c1b945018b
AP_Declination: fixed usage of headers
2012-03-11 20:59:47 +11:00
Adam M Rivera
b9be6ed290
AP_Declination: Updated comment.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
fe8c896d69
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
e08b50ee91
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
e22da153ec
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
d2a07b1603
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
d10c4b76ad
Compass: removed an incorrect comment
2012-03-11 20:07:38 +11:00
Andrew Tridgell
0da64e98f8
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
0ec9857689
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
4bf28d499a
Quaternion: update for new Quaternion interface
2012-03-11 15:37:07 +11:00
Andrew Tridgell
e8f1c5742b
DCM: update for new Matrix3f interface
2012-03-11 15:37:07 +11:00
Andrew Tridgell
4d3789d11c
AP_Math: update the test suite
2012-03-11 15:37:07 +11:00
Andrew Tridgell
4422486d44
AP_Math: made rotation matrices more C++
...
thanks to Adam for the suggestion
2012-03-11 15:37:07 +11:00
Andrew Tridgell
5c6368bad3
AP_Math: allow null pointers in Quaternion::to_euler()
...
this matches the Matrix3f method
2012-03-11 15:37:07 +11:00
Andrew Tridgell
16c95236c0
Quaternion: use the new quaternion API
2012-03-11 15:37:07 +11:00
Andrew Tridgell
9f0cb78f08
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
9e30b5e4a5
I2C: fixed cr/lf mess
2012-03-11 15:37:07 +11:00
Andrew Tridgell
6021daf423
OpticalFlow: adapt optical flow library to new rotation system
2012-03-11 15:37:07 +11:00
Andrew Tridgell
2ab3d2c080
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
cb96dd975f
Compass: update the compass driver to use the new vector.rotate() method
2012-03-11 15:37:07 +11:00
Andrew Tridgell
55aa43a70d
Math: added a test suite for the new rotation methods
2012-03-11 15:37:07 +11:00
Andrew Tridgell
289c64c0b9
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
ba8e764349
SITL: lower the noise and drift levels for general autotest usage
2012-03-10 10:34:34 +11:00
Andrew Tridgell
b02ca58901
InertialSensor: fixed HIL build
2012-03-10 10:34:34 +11:00
Andrew Tridgell
44ebb20329
MAVLink: bring the v1.0 MAVLink in sync with 0.9
2012-03-10 10:34:34 +11:00
Andrew Tridgell
87c463bcc7
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
eff6778515
Quaternion: use gyro drift value from sensor driver
2012-03-10 10:34:34 +11:00
Andrew Tridgell
3989fe2c2c
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