Commit Graph

1223 Commits

Author SHA1 Message Date
Andrew Tridgell
2472f0a2f3 SITL: increase the amount of noise in the simulated ADC
this increases the noise to 2 bits, which actually can have the effect
of improving accuracy, as it leads to better averaging
2012-02-18 19:27:15 +11:00
Andrew Tridgell
9602b1f91b DCM: only add in centripetal accel if we have GPS lock
if we don't have a GPS or the GPS doesn't have a good lock then we
can't rely on the ground speed for adjusting the acceleration vector
2012-02-18 19:27:15 +11:00
Andrew Tridgell
371a91cfcf IMU: move _sensor_cal to general IMU class
this makes it available both in shim and INS subclasses
2012-02-18 10:51:57 +11:00
Andrew Tridgell
2b8f0c3a48 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
70a135c47c AP_Param: fixed copy-assignment operators for AP_Param vectors 2012-02-18 10:51:57 +11:00
Andrew Tridgell
e656928c01 AP_Param: added a set_and_save_ifchanged() method
this can be used to avoid the scan() in more frequenctly saved
variables, such as the MAVLink stream rates in APM
2012-02-18 10:51:57 +11:00
Andrew Tridgell
6f080742b8 AP_Param: added an initialised() method
this will be used by the compass code
2012-02-18 10:51:57 +11:00
justinbeech
5255512bf9 Found free extra 256 bytes of RAM eliminate _clz use from libgcc
Believe it or not, changing / 2^31 to >>31 saved 256 bytes in the "d" segment.

The reason is that GCC version prior to 4.3.5 does not have a count_leading_zeros (clz) assembler macro, so it uses a 256 byte lookup table called _clz
The _clz table gets pulled in if you do 64 bit division.
This tiny change is the only place that we do long long division.
Changing to a shift saves 256 bytes of ram.
2012-02-17 09:46:05 +00:00
Jason Short
560985b509 made I term return in same pattern as D term 2012-02-16 22:09:22 -08:00
Andrew Tridgell
3fbb5a2d6c ADC: on channel overflow we should not zero last_ch6_micros
this happens every 64 seconds because of unused channels on the
ADC. Zeroing this creates a bad delta_t value for the DCM code.
2012-02-16 17:48:36 +11:00
Jason Short
8e88d9e19e change constant to float 44330.0 2012-02-15 09:10:14 -08:00
Michael Oborne
b020a87c13 eedump ap param in perl 2012-02-15 21:31:58 +08:00
Andrew Tridgell
bc89b53bdc SITL: adjust the SITL compass code to have saner z values 2012-02-15 22:34:16 +11:00
Andrew Tridgell
63d768143d Compass: enable compass offsets for HIL compass
this makes the null_offsets algorithm have an effect for the HIL
compass that is used for SITL, which makes for easier testing of
compass calibration
2012-02-15 22:33:50 +11:00
Andrew Tridgell
7d21692301 fixed dump size 2012-02-15 10:44:09 +11:00
Andrew Tridgell
d2cc6740f0 show group_element too 2012-02-15 10:42:21 +11:00
Andrew Tridgell
aaba4db144 AP_Param: added eeprom_aaparam.c dump utility 2012-02-15 10:41:06 +11:00
Andrew Tridgell
812b7ae5ae SITL: catch floating point errors
if we get a FPE then log a message and exit
2012-02-15 08:50:45 +11:00
Andrew Tridgell
c39914e734 DCM: added a SITL_debug() for DCM normalisation errors
I have seen normalisation errors during simulation runs, but have not
yet tracked down the cause. This log message may help track things
down.
2012-02-15 08:50:45 +11:00
Andrew Tridgell
7355f5613c added SITL_debug() macro
this can be used to print a message into the logs in the SITL
simulator. This will be used for critical conditions.
2012-02-15 08:50:45 +11:00
Andrew Tridgell
7ba65aecf3 RC_Channel_aux: fixed a uninitialied variable error, and save a bit of stack space 2012-02-15 08:50:45 +11:00
Andrew Tridgell
273a974814 SITL: add some magnetometer offsets
this ensures the compass null_offset algorithm has some work to do in
autotest
2012-02-14 11:26:42 +11:00
Andrew Tridgell
9103f7688c fixed SITL GPS heading to be 0..360 2012-02-14 11:26:42 +11:00
Andrew Tridgell
a1c041b597 use stdint types in the compass code 2012-02-14 08:35:03 +11:00
Andrew Tridgell
6c20ff9492 AP_Param: allow dumping of AP_Vector3f
this means the 'show' command in the CLI shows the compass offsets now
2012-02-14 08:34:50 +11:00
Andrew Tridgell
4ec3857476 GPS: change back to 4Hz for MTK GPS
this will hopefully fix the NO_GPS problems that have been regularly
happening in recent months. I will watch the logs carefully to see if
the problem recurs
2012-02-13 22:50:20 +11:00
Andrew Tridgell
e70e1814ac AP_Baro: fixed some signed/unsigned warnings
and a potential bug on timer wrap
2012-02-13 21:39:18 +11:00
Andrew Tridgell
550b0be231 move AP_Var code and example into libraries/AP_Var
you can use AP_Var by defining USE_AP_VAR
2012-02-13 16:22:53 +11:00
Andrew Tridgell
e7e7450f90 fixed imax load/save in PID 2012-02-13 16:22:53 +11:00
Andrew Tridgell
c497ad9b7e fixed dead zone load/save 2012-02-13 16:22:53 +11:00
Andrew Tridgell
845d056c18 fixed PID initialisation 2012-02-13 16:22:53 +11:00
Andrew Tridgell
c6b6898266 RC_Channel_aux: catch invalid function settings
a bad function setting would overwrite the heap
2012-02-13 16:22:53 +11:00
Andrew Tridgell
d41c56214c fixed types in GPS detect code
using int everywhere is wasteful and non-portable
2012-02-13 16:22:53 +11:00
Andrew Tridgell
16a5b5c3ee added AP_Param::show_all()
this moves the logic into common code
2012-02-13 16:22:52 +11:00
Andrew Tridgell
ee2cb32a44 change back to 256 max variables in _var_info[]
this keeps the header to 24 bits, and allows the token to be 16
bits. If we need more variables we can put them in a nested group.
2012-02-13 16:22:52 +11:00
Andrew Tridgell
6cf7015859 added indexes to group info structures 2012-02-13 16:22:52 +11:00
Andrew Tridgell
7621b96a52 AP_Param: added group idx, and change packing of header elements
adding a idx element to the GroupInfo will make it less likely that a
developer will change the IDs of group elements, and make it easier to
see that these IDs are important for identifying a variable in EEPROM

