Commit Graph

1282 Commits

Author SHA1 Message Date
Andrew Tridgell
c9031f1d36 SITL: implement cli()/sei() properly for desktop build
this disables simulated hardware interrupts during critical sections
2012-03-02 15:48:27 +11:00
Jason Short
59e1d43f60 Updated fastPWM to 490Hz 2012-02-29 22:17:38 -08:00
Pat Hickey
8fa559930f AP_Param: nested group recursion into next_group disableable by macro
* c.f. 0251932c81fe7eb, e5515bb6ef82
2012-02-29 19:48:43 -08:00
Pat Hickey
8b3d013294 AP_Param: One more nexted group recursion disableable by macro
* c.f. e5515bb6ef82
2012-02-29 18:48:54 -08:00
rmackay9
9832ac879e AP_Compass - fixed compile warning 2012-02-29 22:57:35 +09:00
rmackay9
0311b70004 AP_Baro - fixed small compiler warning to do with order of parameters in constructor 2012-02-29 22:46:29 +09:00
rmackay9
64f9f1d92e AP_Compass - fixed small compiler warning to do with order of parameters in constructor 2012-02-29 22:45:49 +09:00
rmackay9
7c1d1b45a7 AP_DCM - fixed small compiler warning to do with order of parameters in constructor 2012-02-29 22:45:26 +09:00
rmackay9
3cbd172ea9 RC_Channel - fixed small compiler warning 2012-02-29 22:44:29 +09:00
rmackay9
ced49f7d01 AP_ADC - removed small compiler warning 2012-02-29 22:43:46 +09:00
Pat Hickey
42078f2794 AP_Param: Make nested group recursion disableable by macro
* Eliminates recursive calls inside AP_Param.
  This is important to Pat @ Galois, but not the project in general.
  Recursion depth on these functions is bounded structurally using
  existing nested group constructors (can't create loops in finite space)
  and checked at init time
2012-02-28 16:28:27 -08:00
rmackay9
400a4b0bdb AP_RangeFinder - changed example sketch to work with new Filter library 2012-02-28 21:02:10 +09:00
rmackay9
5b89c65d9c Filter - updated example sketch to use modified library 2012-02-28 21:01:35 +09:00
rmackay9
d17a015df1 Filter - added AverageFilter, removed SumFilter
added FilterWithBuffer to allow removal of malloc/free without losing ability to pass around filter objects
2012-02-28 21:01:11 +09:00
Andrew Tridgell
078268528e AP_Param: show numerical value in eeprom dump utility 2012-02-28 09:43:49 +11:00
Andrew Tridgell
701da6c30f AP_Param: fixed v.load() on a sub-element of a AP_Vector3f
this isn't actually used at the moment in APM, but we should get it
right in case someone does try to load a single element of a vector
2012-02-28 09:43:49 +11:00
Andrew Tridgell
34f1ebcfb4 SITL: simulate noise on each ADC channel separately
scale the noise based on the period of the motors
2012-02-28 09:43:49 +11:00
Andrew Tridgell
4cdc0a8c11 SITL: raise the ADC noise level to 8 bits when flying
this is about the level of noise of a aircraft that has a lot of
vibration
2012-02-28 09:43:49 +11:00
Andrew Tridgell
b32701e008 IMU: removed unused accel_filtered code 2012-02-28 09:43:49 +11:00
Andrew Tridgell
ac44b73951 AP_Param: fixed setting of CAM_P_G in ArduCopter
the variable CAM_P_G has the same prefix as the CAM_P group. We want
to allow for parameters having a common prefix with a group, so we
need to keep searching after we've found a group that matches the
prefix
2012-02-27 10:54:33 +11:00
Andrew Tridgell
7fe4a41c31 AP_Param: make the templating code a bit clearer
add comments on the arguments, and name them in a clearer way
2012-02-27 10:54:33 +11:00
Andrew Tridgell
5bf138fb38 DCM: fixed the sense of the compass GPS test in initial yaw
we were only disabling null offsets when we didn't have a compass,
which doesn't make much sense!
2012-02-26 22:24:45 +11:00
rmackay9
747e045193 ModeFilter - corrected shadowed variable compiler warning for drop_high_sample 2012-02-26 17:57:28 +09:00
rmackay9
e01477a7a8 Filter - added AverageFilter - this will be used in place of SumFilter because it removes the possibility of overflows 2012-02-26 17:34:36 +09:00
rmackay9
b345529241 Filter - removed shadowing of variables in constructors for Filter, ModeFilter and SumFilter (sorry tridge!)
increased maximum sample buffer size from 6 to 10
2012-02-26 17:17:46 +09:00
rmackay9
3f0d27ec87 ModeFilter - remove older ModeFilter library (new library is now in Filter directory) 2012-02-26 15:36:23 +09:00
rmackay9
00a1b5cd53 AP_RangeFinder - cut over to use new ModeFilter from Filter library 2012-02-26 15:34:50 +09:00
rmackay9
ae8fd43335 Filter - first version of filter library include ModeFilter 2012-02-26 15:34:05 +09:00
rmackay9
f6f05755d9 AP_Mount - #include FastSerial first to allow it to compile under Arduino 1.0 2012-02-26 15:31:56 +09:00
Andrew Tridgell
bd2776aedd Compass: use constructor to set initial values for _learn and _use_for_yaw
this ensures they are set if you have MAG_ENABLE==0
2012-02-25 17:36:31 +11:00
Andrew Tridgell
56bb74ef36 DCM: disable compass null offsets when setting initial yaw
we need to ensure the compass null offsets code doesn't see a sudden
yaw change, or it will change the offsets by a large amount very
suddenly
2012-02-25 16:02:24 +11:00
Andrew Tridgell
f50f4357ca Compass: catch the case of a user enabling a compass mid-flight
if a compass has not been initialised at startup we can't enable it
mid-flight, as we don't have the orientation
2012-02-25 14:51:09 +11:00
Andrew Tridgell
3abe035557 DCM: use the new use_for_yaw() compass method 2012-02-25 14:51:09 +11:00
Andrew Tridgell
c3319afadd Compass: added COMPASS_LEARN and COMPASS_USE parameters
these allow you to control if the compass should be used for yaw and
if it should learn its offsets. This is useful for locking in compass
offsets once they are confirmed to be good, and for learning offsets
without using them in flights.

The default is to behave the same as previously, which is
COMPASS_LEARN=1 and COMPASS_USE=1
2012-02-25 14:51:08 +11:00
Andrew Tridgell
051bd78b37 AP_Param: added some comments on AP_Vector3f handling 2012-02-25 11:37:20 +11:00
Andrew Tridgell
3cf0eebac8 DCM: don't reset _have_initial_yaw for GPS heading unless very slow
wait till we reach 1m/s before we reset _have_initial_yaw. This
prevents us continually resetting the DCM matrix if our ground speed
is close to 3m/s.
2012-02-25 11:37:20 +11:00
Andrew Tridgell
007a6b8958 AP_Param: added special handling for Vector3f
We would like to be able to use Vector3f as a parameter while exposing
the individual elements of the vector as MAVLink parameters. This
change to AP_Param makes that possible, by giving AP_Vector3f a dual
personality
2012-02-25 11:37:20 +11:00
Andrew Tridgell
1d95137b71 SITL: added -C option to desktop mode
this allows running APM to stdout, which is useful for test sketches
2012-02-25 11:37:20 +11:00
Andrew Tridgell
f221bd13ab libs: removed unused library GPS_IMU 2012-02-25 11:37:20 +11:00
Andrew Tridgell
1a21c78062 libs: removed unusued library GCS_SIMPLE 2012-02-25 11:37:20 +11:00
Andrew Tridgell
c63ca9c697 DCM: tidy up use of error_course and in_motion
in_motion is not a good name now it is also used for the compass

The error_course and heading component values don't need to be part of
the DCM object, they can be on the stack to reduce the memory usage a bit
2012-02-25 11:37:20 +11:00
Andrew Tridgell
d5b619218c DCM: use rotation_matrix_from_euler() to calculate initial yaw
When we first get a compass reading or we first start motion we need
to setup the DCM matrix with the right yaw. This uses
rotation_matrix_from_euler() to get a DCM matrix corresponding to our
current roll/pitch, but with the correct yaw
2012-02-25 11:37:20 +11:00
Andrew Tridgell
48cad8bc25 DCM: use rotation_matrix_from_euler() in matrix reset
this makes the code a bit easier to read
2012-02-24 11:54:11 +11:00
Andrew Tridgell
5009679617 DCM: use calculate_euler_angles() to get eulers from DCM
this makes the code a bit easier to understand
2012-02-24 11:52:55 +11:00
Andrew Tridgell
df6013616e 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
50f85835bd Compass: ensure we don't produce NAN values for compass heading
this leaves the previous heading values alone if we are at a pitch of
exactly 90 or -90, at which point we can't compute a meaningful
heading
2012-02-24 11:52:55 +11:00
Andrew Tridgell
8190204287 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
0acea11152 DCM: tidy up the nan checking in DCM
use is_nan() on the matrix rather than just on c.x, and add
safe_asin() to the (unused) OUTPUTMODE==2 code.
2012-02-24 11:52:55 +11:00
Andrew Tridgell
b4c8d6491a DCM: added matrix recovery on reset
when we get a bad DCM error we can recover a matrix corresponding to
the current attitude, making it more likely that the aircraft will be
able to recover
2012-02-24 11:52:55 +11:00
Andrew Tridgell
1a32ececb4 AP_Math: added a safe_asin() function
this adds range checking to asin()
2012-02-24 11:52:55 +11:00