Commit Graph

303 Commits

Author SHA1 Message Date
Michael Oborne e71266c258 change rc norm_output to scale evenly across the entire range 2012-01-20 16:24:55 +08:00
Michael Oborne 9dafc668cd fix SITL attitude hil 2012-01-20 16:04:49 +08:00
analoguedevices 40f37c1037 Increment version number in anticipation of a firmware hex push. 2012-01-16 22:48:46 +00:00
Doug Weibel 78ac65d6c3 Additional commenting on global variables
First pass done.
2012-01-16 10:28:03 -07:00
Doug Weibel a3f9fee3d2 Additional commenting on global variables 2012-01-16 09:45:42 -07:00
Doug Weibel 2ea9db84e0 Update battery monitoring code for ArduCopter
Fixes compatibility for APM2.  Also a significant update to the battery monitoring code:  We previously had monitoring modes for individual cell voltages for 3 and 4 cell lipos.  These have been removed as they were never really supported (the cell voltages were computed but were not reported or recorded anywhere).  Also, some clean-up/prep work was done for supporting monitoring 2 separate battery packs.  The CLI battery and current monitoring tests were consolidated into 1 test.
changed
2012-01-15 17:10:02 -07:00
Doug Weibel 82338f2571 Remove a debugging print 2012-01-15 16:37:07 -07:00
Doug Weibel 3b2196354f Stashing some battery monitoring ratio values in the comments for future use. 2012-01-15 16:35:46 -07:00
Doug Weibel e109992c12 Add a CLI setup action to reset the magnetometer offsets
Since the magnetometer offsets are not available through the MAVLink parameter interface (since they are an AP_Var vector) this little feature allows them to be reset from the CLI.  Useful if you somehow get bad offsets or if you change magnetometer.  If you have a bad set of large offset values I have seen issues with the nulling algorithm have trouble converging to the proper values.  I have never seen it have trouble converging from 0/0/0, so this could be a useful feature from time to time.
2012-01-15 16:15:08 -07:00
Doug Weibel 17b31d0b5b Fix airspeed sensor support for APM2.
Airspeed sensor should be attached to Analog input 0
2012-01-15 16:12:08 -07:00
Doug Weibel 17b3e514dc Just a little more commenting work on global variables 2012-01-15 16:11:02 -07:00
Doug Weibel fd8dc84fac Update battery monitoring code for ArduPlane
Fixes compatibility for APM2.  Also a significant update to the battery monitoring code:  We previously had monitoring modes for individual cell voltages for 3 and 4 cell lipos.  These have been removed as they were never really supported (the cell voltages were computed but were not reported or recorded anywhere).  Also, some clean-up/prep work was done for supporting monitoring 2 separate battery packs.  The CLI battery and current monitoring tests were consolidated into 1 test.
2012-01-15 16:10:28 -07:00
Doug Weibel 622217357c Bug fix for compass.
This is a fix for an interesting bug when a DCM matrix reset was added to the ground start.  This bug only showed up if (A) a ground start were performed after an air start or due to use of the "Calibrate Gryo" action, (B) if the current orientation were sufficiently different from 0/0/0, and (C.) if the particular magnetometer had sufficiently large offsets.  Why did resetting the DCM matrix to 0/0/0 pitch/roll/yaw at ground start cause a bug?  The magnetometer offset nulling determines the proper offsets for the magnetometer by comparing the observed change in the magnetic field vector with the expected change due to rotation as calculated from the rotation in the DCM matrix.  This comparison is made at 10Hz, and then filtered with a weight based on the amount of rotation to estimate the offsets. Normally it would take considerable time at normal in-flight rotation rates for the offset estimate to converge. 

If a DCM matrix reset occurs when the offset nulling algorithm is up and running, the algorithm sees the DCM reset as a instantaneous rotation, however the magnetic field vector did not change at all.  Under certain conditions the algorithm would interpret this as indicating that the offset(s) should be very large.  Since the "rotation" could also have been large the filter weighting would be large and it was possible for a large erroneous estimate of the offset(s) to be made based on this single (bad) data point.