The header packing has changed to make it 24 bits on all platforms,
which allows us to lower the EEPROM variable max size to 1024 bytes
again
2012-02-13 16:22:52 +11:00
Andrew Tridgell
711cee9dfa fixed support for AP_PARAM_SPARE
spare group elements are needed if we remove a group parameter
2012-02-13 16:22:52 +11:00
Andrew Tridgell
db8a58f994 fixed build on arduino 1.0 2012-02-13 16:22:52 +11:00
Andrew Tridgell
170fdef857 convert APM_PI library to AP_Param 2012-02-13 16:22:52 +11:00
Andrew Tridgell
74e0d2ef2a convert AC_PID library to AP_Param 2012-02-13 16:22:52 +11:00
Andrew Tridgell
4a9cb731d4 fixed missing return in D value 2012-02-13 16:22:52 +11:00
Andrew Tridgell
c4b7a3116a restore _fCut that was lost in AP_Param development 2012-02-13 16:22:51 +11:00
Andrew Tridgell
df77c462a4 fixed initialisation of RC_Channel class 2012-02-13 16:22:51 +11:00
Andrew Tridgell
244d2055ff AP_Param: fixed desktop build 2012-02-13 16:22:51 +11:00
Andrew Tridgell
c195be594a desktop: more progmem string functions 2012-02-13 16:22:51 +11:00
Andrew Tridgell
34bc88eab5 AP_Param: added generic cast_to_float 2012-02-13 16:22:51 +11:00
Andrew Tridgell
a1057fe738 AP_Param: disable debug ready for production 2012-02-13 16:22:51 +11:00
Andrew Tridgell
7ffb9b462d AP_Param: make ptype in first() and next() optional 2012-02-13 16:22:51 +11:00
Andrew Tridgell
5c3e059eea adapt Mavlink_compat.h to AP_Param 2012-02-13 16:22:51 +11:00