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
Andrew Tridgell
16ed8bc8f6
AP_Math: added rotmat <-> euler functions
...
these will make the dcm matrix manipulation easier to understand
2012-02-24 11:52:55 +11:00
Andrew Tridgell
17d16bc8c6
AP_Math: added safe_sqrt() function
...
this function will never return NAN. It will return zero for negative
numbers.
2012-02-24 11:52:55 +11:00
Andrew Tridgell
502fbf6e17
AP_Math: added a safe_asin() function
...
this adds range checking to asin()
2012-02-24 11:52:55 +11:00
Andrew Tridgell
17170da96e
AP_Math: added is_nan() methods to vector3f and matrix3f
2012-02-24 11:52:55 +11:00
Andrew Tridgell
882cd4ea83
AP_Param: moved AP_Vector3f and AP_Matrix3f declarations to AP_Math.h
...
this avoids us needing AP_Math.h in every utility sketch and example
2012-02-18 10:51:57 +11:00
Andrew Tridgell
11b8d56434
added comment in polygon code
2011-12-21 23:31:38 +11:00
Andrew Tridgell
e7568db237
fixed comment
2011-12-19 20:52:59 +11:00
Andrew Tridgell
6efa2e53cb
AP_Math: re-work polygon algorithm for perfect precision
...
using sign checking and 64 bit integer math only when needed results
in an algorithm that is just as fast as the floating point version,
but has perfect results for any representable lat/lng
2011-12-19 18:52:56 +11:00
Andrew Tridgell
a3a0e5646f
polygon: improve the speed and precision of the polygon algorithm
...
now takes 156 usec per test, with a 11 point boundary
2011-12-18 12:59:50 +11:00
Andrew Tridgell
42522baf9f
geofence: store fence points as int32_t
...
this keeps maximum precision in fence boundaries
2011-12-16 20:11:51 +11:00
Andrew Tridgell
9b6bab8904
AP_Math: better polygon algorithm
...
this one seems to do better with single precision floating point
2011-12-16 20:11:51 +11:00
Andrew Tridgell
62e92f406e
AP_Math: make out vector and matrix elements used types with fixed sizes
...
this prevents differences between CPU types
2011-12-16 20:09:11 +11:00
Andrew Tridgell
85e295332f
AP_Math: added Polygon_complete() function
...
used to veryify user supplied boundaries
2011-12-15 14:42:34 +11:00
Andrew Tridgell
117a98f9a2
AP_Math: added a Polygon_outside() function
...
this tests if a point is outside of a polygon. This will be used as
part of our geo-fencing support, and also for a new 'fenced mode'
2011-12-15 14:34:58 +11:00
James Goppert
0c7c508541
Optional recursion added.
2011-09-30 17:17:51 -04:00
James Goppert
5489b84f8e
Improvements to cmake.
2011-09-29 21:23:26 -04:00
James Goppert
d887a28b91
Added ArduBoat/ ArduRover/ and APO library.
2011-09-29 14:12:15 -04:00
unknown
a4e001bbcf
Adding CMake support
2011-09-14 15:44:55 +02:00
jasonshort
7521ceed61
Vector3<T>() { x = y = x = 0; }
...
changed to :
Vector3<T>() { x = y = z = 0; }
git-svn-id: https://arducopter.googlecode.com/svn/trunk@2600 f9c3cf11-9bcb-44bc-f272-b75c42450872
2011-06-20 16:31:31 +00:00
DrZiplok@gmail.com
f10cbb011f
::transposed does not change the matrix; make it const.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@1648 f9c3cf11-9bcb-44bc-f272-b75c42450872
2011-02-14 04:26:05 +00:00
DrZiplok@gmail.com
75e78dabae
Back out the memset optimisation. It helps with code size but causes inexplicable link-time failures (undefined references to __cxa_pure_virtual).
...
Thank you very much Mr GCC. Can I have my evening back?
git-svn-id: https://arducopter.googlecode.com/svn/trunk@1352 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-12-29 03:09:29 +00:00
DrZiplok@gmail.com
290635b354
Minor code size optimisation; use memset to zero *this rather than explicitly assigning zero to the vector elements. Still not quite optimal for matrix3 as it gets three memsets, but still cheaper in terms of code size.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@1212 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-12-20 01:52:23 +00:00
rmackay9@yahoo.com
e930dacb4d
AP_Math - initialise vector2 and vector3 x,y,z values to zero. Doug found (and I confirmed) that if vectors or matrices were declared in a function (i.e. a local variable), they would often have non-zero values. Global declarations don't have this problem - it's a C++ performance thing it seems.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@878 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-11-22 02:29:15 +00:00
rmackay9@yahoo.com
8708675b1f
added constructor with 9 elements to matrix3.h
...
corrected matrix * vector function.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@551 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-25 02:43:11 +00:00
DrZiplok@gmail.com
7721e622aa
Rather than subclassing from the templated classes, just typedef directly to them.
...
This should solve the issues related to assigning to the convenience types.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@543 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-23 05:45:43 +00:00
rmackay9@yahoo.com
15e6469ca9
added downcasting to MATRIX3_CTORS. this fixes some problems with setting the results from a formula to a variable (i..e m1 = m2*2).
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@541 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-23 05:39:50 +00:00
rmackay9@yahoo.com
b3e1b6c57d
minor corrections to the operator *= and constructor so that matrix can be more easily created from vector objects
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@540 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-23 03:14:15 +00:00
DrZiplok@gmail.com
ac2e14c4ec
Remove a bunch of probably wrong const cruft. Ditch the dubious array index operators from vector2.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@538 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-22 17:41:49 +00:00
DrZiplok@gmail.com
815e5f871a
Remove the trivial operator= implementations, the default shallow copy is fine.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@537 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-22 16:32:38 +00:00
DrZiplok@gmail.com
646045ef44
Some minor fixes prompted while looking at the code for other reasons.
...
Return non-const values from assignment. Fix operator* for matrix3.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@536 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-22 16:15:26 +00:00
DrZiplok@gmail.com
b918f21567
Replace the questionable rotation operation with a conventional transposition.
...
git-svn-id: https://arducopter.googlecode.com/svn/trunk@442 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-08 08:41:29 +00:00
DrZiplok@gmail.com
097161cd8d
Beginnings of a math library for ArduPilot(Mega) systems.
...
The vector classes are light adaptations of work by Bill Perone
(billperone@yahoo.com ), the Matrix3 class draws on them for
inspiration.
Bill's matrix classes are too heavyweight and not templated, so
they're less suitable for us here.
This code compiles, and some trivial tests seem to work, but
it should not be considered "golden" yet.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@441 f9c3cf11-9bcb-44bc-f272-b75c42450872
2010-09-08 08:21:46 +00:00