Commit Graph

182 Commits

Author SHA1 Message Date
Andrew Tridgell 2b1fcc964f AP_Math: added a quick test of floating point location accuracy
just confirming some maths ...
2013-08-30 13:01:32 +10:00
Andrew Tridgell 5434b2c017 AP_Math: update location code to avoid float rounding
this avoids manipulating global coordinates as float variables. Using
a float reduces our precision from 1cm to about 70cm.

This also adds location_diff() which will be used in the L1 controller
to avoid global positions in floats
2013-08-13 12:07:34 +10:00
Andrew Tridgell 9cb6c987d4 AP_Math: fixed example build 2013-08-05 12:37:51 +10:00
Andrew Tridgell 1d75b52411 AP_Math: use const references not pointers for location functions
this makes life a bit easier for the new AP_Mission library

Pair-Programmed-With: Brandon Jones <brnjones@gmail.com>
2013-08-05 10:23:40 +10:00
Andrew Tridgell 468e55d425 AP_Math: added two new vector/matrix ops for kalman airspeed filter 2013-07-22 12:50:00 +10:00
Randy Mackay 540ca25b84 AP_Math: add rotateXY 2013-07-20 17:59:06 +09:00
Randy Mackay bd6a60f28b AP_Math: add M_PI_2 definition
Required when building under arduino
2013-07-14 15:57:26 +09:00
Andrew Tridgell 8c49ed78a5 AP_Math: make the rotation numbers easier to find 2013-07-08 12:17:59 +10:00
Randy Mackay 8b87849acd Math: add wrap_PI 2013-06-01 18:21:29 +09:00
Randy Mackay d81b7b507d Math: add Leonard's fast tan function 2013-05-30 18:24:32 +09:00
Andrew Tridgell 5024da2695 AP_Math: fixed indent-tabs-mode 2013-05-30 09:51:51 +10:00
Randy Mackay 7c9d9b9800 AP_Math: use DEG_TO_RAD in longitude_scale
Also increased accuracy of RadiansToCentiDegrees although it is like the
compiler will throw away the extra digits anyway.
2013-05-05 14:31:24 +09:00
Andrew Tridgell 737f0305ef AP_Math: implement vector2 cross product
useful in DCM for faster yaw correction
2013-05-05 13:47:51 +10:00
Andrew Tridgell f4189e083b AP_Math: added mulXY() for matrix3 and vector3
returns the XY components of the product
2013-05-05 13:47:23 +10:00
Andrew Tridgell ba83950fc4 libraries: replace constrain() with constrain_float()
this makes the type much more obvious. Thanks to Tobias for the
suggestion.
2013-05-02 10:25:40 +10:00
Andrew Tridgell e1f9297551 AP_Math: move print_latlon() to location.cpp 2013-04-20 13:52:36 +10:00
Andrew Tridgell 83dc7dbc92 AP_Math: handle NaN in constrain(), returning average
this makes it less likely a NaN will propogate
2013-04-15 14:28:51 +10:00
Andrew Tridgell 43c3c60de2 AP_Math: moved a lot of vector templates to cpp from .h
this reduces the code size quite a lot on AVR
2013-04-12 12:48:08 +10:00
Andrew Tridgell 78eb12a4ac AP_Math: added RadiansToCentiDegrees and RADIUS_OF_EARTH 2013-04-12 12:48:08 +10:00
Andrew Tridgell 8b119934ea AP_Math: fixed grammar error 2013-04-12 12:48:08 +10:00
Andrew Tridgell 2d29a6a7be AP_Math: added Vector2f.angle()
useful for calculating the vector in polar coordinates
2013-04-12 12:48:08 +10:00
tobias 217b8d7a59 cleanup: use const for struct Location pointers and references
this allows the compiler to generate more efficient code
2013-04-09 12:10:32 +10:00
Andrew Tridgell 091b474a1d AP_Math: added wrap_360_cd() and wrap_180_cd()
moved from per-vehicle code
2013-03-29 13:13:37 +11:00
Randy Mackay 7729ec950e AP_Math: longitude_scale function made public
Added LATLON_TO_M and LATLON_TO_CM #defines
2013-01-27 23:21:39 +09:00
Randy Mackay d2767b911c AP_Math: switch get_distance_cm to return uint32_t
Includes changes required on ArduCopter and ArduPlane side as well
2013-01-26 17:04:12 +09:00
James Bielman 4fa7bb1486 Add AVR compatibility header for missing math.h definitions.
- Define float versions of math functions to the double versions
  on AVR (eg. #define sinf sin).
- These macros appear to be missing in older versions of avr-libs.
- Include AP_Math.h rather than math.h to get these definitions.
2013-01-16 13:52:17 +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 38062bbb6d AP_Math: support some more rotation combinations 2013-01-13 17:32:48 +11:00
Andrew Tridgell 374af1cd14 build: change from Arduino.mk to apm.mk 2013-01-02 17:29:37 +11:00
Andrew Tridgell eb74fddd9f AP_Math: added global GRAVITY_MSS define 2013-01-02 14:45:08 +11:00
Andrew Tridgell e7b915b0f4 AP_Math: fixed error comment 2012-12-22 12:52:42 +11:00
Andrew Tridgell d8bed0c2aa AP_Math: fixed get_distance() function 2012-12-20 14:53:23 +11:00
Andrew Tridgell a072afa223 AP_Math: expand some macros into functions
this saves some flash
2012-12-20 14:52:38 +11:00
Andrew Tridgell a1187519a8 AP_HAL: use AP_HAL_BOARD_DRIVER in remaining test sketches 2012-12-20 14:52:37 +11:00
Andrew Tridgell a76688e630 Math: fixed example warnings 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 7d27e420ae AP_HAL: remove unnecessary Arduino.h includes 2012-12-20 14:52:30 +11:00
Pat Hickey 475da4eca4 CONFIG_HAL_BOARD - test sketches fixed up, build all passes 2012-12-20 14:51:37 +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 7dbe198e5c AP_Math: port to work on coreless arduino (AP_HAL) 2012-12-20 14:51:24 +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 56f88821e9 AP_AHRS: fix example sketch
AP_Airspeed: fix example sketch
AP_Baro: fix example sketch
AP_Declination: fix example sketch
AP_Math: fix example sketch
2012-11-08 00:08:18 +09:00
rmackay9 3fd07805a7 AP_Math: added rotation method accuracy test to example sketch 2012-11-04 13:05:37 +09:00
rmackay9 d6324b3964 AP_Math: fix compile errors example sketches 2012-11-04 11:55:59 +09:00
uncrustify 652b490345 uncrustify libraries/AP_Math/vector2.h 2012-08-21 19:03:34 -07:00
uncrustify 97994a4e3a uncrustify libraries/AP_Math/AP_Math.h 2012-08-21 19:03:34 -07:00
uncrustify 7e19ae5868 uncrustify libraries/AP_Math/matrix3.h 2012-08-21 19:03:34 -07:00
uncrustify 9bb0b42f28 uncrustify libraries/AP_Math/rotations.h 2012-08-21 19:03:34 -07:00
uncrustify 57d4db2be4 uncrustify libraries/AP_Math/vector3.h 2012-08-21 19:03:34 -07:00
uncrustify d50c606c97 uncrustify libraries/AP_Math/quaternion.h 2012-08-21 19:03:34 -07:00
uncrustify 9ccb38260d uncrustify libraries/AP_Math/polygon.h 2012-08-21 19:03:34 -07:00
uncrustify 533860dd73 uncrustify libraries/AP_Math/AP_Math.cpp 2012-08-21 19:03:34 -07:00
uncrustify b5bee9deff uncrustify libraries/AP_Math/polygon.cpp 2012-08-21 19:03:34 -07:00
uncrustify a208fbb2d9 uncrustify libraries/AP_Math/vector3.cpp 2012-08-21 19:03:34 -07:00
uncrustify 424baf3f29 uncrustify libraries/AP_Math/quaternion.cpp 2012-08-21 19:03:33 -07:00
uncrustify d6e803fd3c uncrustify libraries/AP_Math/matrix3.cpp 2012-08-21 19:03:33 -07:00
uncrustify 64eaadb332 uncrustify libraries/AP_Math/location.cpp 2012-08-21 19:03:33 -07:00
uncrustify d0d401581f uncrustify libraries/AP_Math/examples/location/location.pde 2012-08-21 19:03:33 -07:00
uncrustify 52dbb56bf0 uncrustify libraries/AP_Math/examples/rotations/rotations.pde 2012-08-21 19:03:33 -07:00
uncrustify 87c263fbb9 uncrustify libraries/AP_Math/examples/polygon/polygon.pde 2012-08-21 19:03:33 -07:00
uncrustify 86627c9a9d uncrustify libraries/AP_Math/examples/eulers/eulers.pde 2012-08-21 19:03:33 -07:00
Andrew Tridgell 6300fa7399 math: more abs() fixes
abs() is 16 bit
2012-08-16 15:17:42 +10:00
Jason Short a66e43aff1 Location Lib : Abs was overflowing causing bad comparison 2012-08-15 22:01:51 -07:00
Jason Short ff38dadd00 Location Lib. Potential fix for bad angle and distance calcs.
last_lat changed to int32_t since it can be negative.
2012-08-15 21:36:55 -07:00
Andrew Tridgell 0ba57d05eb AP_Math: added matrix column extraction functions 2012-08-11 22:06:02 +10:00
Andrew Tridgell 87fca1985f AP_Math: added location_update() and location_offset() functions
these will be used by AHRS dead reckoning
2012-08-11 11:56:54 +10:00
Andrew Tridgell 2a7b298bbc MAVLink: moved mavlink variables back to library
these were moved to the main sketches to allow for compile time
selection of MAVLink 0.9 vs 1.0. We no longer support 0.9, so we can
move it back, which simplifies some test sketches
2012-08-09 12:06:21 +10:00
Andrew Tridgell 8ae35cae1c AP_Math: rename get_bearing() to get_bearing_cd() to make units obvious 2012-08-08 12:12:30 +10:00
Andrew Tridgell a72f6acef6 AP_Math: added get_distance_cm() to return in centimeters 2012-07-11 07:49:05 +10:00
Andrew Tridgell 1cd8c54f21 AP_Math: cope with co-located waypoints in location_passed_point() 2012-07-04 14:24:04 +10:00
Andrew Tridgell 468dfe3faa AP_Math: the windows arduino build is missing acosf() 2012-07-04 14:14:58 +10:00
Andrew Tridgell 0bdce404a5 AP_Math: add include of math.h
this is needed for location.cpp
2012-07-04 13:59:23 +10:00
Andrew Tridgell dd200cba31 Math: added location functions to math library
these do common calculations on struct Location
2012-07-04 12:42:46 +10:00
Andrew Tridgell fe865bc1dc Math: added comment 2012-06-27 16:01:49 +10:00
Andrew Tridgell c30b0d85a3 Math: moved more template functions to the .cpp files
save a bit more code space for larger functions
2012-06-27 16:01:49 +10: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 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 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 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 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 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 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 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 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 a92fb67b70 AP_Math: expanded the math test suite 2012-03-10 10:34:31 +11:00
Andrew Tridgell 4d65cda0ea AP_Math: added quaternion->matrix and earth frame routines
this will be used for 3d acceleration
2012-03-10 10:34:31 +11:00
Andrew Tridgell 8abbbe5713 AP_Math: better way of handling safe_sqrt()
better to test the result, than predict it
2012-03-10 10:34:31 +11:00
Andrew Tridgell 1ec4c0777c Math: added comment on quaternion constructor 2012-03-10 10:34:30 +11:00
Andrew Tridgell f5e6dc0757 Math: added is_inf() on vector3f 2012-03-10 10:34:30 +11:00
Andrew Tridgell c7d5f06b21 AP_Math: added quaternion helper functions and a test suite 2012-03-10 10:34:30 +11:00
Andrew Tridgell 145fc91701 AP_Math: added a .zero() method to Vector3f 2012-03-10 10:34:28 +11:00