To fix this bug methods were added to the compass object to start and stop the offset nulling algorithm.  Further, when the algorithm is started, it is set up to get fresh samples.  The DCM matrix reset method now calls these new methods to stop the offset nulling before resetting the matrix, and resume after the matrix has been reset.
2012-01-12 14:44:24 -07:00
Doug Weibel 6f9c6a3b8e Adding comments for global variables 2012-01-11 12:37:43 -07:00
analoguedevices 47197891e3 Put in commented-out APM2 # defines, to save people the trouble of having to type them in themselves. 2012-01-09 02:00:46 +00:00
Doug Weibel 0fb4082581 Bug fix for issue 438.
The rate in a change alt command does not need to be signed.  The code will determine if the rate needs to be positive or negative
2012-01-08 18:24:55 -07:00
Michael Oborne 5d5800ee1f fix relay on apm 1 AP 2012-01-05 07:51:01 +08:00
Andrew Tridgell 645eac6f38 I2c: default to 5ms timeout, and faster bus speed
we will slow down the speed when we get a failure
2012-01-04 16:36:47 +11:00
Doug Weibel 35fba5d4a3 Tweak to FBW min altitude
Patch from Yury
2011-12-31 15:44:40 -07:00
Jason Short bc7f0a567c Small issue with newline formatting 2011-12-29 23:02:02 -08:00
Michael Oborne 0c75c863de add circle to output modes 2011-12-29 18:21:32 +08:00
Andrew Tridgell 5aca951438 APM: added error checking on barometer read
if the barometer is dead and the GPS has a fix, use the GPS for
altitude
2011-12-28 20:41:53 +11:00
Andrew Tridgell 2c41264a9b APM: added error checking on compass read 2011-12-28 20:41:53 +11:00
Andrew Tridgell c6b8a08918 APM: convert to new I2C library 2011-12-28 20:41:53 +11:00
Andrew Tridgell c91827ee09 geofence: re-breach if user changes mode outside the fence
if the user changes mode while outside the fence, and fencing is still
enabled, then declare a new breach
2011-12-28 17:28:35 +11:00
Andrew Tridgell b108b907e0 APM: Update for DataFlash changes 2011-12-28 16:00:49 +11:00
analoguedevices fefda548d2 Added contributor names, removed "alpha" from firmware name 2011-12-26 17:13:37 +00:00
Andrew Tridgell 4cd4987ae7 APM: fixed some unsigned/signed warnings 2011-12-26 19:17:11 +11:00
Andrew Tridgell d09c344ab8 APM-log: fixed reading of GPS logs 2011-12-26 19:17:11 +11:00
Andrew Tridgell 94cbbf6f28 APM-log: changed to use df_NumPages
this copes with different data flash sizes on APM1 and APM2
2011-12-26 19:17:11 +11:00
Doug Weibel 7779dff355 Correct a bug in throttle failsafe feature 2011-12-24 15:34:31 -07:00
Doug Weibel c40093a1a7 Remove old debug print 2011-12-24 14:26:35 -07:00
Doug Weibel 4009018167 Fix scaling on "turn coordination" yaw PID so that P gain values fall in "usual" range 0.1 to 10. 2011-12-24 14:26:35 -07:00
Andrew Tridgell 66029af574 setup the main loop failsafe after RC library is setup 2011-12-23 11:13:01 +11:00
Andrew Tridgell f7dda9f413 added comment on using GPS ground course 2011-12-23 11:13:01 +11:00
Andrew Tridgell 968ad78df0 APM2: default magnetometer to enabled
all APM2s have a MAG at the moment

thanks to Chris for the suggestion
2011-12-22 17:51:14 +11:00
Andrew Tridgell ef3c5c071a failsafe: make sure we clear any RC override in manual failsafe 2011-12-22 10:55:43 +11:00
Andrew Tridgell c6633d7bc9 fixed HIL build 2011-12-21 23:31:39 +11:00
Andrew Tridgell ad63c10ab7 APM: added failsafe support
we now pass all channels through at 50Hz if the main loop stops
running, regardless of why. This gives us a reasonable failsafe, as
long as the low level RC library is still working, and interrupts
don't get completely disabled.
2011-12-21 23:31:39 +11:00
Andrew Tridgell 0aab4da1a1 mainloop_count should be uint16_t 2011-12-21 23:31:38 +11:00
Andrew Tridgell 61b2b2e32a always declare a timer_scheduler
we should always run this code
2011-12-21 23:31:38 +11:00
Andrew Tridgell 73146bae5d APM: show temperature in airpressure test
useful for tracking down baro bugs
2011-12-19 18:52:56 +11:00
Andrew Tridgell 98406e842b geofence: send fence status messages on fence events
this ensures the fence status goes out as soon as possible, which
means the messages arrive in a sane order on the GCS
2011-12-19 11:25:59 +11:00
Andrew Tridgell 226470c614 APM: added RST_SWITCH_CH parameter
This is useful for switching back to the mode indicated by the control
switch after a failsafe or fence breach. I was just changing modes
each time, but it is far more elegant to have a spring loaded switch
for "I am ready to take control again", rather than continually
changing modes.
2011-12-19 11:25:59 +11:00
Andrew Tridgell 54b8aab0ac Log: fixed logging dependence on compiler arg eval order 2011-12-18 17:31:45 +11:00
Andrew Tridgell 8a7d064842 APM: run mavlink loop while erasing logs 2011-12-18 10:19:52 +11:00
Andrew Tridgell ce035fc324 geofence: enable return to old control mode via FENCE_CHANNEL
if you disable fencing with the fence channel switch while still in
GUIDED mode to the return point, then reset the control mode back to
the transmitter control mode
2011-12-18 10:00:44 +11:00
Andrew Tridgell 5d2301ef47 fixed airspeed sensor for ArduPlane on APM2
we were trying to use a non-existant ADC chip!
2011-12-17 07:29:09 +11:00
Andrew Tridgell 4bbd5392ef removed AperiodicProcess code
this code was never being used, and was more complex than it was
worth.
2011-12-17 07:29:09 +11:00
Andrew Tridgell ed17f64459 geofence: added FENCE_TRIGGERED_PIN
this allows for a digital pin to be set high when the geofence
triggers. This pin can be connected to an external failsafe device
2011-12-17 07:29:08 +11:00
Michael Oborne eed0eea13b apm 1280 disables 2011-12-16 22:26:39 +08:00
Andrew Tridgell 1ab2b416a3 geofence: store fence points as int32_t
this keeps maximum precision in fence boundaries
2011-12-16 20:11:51 +11:00
Andrew Tridgell b3327c64de geofence: added fence status reporting and faster altitude check 2011-12-16 20:11:51 +11:00
Andrew Tridgell a6e451c1b2 geofence: don't trim control surfaces on geo-fence breach
the user input is likely to be bad
2011-12-16 20:11:51 +11:00
Andrew Tridgell 1b64185b18 geofence: main geo-fence code
this implements the primary logic of geo-fencing
2011-12-16 20:11:51 +11:00
Andrew Tridgell 238c25c05e geofence: added geo-fencing control parameters 2011-12-16 20:11:51 +11:00
Andrew Tridgell 1455ff4a91 removed an unused variable 2011-12-16 20:09:49 +11:00
Andrew Tridgell e1e9002fad only check for "enter 3 times" in first 20s after boot
we don't want stray bytes on serial3 to make us enter the CLI during
flight!
2011-12-16 20:09:32 +11:00
Doug Weibel a77f91fa4e Changes to logging file system to avoid problems with 0 and 1 page logs 2011-12-13 20:09:07 -07:00
Andrew Tridgell e8617fc929 DCM: reset the DCM matrix after a ground start 2011-12-13 21:33:07 +11:00
Andrew Tridgell b0aa1deac2 MAVLink: fixed link flood on waypoint upload 2011-12-13 20:39:04 +11:00
Andrew Tridgell d416013bd8 fixed a hang on 2nd run of IMU test
we should not try to initialise the ISR handlers twice
2011-12-13 18:28:50 +11:00
Andrew Tridgell c007fb49b8 IMU: update ACM and APM for flash_leds change in IMU init 2011-12-13 18:19:41 +11:00
Andrew Tridgell 4e4a4a685c fixed two more CONFIG_HARDWARE #ifdef bugs 2011-12-13 17:05:48 +11:00
Andrew Tridgell dd4498d113 desktop: fixed Wire.begin() build problem 2011-12-12 15:14:55 +11:00
Andrew Tridgell 80a0dfe862 fixed hardware config check for barometer 2011-12-12 15:14:55 +11:00
Andrew Tridgell 65ed8cc2c3 added sitl build target 2011-12-12 15:14:55 +11:00
Andrew Tridgell 4319d1ceb0 throttle: only use throttle slew in auto throttle modes
we don't want STABILISE and FBWA to have throttle change limits
2011-12-12 15:14:55 +11:00
Andrew Tridgell fa683c5718 airspeed: smooth the airspeed value a bit more
the value is very noisy in my tests. A bit more smoothing may help
2011-12-12 15:14:55 +11:00
Andrew Tridgell faf58a355b airspeed: use floating point values and better averaging in zero_airspeed()
this makes the calibration of airspeed a bit more accurate, and
prevents truncation of airspeed values
2011-12-12 15:14:55 +11:00
Andrew Tridgell bb861117a3 apm2: fixed for new barometer code 2011-12-11 15:21:10 -08:00
Pat Hickey 85b82e75f6 ArduPlane: update AP_Baro construtors and initializers 2011-12-11 15:21:10 -08:00
Pat Hickey 6710cf5c5a Wire and SPI Init: move to sketch system.pde from libraries
* Wire.begin removed from AP_Baro_BMP085::init()
* SPI.begin  removed from AP_Baro_MS5611::init()
* SPI.begin  removed from AP_InertialSensor_MPU6000::hardware_init()

* Both Wire.begin and SPI.begin added very early in init_ardupilot in
  ArduCopter/system.pde and ArduPlane/system.pde
2011-12-11 15:21:10 -08:00
Pat Hickey 5fd8fea957 ArduCopter & ArduPlane: Added support for apm2beta build via APM2_BETA_HARDWARE define
* This enables the BMA085 driver for compatibility with beta boards.
* The CLI_SLIDER_ENABLED=DISABLED line does not need to be in the makefile.
  config.h takes care of this default.
2011-12-11 15:21:09 -08:00
Pat Hickey 6f27c4c779 ArduPlane: added config.h and defines.h to support CONFIG_BARO 2011-12-11 15:21:09 -08:00
Pat Hickey 63d3b6a278 ArduPlane: Rename APM_BMP085 classes to AP_Baro_BMP085 classes 2011-12-11 15:21:09 -08:00
Pat Hickey c64e3f5772 ArduPlane: calibrate accel with imu.init_accel after imu.init
* complements commit 73418559, where init_accel was eliminated
  from AP_IMU_INS::init cold start.
2011-12-10 13:32:47 -08:00
Doug Weibel f34333d42b Minimum ground speed patch from Claudio Natoli. Thanks Claudio!
This patch will boost the target airspeed as necessary to keep the ground speed above a parameter value - param_min_groundspeed.  Airspeed is still limited to FBW-max.  Setting min_groundspeed to zero (default) disables the feature.
2011-12-09 16:43:25 -07:00
Doug Weibel 77a7734111 Augment failsafe gcs_send_text message 2011-12-09 09:11:45 -07:00
Doug Weibel 4f6f9a6be4 Add hook to dump log filesystem index for debugging 2011-12-07 08:13:30 -07:00
Andrew Tridgell c1569e49a8 fixed the "reboot on GPS lock" bug
the problem was that with APM2 we may not have a 2nd GCS instance. The
"gps alt: xxx" message was being unconditionally sent to both GCS
instances, which caused a crash
2011-12-04 09:06:58 +11:00
Andrew Tridgell 899c1364cc test: removed the broken gyro test and merge it into the imu test
the gyro test assumed APM1 hardware, and would hang on APM2. The imu
test can just as easily display gyro and accelerometer data as well as
roll/pitch/yaw, so combine it in one test
2011-12-03 14:08:20 +11:00
Doug Weibel b3b218fa40 Fix for intermittent bug of log #1 starting on page 2 and confusing file system 2011-11-28 19:43:10 -07:00
Doug Weibel aa6c336479 Add DataFlash.Init before doing a forced log erase on eeprom reset.
Add progress indication during log erase
2011-11-28 19:42:27 -07:00
Andrew Tridgell 7f4c87eeec mavlink: don't force CLI and HIL with mavlink10 build 2011-11-28 16:22:33 +11:00
Andrew Tridgell e61d945874 mavlink: paranoia setting of failsafe when forcing AUTO mode
this shouldn't be needed, but will do no harm, and I thought I saw
this fail in a test
2011-11-28 16:22:33 +11:00
Andrew Tridgell 833f5f5895 mavlink: move Mavlink_compat.h to common code
this will allow it to be used by ArduCopter
2011-11-28 13:53:57 +11:00
Andrew Tridgell d295b7d76c build: CLI_SLIDER_ENABLED doesn't need to be forced off in apm2 build
this is handled by config.h now
2011-11-28 13:53:57 +11:00
Doug Weibel ca5560ef1c Add Guided mode to failsafe handling 2011-11-26 21:10:53 -07:00
Andrew Tridgell fb21e619fe Logs: don't print hundreds of bogus log boundaries
this can take quite a long time
2011-11-26 17:02:55 +11:00
Pat Hickey 0fa8ce9a52 ArduPlane: rev version number from 2.26 to 2.27 Alpha 2011-11-25 20:00:19 -08:00
Pat Hickey a6bf2d9cd6 ArduPlane: LED digital writes use LED_OFF and LED_ON 2011-11-25 20:00:19 -08:00
Andrew Tridgell 7467bf649c ArduPlane: rename purple to APM2 2011-11-25 20:00:19 -08:00
Andrew Tridgell 0604f2c667 USB-MUX: auto-switch telemetry port based on UXB mux for ArduPlane
when USB is unplugged, switch baud rate to the SERIAL3_BAUD rate from
EEPROM
2011-11-25 20:00:19 -08:00
Andrew Tridgell 2bed1dcfd5 desktop: first version of register level SITL support
this adds register level emulation of the ADS7844 and the RC
input/output hardware on the APM1, allowing for SITL testing without
enabling HIL in the code
2011-11-25 20:00:18 -08:00
Andrew Tridgell c8b592f8a7 purple: there are no dipswitches on the purple board 2011-11-25 20:00:18 -08:00
Andrew Tridgell 67e5c89226 compass: added AP_COMPASS_APM2_SHIELD
this makes the orientation clearer
2011-11-25 20:00:18 -08:00
Andrew Tridgell b6bab1d92d purple: adc test not useful if no ADC 2011-11-25 20:00:18 -08:00
Andrew Tridgell 6c856dde4e purple: fixed LED and IO pin defintitions 2011-11-25 20:00:18 -08:00
Andrew Tridgell 2db5a2b5e2 purple: add the remaining hw defines for purple hardware 2011-11-25 20:00:18 -08:00